/* PMC v3 base styles. The Circle kit: navy / blue / sky / red / off-white, Montserrat.
   Phone first. Red is only for the child dot and the crisis line, never decoration.
   Page-specific styles (home, brain pages, drawer) belong to the pages builder. */

/* ---------- fonts (self-hosted, SIL OFL 1.1, see /static/brand/fonts/OFL.txt) ---------- */
@font-face{font-family:Montserrat;font-style:normal;font-weight:400;font-display:swap;src:url(/static/brand/fonts/Montserrat-Regular.woff2) format("woff2"),url(/static/brand/fonts/Montserrat-Regular.ttf) format("truetype")}
@font-face{font-family:Montserrat;font-style:normal;font-weight:500;font-display:swap;src:url(/static/brand/fonts/Montserrat-Medium.woff2) format("woff2"),url(/static/brand/fonts/Montserrat-Medium.ttf) format("truetype")}
@font-face{font-family:Montserrat;font-style:normal;font-weight:600;font-display:swap;src:url(/static/brand/fonts/Montserrat-SemiBold.woff2) format("woff2"),url(/static/brand/fonts/Montserrat-SemiBold.ttf) format("truetype")}
@font-face{font-family:Montserrat;font-style:normal;font-weight:700;font-display:swap;src:url(/static/brand/fonts/Montserrat-Bold.woff2) format("woff2"),url(/static/brand/fonts/Montserrat-Bold.ttf) format("truetype")}
@font-face{font-family:Montserrat;font-style:normal;font-weight:800;font-display:swap;src:url(/static/brand/fonts/Montserrat-ExtraBold.woff2) format("woff2")}

/* ---------- tokens: the navy field on every page, in both themes ----------
   The holding page's look is the site's look now: light words on the navy radial field.
   Light and dark both resolve to it (the old light set is gone); data-theme changes nothing.
   Contrast on the darkest ground #0B1A36 and on panels #12264B: ink 15:1+, ink-2 (sky) 8:1+,
   accent 7:1+, all AA. --glass is the see-through panel over the field. */
