:root { --blue:#0877e8; --ink:#12314f; --muted:#526b80; --bg:#f3fbff; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:112px; }
body { margin:0; color:var(--ink); background:var(--bg); font-family:'Poppins',system-ui,sans-serif; }
body::before { content:''; position:fixed; inset:0; z-index:-1; pointer-events:none; background:radial-gradient(circle at 8% 18%,#ffd66b33,transparent 28rem),radial-gradient(circle at 90% 8%,#00b7d92b,transparent 30rem),radial-gradient(circle at 80% 82%,#ff7aa81a,transparent 26rem); }
.navbar { backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px); background-color:rgb(0 122 229 / 82%) !important; }
.skip-link { position:fixed; top:-100px; left:20px; z-index:110; padding:12px 20px; background:white; color:var(--ink); border-radius:12px; }
.skip-link:focus { top:20px; }
a:focus-visible { outline:3px solid #965600; outline-offset:5px; }
.policy-main { width:min(1160px,calc(100% - 40px)); margin:0 auto; padding-bottom:72px; }
.policy-hero { padding:150px 16px 42px; text-align:center; }
.eyebrow,.section-label { display:block; color:#0761ba; font-size:12px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; }
.policy-hero h1 { font-size:clamp(38px,5.4vw,52px); line-height:1.05; letter-spacing:-.045em; margin:18px 0 24px; font-weight:800; }
.policy-hero h1 span { color:var(--blue); }
.policy-hero p { max-width:520px; margin:0 auto; color:var(--muted); line-height:1.5; font-size:16px; text-wrap:balance; }
.draft-note { display:flex; align-items:center; justify-content:center; min-height:112px; padding:28px; background:#fff8e8; border:1px dashed #d6b66e; border-radius:18px; margin-bottom:36px; color:var(--ink); font-size:26px; line-height:1.4; }
.draft-note strong { flex-shrink:0; }
.policy-layout { display:grid; grid-template-columns:240px minmax(0,1fr); gap:36px; align-items:start; }
.page-contents { position:sticky; top:112px; padding:16px 0; }
.page-contents p { margin:0 0 18px; font-size:13px; font-weight:700; }
.page-contents a { display:flex; gap:12px; align-items:center; min-height:48px; color:var(--ink); text-decoration:none; font-size:13px; font-weight:500; border-bottom:1px solid #dae6ee; }
.page-contents a span { font-size:11px; color:#0761ba; }
.page-contents a:hover { color:var(--blue); }
.policy-card { padding:38px; margin-bottom:24px; border-radius:28px; background:#ffffffeb; border:1px solid #e0ecf4; box-shadow:0 12px 40px #12314f06; }
.policy-card h2 { margin:12px 0; font-size:clamp(25px,3vw,32px); letter-spacing:-.035em; line-height:1.2; }
.policy-card h3 { font-size:15px; margin:0 0 8px; font-weight:600; }
.section-intro { color:var(--muted); line-height:1.8; margin:0 0 26px; font-size:14px; }
.placeholder { background:#fff8e8; border:1px dashed #d6b66e; border-radius:16px; padding:22px; margin:0 0 24px; }
.pending { display:block; font-size:10px; text-transform:uppercase; letter-spacing:.08em; color:#526b80; font-weight:600; margin-bottom:14px; }
.placeholder p,.placeholder-copy { font-size:13px; color:var(--muted); line-height:1.8; margin:0; }
.detail-grid { display:grid; grid-template-columns:1fr 1fr; gap:26px; }
.insurance-details { margin:0; }
.insurance-details div { display:flex; justify-content:space-between; gap:20px; padding:15px 0; border-bottom:1px solid #e4edf3; font-size:13px; }
.insurance-details > div:not([hidden]):not(:has(~ div:not([hidden]))) { border:0; padding-bottom:0; }
.insurance-details dt { font-weight:600; }
.insurance-details dd { color:var(--muted); margin:0; }
.document-list { padding:0; margin:0; list-style:none; }
.document-list li { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:20px 0; border-top:1px solid #e4edf3; }
.document-list h3 { margin-bottom:5px; }
.document-list p { font-size:11px; color:var(--muted); margin:0; }
.document-status { font-size:10px; color:var(--muted); background:#eef4f8; padding:7px 10px; border-radius:8px; white-space:nowrap; }
.review-note { color:var(--muted); font-size:11px; text-align:center; margin:28px 0 0; }
.footer { margin-top:0; }
@media(max-width:800px) { .policy-layout { grid-template-columns:1fr; gap:20px; } .page-contents { position:static; display:grid; grid-template-columns:1fr 1fr; column-gap:20px; padding:0 4px 10px; } .page-contents p { grid-column:1/-1; margin-bottom:8px; } .draft-note { margin-bottom:22px; } }
@media(max-width:520px) { .policy-main { width:calc(100% - 28px); } .policy-hero { padding:115px 6px 30px; } .eyebrow { font-size:10px; } .policy-hero p { font-size:14px; } .draft-note { padding:28px 18px; font-size:24px; } .policy-card { padding:26px 22px; border-radius:22px; } .detail-grid { grid-template-columns:1fr; gap:20px; } .document-list li { align-items:flex-start; flex-direction:column; gap:12px; } .page-contents a { font-size:11px; gap:7px; } .placeholder { padding:18px; } }
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } }
/* Policy content uses a reading layout rather than the site's centred marketing copy. */
.policy-card,.page-contents,.draft-note { text-align:left; }

.insurance-summary { margin-bottom:24px; }
.insurance-summary p { color:var(--muted); font-size:14px; line-height:1.8; margin:0; }
.insurance-details dd { text-align:right; line-height:1.8; }
@media(max-width:520px) { .insurance-details div { flex-direction:column; gap:6px; } .insurance-details dd { text-align:left; } }

.safeguarding-statement { background:transparent; border:0; border-radius:0; color:var(--ink); padding:0; margin-bottom:28px; }
.safeguarding-statement p,.policy-copy { font-size:13px; color:var(--muted); line-height:1.8; margin:0; }
.safeguarding-statement p + p { margin-top:12px; }

[hidden] { display:none !important; }
.draft-field { display:inline-block; padding:10px 14px; border:1px dashed #d6b66e; border-radius:10px; background:#fff8e8; color:var(--muted); font-size:12px; }
.review-note.draft-field { display:block; padding:18px; }

/* A shared yellow treatment identifies content awaiting review or completion. */
.draft-note,.placeholder,.draft-field { color:#715119; }
.placeholder p,.placeholder .pending { color:#715119; }
/* Centre the policy content, with section navigation above it. */
.policy-layout { display:block; max-width:900px; margin:0 auto; }
.page-contents { position:static; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; padding:0; margin:0 0 28px; text-align:center; }
.page-contents p { grid-column:1/-1; margin:0 0 4px; }
.page-contents a { justify-content:center; min-height:56px; padding:12px; border:1px solid #d7e8f5; border-radius:16px; background:rgba(255,255,255,.85); font-size:13px; }
.page-contents a:hover { background:#eef7ff; border-color:#9bc9ef; }
.policy-card > .section-label,.policy-card > h2,.policy-card > .section-intro { text-align:center; }
@media(max-width:520px) { .page-contents { gap:8px; } .page-contents a { font-size:11px; padding:10px 6px; } }

/* Compact jump links distinguish section navigation from content cards. */
.page-contents { display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:10px; margin:0 0 32px; }
.page-contents p { flex-basis:100%; margin:0 0 4px; color:var(--muted); font-size:11px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; }
.page-contents a { flex:0 1 auto; gap:10px; min-height:44px; padding:10px 18px; border:1px solid #c9e2f8; border-radius:999px; background:#e9f4ff; color:#0759ac; font-size:13px; font-weight:600; }
.page-contents a:hover { background:#dceeff; border-color:#87bcec; }
.page-contents a .jump-arrow { color:inherit; font-size:17px; line-height:1; }
@media(max-width:520px) { .page-contents { gap:8px; } .page-contents a { font-size:11px; padding:10px 13px; gap:8px; } }

/* Match the top fade used by the site's information pages. */
.header-scroll-fade { position:fixed; top:0; left:0; width:100%; height:80px; background:linear-gradient(to bottom,#f3fbff 0%,transparent 100%); z-index:99; pointer-events:none; }

/* Match the readable body-text scale used on the other information pages. */
.policy-card h3 { font-size: 18px; }
.section-intro,
.safeguarding-statement p,
.policy-copy,
.insurance-summary p,
.insurance-details div {
    font-size: clamp(16px, 2.2vw, 18px);
    line-height: 1.8;
}
.policy-hero p { font-size: clamp(16px, 2.2vw, 18px); }

/* Match the medium-weight body copy on the other information pages. */
.policy-hero p,
.section-intro,
.safeguarding-statement p,
.policy-copy,
.insurance-summary p,
.insurance-details dd { font-weight: 500; }

/* Keep the larger text comfortable in introductions and narrower columns. */
.policy-card > .section-intro {
    max-width: 640px;
    margin-left: auto;
    margin-right: auto;
    line-height: 1.6;
    text-wrap: balance;
}
.policy-card h2,
.policy-card h3 { text-wrap: balance; }
.policy-card h3 { line-height: 1.4; margin-bottom: 10px; }
.safeguarding-statement p,
.policy-copy { line-height: 1.7; text-wrap: pretty; }
.safeguarding-statement p + p { margin-top: 16px; }
.detail-grid { gap: 32px; }
.insurance-details div,
.insurance-details dd { line-height: 1.65; }
@media (max-width: 680px) {
    .detail-grid { grid-template-columns: 1fr; gap: 24px; }
}

.safeguarding-contact { text-align: center; }
.safeguarding-contact h3 { margin-bottom: 2px; }
.safeguarding-contact .policy-copy { line-height: 1.5; }
.safeguarding-contact a { color: #43a0fd; font-weight: 600; text-decoration: none; text-underline-offset: 4px; overflow-wrap: anywhere; transition: color 0.2s ease; }
.safeguarding-contact a:hover { color: var(--blue); text-decoration: underline; }

.safeguarding-contact .safeguarding-email-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: 12px 28px;
    margin: 14px 0 10px;
    border-radius: 999px;
    background: var(--blue);
    color: #fff;
    font-size: 16px;
    font-weight: 600;
    line-height: 1.5;
    text-decoration: none;
    transition: background-color 0.2s ease;
}
.safeguarding-contact .safeguarding-email-button:hover {
    background: #0761ba;
    color: #fff;
    text-decoration: none;
}

/* Clearer hierarchy and spacing within the child protection section. */
#child-protection > .section-intro { margin-bottom: 36px; }
#child-protection h3 { font-size: 18px; margin-bottom: 4px; }
#child-protection .safeguarding-statement p,
#child-protection .policy-copy { font-size: 16px; line-height: 1.7; }
#child-protection .safeguarding-statement p + p { margin-top: 20px; }
#child-protection .safeguarding-statement { margin-bottom: 40px; }
#child-protection .detail-grid { column-gap: 36px; row-gap: 36px; }
@media (max-width: 680px) {
    #child-protection > .section-intro { margin-bottom: 28px; }
    #child-protection .safeguarding-statement { margin-bottom: 32px; }
    #child-protection .detail-grid { row-gap: 28px; }
}

/* Label contact details clearly, with the email action below them. */
.safeguarding-contact-details {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px 36px;
    max-width: 600px;
    margin: 0 auto 24px;
}
.safeguarding-contact-details dt {
    color: var(--muted);
    font-size: 13px;
    font-weight: 500;
    margin-bottom: 6px;
}
.safeguarding-contact-details dd {
    margin: 0;
    color: var(--ink);
    font-size: 18px;
    font-weight: 600;
    line-height: 1.5;
}
.safeguarding-contact .safeguarding-email-button { margin: 0; }
@media (max-width: 600px) {
    .safeguarding-contact-details { grid-template-columns: 1fr; gap: 20px; }
    .safeguarding-contact-details dd { font-size: 16px; }
}

/* Match insurance copy to the child protection body text. */
#insurance .section-intro,
#insurance .insurance-details div { font-size: 16px; }

#raising-a-concern .section-intro,
#raising-a-concern .policy-copy { font-size: 16px; }
