/* Whitehardt AEO — the look of whitehardt.com: Raleway, Newsreader italics for accents,
   Geist Mono for eyebrows; navy "night" bands over paper; orange pill buttons.
   Fonts are served from here (public/fonts, SIL OFL), so nothing loads from elsewhere. */

@font-face{font-family:"Raleway";src:url(/static/fonts/raleway-latin-wght-normal.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:"Newsreader";src:url(/static/fonts/newsreader-latin-wght-normal.woff2) format("woff2");font-weight:200 800;font-style:normal;font-display:swap}
@font-face{font-family:"Newsreader";src:url(/static/fonts/newsreader-latin-wght-italic.woff2) format("woff2");font-weight:200 800;font-style:italic;font-display:swap}
@font-face{font-family:"Geist Mono";src:url(/static/fonts/geist-mono-latin-wght-normal.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}

:root{
  /* Whitehardt's palette */
  --ink:#0A0F1E; --midnight:#121A33; --navy:#1F2846; --navy-l:#242E50; --steel:#3B4670;
  --paper:#F5F3EE; --stone:#D8D4C8; --mist:#D9DCE6; --fog:#8C94AE;
  --orange:#BC7020; --ember:#E39A4E; --rust:#985814; --tan:#C9AD8F; --signal:#8FA0E6; --periwinkle:#5065AC;
  --night:radial-gradient(120% 140% at 85% 0%, #242E50 0%, #121A33 45%, #0A0F1E 100%);
  --grad-signal:linear-gradient(90deg,#BC7020 0%,#C9AD8F 50%,#8FA0E6 100%);

  /* roles (light) */
  --bg:var(--paper); --card:#FFFFFF; --card-2:#FAF9F6; --text:#1B2034; --head:#0A0F1E; --muted:#5D6582;
  --line:rgba(27,32,52,.10); --line-2:rgba(27,32,52,.18); --tint:rgba(27,32,52,.04);
  --accent-text:var(--rust); --link:#2E3A6B;
  --hit:#2E7D4F; --hit-bg:rgba(46,125,79,.10); --miss:#B4472E; --miss-bg:rgba(180,71,46,.09);
  --shadow:0 1px 2px rgba(10,15,30,.06), 0 12px 32px -12px rgba(10,15,30,.18);
  --r-s:10px; --r-m:18px; --r-l:28px;
  --sans:"Raleway",ui-sans-serif,system-ui,sans-serif; --serif:"Newsreader",Georgia,serif; --mono:"Geist Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){
  :root{
    --bg:#0A0F1E; --card:#121A33; --card-2:#161F3D; --text:#D9DCE6; --head:#FFFFFF; --muted:#9AA2BC;
    --line:rgba(255,255,255,.09); --line-2:rgba(255,255,255,.16); --tint:rgba(255,255,255,.04);
    --accent-text:var(--ember); --link:#B9C4F2;
    --hit:#6FCF97; --hit-bg:rgba(111,207,151,.12); --miss:#F08A6E; --miss-bg:rgba(240,138,110,.12);
    --shadow:0 1px 2px rgba(0,0,0,.3), 0 16px 40px -16px rgba(0,0,0,.6);
    color-scheme:dark;
  }
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--sans);font-weight:450;background:var(--bg);color:var(--text);font-size:15px;line-height:1.5}
a{color:var(--link);text-underline-offset:2px}
h1,h2,h3{color:var(--head);font-weight:700;letter-spacing:-.02em;line-height:1.15}
h1{font-size:clamp(26px,3.4vw,38px);margin:4px 0 6px}
h2{font-size:18px;margin:0}
h3{font-size:19px;margin:4px 0}
em{font-family:var(--serif);font-style:italic;font-weight:500;color:var(--accent-text);letter-spacing:-.01em}
code,pre{font-family:var(--mono);font-size:12.5px}
code{background:var(--tint);padding:2px 6px;border-radius:6px}
pre{background:var(--tint);padding:10px 12px;border-radius:var(--r-s);overflow:auto;margin:0}
small,.small{font-size:12px}
.muted{color:var(--muted)}
.fine{font-size:12.5px;color:var(--muted)}
.err{color:var(--miss)}
.inline{display:inline}
.num{font-variant-numeric:tabular-nums}
.empty{color:var(--muted);text-align:center;padding:26px 10px !important}
.eyebrow{font-family:var(--mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--orange)}
.tag{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line-2);border-radius:999px;padding:1px 7px;white-space:nowrap}
.ver{font-family:var(--mono);font-size:12px;color:var(--muted)}

/* ---------- the night band ---------- */
.bar{background:var(--night);color:#fff;border-bottom:1px solid rgba(255,255,255,.06)}
.bar-in{max-width:1240px;margin:0 auto;padding:16px 24px;display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}
.brand{display:inline-flex;align-items:center;gap:12px;text-decoration:none;color:#fff}
.wordmark{font-family:var(--serif);font-weight:400;text-transform:uppercase;letter-spacing:.42em;font-size:15px;color:#fff;margin-right:-.42em}
.chip{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ember);border:1px solid rgba(227,154,78,.4);border-radius:999px;padding:3px 9px}
nav.top{display:flex;gap:4px;align-items:center;flex-wrap:wrap}
nav.top a,nav.top .link{color:var(--mist);text-decoration:none;font-size:13.5px;padding:6px 10px;border-radius:999px}
nav.top a:hover,nav.top .link:hover{color:#fff;background:rgba(255,255,255,.06)}
nav.top a.on{color:#fff;background:rgba(255,255,255,.09)}
.me{width:28px;height:28px;border-radius:50%;display:inline-grid;place-items:center;background:var(--navy-l);border:1px solid rgba(255,255,255,.12);font-size:12px;font-weight:700;color:var(--tan);margin-left:6px}
.bar-head{max-width:1240px;margin:0 auto;padding:14px 24px 0}
.bar-head h1{color:#fff}
.bar-head .lead{color:var(--mist);max-width:720px;margin:2px 0 18px;font-size:15.5px}
.bar-head em{color:var(--tan)}
.bar-head .eyebrow{color:var(--ember)}
.bar-head:not(:has(.tabs)){padding-bottom:22px}
.tabs{display:flex;gap:2px;margin-top:14px;overflow-x:auto}
.tabs a{padding:10px 16px;text-decoration:none;color:var(--fog);font-weight:600;font-size:14px;border-bottom:2px solid transparent;white-space:nowrap}
.tabs a:hover{color:#fff}
.tabs a.on{color:#fff;border-color:var(--ember)}

/* ---------- page ---------- */
.wrap{max-width:1240px;margin:0 auto;padding:22px 24px 60px}
section{margin:26px 0}
.sechead{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin:28px 0 12px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-m);padding:18px 20px;margin:14px 0;box-shadow:var(--shadow)}
.card h2{margin-bottom:10px}
.card.narrow{max-width:560px;margin:40px auto}
.flash{background:var(--card);border:1px solid var(--line-2);border-left:3px solid var(--orange);border-radius:var(--r-s);padding:11px 14px;margin:0 0 14px;box-shadow:var(--shadow)}
.flash.err{border-left-color:var(--miss);color:var(--miss)}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.cols2{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:0 16px}
.row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}
.stack{display:flex;flex-direction:column;gap:6px}
.note{font-size:12px;color:var(--muted);margin:14px 2px;max-width:900px}

/* ---------- buttons and fields ---------- */
button,.btn{font-family:var(--sans);background:var(--navy);color:#fff;border:1px solid transparent;border-radius:999px;padding:9px 18px;font-size:14px;font-weight:700;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px;line-height:1.2;transition:background .15s,border-color .15s}
button:hover,.btn:hover{background:var(--navy-l)}
button.primary,.btn.primary{background:var(--orange);color:var(--ink)}
button.primary:hover,.btn.primary:hover{background:var(--ember)}
button.ghost,.btn.ghost{background:transparent;color:var(--text);border-color:var(--line-2)}
button.ghost:hover,.btn.ghost:hover{background:var(--tint);border-color:var(--muted)}
button.small{padding:5px 11px;font-size:12px}
button.danger{color:var(--miss)}
button.link{background:none;border:0;padding:6px 10px;font-weight:450}
button:disabled{opacity:.45;cursor:default}
button:focus-visible,.btn:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--signal);outline-offset:2px}
.wide{width:100%;justify-content:center;padding:12px 18px;font-size:15px}

label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;font-weight:600;color:var(--muted);margin:8px 0}
label.tog{flex-direction:row;align-items:center;gap:7px;margin:0;font-weight:500}
input,select,textarea{font:inherit;font-weight:450;color:var(--text);background:var(--card-2);border:1px solid var(--line-2);border-radius:var(--r-s);padding:8px 11px}
input:focus,select:focus,textarea:focus{border-color:var(--signal)}
textarea{width:100%;font-family:var(--mono);font-size:12.5px;line-height:1.55}
.settings label input:not([type=checkbox]){max-width:640px}
input.num{width:72px}
input.full{width:100%;max-width:640px}
input[type=checkbox],input[type=radio]{accent-color:var(--orange)}

/* ---------- projects ---------- */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.pcard{display:flex;flex-direction:column;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-m);padding:18px 20px;box-shadow:var(--shadow);text-decoration:none;color:var(--text);margin:0;transition:transform .2s cubic-bezier(.2,.7,.2,1),border-color .2s}
a.pcard:hover{transform:translateY(-2px);border-color:var(--line-2)}
.pcard h3{margin:2px 0 0}
.pcard .meta{font-size:13px;color:var(--muted)}
.pcard .foot{margin-top:auto;padding-top:10px;border-top:1px solid var(--line);font-size:12.5px;color:var(--muted);display:flex;gap:8px;align-items:center}
.pcard.new{border-style:dashed;box-shadow:none;background:transparent}
.minis{display:flex;flex-direction:column;gap:7px;margin:10px 0 4px}
.minis.empty{font-size:13px;color:var(--muted)}
.mini{display:grid;grid-template-columns:62px 1fr 40px;gap:10px;align-items:center;font-size:12.5px}
.mini b{text-align:right;font-variant-numeric:tabular-nums}

/* ---------- KPIs ---------- */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;margin:12px 0}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r-m);padding:18px 20px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.kpi::before{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--grad-signal)}
.kpi .k{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.kpi .v{font-size:42px;font-weight:700;color:var(--head);letter-spacing:-.03em;line-height:1.05;margin-top:8px;display:flex;align-items:baseline;gap:10px;font-variant-numeric:tabular-nums}
.kpi .cap{font-size:13px;color:var(--muted);margin-bottom:8px}
.kpi .row2{display:flex;align-items:baseline;gap:8px;font-size:13px;margin:12px 0 6px}
.kpi .row2 span{color:var(--muted)}
.kpi .row2 b{font-size:16px;color:var(--head);font-variant-numeric:tabular-nums}
.kpi .n{font-size:12px;color:var(--muted);margin-top:4px}
.kpi .meter + .n{margin-top:12px}
.gapn{color:var(--accent-text)}
.delta{font-size:12px;font-weight:700;padding:2px 7px;border-radius:999px;letter-spacing:0}
.delta.up{color:var(--hit);background:var(--hit-bg)}
.delta.down{color:var(--miss);background:var(--miss-bg)}
.delta.flat{color:var(--muted);background:var(--tint)}
.meter{height:6px;background:var(--tint);border-radius:999px;overflow:hidden;box-shadow:inset 0 0 0 1px var(--line)}
.meter i{display:block;height:100%;width:0;background:var(--grad-signal);border-radius:999px;transition:width .6s cubic-bezier(.2,.7,.2,1)}
.meter.alt i{background:var(--periwinkle)}

/* ---------- overview ---------- */
.banner{display:block;text-decoration:none;color:var(--text);border-color:rgba(188,112,32,.45)}
.banner .more{font-size:13px;font-weight:700;color:var(--accent-text)}
.setup ol{margin:0;padding:0;list-style:none;counter-reset:s;display:grid;gap:8px}
.setup li{counter-increment:s;display:flex;gap:10px;align-items:center;font-size:14px;margin:0}
.setup li::before{content:counter(s);width:24px;height:24px;flex:none;border-radius:50%;display:grid;place-items:center;font-family:var(--mono);font-size:11.5px;border:1px solid var(--line-2);color:var(--muted)}
.setup li.done{color:var(--muted);text-decoration:line-through}
.setup li.done::before{content:"✓";background:var(--hit-bg);border-color:transparent;color:var(--hit)}
.runform{display:grid;gap:14px}
.field{display:grid;grid-template-columns:110px 1fr;gap:12px;align-items:center}
.flabel{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.opts{display:flex;flex-wrap:wrap;gap:8px}
.opt{flex-direction:row;align-items:center;gap:8px;margin:0;padding:8px 14px;border:1px solid var(--line-2);border-radius:999px;font-size:13.5px;font-weight:600;color:var(--text);cursor:pointer;background:var(--card-2)}
.opt small{font-weight:450;color:var(--muted);margin-left:2px}
.opt:has(input:checked){border-color:var(--orange);background:rgba(188,112,32,.08)}
.opt.off{opacity:.55;cursor:default}
.go{display:flex;align-items:center;gap:14px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:14px}
.domains{display:grid;gap:9px}
.dom{display:grid;grid-template-columns:minmax(120px,220px) 1fr 40px minmax(90px,170px);gap:12px;align-items:center;font-size:13.5px}
.dom .name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dom b{text-align:right;font-variant-numeric:tabular-nums}
.dom .engs{font-size:12px;color:var(--muted)}

/* ---------- tables ---------- */
.scroll{overflow-x:auto;border-radius:var(--r-m)}
.grid{width:100%;border-collapse:separate;border-spacing:0;background:var(--card);border:1px solid var(--line);border-radius:var(--r-m);overflow:hidden;box-shadow:var(--shadow)}
.grid th{text-align:left;font-family:var(--mono);font-weight:500;font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);padding:11px 12px;background:var(--card-2);border-bottom:1px solid var(--line)}
.grid th.eng{text-align:center;border-left:1px solid var(--line);color:var(--text)}
.grid th.sub{font-size:9.5px;letter-spacing:.1em;text-align:center}
.grid td{padding:11px 12px;border-top:1px solid var(--line);vertical-align:top;font-size:14px}
.grid tbody tr:first-child td{border-top:0}
.grid tr.off td{opacity:.5}
.prog{height:6px;background:var(--tint);border-radius:999px;overflow:hidden;margin:10px 0;box-shadow:inset 0 0 0 1px var(--line)}
.prog>div{height:100%;background:var(--grad-signal);width:0;transition:width .6s}

/* status pills */
.pill{display:inline-block;font-family:var(--mono);font-size:10.5px;padding:2px 9px;border-radius:999px;text-transform:uppercase;letter-spacing:.1em;font-weight:500;vertical-align:middle;background:var(--tint);color:var(--muted)}
.bar-head .pill{font-size:12px;background:rgba(255,255,255,.08);color:var(--mist)}
.s-queued,.s-running,.bar-head .s-queued,.bar-head .s-running{background:rgba(227,154,78,.16);color:var(--ember)}
.s-done,.bar-head .s-done{background:var(--hit-bg);color:var(--hit)}
.bar-head .s-done{color:#6FCF97;background:rgba(111,207,151,.14)}
.s-stopping,.s-stopped,.s-failed{background:var(--miss-bg);color:var(--miss)}

/* ---------- a run ---------- */
.toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.toolbar .left,.toolbar .right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:22px 0 12px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.fchip{background:var(--card);color:var(--text);border:1px solid var(--line-2);font-weight:600;font-size:13px;padding:6px 13px}
.fchip:hover{background:var(--tint)}
.fchip span{font-family:var(--mono);font-size:11px;color:var(--muted);font-weight:500}
.fchip.on,.fchip.on:hover{background:var(--navy);color:#fff;border-color:var(--navy)}
.fchip.on span{color:var(--tan)}
.fsearch{flex:1;min-width:180px;max-width:320px;border-radius:999px;padding:7px 14px}
.results td.qn{font-family:var(--mono);font-size:12px;color:var(--muted);width:36px}
.results td.q{min-width:300px}
.results td:nth-child(n+3){white-space:nowrap;width:84px;text-align:center}
.results td:nth-child(2n+3){border-left:1px solid var(--line)}
.results tr[hidden]{display:none}
.cat{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:3px;display:flex;gap:8px;align-items:center}
.qt{font-weight:600;color:var(--head)}
.mk{display:inline-block;font-size:12px;font-weight:700;padding:3px 9px;border-radius:999px}
.mk.hit{color:var(--hit);background:var(--hit-bg)}
.mk.miss{color:var(--miss);background:var(--miss-bg)}
.mk.na{color:var(--muted)}
.mk.busy{color:var(--ember);background:rgba(227,154,78,.14)}
.mk.err{color:var(--miss);border:1px dashed var(--miss)}
.nosearch{margin-left:3px;opacity:.7}
.answers{margin-top:8px;display:grid;gap:4px}
details{border-radius:var(--r-s)}
details[open]{background:var(--card-2);border:1px solid var(--line);padding:8px 12px 12px;margin:4px 0}
summary{cursor:pointer;font-size:13px;font-weight:700;color:var(--link);display:flex;align-items:center;gap:2px;padding:2px 0;list-style:none}
summary::-webkit-details-marker{display:none}
summary::before{content:"›";display:inline-block;width:12px;transition:transform .15s;color:var(--muted)}
details[open]>summary::before{transform:rotate(90deg)}
.eng-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px;vertical-align:middle;flex:none}
.e-claude{background:#D97757}.e-chatgpt{background:#3F9C83}.e-gemini{background:#6C8EF0}
.comp{font-family:var(--sans);font-size:12px;font-weight:600;color:var(--accent-text);margin-left:6px}
.turn{margin-top:10px}
.tl{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.ans{white-space:pre-wrap;font-size:13.5px;line-height:1.55;background:var(--card);border:1px solid var(--line);border-radius:var(--r-s);padding:10px 12px;max-height:340px;overflow:auto;text-align:left}
.turn.why .ans{border-left:3px solid var(--ember)}
ul.cites{list-style:none;padding:0;margin:6px 0 0;display:flex;flex-wrap:wrap;gap:5px}
ul.cites li{font-size:12px;display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:999px;padding:2px 9px 2px 3px;background:var(--card);margin:0}
ul.cites li.seen{opacity:.7}
ul.cites .kind{font-family:var(--mono);font-size:9.5px;text-transform:uppercase;letter-spacing:.08em;padding:1px 6px;border-radius:999px;background:var(--tint);color:var(--muted)}
ul.cites li.cited .kind{background:rgba(143,160,230,.2);color:var(--link)}
ul.cites a{text-decoration:none}

/* ---------- questions and settings ---------- */
.legend{display:grid;gap:6px}
.legend .fu{font-size:13.5px}
.legend .key{font-family:var(--mono);font-size:11px;letter-spacing:.08em;background:var(--navy);color:#fff;border-radius:6px;padding:2px 7px;margin-right:8px}
.qtable td{vertical-align:middle}
.qrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.qrow .cat-in{width:180px}
.qrow .q-in{flex:1;min-width:260px}
.savebar{position:sticky;bottom:0;display:flex;align-items:center;gap:14px;padding:14px 18px;margin:16px -4px 0;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(8px);border-top:1px solid var(--line);z-index:5}
.copyrow{display:flex;gap:8px;align-items:center;margin:6px 0;flex-wrap:wrap}
.copyrow pre{flex:1}
ol li,ul li{margin:4px 0}

/* ---------- sign-in ---------- */
body.auth{min-height:100vh;display:grid;place-items:center;background:var(--night);padding:24px 16px;color:var(--mist)}
.auth-card{max-width:440px;width:100%;background:rgba(18,26,51,.72);border:1px solid rgba(255,255,255,.09);border-radius:var(--r-l);padding:34px 32px;box-shadow:0 30px 60px -20px rgba(10,15,30,.65);backdrop-filter:blur(10px)}
.auth-card .brand{margin-bottom:34px}
.auth-card h1{color:#fff;font-size:32px;margin:10px 0 8px}
.auth-card em{color:var(--tan)}
.auth-card .eyebrow{color:var(--ember)}
.auth-card .lead{color:var(--mist);margin:0 0 22px}
.auth-card .fine{color:var(--fog);text-align:center}
.auth-card a:not(.btn){color:var(--signal)}
.auth-card .flash{background:rgba(180,71,46,.14);color:#F4B4A3;border-color:rgba(240,138,110,.35);box-shadow:none}

@media (max-width:720px){
  .bar-in,.bar-head,.wrap{padding-left:16px;padding-right:16px}
  .field{grid-template-columns:1fr;gap:6px}
  .dom{grid-template-columns:1fr 40px;row-gap:4px}
  .dom .meter{grid-column:1 / -1;order:3}
  .dom .engs{display:none}
  .kpi .v{font-size:36px}
  .auth-card{padding:28px 22px}
  .cols2{grid-template-columns:1fr}
}
