/* Shared styles for every page: tokens, base, header, offer bar, buttons, form fields, footer.
   Lives at the root, not in /assets, because /assets is served with a one-year immutable cache. */
:root{
  /* Palette: one vibrant blueberry blue on a quiet lavender base. No yellow. */
  --bg:#ffffff;
  --bg-soft:#f3f4fb;
  --ink:#141a3a;
  --ink-soft:#545a7a;
  --line:#e0e2f5;
  --pine:#2232c4;
  --pine-ink:#eef0ff;
  --grass:#3446f0;
  --grass-deep:#2232c4;
  --pop-text:#2232c4;
  --cta:#3446f0;
  --cta-hover:#2232c4;
  --cta-ink:#ffffff;
  /* Tonal depth: a light periwinkle tint for accents on blue, and a deep navy for bands and the footer. */
  --tint:#aeb6ff;
  --navy:#151c78;
  --error:#c2261b;
  --sky:#e4e7fd;
  --sky-2:#d6d9ff;
  --card:#ffffff;
  --shadow:0 18px 40px -18px rgba(20,26,58,.35);
  --display:"Bricolage Grotesque","Avenir Next","Segoe UI",system-ui,sans-serif;
  --body:"Figtree","Avenir Next","Segoe UI",system-ui,sans-serif;
  --r:18px;
  --top-h:116px;
  color-scheme:light;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:var(--top-h)}
body{margin:0;background:var(--bg);color:var(--ink);font:400 1.0625rem/1.6 var(--body);-webkit-font-smoothing:antialiased}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--navy)}
img{max-width:100%}
[hidden]{display:none!important}
::selection{background:var(--sky-2);color:var(--ink)}
a{color:inherit;text-underline-offset:.2em}
:focus-visible{outline:3px solid var(--cta);outline-offset:3px;border-radius:6px}
.top :focus-visible,.close :focus-visible,.winter :focus-visible,.foot :focus-visible{outline-color:#fff}
.wrap{max-width:1160px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
h1,h2,h3{font-family:var(--display);font-weight:800;line-height:1.02;letter-spacing:-.025em;text-wrap:balance;margin:0}
p{margin:0}
.num{font-variant-numeric:tabular-nums}
.ic{width:22px;height:22px;flex:none}

/* Header, with the offer bar riding on top so it stays visible while scrolling */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:9;background:color-mix(in srgb,var(--pine) 94%,transparent);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid transparent;transition:border-color .2s}
.top.scrolled{border-bottom-color:color-mix(in srgb,#fff 18%,transparent)}
.top .bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-block:10px}
.top .ghost{background:transparent;color:#fff;box-shadow:none;border:1.5px solid color-mix(in srgb,#fff 45%,transparent)}
.top .ghost:hover{background:color-mix(in srgb,#fff 12%,transparent);border-color:#fff}
.offer{background:var(--navy);color:#fff;text-align:center;font:600 .9rem/1.3 var(--body);padding:9px 16px}
.offer b{color:var(--tint)}
.offer a{color:#fff;font-weight:700}
.logo{display:flex;align-items:center;text-decoration:none}
.logo img{height:60px;width:auto;display:block}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:700 1rem/1 var(--body);border:0;border-radius:999px;cursor:pointer;text-decoration:none;padding:15px 22px;background:var(--cta);color:var(--cta-ink);box-shadow:0 6px 14px -8px rgba(20,30,140,.6);transition:background .15s,transform .15s}
.btn:hover{background:var(--cta-hover)}
.btn:active{transform:translateY(1px)}
.btn[disabled]{opacity:.6;cursor:progress}
.btn-sm{padding:11px 16px;font-size:.95rem;gap:.3em}
.btn-lg{font-size:1.1rem;padding:17px 28px;white-space:nowrap;box-shadow:0 10px 22px -10px rgba(20,30,140,.7)}

/* Form fields */
.field{display:grid;gap:6px}
.field label{font-weight:600;font-size:.95rem}
.field .opt{font-weight:400;color:var(--ink-soft)}
input,textarea,select{font:500 1.05rem/1.3 var(--body);color:var(--ink);background:var(--bg);border:1.5px solid var(--line);border-radius:12px;padding:13px 14px;width:100%;caret-color:var(--grass-deep);transition:border-color .15s}
input::placeholder,textarea::placeholder{color:var(--ink-soft);opacity:.75}
input:focus,textarea:focus,select:focus{outline:3px solid var(--grass);outline-offset:2px;border-color:var(--grass)}
input[aria-invalid="true"]{border-color:var(--error)}
.row{display:flex;gap:10px}
.row input{flex:1;min-width:0}
.postal{text-transform:uppercase;letter-spacing:.06em}
.err{color:var(--error);font-size:.9rem;font-weight:600}
.err:empty{display:none}
.fine{font-size:.86rem;color:var(--ink-soft)}

/* Footer */
.foot{background:var(--navy);color:color-mix(in srgb,#fff 78%,var(--navy));padding-block:clamp(48px,7vw,80px) 28px;font-size:.95rem}
.foot a{text-decoration:none}
.foot a:hover{color:#fff;text-decoration:underline}
.foot-grid{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));gap:32px}
.foot-brand img{height:72px;width:auto;display:block}
.foot-brand p{margin-top:16px;max-width:30ch}
.foot h2{font:700 .8rem/1 var(--body);letter-spacing:.1em;text-transform:uppercase;color:var(--tint);margin-bottom:14px}
.foot ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.foot .mail{color:#fff;font-weight:600}
.foot .cta{margin-top:20px}
.foot .cta .btn{background:#fff;color:var(--navy);box-shadow:none}
.foot .cta .btn:hover{background:var(--pine-ink)}
.foot-legal{margin-top:clamp(36px,5vw,56px);padding-top:20px;border-top:1px solid color-mix(in srgb,#fff 14%,transparent);display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 20px;font-size:.86rem;color:color-mix(in srgb,#fff 60%,var(--navy))}

@media (max-width:880px){
  .foot-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .foot-brand{grid-column:1 / -1}
}
@media (max-width:520px){
  :root{--top-h:104px}
  .top .btn-sm{padding:10px 14px;font-size:.88rem}
  .logo img{height:48px}
  .offer{font-size:.84rem;padding:8px 12px}
  .offer a{display:none}
  .row{flex-direction:column}
  .row .btn{width:100%}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition:none!important}
}
