/* Cookie consent: restrained bottom-anchored banner + preference dialog. Paper ground, Navy
   rule, Instrument Sans; Accept / Reject share one button size. Reduced motion: no transitions. */
.cs-banner{position:fixed;left:0;right:0;bottom:0;z-index:180;padding:0 16px 16px;pointer-events:none}
.cs-banner__in{pointer-events:auto;max-width:1180px;margin:0 auto;background:var(--brand-paper);border-top:2px solid var(--brand-navy);border-radius:6px;box-shadow:0 18px 50px rgba(0,43,84,.14);padding:22px 28px 22px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px 40px;align-items:center}
.cs-banner__t{font-family:var(--font-sans);font-size:14.5px;line-height:1.55;color:var(--text-secondary);margin:8px 0 0;max-width:70ch}
.cs-banner__links{display:flex;gap:18px;margin:8px 0 0}
.cs-banner__links a,.cs-dlg__foot a{font-family:var(--font-sans);font-size:12.5px;font-weight:600;color:var(--brand-navy);text-decoration:none;border-bottom:1px solid rgba(0,43,84,.3)}
.cs-banner__links a:hover,.cs-dlg__foot a:hover{color:var(--sun-700);border-color:currentColor}
.cs-banner__act{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;justify-content:flex-end}
/* Reject: substantial secondary (pale Sky fill, Navy text + border) at the same size as Accept
   (solid Navy). Manage Preferences: tertiary text button, no fill, same height for alignment. */
.cs-banner__act .cs-btn{min-height:42px;padding:13px 18px;border-width:1px}
.cs-btn--reject{background:rgba(145,195,235,.22);color:var(--brand-navy);border-color:var(--brand-navy)}
.cs-btn--reject:hover{background:rgba(145,195,235,.36);color:var(--brand-navy);border-color:var(--brand-navy)}
.cs-btn--tertiary{background:transparent;color:var(--brand-navy);border-color:transparent;text-decoration:underline;text-underline-offset:4px;text-decoration-color:rgba(0,43,84,.35)}
.cs-btn--tertiary:hover{background:transparent;color:var(--sun-700);border-color:transparent;text-decoration-color:currentColor}
.cs-link{background:none;border:0;padding:8px 4px;font-family:var(--font-sans);font-size:12.5px;font-weight:600;color:var(--brand-navy);cursor:pointer;text-decoration:underline;text-underline-offset:3px;min-height:42px}
.cs-link:hover{color:var(--sun-700)}
/* dialog */
.cs-dlg{position:fixed;inset:0;z-index:190;display:grid;place-items:center;padding:16px}
.cs-dlg[hidden],.cs-banner[hidden]{display:none}
.cs-dlg__scrim{position:absolute;inset:0;background:rgba(0,27,54,.42)}
.cs-dlg__panel{position:relative;width:min(600px,100%);max-height:calc(100dvh - 32px);overflow:auto;background:var(--brand-paper);border-radius:6px;box-shadow:0 18px 50px rgba(0,43,84,.18);padding:36px 40px 32px}
.cs-dlg__panel:focus{outline:none}
.cs-dlg__x{position:absolute;top:14px;right:14px;width:44px;height:44px;background:none;border:0;cursor:pointer;color:var(--brand-navy);font-size:16px;border-radius:4px}
.cs-dlg__x:hover{background:rgba(0,43,84,.06)}
.cs-dlg__h{font-family:var(--font-display);font-weight:500;font-size:28px;line-height:1.12;letter-spacing:-.02em;color:var(--brand-navy);margin:8px 0 0;text-wrap:balance}
.cs-dlg__d,.cs-dlg__gpc{font-family:var(--font-sans);font-size:14.5px;line-height:1.55;color:var(--text-secondary);margin:12px 0 0}
.cs-dlg__gpc{color:var(--brand-navy);font-weight:600}
.cs-cats{margin-top:22px;border-top:1px solid var(--line)}
.cs-cat{padding:16px 0;border-bottom:1px solid var(--line)}
.cs-cat__head{display:flex;justify-content:space-between;align-items:center;gap:16px}
.cs-cat__l{font-family:var(--font-sans);font-size:15px;font-weight:600;color:var(--brand-navy)}
.cs-cat__always{font-family:var(--font-sans);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap;flex:none}
.cs-cat__d{font-family:var(--font-sans);font-size:13.5px;line-height:1.5;color:var(--text-secondary);margin:6px 0 0;max-width:56ch}
/* switch: colour + position + text all carry the state */
.cs-sw{display:inline-flex;align-items:center;gap:10px;background:none;border:0;padding:6px 0;cursor:pointer;font-family:var(--font-sans);min-height:44px}
.cs-sw__track{width:40px;height:22px;border-radius:11px;background:var(--brand-stone);position:relative;transition:background-color 180ms cubic-bezier(.2,.6,.2,1)}
.cs-sw__knob{position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:transform 180ms cubic-bezier(.2,.6,.2,1)}
.cs-sw[aria-checked="true"] .cs-sw__track{background:var(--brand-navy)}
.cs-sw[aria-checked="true"] .cs-sw__knob{transform:translateX(18px)}
.cs-sw__state{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);min-width:2.4em;text-align:left}
.cs-sw[aria-checked="true"] .cs-sw__state{color:var(--brand-navy)}
.cs-dlg__act{display:flex;flex-wrap:wrap;gap:10px 12px;margin-top:24px}
.cs-dlg__foot{display:flex;gap:18px;margin:22px 0 0}
.cs-banner button:focus-visible,.cs-dlg button:focus-visible,.cs-dlg a:focus-visible{outline:2px solid var(--brand-accent);outline-offset:2px}
html.cs-modal{overflow:hidden}
@media (max-width:900px){
  .cs-banner{padding:0 0 0}
  .cs-banner__in{border-radius:6px 6px 0 0;grid-template-columns:minmax(0,1fr);padding:20px 20px 18px;max-width:none}
  .cs-banner__act{justify-content:flex-start}
  .cs-banner__act .cs-btn{flex:1 1 calc(50% - 6px);min-width:150px}
  .cs-banner__act .cs-btn--tertiary{flex-basis:100%}
  .cs-dlg{padding:0;align-items:end}
  .cs-dlg__panel{width:100%;max-height:calc(100dvh - 24px);border-radius:6px 6px 0 0;padding:28px 22px 24px}
}
@media (prefers-reduced-motion:reduce){.cs-sw__track,.cs-sw__knob{transition:none}}
