/* =============================================================================
   Georgia Energy Lab — site.css
   Mobile-first. Every breakpoint is min-width.

   BRAND TOKENS: placeholders matched to the navy / red / cream direction in the
   spec. Swap these values (and the two font families) for the campaign brand
   kit and the whole site follows. Confirm with the campaign before deviating.
   ========================================================================== */
:root{
  --navy:        #0A1E3C;
  --navy-800:    #0E2749;
  --navy-700:    #14315A;
  --navy-500:    #2A5487;
  --red:         #C8102E;
  --red-500:     #D5183A;
  --red-600:     #A50D26;
  --red-050:     #FBE7EB;
  --gold:        #FFC01F;
  --cream:       #FAF6EC;
  --cream-200:   #F1EADA;
  --cream-300:   #E3D9C2;

  /* Client request: hotspots glow light blue so they read as clickable. */
  --glow:        #4FD8FF;
  --glow-soft:   rgba(79, 216, 255, .55);
  --glow-faint:  rgba(79, 216, 255, .22);

  --ink:         #14202E;
  --ink-soft:    #4E5D6F;
  --line:        #DDD4BD;
  --white:       #FFFFFF;
  --good:        #1F7A4D;
  --good-050:    #E2F2E9;
  --bad:         #B3261E;

  --wrap:        1180px;
  --r-sm:        10px;
  --r:           16px;
  --r-lg:        26px;
  --shadow-sm:   0 1px 2px rgba(10,30,60,.05), 0 4px 12px rgba(10,30,60,.06);
  --shadow:      0 2px 4px rgba(10,30,60,.05), 0 12px 32px rgba(10,30,60,.10);
  --shadow-lg:   0 4px 10px rgba(10,30,60,.08), 0 30px 70px rgba(10,30,60,.18);

  /* Font placeholders until the campaign kit is confirmed:
     Fraunces (display serif) + Public Sans (text). Loaded in index.html. */
  --font: "Public Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
          "Helvetica Neue", Arial, sans-serif;
  --font-display: "Fraunces", Georgia, "Times New Roman", serif;
}

*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }

body{
  margin:0;
  font-family:var(--font);
  font-size:16.5px;
  line-height:1.65;
  color:var(--ink);
  background:var(--cream);
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
img,svg{ max-width:100%; }
h1,h2,h3{ font-family:var(--font-display); line-height:1.12; margin:0 0 .5em; letter-spacing:-.015em; }
p{ margin:0 0 1em; }
a{ color:var(--navy-500); }
::selection{ background:var(--gold); color:var(--navy); }

/* the header is sticky, so anchor jumps must clear it */
section[id], main [id]{ scroll-margin-top:84px; }

.wrap{ width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:22px; }
.wrap--narrow{ max-width:660px; }
.sr-only{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}
.skip-link{
  position:absolute; left:-9999px; top:0; z-index:100;
  background:var(--navy); color:#fff; padding:12px 18px; border-radius:0 0 var(--r-sm) 0;
}
.skip-link:focus{ left:0; }

/* Visible focus everywhere — required by the spec. */
:focus-visible{ outline:3px solid var(--glow); outline-offset:3px; border-radius:4px; }

/* ------------------------------------------------------- scroll reveal ----
   Classes are added by JS only, so content is never hidden without it.
   Disabled entirely under prefers-reduced-motion (checked in JS too). ----- */
.reveal{ opacity:0; transform:translateY(26px); }
.reveal.is-visible{
  opacity:1; transform:none;
  transition:opacity .65s ease, transform .65s cubic-bezier(.16,.72,.28,1);
}
@media (prefers-reduced-motion: reduce){
  .reveal{ opacity:1; transform:none; transition:none; }
}

/* ------------------------------------------------------------------ buttons */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.5em;
  font:inherit; font-weight:700; text-decoration:none; cursor:pointer;
  border:2px solid transparent; border-radius:999px;
  padding:.8em 1.7em; letter-spacing:.01em;
  transition:transform .16s cubic-bezier(.2,.7,.3,1.4), box-shadow .16s ease,
             background .16s ease, color .16s ease;
}
.btn:active{ transform:translateY(1px) scale(.99); }
.btn--primary{
  background:linear-gradient(180deg, var(--red-500) 0%, var(--red) 55%, var(--red-600) 100%);
  color:#fff;
  box-shadow:0 2px 6px rgba(200,16,46,.35), 0 10px 26px rgba(200,16,46,.28),
             inset 0 1px 0 rgba(255,255,255,.22);
}
.btn--primary:hover{
  transform:translateY(-2px);
  box-shadow:0 4px 10px rgba(200,16,46,.4), 0 16px 34px rgba(200,16,46,.34),
             inset 0 1px 0 rgba(255,255,255,.22);
}
.btn--ghost{ background:transparent; color:var(--navy); border-color:currentColor; }
.btn--ghost:hover{ background:rgba(10,30,60,.08); transform:translateY(-1px); }
.btn--sm{ padding:.5em 1.2em; font-size:.9rem; }
.btn--block{ width:100%; }

/* eyebrow — small editorial kicker above section titles */
.eyebrow{
  display:flex; align-items:center; justify-content:center; gap:.7em;
  margin:0 0 14px; font-size:.74rem; font-weight:800;
  letter-spacing:.22em; text-transform:uppercase; color:var(--red);
}
.eyebrow::before,.eyebrow::after{
  content:""; width:26px; height:2px; border-radius:2px;
  background:currentColor; opacity:.4;
}