:root,:root[data-theme="light"],:root[data-theme="dark"]{
  --navy:#0F2244; --blue:#2563EB; --sky:#A7C7E7; --red:#E94B4B; --off:#F7F8FA; --white:#FFFFFF;
  --ground:#0B1A36; --panel:#12264B; --glass:rgba(247,248,250,.06); --ink:#F7F8FA; --ink-2:#A7C7E7;
  --accent:#8FB4F0; --hair:#27406B;
  --btn:#F7F8FA; --btn-ink:#0F2244; --nav-bg:rgba(11,26,54,.82);
  --logo-light:none; --logo-dark:block;
  --field:radial-gradient(1200px 800px at 50% -10%,#1B3A7A 0%,#0F2244 45%,#0B1A36 100%);
  --gutter:16px; --max:1180px;
  color-scheme:dark;
}

/* ---------- base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
/* The ground is the holding page, exactly: the radial glow fixed to the screen, so it never scrolls
   away into a flat near-black. Light and dark, system or chosen, all land here (Andy, 27 SEP: no pale page). */
html{background:#0B1A36;color-scheme:dark}
body{margin:0;background:#0B1A36 var(--field) no-repeat fixed;background-size:100% 100%;position:relative;isolation:isolate;color:var(--ink);font-family:Montserrat,"Segoe UI",Helvetica,Arial,sans-serif;font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden;min-height:100vh;display:flex;flex-direction:column}
/* Phones and touch screens ignore background-attachment:fixed (or repaint it badly), so there a fixed
   pseudo-element carries the same glow. */
@media (max-width:899px),(hover:none){
  body{background:#0B1A36}
  body::before{content:"";position:fixed;inset:0;z-index:-2;background:var(--field);pointer-events:none}
}
main{flex:1}
/* The Circle mark: large, in the middle of the screen, clearly there (14%), breathing every 6 s like the
   holding page (still when the visitor asks for less motion). Centered with inset+margin, not translate,
   so the breathe transform never fights the centering. */
.field{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.field-mark{position:absolute;inset:0;margin:auto;width:min(92vmin,900px);height:min(92vmin,900px);opacity:.14;animation:breathe 6s ease-in-out infinite}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.035)}}
img,svg,iframe{display:block;max-width:100%}
img{height:auto}
a{color:inherit}
p{margin:0}
h1,h2,h3{margin:0;line-height:1.1;text-wrap:balance}
h1{font-size:clamp(34px,7vw,74px);font-weight:800;letter-spacing:-.01em}
h2{font-size:clamp(30px,4vw,46px);font-weight:800;letter-spacing:-.01em}
h3{font-size:22px;font-weight:700;line-height:1.25}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}
.eyebrow{font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0 0 12px}
.lead{font-size:clamp(19px,2.2vw,24px);line-height:1.45;max-width:38ch}
.muted{color:var(--ink-2)}
.nw{white-space:nowrap}                  /* a phone number (or the EIN) never breaks in the middle */
[hidden]{display:none!important}         /* a hidden .btn stays hidden (its display would win otherwise) */
.stub{padding-block:64px}
.stub form,.stub .lead + p{margin-top:24px}
@media (min-width:640px){:root{--gutter:24px}}

/* ---------- buttons: 4px radius, 2px border ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:12px 22px;border-radius:4px;border:2px solid transparent;font:inherit;font-weight:700;font-size:15px;line-height:1.2;text-decoration:none;background:var(--btn);color:var(--btn-ink);cursor:pointer}
.btn.ghost{background:transparent;color:inherit;border-color:currentColor}
.btn.on-navy{background:#F7F8FA;color:#0F2244}
.btn.on-navy.ghost{background:transparent;color:#F7F8FA;border-color:#F7F8FA}
a:focus-visible,button:focus-visible,.btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.skip{position:absolute;left:-9999px;top:0;background:var(--btn);color:var(--btn-ink);padding:10px 16px;z-index:100}
.skip:focus{left:var(--gutter);top:8px}

/* ---------- nav ---------- */
.nav{position:sticky;top:0;z-index:20;background:var(--nav-bg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--hair);padding-top:env(safe-area-inset-top,0px)}
.nav .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;min-height:64px;padding-block:8px}
.nav .logo{flex:none;width:180px;text-decoration:none}
.nav .lock{width:100%}
.nav .lock.light{display:var(--logo-light)}
.nav .lock.dark{display:var(--logo-dark)}
.nav nav{order:3;flex-basis:100%}
.nav ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px 20px;font-weight:600;font-size:15px}
.nav ul a{display:inline-block;padding:6px 0;text-decoration:none;border-bottom:2px solid transparent}
.nav ul a:hover,.nav ul a[aria-current="page"]{border-color:var(--accent)}
.nav .donate{margin-left:auto;padding:8px 16px}
/* "You are signed in as ... · Sign out": a thin row under the nav, shown by account.js only when signed in. */
.nav .acct{border-top:1px solid var(--hair);font-size:14px}
.nav .acct .wrap{flex-wrap:wrap;justify-content:flex-end;gap:2px 14px;min-height:0;padding-block:6px}
.acct-out{background:none;border:0;padding:4px 0;font:inherit;font-weight:700;color:var(--accent);text-decoration:underline;cursor:pointer}
/* Very small phones (320px): a smaller logo keeps logo + Donate on one row (a 2-row header, not 3). */
@media (max-width:359px){
  .nav .logo{width:140px}
  .nav .wrap{gap:8px 12px}
  .nav .donate{padding:6px 12px}
}
@media (min-width:900px){
  .nav .wrap{flex-wrap:nowrap;min-height:76px}
  .nav .logo{width:250px}
  .nav nav{order:0;flex-basis:auto;margin-left:auto}
  .nav ul{gap:26px}
  .nav .donate{margin-left:8px}
}

