/* ValueDiscovery — Signal design system (portal). Tokens copied from the design file. */
@font-face{font-family:'Exo 2';font-style:normal;font-weight:400;font-display:swap;
  src:url('/static/fonts/exo2-400.woff2') format('woff2')}
@font-face{font-family:'Exo 2';font-style:normal;font-weight:600;font-display:swap;
  src:url('/static/fonts/exo2-600.woff2') format('woff2')}
@font-face{font-family:'Exo 2';font-style:normal;font-weight:700;font-display:swap;
  src:url('/static/fonts/exo2-700.woff2') format('woff2')}
@font-face{font-family:'Exo 2';font-style:normal;font-weight:800;font-display:swap;
  src:url('/static/fonts/exo2-800.woff2') format('woff2')}
@font-face{font-family:'Exo 2';font-style:italic;font-weight:400;font-display:swap;
  src:url('/static/fonts/exo2-italic-400.woff2') format('woff2')}
:root, :root[data-theme="dark"]{
  --bg:#081A1D; --surface:#11292D; --rail:linear-gradient(180deg,#0B2226,#081B1E);
  --border:rgba(255,255,255,.09); --border-strong:rgba(255,255,255,.16);
  --ink:#EAF4F1; --muted:#7C938E; --faint:#5E726D;
  --brand:#2DD4A7; --brand-soft:rgba(45,212,167,.14); --brand-line:rgba(45,212,167,.30); --on-brand:#06231C;
  --gold:#F0C264; --gold-soft:rgba(240,194,100,.15);
  --pos:#34D399; --pos-soft:rgba(52,211,153,.16);
  --neg:#FB7185; --neg-soft:rgba(251,113,133,.15);
  --caution:#FBBF24; --caution-soft:rgba(251,191,36,.15);
  --sky:#56C2E6; --sky-soft:rgba(86,194,230,.15);
  --track:rgba(255,255,255,.10);
  --shadow:0 2px 6px rgba(0,0,0,.30), 0 14px 36px rgba(0,0,0,.34);
  --shadow-lift:0 6px 14px rgba(0,0,0,.34), 0 26px 56px rgba(0,0,0,.46);
  --r:16px; --r-md:13px; --r-sm:10px; --r-xs:7px; --maxw:1320px;
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px; --space-5:22px; --space-6:32px;
}
:root[data-theme="light"]{
  --bg:#E7EEEB; --surface:#FFFFFF; --rail:linear-gradient(180deg,#FFFFFF,#F4F8F6);
  --border:#DBE5E1; --border-strong:#C5D3CE; --ink:#0B2122; --muted:#5E726D; --faint:#8A9994;
  --brand:#0E9C7C; --brand-soft:rgba(14,156,124,.12); --brand-line:rgba(14,156,124,.30); --on-brand:#FFFFFF;
  --gold:#B5862E; --pos:#119D6B; --pos-soft:rgba(17,157,107,.12);
  --neg:#D04A3A; --neg-soft:rgba(208,74,58,.12); --caution:#C08A1F; --caution-soft:rgba(192,138,31,.14);
  --sky:#2E8FB8; --sky-soft:rgba(46,143,184,.12); --track:rgba(11,33,34,.10);
  --shadow:0 2px 6px rgba(11,33,34,.06), 0 14px 36px rgba(11,33,34,.08);
  --shadow-lift:0 6px 16px rgba(11,33,34,.10), 0 26px 56px rgba(11,33,34,.12);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--ink);
  font-family:'Exo 2','system-ui',-apple-system,'Segoe UI',Roboto,sans-serif;
  font-size:14.5px;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{margin:0 0 .3em;line-height:1.2;font-weight:600}