/* =============================== HEADER ================================== */
.siteheader{
  position:sticky; top:0; z-index:50;
  background:rgba(10,30,60,.9);
  -webkit-backdrop-filter:blur(14px) saturate(1.4);
  backdrop-filter:blur(14px) saturate(1.4);
  color:#fff;
  border-bottom:1px solid rgba(255,255,255,.08);
  transition:box-shadow .25s ease, background .25s ease;
}
.siteheader.is-scrolled{
  background:rgba(9,26,52,.96);
  box-shadow:0 6px 24px rgba(4,12,26,.45);
}
.siteheader__inner{ display:flex; align-items:center; gap:16px; min-height:70px; }
/* min-width:0 down the chain so the lockup shrinks instead of colliding
   with the menu button on narrow phones */
.brand{
  display:flex; align-items:center; gap:11px; min-width:0;
  color:#fff; text-decoration:none; margin-right:auto;
}
.brand__mark{
  display:grid; place-items:center; color:var(--cream); flex:none;
  filter:drop-shadow(0 0 8px rgba(255,192,31,.35));
}
.brand__text{ display:flex; flex-direction:column; min-width:0; line-height:1.1; }
.brand__text strong{ font-family:var(--font-display); font-size:1.08rem; font-weight:700; letter-spacing:.005em; }
.brand__text em{
  font-style:normal; margin-top:3px;
  font-size:.55rem; font-weight:600; color:rgba(255,255,255,.65);
  letter-spacing:.09em; text-transform:uppercase; white-space:nowrap;
  overflow:hidden; text-overflow:ellipsis;   /* safety net, never a collision */
}
@media (min-width:900px){ .brand__text em{ font-size:.66rem; letter-spacing:.14em; } }

.navtoggle{
  display:grid; place-items:center; width:44px; height:44px;
  background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.25);
  border-radius:12px; cursor:pointer; transition:background .15s ease;
}
.navtoggle:hover{ background:rgba(255,255,255,.14); }
.navtoggle__bars,.navtoggle__bars::before,.navtoggle__bars::after{
  content:""; display:block; width:20px; height:2px; background:#fff; border-radius:2px;
  transition:transform .18s ease, opacity .18s ease;
}
.navtoggle__bars{ position:relative; }
.navtoggle__bars::before{ position:absolute; top:-6px; }
.navtoggle__bars::after{ position:absolute; top:6px; }
.navtoggle[aria-expanded="true"] .navtoggle__bars{ background:transparent; }
.navtoggle[aria-expanded="true"] .navtoggle__bars::before{ transform:translateY(6px) rotate(45deg); }
.navtoggle[aria-expanded="true"] .navtoggle__bars::after{ transform:translateY(-6px) rotate(-45deg); }

