/* =====================================================================
   House Strategies Group  —  VTA On-Call Financial Advisory (RFP S26082)
   Design system: HSG royal brand. "Analytical authority, modern clarity."
   Royal #2E2FA6 primary · Space Grotesk display · Inter body.
   Component architecture adapted from the Alameda Treasury portal.
   ===================================================================== */
:root{
  --ink:#0B0C2A; --ink-2:#15164C; --ink-3:#1E2061;
  --royal:#2E2FA6; --royal-2:#3D3FD0; --electric:#5457E6; --electric-soft:#C9CBF5;
  --paper:#F5F6FB; --paper-2:#FFFFFF; --line:#E2E4F0;
  --text:#13152B; --muted:#565A78; --muted-2:#878BA6;
  --on-ink:#EEF0FB; --on-ink-muted:#A6AAD4;
  --pos:#1F9D6B; --neg:#D2425A; --warn:#E0922F;
  --c1:#2E2FA6; --c2:#5457E6; --c3:#8487EE; --c4:#19A0C4; --c5:#1F9D6B; --c6:#E0922F; --c7:#9AA0C9; --c8:#D2425A;
  --shadow:0 1px 2px rgba(11,12,42,.05), 0 14px 34px rgba(11,12,42,.08);
  --shadow-lg:0 2px 6px rgba(11,12,42,.06), 0 30px 70px rgba(11,12,42,.16);
  --maxw:1200px;
  --disp:"Space Grotesk","Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --mono:"Space Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0; font-family:var(--sans); color:var(--text); background:var(--paper);
  font-size:17px; line-height:1.62; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
h1,h2,h3,h4{font-family:var(--disp); font-weight:600; line-height:1.12; letter-spacing:-.018em; margin:0}
a{color:inherit}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 32px}
.wrap-wide{max-width:1400px; margin:0 auto; padding:0 32px}
.eyebrow{font-family:var(--mono); font-weight:600; font-size:12px; letter-spacing:.2em;
  text-transform:uppercase; color:var(--royal); margin:0 0 18px}
.eyebrow.on-ink{color:var(--electric-soft)}
section{padding:100px 0; position:relative}
.lead{font-size:21px; line-height:1.55; color:var(--muted); max-width:64ch}
.section-title{font-size:clamp(30px,4.2vw,46px); max-width:22ch}
.note{font-size:13px; color:var(--muted-2); line-height:1.5}
.divider{height:1px; background:var(--line); border:0; margin:0}

/* ---------- Unified top nav (shared via nav.js) ---------- */
.topnav{position:sticky;top:0;z-index:60;display:flex;align-items:center;justify-content:space-between;gap:16px;
  flex-wrap:wrap;background:rgba(11,12,42,.94);backdrop-filter:blur(12px);
  padding:11px clamp(16px,4vw,30px);border-bottom:1px solid rgba(132,135,238,.22)}
.topnav .nb{display:flex;align-items:center;gap:10px;color:#fff;font-weight:700;font-size:14px;
  text-decoration:none;letter-spacing:.01em;font-family:var(--sans)}