h1{font-size:28px} h2{font-size:20px} h3{font-size:16px}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:4px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* Layout shell */
.layout{display:grid;grid-template-columns:248px 1fr;min-height:100vh}
.rail{background:var(--rail);border-right:1px solid var(--border);padding:20px 16px;display:flex;flex-direction:column;gap:6px;position:sticky;top:0;height:100vh;overflow-y:auto;overflow-x:hidden}
.rail .wordmark{font-weight:800;font-size:18px;letter-spacing:.2px;margin-bottom:18px;text-decoration:none;color:var(--ink)}
.rail .wordmark span{color:var(--brand)}
.rail a.nav{display:block;padding:9px 12px;border-radius:var(--r-sm);color:var(--muted);font-weight:600;text-decoration:none}
.rail a.nav:hover{background:var(--brand-soft);color:var(--ink)}
.rail a.nav.active{background:var(--brand-soft);color:var(--brand)}
.rail .spacer{flex:1}
.rail .userchip{border-top:1px solid var(--border);padding-top:12px;color:var(--muted);font-size:12.5px}
.main{min-width:0}
.topbar{display:flex;align-items:center;gap:14px;padding:14px 24px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg);z-index:5}
.topbar .cache{color:var(--faint);font-size:12.5px}
.topbar .grow{flex:1}
.content{padding:24px;max-width:var(--maxw);margin:0 auto}
.rail .nav-tab-label{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin:14px 4px 4px}
.rail .nav-section{margin:2px 0}
.rail .nav-section>summary{list-style:none;cursor:pointer;padding:9px 12px;border-radius:var(--r-sm);color:var(--muted);font-weight:600;display:flex;align-items:center;justify-content:space-between}
.rail .nav-section>summary::after{content:"\25B8";color:var(--faint);font-size:11px}
.rail .nav-section[open]>summary::after{content:"\25BE"}
.rail .nav-section>summary:hover{background:var(--brand-soft);color:var(--ink)}
.rail .nav-section>summary:focus-visible{outline:2px solid var(--brand)}
.rail .nav-section .nav{padding-left:20px;font-size:13.5px}
.navtoggle{display:inline-flex}
.navscrim{display:none}
@media (max-width:820px){
  .layout{grid-template-columns:1fr}
  .rail{position:fixed;top:0;left:0;height:100vh;width:248px;transform:translateX(-100%);transition:transform .2s ease;z-index:30}
  .layout[data-nav-open="true"] .rail{transform:none}
  .navscrim{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:25}
  .layout[data-nav-open="true"] .navscrim{display:block}
}
@media (min-width:821px){
  .layout[data-nav-collapsed="true"]{grid-template-columns:1fr}
  .layout[data-nav-collapsed="true"] .rail{display:none}
}
.prose{text-align:justify;hyphens:auto}
@media (prefers-reduced-motion:reduce){.rail{transition:none}}

/* Components */
.btn{display:inline-block;border:1px solid var(--border-strong);background:transparent;color:var(--ink);
  padding:8px 14px;border-radius:var(--r-sm);font:inherit;font-weight:600;cursor:pointer;text-decoration:none}
.btn:hover{border-color:var(--brand-line)}
.btn.primary{background:var(--brand);color:var(--on-brand);border-color:var(--brand)}
.btn.danger{background:var(--neg-soft);color:var(--neg);border-color:var(--neg)}
.btn.sm{padding:5px 10px;font-size:12.5px}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:18px;box-shadow:var(--shadow);transition:box-shadow .18s ease,transform .18s ease}
.card.link{color:inherit;text-decoration:none;display:block}
.card.link:hover{box-shadow:var(--shadow-lift);transform:translateY(-1px)}
.grid{display:grid;grid-template-columns:1fr;gap:18px}
@media (min-width:1100px){.grid.two{grid-template-columns:1fr 1fr}}
.chip{display:inline-block;font-size:11.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  padding:3px 9px;border-radius:var(--r-sm);background:var(--track);color:var(--muted)}
.badge{display:inline-block;font-size:12px;font-weight:700;padding:3px 10px;border-radius:12px}
.badge::before{content:"● "}
.s-bullish{background:var(--pos-soft);color:var(--pos)}
.s-measured{background:var(--sky-soft);color:var(--sky)}
.s-cautious{background:var(--caution-soft);color:var(--caution)}
.s-defensive{background:var(--neg-soft);color:var(--neg)}
.meta{color:var(--muted);font-size:12.5px}
.summary{color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:12px 0}
.tile{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-sm);padding:9px 11px}
.tile .v{font-weight:700;font-size:15px;font-variant-numeric:tabular-nums}
.tile .l{color:var(--muted);font-size:11px;margin-top:2px}
.up{color:var(--pos)} .down{color:var(--neg)} .flat{color:var(--muted)}
.callout{background:var(--neg-soft);border-left:4px solid var(--neg);border-radius:var(--r-sm);padding:10px 14px;margin:12px 0}
.callout b{color:var(--neg)}
.banner{background:var(--caution-soft);color:var(--ink);border-radius:var(--r-sm);padding:9px 14px;font-size:13px;margin:12px 0}
.label{display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:14px 0 4px}
.section-h{font-size:14px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--ink);margin:22px 0 8px}
.input,select{width:100%;background:var(--surface);border:1px solid var(--border-strong);color:var(--ink);
  padding:9px 11px;border-radius:var(--r-sm);font:inherit}
