@charset "UTF-8";
/* ── Variables ── */
:root {
  --navy:#0e2554; --teal:#12aabf; --gold:#ffd166;
  --google:#4285F4; --g-red:#EA4335; --g-yellow:#FBBC05; --g-green:#34A853;
  /* AA-safe text variants. The Google brand colours are 3.0–3.6:1 on white and FAIL
     WCAG AA as body text. Use --*-aa wherever the colour carries WORDS; keep the
     brand values for borders, fills, bars and icons only. */
  --google-aa:#1a56c4;   /* 6.62:1 on #fff */
  --teal-aa:#0b6b78;     /* 6.20:1 on #fff */
  --red-aa:#c62828;      /* 5.62:1 on #fff */
  --green-aa:#136b32;    /* 6.53:1 on #fff, 5.85:1 on the active-row tint (#15803d was 4.49 there) */
  --amber-aa:#8a5a00;    /* 5.90:1 on #fff */
  --white:#ffffff; --off-white:#f7f8fc;
  /* --gray-400 is 2.5:1 — BORDERS, ICON FILLS AND DIVIDERS ONLY, never text. */
  --gray-100:#f1f3f9; --gray-200:#e2e6f0; --gray-400:#9ba3b8; --gray-500:#6b7490; --gray-600:#5a6480; --gray-800:#1e2740;
  --radius:12px; --radius-sm:8px;
  --shadow:0 4px 24px rgba(14,37,84,.10);
  --shadow-lg:0 8px 40px rgba(14,37,84,.16);
  --font-head:'Plus Jakarta Sans',sans-serif; --font-body:'DM Sans',sans-serif;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{overflow-x:hidden}
html{scroll-behavior:smooth;font-size:16px}
body{font-family:var(--font-body);color:var(--gray-800);background:#fff;line-height:1.6}
a{color:inherit;text-decoration:none}
ul{list-style:none;padding:0}
input[type=number]{-moz-appearance:textfield}
input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}

/* ── Nav ── */
.nav{position:sticky;top:0;z-index:100;background:var(--navy);box-shadow:0 2px 16px rgba(14,37,84,.25)}
.nav-inner{max-width:1200px;margin:0 auto;padding:0 24px;display:flex;align-items:center;gap:32px;height:64px}
.nav-logo{font-family:var(--font-head);font-weight:800;font-size:1.05rem;color:#fff;white-space:nowrap}
.nav-logo span{color:var(--gold)}
.nav-links{display:flex;align-items:center;gap:24px;margin-left:auto}
.nav-links a{font-size:.875rem;font-weight:500;color:rgba(255,255,255,.8);transition:color .2s}
.nav-links a:hover{color:#fff}
.nav-cta{background:var(--teal);color:#fff !important;padding:8px 20px;border-radius:50px;font-weight:600}
.nav-cta:hover{background:#0f98aa !important}

/* ── Hero ── */
.hero{background:linear-gradient(150deg,var(--navy) 0%,#1a56db 50%,var(--google) 100%);padding:72px 24px 64px;text-align:center;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.03'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")}
.hero-inner{max-width:800px;margin:0 auto;position:relative}
.hero-badge{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);border-radius:50px;padding:6px 18px;font-size:.8rem;font-weight:600;color:rgba(255,255,255,.9);margin-bottom:24px;letter-spacing:.04em}
.hero-badge-dot{width:8px;height:8px;background:#4ade80;border-radius:50%;box-shadow:0 0 0 2px rgba(74,222,128,.3);flex-shrink:0}
.hero h1{font-family:var(--font-head);font-size:clamp(2rem,5vw,3rem);font-weight:900;color:#fff;line-height:1.15;margin-bottom:20px}
.hero-sub{font-size:1.1rem;color:rgba(255,255,255,.85);max-width:640px;margin:0 auto 36px;line-height:1.7}
.hero-stats{display:flex;justify-content:center;gap:40px;flex-wrap:wrap}
.hero-stat{text-align:center;color:#fff}
.hero-stat strong{display:block;font-family:var(--font-head);font-size:1.5rem;font-weight:800}
.hero-stat span{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.7)}

/* ── Sections ── */
.section{padding:72px 24px}
.section-alt{background:var(--off-white)}
.container{max-width:1100px;margin:0 auto}
.section-label{font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--teal-aa);margin-bottom:10px}
.section-title{font-family:var(--font-head);font-size:clamp(1.5rem,3.5vw,2.2rem);font-weight:800;color:var(--navy);margin-bottom:12px;line-height:1.25}
.section-sub{font-size:1rem;color:var(--gray-600);max-width:680px;margin-bottom:40px;line-height:1.7}

/* ── Anim ── */
.anim{opacity:0;transform:translateY(28px);transition:opacity .55s ease,transform .55s ease}
.anim.in{opacity:1;transform:none}

/* ── Tool Card ── */
.tool-wrap{max-width:820px;margin:0 auto}
.tool-card{background:#fff;border-radius:20px;padding:40px;box-shadow:var(--shadow-lg);border:1px solid var(--gray-200)}

/* ── Mode Tabs ── */
.mode-tabs{display:flex;gap:0;background:var(--gray-100);border-radius:10px;padding:4px;margin-bottom:32px}
.mode-tab{flex:1;padding:10px 16px;border:none;background:transparent;border-radius:7px;font-family:var(--font-body);font-size:.88rem;font-weight:600;color:var(--gray-600);cursor:pointer;transition:all .2s;text-align:center;white-space:nowrap}
.mode-tab.active{background:#fff;color:var(--google-aa);box-shadow:0 2px 8px rgba(66,133,244,.18)}

/* ── Form ── */
.inputs-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}
.form-group{display:flex;flex-direction:column;gap:6px}
.form-group label{font-size:.8rem;font-weight:600;color:var(--gray-600);letter-spacing:.02em}
.input-wrap{position:relative;display:flex;align-items:center}
.input-wrap .sym{position:absolute;left:12px;font-size:.9rem;font-weight:600;color:var(--gray-600);pointer-events:none;z-index:1}
.input-wrap input{width:100%;padding:11px 12px 11px 28px;border:1.5px solid var(--gray-200);border-radius:var(--radius-sm);font-family:var(--font-body);font-size:.95rem;color:var(--gray-800);background:#fff;transition:border-color .2s}
.input-wrap input.no-sym{padding-left:12px}
.input-wrap input:focus{outline:none;border-color:var(--google)}
.input-wrap .unit{position:absolute;right:12px;font-size:.8rem;color:var(--gray-600);pointer-events:none}
.currency-pills{display:flex;gap:6px;flex-wrap:wrap}
.curr-pill{padding:8px 14px;border:1.5px solid var(--gray-200);border-radius:50px;font-size:.82rem;font-weight:600;color:var(--gray-600);background:#fff;cursor:pointer;transition:all .2s}
.curr-pill.active{border-color:var(--google);background:rgba(66,133,244,.08);color:var(--google-aa)}

/* ── Results ── */
.results-section{margin-top:28px;display:none}
.metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:20px}
.metric-card{background:var(--gray-100);border-radius:var(--radius-sm);padding:16px;text-align:center}
.metric-val{font-family:var(--font-head);font-size:1.5rem;font-weight:800;color:var(--navy);line-height:1}
.metric-lbl{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--gray-600);margin-top:6px}
.metric-sub{font-size:.72rem;color:var(--gray-600);margin-top:4px}
.metric-card.highlight{background:rgba(66,133,244,.08);border:1.5px solid rgba(66,133,244,.25)}
.metric-card.highlight .metric-val{color:var(--google-aa)}

/* ── Verdict Banner ── */
.verdict-banner{border-radius:var(--radius-sm);padding:14px 18px;font-size:.9rem;font-weight:600;margin-bottom:20px;display:flex;align-items:flex-start;gap:10px;line-height:1.5}
.verdict-banner .vb-icon{font-size:1.1rem;flex-shrink:0;margin-top:1px}
.verdict-banner.on-track{background:rgba(52,168,83,.10);border:1.5px solid rgba(52,168,83,.35);color:#14672f}
.verdict-banner.over-target{background:rgba(234,67,53,.08);border:1.5px solid rgba(234,67,53,.30);color:#a8261a}
.verdict-banner.under-target{background:rgba(251,188,5,.14);border:1.5px solid rgba(251,188,5,.45);color:#6b4e00}
.verdict-banner.neutral{background:var(--gray-100);border:1.5px solid var(--gray-200);color:#3f4863}

/* ── CPA insights ── */
.insight-row{background:rgba(66,133,244,.06);border-radius:var(--radius-sm);padding:12px 16px;font-size:.88rem;color:var(--gray-800);margin-bottom:16px;line-height:1.6}
.insight-row strong{color:var(--google-aa)}

/* ── Sensitivity Table ── */
.sens-title{font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gray-600);margin-bottom:10px}
.sens-table{width:100%;border-collapse:collapse;font-size:.85rem;margin-bottom:20px}
.sens-table th{background:var(--gray-100);padding:9px 12px;text-align:left;font-size:.75rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--gray-600);border-bottom:2px solid var(--gray-200)}
.sens-table td{padding:9px 12px;border-bottom:1px solid var(--gray-200);color:var(--gray-800)}
.sens-table tr.active-row td{background:rgba(66,133,244,.10);font-weight:700;color:var(--google-aa)}
.sens-table tr:last-child td{border-bottom:none}

/* ── Benchmarks ── */
.bench-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}
.bench-card{background:#fff;border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);border:1px solid var(--gray-200)}
.bench-industry{font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--gray-600);margin-bottom:8px}
.bench-range{font-family:var(--font-head);font-size:1.1rem;font-weight:800;color:var(--navy);margin-bottom:4px}
.bench-note{font-size:.75rem;color:var(--gray-600);line-height:1.5}
.bench-bar{height:4px;border-radius:2px;background:linear-gradient(90deg,var(--google),var(--teal));margin-top:10px}

/* ── How To Steps ── */
.steps-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:24px}
.step-card{display:flex;flex-direction:column;gap:12px}
.step-num{width:40px;height:40px;background:#1a56db;border-radius:50%;  /* carries a digit, so it needs 4.5:1 — white on #4285F4 is only 3.56:1 */display:flex;align-items:center;justify-content:center;font-family:var(--font-head);font-size:1rem;font-weight:800;color:#fff;flex-shrink:0}
.step-title{font-family:var(--font-head);font-size:1rem;font-weight:700;color:var(--navy)}
.step-desc{font-size:.88rem;color:var(--gray-600);line-height:1.6}

/* ── Further Reading ── */
.fr-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px}
.fr-card{background:#fff;border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);border:1px solid var(--gray-200);transition:transform .2s,box-shadow .2s;display:flex;flex-direction:column;gap:8px}
.fr-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.fr-tag{font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--google-aa)}
.fr-title{font-family:var(--font-head);font-size:1rem;font-weight:700;color:var(--navy)}
.fr-desc{font-size:.85rem;color:var(--gray-600);line-height:1.5;flex:1}
.fr-arrow{font-size:.85rem;font-weight:600;color:var(--google-aa);margin-top:4px}

/* ── FAQ ── */
.faq-list{max-width:780px;display:flex;flex-direction:column;gap:8px}
.faq-item{border:1px solid var(--gray-200);border-radius:var(--radius-sm);overflow:hidden}
.faq-q{padding:16px 20px;font-weight:600;cursor:pointer;position:relative;padding-right:44px;font-size:.95rem;color:var(--navy)}
.faq-q::after{content:'＋';position:absolute;right:18px;top:50%;transform:translateY(-50%);font-size:1.1rem;color:var(--google-aa);transition:transform .2s}
.faq-item.open .faq-q::after{content:'－'}
.faq-a{font-size:.88rem;color:var(--gray-600);line-height:1.7;padding:0 20px;max-height:0;overflow:hidden;transition:max-height .35s ease,padding .25s}
.faq-item.open .faq-a{max-height:400px;padding-bottom:16px}

/* ── About ── */
.about-section{background:var(--navy);padding:72px 24px;text-align:center}
.about-section .section-title{color:#fff}
.about-section .section-sub{color:rgba(255,255,255,.75);margin:0 auto 28px}
.about-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}
.about-pill{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);border-radius:50px;padding:7px 18px;font-size:.82rem;font-weight:600;color:rgba(255,255,255,.9)}

/* ── CTA ── */
.cta-section{background:linear-gradient(135deg,var(--google) 0%,#1a56db 100%);padding:72px 24px;text-align:center}
.cta-section h2{font-family:var(--font-head);font-size:clamp(1.6rem,4vw,2.4rem);font-weight:900;color:#fff;margin-bottom:16px}
.cta-section p{font-size:1.05rem;color:rgba(255,255,255,.85);max-width:600px;margin:0 auto 32px;line-height:1.7}
.cta-btns{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}
.cta-btn-white{background:#fff;color:var(--google-aa);padding:14px 28px;border-radius:50px;font-weight:700;font-size:.95rem;transition:transform .2s,box-shadow .2s}
.cta-btn-white:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.2)}
.cta-btn-outline{border:2px solid rgba(255,255,255,.7);color:#fff;padding:14px 28px;border-radius:50px;font-weight:700;font-size:.95rem;transition:all .2s}
.cta-btn-outline:hover{background:rgba(255,255,255,.15)}

/* ── Footer ── */
.footer{background:var(--gray-800);padding:40px 24px;text-align:center}
.footer-logo{font-family:var(--font-head);font-weight:800;font-size:1.1rem;color:#fff;margin-bottom:20px}
.footer-logo span{color:var(--gold)}
.footer-links{display:flex;flex-wrap:wrap;justify-content:center;gap:20px;margin-bottom:20px}
.footer-links a{font-size:.85rem;color:rgba(255,255,255,.6);transition:color .2s}
.footer-links a:hover{color:#fff}
.footer-copy{font-size:.8rem;color:rgba(255,255,255,.4)}

/* ── Cookie ── */
.cookie-bar{position:fixed;bottom:0;left:0;right:0;background:var(--navy);color:#fff;padding:14px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:.85rem;z-index:200;transform:translateY(100%);transition:transform .3s}
.cookie-bar.show{transform:none}
.cookie-bar a{color:var(--teal);text-decoration:underline}
.cookie-accept{background:var(--teal);color:#fff;border:none;padding:8px 20px;border-radius:50px;font-weight:600;cursor:pointer;white-space:nowrap}

/* ── WhatsApp Float ── */
.wa-float{position:fixed;bottom:84px;right:20px;width:52px;height:52px;background:#25d366;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(37,211,102,.45);z-index:150;transition:transform .2s}
.wa-float:hover{transform:scale(1.1)}
.wa-float svg{width:28px;height:28px;fill:#fff}

/* ── Scroll Top ── */
.scroll-top{position:fixed;bottom:24px;right:20px;width:44px;height:44px;background:var(--navy);border-radius:50%;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s;z-index:150}
.scroll-top.show{opacity:1;pointer-events:all}
.scroll-top svg{width:20px;height:20px;stroke:#fff;fill:none}

/* ── Responsive ── */
@media(max-width:700px){
  .nav-links{display:none}
  .hero{padding:52px 16px 44px}
  .tool-card{padding:24px 16px}
  .inputs-grid{grid-template-columns:1fr 1fr}
  .metrics-grid{grid-template-columns:1fr 1fr}
  .bench-grid{grid-template-columns:1fr 1fr}
  .sens-table{font-size:.78rem}
  .sens-table th,.sens-table td{padding:7px 8px}
}
@media(max-width:440px){
  .inputs-grid{grid-template-columns:1fr}
  .metrics-grid{grid-template-columns:1fr 1fr}
  .bench-grid{grid-template-columns:1fr}
}
@media(max-width:380px){
  .mode-tabs{flex-direction:column;gap:4px}
  .mode-tab{padding:12px 16px;text-align:center}
}

/* -- INFO TOOLTIPS -- */
.label-wrap{display:flex;align-items:center;gap:4px}
.info-btn{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;background:#e2e8f0;border:none;color:#414c66;font-size:9px;font-weight:800;font-style:italic;cursor:pointer;padding:0;flex-shrink:0;vertical-align:middle;transition:background .15s,color .15s;line-height:1}
.info-btn:hover,.info-btn.tip-open{background:#0b6b78;color:#fff;outline:none}
.info-btn:focus{outline:2px solid #0b6b78;outline-offset:2px}
#globalTip{position:fixed;z-index:9999;background:#1e293b;color:#f1f5f9;font-size:12.5px;font-family:'DM Sans',sans-serif;font-weight:400;line-height:1.55;padding:10px 13px;border-radius:8px;max-width:240px;width:max-content;box-shadow:0 4px 20px rgba(0,0,0,.3);pointer-events:none;display:none}

.scroll-top{bottom:80px!important;left:20px!important;right:auto!important}.wa-s{position:fixed!important;bottom:80px!important;right:18px!important;z-index:999!important;display:flex!important;flex-direction:column!important;align-items:flex-end!important;gap:8px!important}.wa-b{width:52px!important;height:52px!important;border-radius:50%!important;background:#25d366!important;display:flex!important;align-items:center!important;justify-content:center!important;box-shadow:0 4px 18px rgba(37,211,102,.3)!important;transition:transform .3s!important;text-decoration:none!important}.wa-b:hover{transform:scale(1.1)!important}.wa-b svg{width:26px!important;height:26px!important;fill:white!important}.wa-dir{background:#4285F4!important;box-shadow:0 4px 18px rgba(66,133,244,.3)!important}.wa-call{background:#0ea5e9!important;box-shadow:0 4px 18px rgba(14,165,233,.3)!important;display:none!important}@media(max-width:767px){.wa-call{display:flex!important}}.wa-s .wl{display:none!important}.wa-float{display:none!important}

/* SCROLL-TO-TOP — deliberately hidden on mobile.
   Touch users swipe, and iOS already has tap-the-status-bar to jump to the top. On a phone
   these pages carry five floating widgets (WhatsApp, Call and Directions on the right; the
   chatbot launcher and this button on the left) all fighting for the same thumb zone and
   covering content. This is the only one of the five that earns nothing — and it sat at
   exactly the same bottom:80px/left:20px as the chatbot launcher, so it was hidden anyway.
   Kept on desktop, where there is room and no equivalent gesture. */
@media(max-width:520px){
  .scroll-top{display:none!important}
}

/* ════════════════════════════════════════════════════════════════
   BUDGET & CPA PLANNER — v2 components (23 Jul 2026)
   All text colours here are AA-verified against their own ground.
   ════════════════════════════════════════════════════════════════ */

/* Screen-reader-only status line. Replaces aria-live on the whole
   results block, which re-announced every figure on every keystroke. */
.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}

/* ── Empty state ── */
.empty-state{margin-top:26px;background:var(--gray-100);border:1.5px dashed var(--gray-200);border-radius:var(--radius);padding:26px 22px;text-align:center}
.empty-state h3{font-family:var(--font-head);font-size:1rem;font-weight:800;color:var(--navy);margin-bottom:8px}
.empty-state p{font-size:.87rem;color:var(--gray-600);line-height:1.65;max-width:520px;margin:0 auto}
.empty-need{display:flex;flex-wrap:wrap;gap:7px;justify-content:center;margin-top:14px}
.empty-need span{background:#fff;border:1.5px solid var(--gray-200);border-radius:50px;padding:5px 13px;font-size:.78rem;font-weight:600;color:var(--gray-600)}
.empty-need span.have{border-color:rgba(52,168,83,.45);color:var(--green-aa);background:rgba(52,168,83,.07)}
/* ── Try-it card ──
   Its own block, warm-toned on purpose: the rest of the tool is blue/grey, so
   gold is the only thing on the panel that reads as "press me". Flat tints, not
   a gradient, so the contrast audit can actually measure it. */
.demo-card{display:flex;align-items:center;gap:16px;margin-top:14px;background:#fff8e8;border:1.5px solid var(--gold);border-left:5px solid var(--gold);border-radius:var(--radius);padding:18px 22px}
.demo-ico{flex-shrink:0;width:38px;height:38px;border-radius:50%;background:var(--gold);color:#4a3300;display:flex;align-items:center;justify-content:center;font-size:.82rem;line-height:1;padding-left:3px}
.demo-txt{flex:1;min-width:0}
.demo-txt b{display:block;font-family:var(--font-head);font-size:.95rem;font-weight:800;color:var(--navy);margin-bottom:3px}
.demo-txt span{display:block;font-size:.83rem;color:#4f5875;line-height:1.55}
.demo-btn{flex-shrink:0;background:var(--navy);border:none;color:#fff;padding:11px 24px;border-radius:50px;font-family:var(--font-body);font-size:.85rem;font-weight:700;cursor:pointer;transition:background .2s,transform .2s;white-space:nowrap}
.demo-btn:hover{background:#1b3d7d;transform:translateY(-1px)}
.demo-btn:focus-visible{outline:3px solid var(--google);outline-offset:2px}
@media(max-width:600px){
  .demo-card{flex-direction:column;align-items:flex-start;gap:12px;padding:18px}
  .demo-btn{width:100%}
}

/* ── Field-level validation ── */
.fld-err{font-size:.74rem;font-weight:600;color:var(--red-aa);line-height:1.4;margin-top:-2px}
.input-wrap input.bad{border-color:var(--g-red);background:rgba(234,67,53,.04)}

/* ── Forecast range band ── */
.range-box{background:#fff;border:1.5px solid var(--gray-200);border-radius:var(--radius-sm);padding:16px 18px;margin-bottom:18px}
.range-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.range-head h4{font-family:var(--font-head);font-size:.88rem;font-weight:800;color:var(--navy);letter-spacing:.01em}
.range-head span{font-size:.74rem;color:var(--gray-600)}
.range-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.range-col{text-align:center;padding:11px 8px;border-radius:var(--radius-sm);background:var(--gray-100)}
.range-col.mid{background:rgba(66,133,244,.09);border:1.5px solid rgba(66,133,244,.22)}
.range-col b{display:block;font-family:var(--font-head);font-size:1.05rem;font-weight:800;color:var(--navy);line-height:1.2}
.range-col em{display:block;font-style:normal;font-size:.76rem;color:var(--gray-600);margin-top:3px}
.range-col i{display:block;font-style:normal;font-size:.68rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--gray-600);margin-bottom:6px}
.range-col.mid i{color:var(--google-aa)}
.range-foot{font-size:.76rem;color:var(--gray-600);line-height:1.55;margin-top:11px;padding-top:10px;border-top:1px solid var(--gray-200)}

/* ── Reality checks ── */
.checks-box{margin-bottom:20px}
.checks-box h4{font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gray-600);margin-bottom:10px}
.chk{display:flex;gap:11px;align-items:flex-start;padding:11px 14px;border-radius:var(--radius-sm);margin-bottom:8px;font-size:.85rem;line-height:1.55;border:1.5px solid}
.chk-ico{flex-shrink:0;font-size:.95rem;line-height:1.5}
.chk b{font-weight:700;display:block;margin-bottom:2px}
.chk.stop{background:rgba(234,67,53,.07);border-color:rgba(234,67,53,.30);color:#8f2015}
.chk.warn{background:rgba(251,188,5,.13);border-color:rgba(251,188,5,.45);color:#5e4400}
.chk.ok{background:rgba(52,168,83,.08);border-color:rgba(52,168,83,.30);color:#13602c}
.chk.info{background:var(--gray-100);border-color:var(--gray-200);color:#3f4863}
.chk a{text-decoration:underline;color:inherit;font-weight:700}

/* ── Unit economics / profit ── */
.econ{border:1.5px solid var(--gray-200);border-radius:var(--radius-sm);margin-bottom:6px;background:var(--off-white)}
.econ>summary{list-style:none;cursor:pointer;padding:13px 16px;font-size:.88rem;font-weight:700;color:var(--navy);display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.econ>summary::-webkit-details-marker{display:none}
.econ>summary::before{content:'+';font-size:1.05rem;color:var(--google-aa);font-weight:800;line-height:1}
.econ[open]>summary::before{content:'\2212'}
.econ-badge{background:rgba(66,133,244,.12);color:var(--google-aa);border-radius:50px;padding:2px 10px;font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.econ-body{padding:2px 16px 16px}
.econ-why{font-size:.82rem;color:var(--gray-600);line-height:1.6;margin-bottom:14px}
.ctype-pills{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}
.ctype-pill{padding:7px 15px;border:1.5px solid var(--gray-200);border-radius:50px;font-family:var(--font-body);font-size:.8rem;font-weight:600;color:var(--gray-600);background:#fff;cursor:pointer;transition:all .2s}
.ctype-pill.active{border-color:var(--google);background:rgba(66,133,244,.08);color:var(--google-aa)}

.profit-box{border-radius:var(--radius-sm);padding:16px 18px;margin-bottom:20px;border:1.5px solid}
.profit-box.good{background:rgba(52,168,83,.08);border-color:rgba(52,168,83,.32)}
.profit-box.bad{background:rgba(234,67,53,.07);border-color:rgba(234,67,53,.30)}
.profit-box.flat{background:rgba(251,188,5,.13);border-color:rgba(251,188,5,.45)}
.profit-box h4{font-family:var(--font-head);font-size:.95rem;font-weight:800;margin-bottom:10px;color:var(--navy)}
.pf-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(118px,100%),1fr));gap:9px;margin-bottom:12px}
.pf-cell{background:rgba(255,255,255,.75);border-radius:6px;padding:10px 8px;text-align:center}
.pf-cell b{display:block;font-family:var(--font-head);font-size:1.02rem;font-weight:800;color:var(--navy);line-height:1.2}
.pf-cell span{display:block;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--gray-600);margin-top:4px}
.pf-cell b.pos{color:var(--green-aa)}
.pf-cell b.neg{color:var(--red-aa)}
.pf-line{font-size:.86rem;line-height:1.6;color:#2b3348}
.pf-line strong{font-weight:800}
.use-cpa{margin-top:11px;background:var(--navy);color:#fff;border:none;padding:9px 18px;border-radius:50px;font-family:var(--font-body);font-size:.82rem;font-weight:700;cursor:pointer;transition:background .2s}
.use-cpa:hover{background:#173570}

/* ── Model disclosure ── */
.model-note{background:var(--gray-100);border-left:3px solid var(--google);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:12px 15px;font-size:.79rem;line-height:1.6;color:#3f4863;margin-bottom:18px}
.model-note b{color:var(--navy)}

/* ── Sensitivity: user's own row + 2-D grid ── */
.sens-table tr.your-row td{background:rgba(66,133,244,.10);font-weight:700;color:var(--google-aa)}
.grid2d-wrap{overflow-x:auto;margin-bottom:6px}
.grid2d{width:100%;border-collapse:collapse;font-size:.8rem}
.grid2d th,.grid2d td{padding:7px 9px;text-align:center;border:1px solid var(--gray-200);white-space:nowrap}
.grid2d th{background:var(--gray-100);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--gray-600)}
.grid2d td.rowhd{background:var(--gray-100);font-weight:700;color:var(--gray-800)}
.grid2d td.hit{background:rgba(52,168,83,.16);color:#13602c;font-weight:700}
.grid2d td.near{background:rgba(251,188,5,.20);color:#5e4400;font-weight:600}
.grid2d td.miss{background:rgba(234,67,53,.10);color:#8f2015}
.grid2d td.you{outline:2.5px solid var(--google);outline-offset:-2.5px;font-weight:800}
.grid2d-legend{font-size:.75rem;color:var(--gray-600);margin-top:9px;line-height:1.55}

/* ── Action row / scenarios ── */
.act-row{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:18px}
.act-btn{background:#fff;border:1.5px solid var(--gray-200);color:var(--gray-800);padding:9px 17px;border-radius:50px;font-family:var(--font-body);font-size:.82rem;font-weight:700;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;gap:6px}
.act-btn:hover{border-color:var(--google);color:var(--google-aa);background:rgba(66,133,244,.05)}
.act-btn.primary{background:#1a56db;border-color:#1a56db;color:#fff}  /* white on #4285F4 is 3.56:1; on #1a56db it is 6.14:1 */
.act-btn.primary:hover{background:#12409e;border-color:#12409e;color:#fff}
.scen-box{margin-bottom:20px}
.scen-box h4{font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gray-600);margin-bottom:10px}
.scen-tbl{width:100%;border-collapse:collapse;font-size:.82rem}
.scen-tbl th{background:var(--gray-100);padding:8px 10px;text-align:left;font-size:.71rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--gray-600);border-bottom:2px solid var(--gray-200)}
.scen-tbl td{padding:8px 10px;border-bottom:1px solid var(--gray-200);color:var(--gray-800)}
.scen-del{background:none;border:none;color:var(--red-aa);cursor:pointer;font-size:.9rem;font-weight:800;padding:0 4px;line-height:1}
.scen-load{background:none;border:none;color:var(--google-aa);cursor:pointer;font-size:.78rem;font-weight:700;text-decoration:underline;padding:0;font-family:var(--font-body)}

/* ── Handoff ── */
.handoff{margin-bottom:6px}
.handoff h4{font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gray-600);margin-bottom:10px}
.ho-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:11px}
.ho-card{display:block;background:#fff;border:1.5px solid var(--gray-200);border-radius:var(--radius-sm);padding:14px 16px;transition:all .2s}
.ho-card:hover{border-color:var(--google);box-shadow:0 4px 16px rgba(66,133,244,.13);transform:translateY(-2px)}
.ho-card b{display:block;font-family:var(--font-head);font-size:.9rem;font-weight:800;color:var(--navy);margin-bottom:4px}
.ho-card span{display:block;font-size:.79rem;color:var(--gray-600);line-height:1.5}
.ho-card i{display:block;font-style:normal;font-size:.78rem;font-weight:700;color:var(--google-aa);margin-top:7px}

/* ── Toast ── */
.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,14px);background:var(--navy);color:#fff;padding:11px 22px;border-radius:50px;font-size:.85rem;font-weight:600;box-shadow:var(--shadow-lg);z-index:400;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* ── Benchmark sourcing ── */
.bench-src{font-size:.79rem;color:var(--gray-600);line-height:1.65;margin-top:22px;padding:14px 16px;background:var(--gray-100);border-radius:var(--radius-sm);border-left:3px solid var(--g-yellow)}
.bench-src b{color:var(--navy)}

@media(max-width:560px){
  .range-grid{grid-template-columns:1fr}
  .act-row .act-btn{flex:1 1 auto;justify-content:center}
}

/* ════════ PRINT — isolation model ════════
   Still a whitelist in spirit: printReport() names ONE element and everything
   else is computed, so adding a section never breaks it.

   It does NOT use `body *{visibility:hidden}`. That was the first attempt and
   it printed 10 A4 pages with 8 of them blank: visibility:hidden hides a node
   but the node still RESERVES its layout height, so the whole page's height was
   still paginated. display:none actually collapses the box.

   printReport() walks from the report up to <body>, tagging every sibling
   .bp-print-hide and every ancestor .bp-print-chain. */
@media print{
  .bp-print-hide{display:none!important}
  .no-print,.no-print *{display:none!important}
  /* Ancestors must stop contributing section padding, max-widths and grounds. */
  .bp-print-chain{padding:0!important;margin:0!important;max-width:none!important;width:auto!important;background:none!important;box-shadow:none!important;border:none!important;min-height:0!important;overflow:visible!important}
  .bp-print-area{box-shadow:none!important;border:none!important;padding:0!important;margin:0!important;width:100%!important;max-width:100%!important;border-radius:0!important}
  .print-head{display:block!important}
  .econ{background:none!important;border:1px solid #ccc!important}
  .econ>summary{display:none!important}
  /* Keep report blocks off page seams. */
  .metric-card,.range-col,.pf-cell,.chk,.profit-box,.verdict-banner,.range-box{break-inside:avoid;page-break-inside:avoid}
  .metric-card,.range-col,.pf-cell{background:#f4f4f4!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .chk,.profit-box,.verdict-banner{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  html,body{height:auto!important;overflow:visible!important;margin:0!important;padding:0!important}
  /* Trailing margin on the last block spilled ~17px past the final page
     boundary, which printed as a whole blank sheet. Kill bottom spacing on
     whatever happens to end the report — written generically so adding a new
     final section cannot bring the blank page back. */
  .bp-print-area>*:last-child,
  .bp-print-area .results-section>*:last-child,
  .bp-print-area .results-section,
  .bp-print-area .model-note{margin-bottom:0!important;padding-bottom:0!important}
  /* Tighten the report so it fits the sheet count it actually needs. */
  .bp-print-area .metrics-grid,.bp-print-area .verdict-banner,.bp-print-area .insight-row,
  .bp-print-area .profit-box,.bp-print-area .range-box,.bp-print-area .checks-box,
  .bp-print-area .sens-table{margin-bottom:12px!important}
  .bp-print-area .chk{margin-bottom:6px!important;padding:9px 12px!important}
  a[href]:after{content:''}
  @page{margin:14mm}
}
.print-head{display:none;border-bottom:2.5px solid var(--navy);padding-bottom:12px;margin-bottom:18px}
.print-head b{font-family:var(--font-head);font-size:1.25rem;font-weight:900;color:var(--navy);display:block}
.print-head span{font-size:.8rem;color:var(--gray-600);display:block;margin-top:4px}