/* ---------- footer (deep navy over the field) ---------- */
.foot{background:rgba(11,26,54,.88);border-top:1px solid var(--hair);color:#DCE8F5;padding-block:48px calc(32px + env(safe-area-inset-bottom,0px));margin-top:64px}
.foot a{color:#F7F8FA}
.foot-grid{display:grid;gap:28px}
.foot-lock{width:200px}
.foot-tag{color:#A7C7E7;font-weight:500;margin-top:12px;font-size:15px}
.crisis{border-left:4px solid var(--red);padding:4px 0 4px 16px;display:grid;gap:8px;font-size:16px}
.crisis a{font-weight:700;text-decoration:none;border-bottom:2px solid var(--red)}
.ncmec{margin-top:28px;font-size:13px;color:#A7C7E7;max-width:70ch}
.fine{margin-top:20px;padding-top:18px;border-top:1px solid rgba(255,255,255,.14);display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px 24px;font-size:13px;color:#A7C7E7}
@media (min-width:820px){.foot-grid{grid-template-columns:1fr 1.2fr;gap:48px;align-items:start}}


/* Seven menu items (Stories added, 5 OCT 2026 mock-up): on mid-size screens keep them on one row. */
@media (min-width:900px) and (max-width:1199px){
  .nav .logo{width:190px}
  .nav ul{gap:16px;font-size:14px;flex-wrap:nowrap;white-space:nowrap}
  .nav .wrap{gap:8px 14px}
}

/* The Donate pop-up (donate.js). A dimmed page, one card in the middle. On a phone it sits at the bottom
   like a sheet. It fades and rises in; still for "reduce motion" (the rule at the end of this file). */
.donate-pop{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:20px;background:rgba(6,14,32,.72);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:pop-dim .35s ease both}
.donate-pop[hidden]{display:none}
.donate-card{position:relative;width:min(100%,520px);max-height:calc(100vh - 40px);overflow:auto;padding:34px 30px 24px;border-radius:14px;background:#F7F8FA;color:#0F2244;box-shadow:0 30px 80px rgba(0,0,0,.5);animation:pop-rise .5s cubic-bezier(.2,.8,.2,1) both}
.donate-card .eyebrow{color:#2563EB}
.donate-card h2{font-size:clamp(26px,4vw,36px);line-height:1.1;letter-spacing:-.01em;margin:0 0 12px}
.donate-card p{margin:0 0 14px;font-size:17px}
.donate-row{display:flex;flex-wrap:wrap;gap:12px;margin:20px 0 18px!important}
.donate-card .btn{background:#0F2244;color:#F7F8FA}
.donate-card .btn.ghost{background:transparent;color:#0F2244;border-color:#0F2244}
.donate-x{position:absolute;top:8px;right:10px;width:44px;height:44px;border:0;background:none;font-size:30px;line-height:1;color:#0F2244;cursor:pointer;border-radius:8px}
.donate-fine{font-size:13px!important;color:#44557A}
.donate-crisis{font-size:14px!important;margin:0!important;padding-top:12px;border-top:1px solid #D5DCE8}
.donate-crisis a{color:#0F2244;font-weight:700}
body.donate-open{overflow:hidden}
@keyframes pop-dim{from{opacity:0}to{opacity:1}}
@keyframes pop-rise{from{opacity:0;transform:translateY(26px) scale(.97)}to{opacity:1;transform:none}}
@media (max-width:639px){.donate-pop{place-items:end center;padding:0}.donate-card{width:100%;border-radius:16px 16px 0 0;padding:30px 20px calc(20px + env(safe-area-inset-bottom,0px))}}
/* MOCK-UP (Melody, 5 OCT 2026): the motto in the footer in PMC red, to match the one at the top of the home page. */
.foot .foot-tag{color:var(--red)}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
/* "News & Articles" is a longer tab (5 OCT 2026 mock-up): at the narrowest one-row widths, tighten a little more. */
@media (min-width:900px) and (max-width:1039px){
  .nav .logo{width:164px}
  .nav ul{gap:12px;font-size:13.5px}
  .nav .donate{padding:8px 12px;margin-left:4px}
}