.filterbar{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin-bottom:18px}
.filterbar .f{min-width:150px}
.err{background:var(--neg-soft);color:var(--neg);border-radius:var(--r-sm);padding:9px 12px;margin:10px 0;font-size:13px}
.flash{background:var(--brand-soft);color:var(--brand);border-radius:var(--r-sm);padding:9px 12px;margin:10px 0}
.empty{color:var(--muted);text-align:center;padding:48px 12px;border:1px dashed var(--border);border-radius:var(--r)}
.authwrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.authcard{width:100%;max-width:400px}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--border);vertical-align:top}
th{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em}
.embed{position:relative;padding-bottom:56.25%;height:0;border-radius:var(--r);overflow:hidden;margin:12px 0}
.embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.card-wrap{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:18px;box-shadow:var(--shadow);transition:box-shadow .18s ease,transform .18s ease}
.card-wrap:hover{box-shadow:var(--shadow-lift);transform:translateY(-1px)}
.card-body.link{display:block;color:inherit;text-decoration:none}
.card-wrap .meta{padding-right:34px}
.fav{position:absolute;top:10px;right:10px;z-index:2;background:transparent;border:none;cursor:pointer;font-size:18px;line-height:1;color:var(--muted);padding:2px 4px;border-radius:6px}
.fav.inline{position:static}
.fav.on,.fav:hover{color:var(--gold)}
.fav:focus-visible{outline:2px solid var(--brand)}
.chat{border:1px solid var(--border);border-radius:var(--r);padding:14px;margin:8px 0 16px;background:var(--surface)}
.chat-log{display:flex;flex-direction:column;gap:8px;max-height:420px;overflow-y:auto}
.chat-log:empty{display:none}
.msg{padding:9px 12px;border-radius:12px;max-width:88%;white-space:pre-wrap;line-height:1.5;font-size:13.5px}
.msg.user{align-self:flex-end;background:var(--brand-soft);color:var(--ink)}
.msg.assistant{align-self:flex-start;background:var(--bg);border:1px solid var(--border);color:var(--ink)}
.msg.thinking{color:var(--muted);font-style:italic}
.msg.err-msg{color:var(--neg)}
.chat-chips{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 2px}
.chip.q{cursor:pointer;background:var(--brand-soft);color:var(--brand);border:none;text-align:left;font:inherit;font-size:12px;text-transform:none;letter-spacing:normal;padding:6px 10px;border-radius:var(--r-sm)}
.chip.q:hover{background:var(--brand-line);color:var(--ink)}
.chat-input{display:flex;gap:8px;margin-top:10px}
.chat-input .input{flex:1}
.chat-status{font-size:12px;color:var(--muted);margin:2px 0 4px;font-style:italic}
.chat-status.err-msg{color:var(--neg);font-style:normal}
.retry{color:var(--brand);cursor:pointer}
.stopped{color:var(--muted);font-size:12px}
.btn.stop{background:var(--surface);border:1px solid var(--border);color:var(--ink)}
.msg a{color:var(--brand);text-decoration:underline}
.msg code{background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:0 4px;font-size:12.5px}
.msg ul,.msg ol{margin:4px 0 4px 18px;padding:0}
.msg li{margin:2px 0}
.msg table{border-collapse:collapse;margin:8px 0;font-size:12.5px;display:block;max-width:100%;overflow-x:auto}
.msg th,.msg td{border:1px solid var(--border);padding:5px 8px;text-align:left;vertical-align:top;white-space:nowrap}
.msg th{background:var(--bg);font-weight:700;color:var(--ink)}