.nav{
  display:none; position:absolute; left:0; right:0; top:100%;
  background:rgba(12,32,62,.98);
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  padding:8px 22px 18px; flex-direction:column;
  box-shadow:0 24px 40px rgba(4,12,26,.5);
}
.nav.is-open{ display:flex; }
.nav a{
  color:#fff; text-decoration:none; padding:13px 4px; font-weight:600;
  border-bottom:1px solid rgba(255,255,255,.1);
}
.nav a:last-child{ border-bottom:0; }
.nav__cta{ color:#fff; }

@media (min-width:900px){
  .navtoggle{ display:none; }
  .nav{
    display:flex; position:static; flex-direction:row; align-items:center; gap:2px;
    background:transparent; padding:0; box-shadow:none;
    -webkit-backdrop-filter:none; backdrop-filter:none;
  }
  .nav a{
    position:relative; border:0; padding:9px 15px; font-size:.93rem;
    color:rgba(255,255,255,.85); transition:color .15s ease;
  }
  .nav a::after{
    content:""; position:absolute; left:15px; right:15px; bottom:4px; height:2px;
    border-radius:2px; background:var(--gold);
    transform:scaleX(0); transform-origin:left; transition:transform .2s ease;
  }
  .nav a:hover{ color:#fff; }
  .nav a:hover::after{ transform:scaleX(1); }
  .nav__cta{
    margin-left:10px; color:#fff !important;
    background:linear-gradient(180deg, var(--red-500), var(--red-600));
    border-radius:999px; box-shadow:0 4px 14px rgba(200,16,46,.4);
    transition:transform .15s ease, box-shadow .15s ease;
  }
  .nav__cta::after{ display:none; }
  .nav__cta:hover{ transform:translateY(-1px); box-shadow:0 6px 18px rgba(200,16,46,.5); }
}

/* ================================ HERO =================================== */
.hero{
  position:relative;
  background:
    radial-gradient(900px 420px at 15% -8%, rgba(255,214,77,.28), transparent 60%),
    radial-gradient(1100px 520px at 88% -12%, rgba(79,216,255,.22), transparent 60%),
    linear-gradient(180deg, #E7F4FC 0%, #F2F7F5 46%, var(--cream) 78%);
  padding-bottom:56px;
}
.hero__banner{
  background:linear-gradient(90deg, var(--navy) 0%, var(--navy-700) 55%, var(--navy) 100%);
  color:#fff; border-bottom:1px solid rgba(255,255,255,.06);
}
.hero__banner p{
  margin:0; padding:11px 0; text-align:center; font-size:.9rem; line-height:1.45;
  font-family:var(--font-display); font-weight:600; letter-spacing:.01em;
  color:rgba(255,255,255,.92);
}
.hero__head{ text-align:center; padding:52px 0 12px; }
.hero h1{
  font-size:clamp(2.5rem, 7.5vw, 4.4rem); font-weight:900; color:var(--navy);
  letter-spacing:-.025em; margin-bottom:.32em;
}
/* italic accent word with a hand-drawn gold underline */
.hero h1 .accent{
  font-style:italic; color:var(--red); padding-bottom:.1em;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 12' preserveAspectRatio='none'%3E%3Cpath d='M3 9 Q 40 3 70 6 T 117 5' fill='none' stroke='%23FFC01F' stroke-width='5' stroke-linecap='round'/%3E%3C/svg%3E")
    no-repeat left 100% / 100% .14em;
}
.hero__sub{ max-width:62ch; margin-inline:auto; color:var(--ink-soft); font-size:1.06rem; }

.prompt{
  display:flex; align-items:center; gap:.6em; width:fit-content;
  margin:10px auto 22px; padding:.6em 1.3em;
  background:rgba(255,255,255,.9); border:1px solid rgba(79,216,255,.55);
  border-radius:999px; box-shadow:0 4px 16px rgba(10,30,60,.08), 0 0 0 4px var(--glow-faint);
  font-weight:700; font-size:.95rem; color:var(--navy);
}
.prompt__pulse{
  width:11px; height:11px; border-radius:50%; background:var(--glow); flex:none;
  box-shadow:0 0 0 0 var(--glow-soft); animation:pulse 2.1s infinite;
}

/* --------------------------- illustration stage --------------------------- */
.stage-wrap{ position:relative; width:100%; max-width:1100px; margin-inline:auto; }
.stage{
  position:relative; width:100%;
  border-radius:clamp(18px, 2.6vw, 30px); overflow:hidden;
  background:#BFE3F7;
  border:clamp(4px, .55vw, 7px) solid var(--white);
  box-shadow:0 1px 2px rgba(10,30,60,.1), 0 22px 44px rgba(10,30,60,.16),
             0 54px 110px rgba(10,30,60,.18);
}
.stage__art{ display:block; }
.stage__art svg{ display:block; width:100%; height:auto; }

.stage__hotspots{ position:absolute; inset:0; }

/* ------------------- HOTSPOTS: glowing light-blue markers ------------------
   Client note: "each of these clickable appliances should have some kind of
   glowing indicator that they're clickable ... maybe glowing some kind of
   light blue color."  Dot + halo + expanding ring, all in --glow.
   Real <button>s, keyboard reachable, visible focus.

   The DOT — not the button — must sit on the anchor point. The label is a
   sibling that hangs off it, so the button is offset by half a dot rather
   than centred as a whole. --------------------------------------------- */
.hotspot{
  position:absolute; transform:translate(-15px,-50%);
  display:flex; align-items:center; gap:9px;
  padding:0; background:transparent; border:0; cursor:pointer;
  color:var(--navy); font:inherit; white-space:nowrap;
}
.hotspot__dot{
  position:relative; flex:none;
  width:30px; height:30px; border-radius:50%;
  background:radial-gradient(circle at 35% 30%, #FFFFFF 0%, var(--glow) 55%, #1FA9D8 100%);
  border:2px solid #fff;
  box-shadow:0 0 0 3px rgba(79,216,255,.35),
             0 0 18px 5px var(--glow-soft),
             0 3px 8px rgba(0,0,0,.3);
  display:grid; place-items:center;
  transition:transform .18s cubic-bezier(.2,.7,.3,1.5), box-shadow .18s ease;
}
.hotspot__dot svg{ width:16px; height:16px; color:var(--navy); }
/* expanding ring */
.hotspot__dot::after{
  content:""; position:absolute; inset:-2px; border-radius:50%;
  border:2px solid var(--glow); opacity:.9;
  animation:ring 2.4s ease-out infinite;
}
.hotspot:nth-child(2) .hotspot__dot::after{ animation-delay:.35s; }
.hotspot:nth-child(3) .hotspot__dot::after{ animation-delay:.75s; }
.hotspot:nth-child(4) .hotspot__dot::after{ animation-delay:1.1s; }
.hotspot:nth-child(5) .hotspot__dot::after{ animation-delay:1.5s; }

/* phones: icon-only markers, slightly smaller so neighbouring points
   (the kitchen pendant and the range) never collide */
@media (max-width:759px){
  .hotspot__dot{ width:26px; height:26px; }
  .hotspot__dot svg{ width:14px; height:14px; }
  .hotspot{ transform:translate(-13px,-50%); }
}

.hotspot__label{
  display:none;
  background:rgba(255,255,255,.92);
  -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
  color:var(--navy);
  padding:6px 13px; border-radius:999px; font-size:.84rem; font-weight:700;
  box-shadow:0 3px 12px rgba(10,30,60,.24);
  border:1.5px solid rgba(79,216,255,.75);
  transition:background .15s ease, color .15s ease;
}
@media (min-width:760px){ .hotspot__label{ display:inline-block; } }

/* flip the label to the left for hotspots near the right edge; the dot then
   sits at the button's trailing edge, so shift by width-minus-half-a-dot */
.hotspot--flip{ flex-direction:row-reverse; transform:translate(calc(-100% + 15px), -50%); }
@media (max-width:759px){
  .hotspot--flip{ transform:translate(calc(-100% + 13px), -50%); }
}

.hotspot:hover .hotspot__dot,
.hotspot:focus-visible .hotspot__dot{
  transform:scale(1.22);
  box-shadow:0 0 0 5px rgba(79,216,255,.45),
             0 0 28px 9px var(--glow-soft),
             0 3px 10px rgba(0,0,0,.35);
}
.hotspot[aria-pressed="true"] .hotspot__dot{
  background:radial-gradient(circle at 35% 30%, #FFFFFF 0%, #FFD84D 55%, #E9A400 100%);
  box-shadow:0 0 0 5px rgba(255,216,77,.5), 0 0 26px 8px rgba(255,216,77,.55);
}
.hotspot[aria-pressed="true"] .hotspot__dot::after{ animation:none; opacity:0; }
.hotspot[aria-pressed="true"] .hotspot__label{
  background:var(--navy); color:#fff; border-color:var(--navy);
}

@keyframes pulse{
  0%{ box-shadow:0 0 0 0 var(--glow-soft); }
  70%{ box-shadow:0 0 0 12px rgba(79,216,255,0); }
  100%{ box-shadow:0 0 0 0 rgba(79,216,255,0); }
}
@keyframes ring{
  0%{ transform:scale(1); opacity:.9; }
  100%{ transform:scale(2.5); opacity:0; }
}
@media (prefers-reduced-motion: reduce){
  .hotspot__dot::after,.prompt__pulse{ animation:none; }
}

/* ------------------------------ card popover ------------------------------
   Anchored just beneath the clicked hotspot (left/top/width set from JS,
   --caret-x points the diamond at the dot). An overlay: opening it never
   shifts the page, and the copy lands right where the user tapped. -------- */
.stage__popover{ position:absolute; z-index:6; }
.stage__popover::before{
  content:""; position:absolute; z-index:2; top:-8px;
  left:calc(var(--caret-x, 50%) - 9px);
  width:18px; height:18px; border-radius:3px;
  background:var(--glow); transform:rotate(45deg);
}
/* keep long cards usable on small screens */
.stage__popover .hcard__body{ max-height:min(52vh, 420px); overflow-y:auto; }

/* the pop-out graphic card the client described */
.hcard{
  position:relative; width:100%; background:var(--white); border-radius:var(--r-lg);
  box-shadow:var(--shadow-lg);
  overflow:hidden; animation:cardIn .3s cubic-bezier(.18,.8,.28,1.05);
}
.hcard::before{
  content:""; position:absolute; top:0; left:0; right:0; height:5px;
  background:linear-gradient(90deg, var(--glow) 0%, #9FE8FF 45%, rgba(79,216,255,.15) 100%);
}
@keyframes cardIn{ from{ opacity:0; transform:translateY(16px) scale(.985); } }
@media (prefers-reduced-motion: reduce){ .hcard{ animation:none; } }

.hcard__head{
  display:flex; align-items:center; gap:13px;
  padding:18px 20px 16px; border-bottom:1px solid var(--cream-200);
  background:linear-gradient(180deg, #FDFBF4, var(--cream));
}
.hcard__icon{
  flex:none; width:40px; height:40px; border-radius:50%;
  display:grid; place-items:center; background:#fff; color:var(--navy);
  box-shadow:0 0 0 2px rgba(79,216,255,.65), 0 0 14px rgba(79,216,255,.35);
}
.hcard__icon svg{ width:20px; height:20px; }
.hcard__title{ margin:0; font-size:1.35rem; color:var(--navy); }
.hcard__close{
  margin-left:auto; flex:none; width:38px; height:38px; border-radius:50%;
  border:0; background:rgba(10,30,60,.07); color:var(--navy); cursor:pointer;
  font-size:1.2rem; line-height:1; display:grid; place-items:center;
  transition:background .15s ease, transform .15s ease;
}
.hcard__close:hover{ background:rgba(10,30,60,.15); transform:rotate(90deg); }
.hcard__body{ padding:20px; }
.hcard__body p{ margin:0 0 .95em; max-width:74ch; }
.hcard__body p:last-child{ margin-bottom:0; }
.hcard__link{
  display:inline-flex; align-items:center; gap:.4em; font-weight:700;
  color:var(--red); text-decoration:none; border-bottom:2px solid currentColor;
  transition:gap .15s ease, color .15s ease;
}
.hcard__link:hover{ color:var(--red-600); gap:.65em; }

.draftflag{
  display:inline-block; margin-bottom:10px; font-size:.7rem; font-weight:800;
  letter-spacing:.09em; text-transform:uppercase; color:#8A5300;
  background:#FFF1CC; border:1px solid #E8C56B; border-radius:999px; padding:3px 11px;
}

/* =============================== SECTIONS ================================ */
.section{ padding:72px 0; }
@media (min-width:900px){ .section{ padding:96px 0; } }
.section__title{
  font-size:clamp(1.9rem, 4.8vw, 2.8rem); font-weight:700; color:var(--navy); text-align:center;
}
.section__lede{ text-align:center; max-width:60ch; margin:0 auto 34px; color:var(--ink-soft); font-size:1.04rem; }

.section--wallet{ background:var(--white); border-block:1px solid var(--cream-200); }
.section--fitz{
  background:
    radial-gradient(800px 400px at 100% 0%, rgba(79,216,255,.08), transparent 60%),
    var(--cream);
}
.section--kids{
  position:relative; background:var(--navy); color:#fff; overflow:hidden;
}
.section--kids::before{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:
    radial-gradient(700px 380px at 8% 0%, rgba(79,216,255,.14), transparent 60%),
    radial-gradient(720px 420px at 96% 100%, rgba(255,192,31,.12), transparent 60%);
}
.section--kids .wrap{ position:relative; }
.section--kids .section__title{ color:#fff; text-align:left; }
.section--kids .eyebrow{ color:var(--gold); justify-content:flex-start; }
.section--kids .section__lede{ color:rgba(255,255,255,.82); text-align:left; margin-inline:0; }
.section--signup{
  background:
    radial-gradient(720px 380px at 50% 0%, rgba(79,216,255,.1), transparent 65%),
    var(--cream-200);
}

/* ================================ WALLET ================================= */
.wallet{ display:grid; gap:34px; }
@media (min-width:900px){ .wallet{ grid-template-columns:minmax(0,1fr) minmax(0,1.05fr); align-items:start; gap:52px; } }

.wallet__visual{
  text-align:center; padding:34px 20px 30px;
  background:linear-gradient(180deg, #FDFBF4 0%, var(--cream) 100%);
  border:1px solid var(--cream-200); border-radius:calc(var(--r-lg) + 4px);
  box-shadow:var(--shadow-sm);
}
@media (min-width:900px){
  .wallet__visual{ position:sticky; top:96px; }
}
.wallet__art{
  position:relative; width:min(340px,82vw); height:272px; margin:0 auto 8px;
}
.wallet__fan{ position:absolute; inset:0; }

/* Bills fan upward out of the wallet. The pivot sits below each bill so
   rotating swings the tops outward — the fan widens as the total grows. */
.bill{
  position:absolute; left:50%; bottom:96px;
  width:60px; height:132px; margin-left:-30px;
  border-radius:5px; transform-origin:50% calc(100% + 34px);
  background:linear-gradient(150deg,#E6F2DC 0%,#BEDCAE 45%,#A2C98E 100%);
  border:1.5px solid #7FAE6E;
  box-shadow:0 2px 6px rgba(0,0,0,.2);
  transition:transform .42s cubic-bezier(.2,.8,.3,1), opacity .32s ease;
}
.bill::before{
  content:""; position:absolute; inset:9px 7px;
  border:1.5px solid rgba(76,122,62,.38); border-radius:3px;
}
.bill::after{
  content:"$"; position:absolute; inset:0; display:grid; place-items:center;
  font-family:var(--font-display); font-weight:700; font-size:1.05rem; color:#4C7A3E; opacity:.8;
}
.bill--enter{ opacity:0; }
@media (prefers-reduced-motion: reduce){ .bill{ transition:none; } }

.wallet__body{
  position:absolute; left:50%; bottom:0; width:280px; height:120px; margin-left:-140px;
  background:linear-gradient(175deg,#8A5A34 0%,#6B4224 60%,#54321A 100%);
  border-radius:14px;
  box-shadow:0 14px 34px rgba(60,34,12,.35), inset 0 2px 0 rgba(255,255,255,.18);
}
.wallet__flap{
  position:absolute; left:0; right:0; top:14px; height:64px;
  background:linear-gradient(175deg,#9B6739 0%,#7A4C2A 100%);
  border-radius:11px 11px 4px 4px; box-shadow:0 -3px 8px rgba(0,0,0,.28);
}
.wallet__seam{
  position:absolute; left:14px; right:14px; top:26px; height:0;
  border-top:2px dashed rgba(255,226,180,.45); border-radius:2px;
}
.wallet__art.is-empty .wallet__body{ filter:grayscale(.5) brightness(.82); }

.wallet__label{
  margin:0; font-size:.76rem; font-weight:800; text-transform:uppercase;
  letter-spacing:.18em; color:var(--ink-soft);
}
.wallet__total{
  font-family:var(--font-display); font-weight:900;
  font-size:clamp(3.2rem,12vw,4.8rem); line-height:1;
  margin:.08em 0 .12em; font-variant-numeric:tabular-nums;
  background:linear-gradient(165deg, var(--navy) 30%, var(--navy-500) 100%);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.wallet__total.is-zero{
  background:linear-gradient(165deg, var(--bad) 30%, var(--red) 100%);
  -webkit-background-clip:text; background-clip:text;
}
.wallet__total.pop{ animation:totalPop .4s cubic-bezier(.2,.7,.3,1.4); }
@keyframes totalPop{ 0%{ transform:scale(1); } 40%{ transform:scale(1.07); } 100%{ transform:scale(1); } }
@media (prefers-reduced-motion: reduce){ .wallet__total.pop{ animation:none; } }

.wallet__verdict{ min-height:3em; font-weight:600; color:var(--ink-soft); max-width:34ch; margin-inline:auto; }

.toggles{ border:0; padding:0; margin:0 0 26px; }
.toggles legend{
  font-family:var(--font-display); font-size:1.08rem; font-weight:700; color:var(--navy);
  padding:0 0 10px; display:flex; align-items:center; gap:.55em;
}
.toggles--out legend::before,
.toggles--in legend::before,
.toggles--worst legend::before{
  content:""; width:11px; height:11px; border-radius:4px; display:inline-block;
}
.toggles--out legend::before{ background:var(--bad); box-shadow:0 0 0 4px var(--red-050); }
.toggles--in legend::before{ background:var(--good); box-shadow:0 0 0 4px var(--good-050); }
.toggles--worst legend::before{ background:#2C3238; box-shadow:0 0 0 4px #E4E7EA; }

.toggle{
  display:flex; align-items:center; gap:13px; width:100%; text-align:left;
  background:var(--white); border:1.5px solid var(--cream-300); border-radius:var(--r);
  padding:13px 15px; margin-bottom:10px; cursor:pointer; font:inherit; color:var(--ink);
  box-shadow:var(--shadow-sm);
  transition:border-color .16s ease, background .16s ease, box-shadow .16s ease,
             transform .16s ease;
}
.toggle:hover{ border-color:var(--navy-500); transform:translateY(-1px); box-shadow:var(--shadow); }
.toggle__switch{
  flex:none; width:46px; height:26px; border-radius:999px; background:#CDD4DE;
  position:relative; transition:background .2s ease;
  box-shadow:inset 0 1px 3px rgba(10,30,60,.18);
}
.toggle__switch::after{
  content:""; position:absolute; top:3px; left:3px; width:20px; height:20px;
  border-radius:50%; background:#fff; box-shadow:0 1px 4px rgba(0,0,0,.35);
  transition:transform .2s cubic-bezier(.2,.7,.3,1.3);
}
.toggle__text{ flex:1; font-weight:600; }
.toggle__delta{
  flex:none; font-weight:800; font-variant-numeric:tabular-nums; font-size:.92rem;
  color:var(--ink-soft); background:rgba(10,30,60,.06);
  padding:.2em .7em; border-radius:999px;
  transition:background .16s ease, color .16s ease;
}

.toggle[aria-pressed="true"]{ background:#F4F8FF; border-color:var(--navy); box-shadow:var(--shadow); }
.toggle[aria-pressed="true"] .toggle__switch::after{ transform:translateX(20px); }
.toggles--out .toggle[aria-pressed="true"] .toggle__switch{ background:var(--bad); }
.toggles--out .toggle[aria-pressed="true"] .toggle__delta{ color:var(--bad); background:var(--red-050); }
.toggles--in  .toggle[aria-pressed="true"] .toggle__switch{ background:var(--good); }
.toggles--in  .toggle[aria-pressed="true"] .toggle__delta{ color:var(--good); background:var(--good-050); }

/* worst case gets a distinct treatment */
.toggle--worst{ border:1.5px dashed #8B939C; background:#FBFAF7; }
.toggle--worst .toggle__note{ display:block; font-weight:400; font-size:.83rem; color:var(--ink-soft); }
.toggle--worst[aria-pressed="true"]{
  background:linear-gradient(175deg,#343C44,#22282E);
  color:#fff; border-style:solid; border-color:#22282E;
  box-shadow:0 12px 28px rgba(20,26,32,.35);
}
.toggle--worst[aria-pressed="true"] .toggle__note{ color:rgba(255,255,255,.72); }
.toggle--worst[aria-pressed="true"] .toggle__switch{ background:var(--red); }

.disclaimer{
  max-width:70ch; margin:30px auto 0; text-align:center;
  font-size:.85rem; color:var(--ink-soft); font-style:italic;
}

/* ================================= FITZ ================================== */
.fitz-profile{
  display:flex; align-items:center; gap:18px;
  width:fit-content; max-width:100%; margin:0 auto 30px;
  padding:14px 30px 14px 16px;
  background:var(--white); border:1px solid rgba(10,30,60,.07);
  border-radius:var(--r-lg); box-shadow:var(--shadow);
}
.fitz-profile__photo{
  margin:0; width:88px; height:88px; border-radius:50%; overflow:hidden; flex:none;
  box-shadow:0 0 0 3px var(--white), 0 0 0 5px rgba(79,216,255,.5);
}
.fitz-profile__photo img,
.fitz-profile__photo svg{ display:block; width:100%; height:100%; object-fit:cover; }
.fitz-profile__meta{ display:flex; flex-direction:column; gap:2px; text-align:left; min-width:0; }
.fitz-profile__meta strong{
  font-family:var(--font-display); font-size:1.3rem; font-weight:700; color:var(--navy);
}
.fitz-profile__meta > span{ font-size:.86rem; color:var(--ink-soft); }
.votepill{
  align-self:flex-start; margin-top:8px;
  background:linear-gradient(180deg, var(--red-500), var(--red-600));
  color:#fff !important; font-size:.72rem; font-weight:800;
  letter-spacing:.08em; text-transform:uppercase;
  padding:.42em 1em; border-radius:999px;
  box-shadow:0 4px 12px rgba(200,16,46,.35);
}

.chips{ display:flex; flex-wrap:wrap; gap:10px; justify-content:center; margin-bottom:40px; }
.chip{
  display:inline-flex; align-items:center; gap:.5em;
  border:1.5px solid var(--navy); background:rgba(255,255,255,.7); color:var(--navy);
  border-radius:999px; padding:.6em 1.25em; font:inherit; font-weight:700; cursor:pointer;
  transition:background .16s ease, color .16s ease, box-shadow .16s ease, transform .16s ease;
}
.chip:hover{ background:#fff; transform:translateY(-2px); box-shadow:var(--shadow-sm); }
.chip[aria-pressed="true"]{
  background:linear-gradient(180deg, var(--navy-700), var(--navy));
  color:#fff; border-color:var(--navy);
  box-shadow:0 8px 20px rgba(10,30,60,.3);
}
.chip[aria-pressed="true"]::before{ content:"✓"; font-weight:900; color:var(--gold); }

.fitz__heading{ text-align:center; font-size:clamp(1.35rem,3.6vw,1.9rem); color:var(--navy); margin-bottom:22px; }

.issuecards{ display:grid; gap:14px; max-width:840px; margin-inline:auto; }
.issuecard{
  background:var(--white); border-radius:calc(var(--r) + 2px);
  border:1px solid rgba(10,30,60,.07); border-left:5px solid transparent;
  box-shadow:var(--shadow-sm); overflow:hidden;
  transition:border-color .2s ease, opacity .2s ease, box-shadow .2s ease, transform .2s ease;
}
.issuecard:hover{ transform:translateY(-2px); box-shadow:var(--shadow); }
.issuecard.is-selected{
  border-left-color:var(--red);
  box-shadow:0 3px 8px rgba(10,30,60,.08), 0 20px 44px rgba(10,30,60,.14);
}
.issuecard.is-dim{ opacity:.66; }
.issuecard.is-dim:hover,.issuecard.is-dim:focus-within{ opacity:1; }

.issuecard__h{ margin:0; }
.issuecard__btn{
  display:flex; align-items:center; gap:12px; width:100%; text-align:left;
  background:transparent; border:0; font:inherit; cursor:pointer; padding:17px 18px;
  color:var(--navy);
}
.issuecard__name{ flex:1; font-family:var(--font-display); font-size:1.18rem; font-weight:700; }
.issuecard__tag{
  font-size:.64rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase;
  background:linear-gradient(180deg, var(--red-500), var(--red-600));
  color:#fff; border-radius:999px; padding:4px 10px;
  box-shadow:0 3px 8px rgba(200,16,46,.3);
}
.issuecard__chev{
  flex:none; width:34px; height:34px; border-radius:50%;
  display:grid; place-items:center; background:rgba(10,30,60,.06);
  transition:transform .22s ease, background .15s ease; color:var(--navy-500);
}
.issuecard__btn:hover .issuecard__chev{ background:rgba(10,30,60,.12); }
.issuecard__btn[aria-expanded="true"] .issuecard__chev{ transform:rotate(180deg); }

.issuecard__panel{ padding:0 20px 20px; border-top:1px solid var(--cream-200); }
.issuecard__panel[hidden]{ display:none; }
.issuecard__panel > p:first-child,
.issuecard__panel > .draftflag + p{ margin-top:1.1em; }
.issuecard__panel > .draftflag{ margin-top:14px; }
.issuecard__panel p{ max-width:74ch; }

/* energy mix graphic — Option B (no unverified percentages) */
.energymix{ display:grid; gap:12px; margin:8px 0 20px; }
@media (min-width:620px){ .energymix{ grid-template-columns:1fr 1fr; } }
.energymix__group{
  background:var(--cream); border-radius:var(--r); padding:15px;
  border:1px solid var(--cream-200);
}
.energymix__group h5{
  margin:0 0 10px; font-size:.72rem; font-weight:800;
  letter-spacing:.1em; text-transform:uppercase; color:var(--ink-soft);
}
.energymix__group--base{ border-left:5px solid var(--navy); }
.energymix__group--int{ border-left:5px solid var(--gold); }
.energymix__items{ display:flex; flex-wrap:wrap; gap:8px; }
.energymix__item{
  display:inline-flex; align-items:center; gap:.45em; background:#fff;
  border:1px solid var(--line); border-radius:999px; padding:5px 13px;
  font-size:.88rem; font-weight:600; box-shadow:var(--shadow-sm);
}
.energymix__item svg{ width:16px; height:16px; color:var(--navy-500); }
.energymix__note{ grid-column:1/-1; margin:0; font-size:.85rem; color:var(--ink-soft); font-style:italic; }

/* ================================ KIDS =================================== */
.kids{ display:grid; gap:38px; align-items:center; }
@media (min-width:900px){ .kids{ grid-template-columns:1.05fr .95fr; gap:56px; } }
.kids__list{ margin:0 0 28px; padding-left:1.2em; color:rgba(255,255,255,.85); }
.kids__list li{ margin-bottom:.4em; }
.kids__list li::marker{ color:var(--gold); }
.kids__hint{ font-size:.85rem; color:rgba(255,255,255,.58); margin-top:14px; }
.kids__sheet{
  position:relative; background:#fff; border-radius:8px; padding:18px;
  box-shadow:0 12px 30px rgba(3,10,22,.45), 0 40px 80px rgba(3,10,22,.4);
  transform:rotate(-1.8deg);
  transition:transform .3s cubic-bezier(.2,.7,.3,1.3);
}
.kids__preview:hover .kids__sheet{ transform:rotate(-.4deg) scale(1.015); }
/* a strip of "tape" holding the sheet up */
.kids__sheet::before{
  content:""; position:absolute; top:-12px; left:50%; width:96px; height:26px;
  transform:translateX(-50%) rotate(1.5deg);
  background:rgba(255,224,130,.75); border-radius:2px;
  box-shadow:0 1px 3px rgba(0,0,0,.15);
}
.kids__sheetart svg{ display:block; width:100%; height:auto; }
/* line-art preview: CSS beats SVG presentation attributes, so one geometry
   source serves both the colored hero and the uncolored coloring page. */
.kids__sheetart svg *{ fill:#fff !important; stroke:#111 !important; stroke-width:1.6 !important; }
.kids__sheetart svg .bg,.kids__sheetart svg .glow{ display:none !important; }
.kids__sheetart svg text{ display:none !important; }

/* =============================== SIGNUP ================================== */
.signup{
  background:var(--white); border-radius:calc(var(--r-lg) + 2px); padding:30px 26px;
  box-shadow:var(--shadow-lg); border:1px solid rgba(10,30,60,.05);
}
@media (min-width:640px){ .signup{ padding:38px 36px; } }
.field{ margin-bottom:20px; }
.field label,.field__label{ display:block; font-weight:700; color:var(--navy); margin-bottom:7px; }
.opt{ font-weight:500; color:var(--ink-soft); font-size:.82rem; }
.req{ font-weight:700; color:var(--red); font-size:.82rem; }
.field__hint{ font-size:.85rem; color:var(--ink-soft); margin:0 0 10px; }
.field input{
  width:100%; font:inherit; padding:13px 15px; border-radius:12px;
  border:1.5px solid var(--cream-300); background:#FDFCF8; color:var(--ink);
  transition:border-color .15s ease, box-shadow .15s ease, background .15s ease;
}
.field input:hover{ border-color:var(--navy-500); }
.field input:focus{
  outline:none; border-color:var(--glow); background:#fff;
  box-shadow:0 0 0 4px var(--glow-faint);
}
.field input[aria-invalid="true"]{ border-color:var(--bad); background:#FFF6F5; }
.field__err,.form__err{ color:var(--bad); font-size:.88rem; font-weight:600; margin:7px 0 0; }
.form__err{ margin-bottom:14px; }
.form__fine{ font-size:.8rem; color:var(--ink-soft); text-align:center; margin:14px 0 0; }

.chips--form{ justify-content:flex-start; gap:8px; margin-bottom:0; }
.chips--form .chip{ font-size:.9rem; padding:.45em .55em .45em 1.05em; }
.chip__x{
  display:grid; place-items:center; width:22px; height:22px; border-radius:50%;
  background:rgba(255,255,255,.22); font-size:.9rem; line-height:1;
}
.chip--add{ border-style:dashed; font-weight:600; background:transparent; }
.chips--form .chip[aria-pressed="false"] .chip__x{ display:none; }

.success{
  position:relative; background:var(--white); border-radius:calc(var(--r-lg) + 2px);
  padding:34px 28px; box-shadow:var(--shadow-lg); text-align:center; overflow:hidden;
}
.success::before{
  content:""; position:absolute; top:0; left:0; right:0; height:5px;
  background:linear-gradient(90deg, var(--good), #5CC08D);
}
.success h3{ color:var(--navy); font-size:1.7rem; }
.success__actions{ display:flex; align-items:center; justify-content:center; gap:12px; flex-wrap:wrap; }
.success__copied{ color:var(--good); font-weight:700; font-size:.9rem; }

/* ================================ FOOTER ================================= */
.footer{
  position:relative; background:linear-gradient(180deg, var(--navy) 0%, #081831 100%);
  color:rgba(255,255,255,.82); padding:46px 0 36px;
}
.footer::before{
  content:""; position:absolute; top:0; left:0; right:0; height:4px;
  background:linear-gradient(90deg, var(--red) 0%, var(--gold) 55%, var(--glow) 100%);
}
.footer__inner{ display:grid; gap:20px; justify-items:center; text-align:center; }
.footer__brand{
  display:flex; align-items:center; gap:10px; color:var(--cream);
  font-family:var(--font-display); font-weight:700; font-size:1.2rem;
}
.footer__links{ display:flex; flex-wrap:wrap; gap:8px 26px; justify-content:center; }
.footer__links a{
  color:#fff; text-decoration:none; border-bottom:1px solid rgba(255,255,255,.3);
  font-size:.93rem; transition:border-color .15s ease;
}
.footer__links a:hover{ border-bottom-color:var(--gold); }
.footer__social{ display:flex; gap:12px; }
.footer__social a{
  display:grid; place-items:center; width:40px; height:40px; border-radius:50%;
  background:rgba(255,255,255,.1); color:#fff; border:1px solid rgba(255,255,255,.12);
  transition:background .15s ease, transform .15s ease;
}
.footer__social a:hover{ background:rgba(255,255,255,.22); transform:translateY(-2px); }
.footer__social svg{ width:18px; height:18px; }
.footer__disclaimer{
  margin:8px 0 0; font-size:.78rem; color:rgba(255,255,255,.55); max-width:60ch; line-height:1.5;
}