.topnav .hmark{width:28px;height:28px;border-radius:7px;overflow:hidden;display:flex;align-items:center;justify-content:center;
  background:#fff;flex:0 0 auto}
.topnav .hmark img{width:100%;height:100%;object-fit:contain}
.topnav .nb .txt span{color:var(--on-ink-muted);font-weight:500;margin-left:7px;font-size:12.5px}
.topnav .nl{display:flex;gap:2px;flex-wrap:wrap}
.topnav .nl a{color:#A6AAD4;font-size:12.5px;font-weight:600;text-decoration:none;padding:7px 11px;border-radius:8px;
  font-family:var(--sans);transition:all .18s}
.topnav .nl a:hover{color:#fff;background:rgba(255,255,255,.08)}
.topnav .nl a.cur{color:#fff;background:var(--royal)}
@media(max-width:980px){.topnav .nb .txt span{display:none}.topnav .nl a{padding:6px 8px;font-size:12px}}

/* ---------- Hero ---------- */
.hero{
  background:
    radial-gradient(1200px 520px at 82% -10%, rgba(84,87,230,.34), transparent 62%),
    radial-gradient(900px 480px at 10% 110%, rgba(46,47,166,.30), transparent 60%),
    linear-gradient(180deg, var(--ink) 0%, var(--ink-2) 100%);
  color:var(--on-ink); padding:104px 0 92px; overflow:hidden; position:relative;
}
.hero::after{content:"";position:absolute;inset:0;opacity:.5;pointer-events:none;
  background-image:radial-gradient(rgba(255,255,255,.07) 1px,transparent 1px);background-size:34px 34px;
  -webkit-mask-image:linear-gradient(180deg,#000,transparent 70%);mask-image:linear-gradient(180deg,#000,transparent 70%)}
.hero .wrap{position:relative;z-index:1}
.hero h1{font-size:clamp(38px,6vw,70px); font-weight:600; max-width:17ch; letter-spacing:-.025em}
.hero .accent{background:linear-gradient(100deg,var(--electric),#9aa0ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p.sub{font-size:20px; color:var(--on-ink-muted); max-width:60ch; margin:26px 0 0; line-height:1.55}
.hero .thesis{margin-top:34px; padding:22px 26px; border-left:3px solid var(--electric);
  background:rgba(255,255,255,.05); border-radius:0 12px 12px 0; max-width:66ch; font-size:16.5px; color:#DDE0F4}
.hero .thesis b{color:#fff; font-weight:700}
.hero .cta-row{display:flex;gap:14px;flex-wrap:wrap;margin-top:34px}

.statband{display:grid; grid-template-columns:repeat(4,1fr); gap:1px; margin-top:56px;
  background:rgba(255,255,255,.10); border:1px solid rgba(255,255,255,.10); border-radius:16px; overflow:hidden}
.statband .cell{background:linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,0)); padding:24px 22px}
.statband .n{font-family:var(--disp); font-size:34px; color:#fff; font-weight:600; letter-spacing:-.01em}
.statband .n .u{font-size:17px; color:var(--electric-soft); margin-left:3px}
.statband .l{font-size:12.5px; color:var(--on-ink-muted); margin-top:6px; letter-spacing:.02em}
.statband .s{font-size:11.5px;color:var(--muted-2);margin-top:3px}
@media(max-width:760px){.statband{grid-template-columns:repeat(2,1fr)}}

/* ---------- Section surfaces ---------- */
.on-paper{background:var(--paper)}
.on-white{background:var(--paper-2)}
.on-dark{background:linear-gradient(180deg,var(--ink) 0%, var(--ink-2) 100%); color:var(--on-ink)}
.on-dark .section-title{color:#fff}
.on-dark .lead{color:var(--on-ink-muted)}
.on-dark .card{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.09)}
.on-dark .note,.on-dark .src{color:var(--on-ink-muted)}

/* metric cards */
.grid{display:grid; gap:20px}
.cards-4{grid-template-columns:repeat(4,1fr)}
.cards-3{grid-template-columns:repeat(3,1fr)}
.cards-2{grid-template-columns:repeat(2,1fr)}
@media(max-width:920px){.cards-4{grid-template-columns:repeat(2,1fr)}.cards-3{grid-template-columns:1fr}}
@media(max-width:620px){.cards-4,.cards-2{grid-template-columns:1fr}}
.card{background:var(--paper-2); border:1px solid var(--line); border-radius:16px; padding:26px; box-shadow:var(--shadow)}
.card.hover{transition:transform .2s, box-shadow .2s}
.card.hover:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.metric .n{font-family:var(--disp); font-size:40px; font-weight:600; letter-spacing:-.01em; color:var(--royal)}
.metric .n .u{font-size:18px; color:var(--electric); margin-left:2px}
.metric .l{font-size:13.5px; color:var(--muted); margin-top:8px}
.metric .sub{font-size:12.5px; color:var(--muted-2); margin-top:4px}

/* chart / figure frame */
.figure{background:var(--paper-2); border:1px solid var(--line); border-radius:18px; padding:26px 26px 18px; box-shadow:var(--shadow)}
.on-dark .figure{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.09)}
.figure h3{font-size:22px; margin-bottom:4px}
.figure .cap{font-size:14px; color:var(--muted); margin:0 0 18px}
.on-dark .figure .cap{color:var(--on-ink-muted)}
.chart-box{position:relative; width:100%}
.legend{display:flex; flex-wrap:wrap; gap:12px 20px; margin-top:14px}
.legend .it{display:flex; align-items:center; gap:8px; font-size:13px; color:var(--muted)}
.on-dark .legend .it{color:var(--on-ink-muted)}
.legend .sw{width:13px;height:13px;border-radius:3px;flex:0 0 auto}

/* ---------- Map + 3D containers (state-of-the-art) ---------- */
.mapframe{position:relative;border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:var(--shadow);background:#0b0c2a}
.mapframe.tall{height:620px}.mapframe.med{height:520px}
.map-canvas{position:absolute;inset:0}
.map-overlay{position:absolute;z-index:5;pointer-events:none}
.map-legend{position:absolute;left:16px;bottom:16px;z-index:6;background:rgba(11,12,42,.82);backdrop-filter:blur(8px);
  border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:14px 16px;color:#fff;font-size:12.5px;max-width:280px;pointer-events:auto}
.map-legend h4{font-family:var(--sans);font-size:13px;font-weight:700;margin:0 0 8px;color:#fff}
.map-legend .row{display:flex;align-items:center;gap:8px;margin:5px 0;color:#C9CBF5}
.map-legend .row .sw{width:14px;height:14px;border-radius:3px;flex:0 0 auto}
.map-controls{position:absolute;right:16px;top:16px;z-index:6;background:rgba(11,12,42,.82);backdrop-filter:blur(8px);
  border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:12px 14px;color:#fff;font-size:13px;max-width:300px;pointer-events:auto}
.map-controls label{display:block;font-size:11.5px;color:#A6AAD4;margin:10px 0 5px;letter-spacing:.04em;text-transform:uppercase}
.map-controls label:first-child{margin-top:0}
.map-tip{position:absolute;z-index:7;pointer-events:none;background:rgba(11,12,42,.94);color:#fff;border:1px solid rgba(132,135,238,.5);
  border-radius:9px;padding:9px 12px;font-size:12.5px;max-width:260px;box-shadow:var(--shadow-lg);opacity:0;transition:opacity .12s}
.maplibregl-ctrl-attrib{font-size:10px}

/* interactive controls (sliders / scenario panels) */
.panel{background:var(--paper-2);border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:var(--shadow)}
.ctl{margin:0 0 18px}
.ctl label{display:flex;justify-content:space-between;align-items:baseline;font-size:13.5px;font-weight:600;color:var(--text);margin-bottom:8px}
.ctl label .v{font-family:var(--mono);font-size:13px;color:var(--royal);font-weight:700}
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:99px;background:var(--line);outline:none}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;
  background:var(--royal);cursor:pointer;box-shadow:0 2px 6px rgba(46,47,166,.5);border:3px solid #fff}
input[type=range]::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--royal);cursor:pointer;border:3px solid #fff}
.seg{display:inline-flex;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:3px;gap:2px;flex-wrap:wrap}
.seg button{border:0;background:transparent;font-family:var(--sans);font-size:13px;font-weight:600;color:var(--muted);
  padding:8px 14px;border-radius:8px;cursor:pointer;transition:all .15s}
.seg button.on{background:var(--royal);color:#fff;box-shadow:0 2px 8px rgba(46,47,166,.35)}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:5px 11px;border-radius:99px;
  background:rgba(46,47,166,.09);color:var(--royal);border:1px solid var(--electric-soft)}

/* recommendation / finding callout */
.finding{display:grid; grid-template-columns:48px 1fr; gap:18px; align-items:start;
  background:linear-gradient(180deg,#fff,#F3F4FC); border:1px solid var(--electric-soft);
  border-radius:18px; padding:26px 28px; box-shadow:var(--shadow)}
.finding .badge{width:48px;height:48px;border-radius:13px;background:var(--royal);color:#fff;
  display:grid;place-items:center;font-family:var(--disp);font-size:22px;font-weight:600}
.finding h3{font-size:22px;margin-bottom:8px}
.finding p{margin:0;color:var(--text)}
.finding .micro{font-size:13px;color:var(--muted-2);margin-top:12px}
.rec{border-left:4px solid var(--royal);background:linear-gradient(100deg,rgba(46,47,166,.06),transparent);
  border-radius:0 14px 14px 0;padding:18px 22px;margin:14px 0}
.rec .rl{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--royal);font-weight:700}
.rec h4{font-size:17px;margin:6px 0 6px;font-family:var(--sans);font-weight:700}
.rec p{margin:0;font-size:14.5px;color:var(--muted)}
.tag{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--royal);background:rgba(46,47,166,.10);border:1px solid var(--electric-soft);
  padding:3px 10px;border-radius:999px;margin-bottom:12px}
.tag.ai{color:#fff;background:linear-gradient(100deg,var(--royal),var(--electric));border:0}

/* tables */
.tbl-wrap{overflow-x:auto; border:1px solid var(--line); border-radius:16px; box-shadow:var(--shadow); background:var(--paper-2)}
table{border-collapse:collapse; width:100%; font-size:14px; min-width:680px}
thead th{background:#EEF0FA; color:var(--ink); text-align:left; font-weight:700; font-size:12px;
  letter-spacing:.04em; text-transform:uppercase; padding:14px 16px; border-bottom:1px solid var(--line); white-space:nowrap}
tbody td{padding:13px 16px; border-bottom:1px solid #EFF0F7; color:var(--text)}
tbody tr:last-child td{border-bottom:0}
tbody tr.hl td{background:rgba(46,47,166,.08); font-weight:600}
td.num,th.num{text-align:right; font-variant-numeric:tabular-nums}
.pill{display:inline-block;font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:999px}
.pill.no{background:#EEF0F3;color:#5C6B79}
.pill.yes{background:#E4F3EC;color:var(--pos)}
.pill.pend{background:rgba(224,146,47,.16);color:var(--warn)}

/* two-column split */
.split{display:grid; grid-template-columns:1.05fr .95fr; gap:48px; align-items:center}
.split.wide-left{grid-template-columns:1.3fr .7fr}
@media(max-width:900px){.split,.split.wide-left{grid-template-columns:1fr; gap:32px}}

/* approach steps */
.steps{counter-reset:s; display:grid; gap:16px}
.step{display:grid;grid-template-columns:42px 1fr;gap:18px;align-items:start;
  padding:22px 24px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.09);border-radius:14px}
.step::before{counter-increment:s;content:counter(s);width:42px;height:42px;border-radius:12px;
  border:1.5px solid var(--electric);color:var(--electric);font-family:var(--disp);font-size:20px;
  display:grid;place-items:center}
.step h4{font-size:18px;color:#fff;margin-bottom:5px;font-family:var(--sans);font-weight:700}
.step p{margin:0;color:var(--on-ink-muted);font-size:14.5px}

/* timeline / scope mapping */
.maplist{display:grid;gap:12px}
.maprow{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:center;padding:16px 20px;
  background:var(--paper-2);border:1px solid var(--line);border-radius:12px}
.maprow .scope{font-size:14px;color:var(--muted)}
.maprow .mod{font-size:14px;font-weight:600;color:var(--royal)}
@media(max-width:700px){.maprow{grid-template-columns:1fr;gap:6px}}

/* footer / cta */
.cta{background:linear-gradient(135deg,var(--ink) 0%, var(--royal) 130%);color:var(--on-ink);
  border-radius:22px;padding:56px 48px;text-align:center;box-shadow:var(--shadow-lg);position:relative;overflow:hidden}
.cta::after{content:"";position:absolute;inset:0;opacity:.4;
  background-image:radial-gradient(rgba(255,255,255,.08) 1px,transparent 1px);background-size:28px 28px}
.cta>*{position:relative;z-index:1}
.cta h2{font-size:clamp(26px,3.4vw,38px);color:#fff;max-width:26ch;margin:0 auto}
.cta p{color:var(--on-ink-muted);max-width:62ch;margin:16px auto 0}
.btn{display:inline-block;background:var(--electric);color:#fff;font-weight:700;
  text-decoration:none;padding:15px 30px;border-radius:11px;font-size:15px;letter-spacing:.01em;transition:all .18s;border:0;cursor:pointer}
.btn:hover{background:#6669f0;transform:translateY(-1px)}
.btn.ghost{background:transparent;border:1.5px solid rgba(255,255,255,.4);color:#fff}
.btn.ghost:hover{background:rgba(255,255,255,.1)}
.btn.solid-royal{background:var(--royal)}.btn.solid-royal:hover{background:var(--royal-2)}
footer.foot{background:var(--ink);color:var(--on-ink-muted);padding:42px 0;font-size:13px}
footer.foot .wrap{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;align-items:center}
footer.foot a{color:var(--electric-soft);text-decoration:none}

/* site-wide independence banner */
.indep{background:#12143f;color:#A6AAD4;font-size:12px;text-align:center;padding:9px 20px;line-height:1.5;
  border-bottom:1px solid rgba(132,135,238,.18)}
.indep b{color:#C9CBF5;font-weight:600}

/* reveal on scroll */
.reveal{opacity:0; transform:translateY(18px); transition:opacity .7s ease, transform .7s ease}
.reveal.in{opacity:1; transform:none}

.src{font-size:12px;color:var(--muted-2);margin-top:10px}
.src a{color:var(--royal);text-decoration:none}
.src a:hover{text-decoration:underline}
.mt8{margin-top:8px}.mt16{margin-top:16px}.mt24{margin-top:24px}.mt32{margin-top:32px}.mt40{margin-top:40px}.mt56{margin-top:56px}
.tc{text-align:center}.muted{color:var(--muted)}