/* 4.2g — layout & component utilities */
.skip{position:absolute;left:-9999px;top:0;background:var(--brand);color:var(--on-brand);padding:8px 14px;border-radius:0 0 var(--r-sm) 0;z-index:100;font-weight:700}
.skip:focus{left:0}
.page{max-width:960px}
.page.narrow{max-width:760px}
.page.form{max-width:640px}
.page-head{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap}
.backlink{display:inline-block;color:var(--muted);margin-bottom:var(--space-3)}
.subtitle{color:var(--muted);font-size:12.5px;margin-bottom:var(--space-4)}
.field{margin-bottom:var(--space-3)}
.form-actions{display:flex;gap:var(--space-2);margin-top:var(--space-4);flex-wrap:wrap}
.form-card{max-width:560px;margin-bottom:var(--space-5)}
.card-h{margin-top:0}
.divider{border-top:1px solid var(--border);padding-top:14px;margin-top:16px}
.prose-lead{border-left:3px solid var(--brand);font-size:15px;line-height:1.55;margin:18px 0}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-4)}
.big-num{font-size:26px;font-weight:800;font-variant-numeric:tabular-nums}
.num{font-variant-numeric:tabular-nums}
.wordmark--lg{font-size:20px;font-weight:800;letter-spacing:.2px}
.wordmark--lg span{color:var(--brand)}
.actions{text-align:right;white-space:nowrap}
.tablewrap{overflow-x:auto}
.details{white-space:pre-wrap;max-width:22rem}
.nowrap{white-space:nowrap}
.loadmore{margin:1rem 0}
.select-inline{width:auto}
.iv-eyebrow{margin:12px 0 4px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.iv-title{display:flex;align-items:flex-start;gap:10px}
.iv-title h1{margin:0 0 6px;line-height:1.25;flex:1}
.iv-list{margin:0;padding-left:20px;line-height:1.6}
.iv-list li{margin-bottom:6px}
.iv-foot{margin-top:26px;border-top:1px solid var(--border);padding-top:14px;line-height:1.55;color:var(--muted);font-size:12.5px}
.progress{position:fixed;top:0;left:0;height:2px;width:0;background:var(--brand);z-index:200;transition:width .2s ease;opacity:0}
.progress.on{opacity:1}
@media (max-width:820px){
  .btn.sm{min-height:40px;display:inline-flex;align-items:center}
  .rail a.nav{min-height:40px;display:flex;align-items:center}
  .fav{min-width:40px;min-height:40px;display:inline-flex;align-items:center;justify-content:center;padding:0}
  .filterbar .f{min-width:120px}
  .filterbar{gap:8px}
}
@media (prefers-reduced-motion:reduce){.progress{transition:none}}
.btn.block{width:100%;margin-top:var(--space-4)}
.f.grow{flex:1;min-width:200px}
.card-title{margin:6px 0}
.tag-row{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0;align-items:center}
.chip.tag{background:var(--brand-soft);color:var(--brand)}
.card-cta{margin-top:10px;color:var(--brand);font-size:12.5px}
td form{display:inline}
.iv-body{margin:0;line-height:1.65}
.errpage{max-width:440px;text-align:center}
.oracle{color:var(--brand);font-weight:700}
.section-h.ask{text-transform:none}
.brandmark{width:1.35em;height:1.35em;margin-right:7px;vertical-align:middle;color:var(--brand)}
.jump{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:20}
.jump .btn{background:var(--surface);box-shadow:var(--shadow)}
.dotrow{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:8px 0 4px}
.dot{width:12px;height:12px;border-radius:50%;display:inline-block;background:var(--muted)}
.dot.s-bullish{background:var(--pos)}
.dot.s-measured{background:var(--sky)}
.dot.s-cautious{background:var(--caution)}
.dot.s-defensive{background:var(--neg)}
.chip.tag.lg{font-size:1rem;padding:5px 12px}

/* 4.7 — Coverage dashboard */
.kpistrip{display:flex;flex-wrap:wrap;gap:12px;margin:12px 0}
.kpi{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 16px;font-size:1.6rem;font-weight:700;min-width:96px}
.kpi span{display:block;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.bar{height:8px;border-radius:5px;background:var(--track);min-width:60px}
.barfill{height:8px;border-radius:5px;background:var(--brand)}
.covbadge{font-size:.72rem;font-weight:700;padding:2px 8px;border-radius:6px}
.covbadge.active{background:var(--pos-soft);color:var(--pos)}
.covbadge.stale{background:var(--caution-soft);color:var(--caution)}
.covbadge.gap{background:var(--neg-soft);color:var(--neg)}

/* 4.8 — Promise Tracker */
.promise{border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin:10px 0}
.promise-h{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.promise-claim{margin:6px 0;font-weight:600}
.promise-sources{margin-top:6px}
.promise-sources blockquote{margin:4px 0 8px;padding-left:10px;border-left:3px solid var(--muted);color:var(--muted)}
.badge.pstatus{font-size:.72rem;font-weight:700;padding:2px 8px;border-radius:6px}
.pstatus.inprogress{background:#2b6cb0;color:#fff}
.pstatus.overdue{background:#d98a2b;color:#fff}
.pstatus.kept{background:#0E9C7C;color:#fff}
.pstatus.broken{background:#c8632b;color:#fff}
.pstatus.unclear{background:#8a94a6;color:#fff}
.chip.conf-high{border-color:#0E9C7C}
.chip.conf-medium{border-color:#8a94a6}
.chip.conf-low{opacity:.65}

/* Item annotations */
.card-wrap .meta{padding-right:64px}
.anno-toggle{position:absolute;top:10px;right:40px;z-index:2;background:transparent;border:none;cursor:pointer;font-size:16px;line-height:1;color:var(--muted);padding:2px 4px;border-radius:6px}
.anno-toggle.on,.anno-toggle:hover{color:var(--brand)}
.anno-toggle:focus-visible{outline:2px solid var(--brand)}
.anno-editor{margin-top:12px;display:flex;flex-direction:column;gap:8px}
.anno-editor textarea{white-space:pre-wrap}
.anno-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.anno-msg{font-size:13px;color:var(--muted)}
.anno-msg.err{color:var(--danger,#c0392b)}
.anno-form{display:flex;flex-direction:column;gap:8px;margin:6px 0 4px}
.anno-note-view{white-space:pre-line;margin:8px 0;color:var(--text)}
.anno-filter{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0}
.anno-updated{margin-top:8px;font-size:12px}

/* Task 8 — Admin Analytics charts */
.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}
.spark{display:block;width:100%;height:60px;margin:6px 0 14px}
.spark-bar{fill:var(--brand)}
.bar.lg{height:20px;border-radius:6px}
.barfill.lg{height:20px;border-radius:6px}
.chip.active{background:var(--brand-soft);color:var(--brand);border:1px solid var(--brand-line);text-decoration:underline}

/* Privacy / legal page + footer links */
.legal{max-width:720px;margin:0 auto;padding:40px 20px 64px;color:var(--ink);line-height:1.6}
.legal h1{margin:8px 0 4px}
.legal h2{margin:28px 0 6px;font-size:18px}
.legal a{color:var(--brand)}
.legal ul{padding-left:20px}
.legal li{margin:6px 0}
.legal-back{display:inline-block;margin-bottom:16px;color:var(--muted);text-decoration:none;font-size:14px}
.legal-updated{color:var(--muted);font-size:13px;margin:0 0 20px}
.legal-back-foot{margin-top:32px;padding-top:16px;border-top:1px solid var(--border)}
.authfoot{position:fixed;left:0;right:0;bottom:0;text-align:center;padding:16px}
.authfoot a{color:var(--muted);text-decoration:none;font-size:13px}
.authfoot a:hover{text-decoration:underline}
.rail .rail-privacy{display:block;padding:10px 12px 0;color:var(--faint);font-size:12px;text-decoration:none}
.rail .rail-privacy:hover{color:var(--muted);text-decoration:underline}
