/* Bridge: design.css + motion.css (the owner's Codex prototype, unchanged) are the design. This file only
   1) maps the Lab's own components (cards, chips, rule editor, example charts, tables) onto the same tokens, and
   2) undoes legacy lab.css rules that would otherwise win. Loaded last. */
:root{--s:var(--surface);--s2:var(--raised);--t:var(--text);--m:var(--muted);--f:var(--dim);--a:var(--accent);--ai:var(--ink);--g:var(--positive);--r:var(--negative);--y:var(--caution);--cb:var(--control)}
html,body{background:var(--bg);font:16px/1.6 var(--sans)}
body{-webkit-font-smoothing:antialiased}
.wordmark{text-transform:lowercase}
.brand{color:var(--text)}
main{display:block}
:where(main)>*+*{margin-top:0}
.loading{padding:24px 0;color:var(--muted)}
.breadcrumbs{margin-bottom:24px}

/* legacy page intro → the prototype's page head */
.intro{margin-bottom:28px}
.intro h1{font-size:36px;font-weight:500;letter-spacing:-.04em;line-height:1.15;max-width:none}
.intro p{color:var(--muted);font-size:15px;margin-top:10px;max-width:68ch}

/* cards → panels */
.card,.filters,.gpart{padding:24px;border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);display:flex;flex-direction:column;gap:16px;box-shadow:none;margin-top:20px}
.card h2,.filters h2{font-size:16px;font-weight:500;color:var(--text);letter-spacing:0}
.cardhead{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px}
.card.warn,.card.unsupported{border-left:2px solid var(--caution)}
details.card{display:block;border-top:1px solid var(--line)}
details.card>summary{padding:0 0 4px}
.filters.flat{background:none;border:0;padding:0;margin-top:0}

/* notes and warnings */
.note{color:var(--dim);font-size:13px;padding:0;border:0}
.warnline{padding:12px 16px;border-left:2px solid var(--caution);background:var(--surface);color:var(--muted);font-size:13px;margin-top:16px;border-radius:0}
.notice.demobar{margin-bottom:24px}

/* buttons and chips → .button / .choice */
.go{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:46px;border:1px solid var(--accent);border-radius:4px;padding:10px 18px;color:var(--ink);background:var(--accent);text-decoration:none;font-size:14px;font-weight:500;box-shadow:none;cursor:pointer}
.go:hover{background:#89f4ff;border-color:#89f4ff}
.go[disabled]{opacity:.55;cursor:not-allowed}
.chip,a.chip,.ex{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:8px 12px;border:1px solid var(--control);border-radius:3px;background:transparent;color:var(--text);font:13px/1.5 var(--sans);text-decoration:none;cursor:pointer;box-shadow:none}
.chip:hover,.ex:hover{background:var(--raised);border-color:var(--text);color:var(--text)}
.chip[aria-pressed=true]{border-color:var(--accent);background:#102027;color:var(--text);font-weight:400}
.chip.candle{border-style:dashed}
.chips{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.rule{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--accent);border-radius:3px;background:#102027;padding:2px 4px 2px 12px;min-height:44px;font-size:13px}
.rule button{border-radius:3px;width:32px;height:32px;color:var(--muted)}
.link{color:var(--accent);font-size:14px;background:none;border:0;cursor:pointer;text-decoration:underline;text-underline-offset:4px}
.askrow{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.approve{display:flex;flex-direction:column;gap:16px;margin-top:24px}

/* rows of controls */
.frow{display:grid;grid-template-columns:140px minmax(0,1fr);gap:12px;align-items:start}
.flabel{font:11px/1.5 var(--mono);color:var(--dim);letter-spacing:.06em;text-transform:uppercase;padding-top:12px;margin:0}
label.check{display:flex;align-items:flex-start;gap:10px;font:14px/1.6 var(--sans);margin:0;min-height:44px;padding:10px 0}
label.check input{margin-top:4px}
select.addf{width:auto;min-height:44px}
input[type=number]{width:9em;font-family:var(--mono)}

/* legacy KPI tiles → the metric ribbon look */
.kpis{display:grid;grid-template-columns:repeat(3,1fr);border:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:0;background:none;gap:0;overflow:visible;box-shadow:none}
.kpi{background:none;padding:18px 22px;border-right:1px solid var(--line);display:block}
.kpi:last-child{border-right:0}
.klabel{font:11px/1.5 var(--mono);color:var(--dim);letter-spacing:0;text-transform:none}
.kpi b{display:block;margin-top:8px;font:400 28px/1.2 var(--mono);letter-spacing:-.045em;white-space:normal}
.kpi small{display:block;margin-top:7px;font:11px/1.5 var(--mono);color:var(--muted)}

/* legacy tags */
.vtag,.pill,.phase,.stag{display:inline-flex;align-items:center;gap:7px;font:11px/1.45 var(--mono);border:1px solid var(--control);border-radius:3px;padding:5px 8px;color:var(--muted);text-transform:none;letter-spacing:0;background:none;white-space:nowrap}
.vtag.pos{color:var(--positive);border-color:var(--positive)}.vtag.neg{color:var(--negative);border-color:var(--negative)}.vtag.maybe,.vtag.warn{color:var(--caution);border-color:var(--caution)}

/* legacy tables */
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{color:var(--dim);font:400 11px var(--mono);text-transform:none;letter-spacing:0}
.tbl th,.tbl td{padding:14px 12px;border-bottom:1px solid var(--line);text-align:left}
.tablewrap{max-width:100%;overflow:auto}
.said li{border-color:var(--line)}

/* the stepper uses the prototype's .steps directly */
.steplink{display:inline-flex;gap:8px;align-items:center;background:none;border:0;padding:0;color:inherit;font:inherit;cursor:pointer;min-height:44px}
.steplink:hover{color:var(--text)}

/* the prototype's check grid, used by Check backtest and Stress test */
.check-cell .tag{margin-bottom:4px}
.check-cell .datum{font-family:var(--mono)}

/* links inside text are underlined (WCAG link-in-text-block) */
p a,li a,.help a{text-decoration:underline;text-underline-offset:4px}

@media(max-width:760px){
  .frow{grid-template-columns:1fr}
  .kpis{grid-template-columns:1fr}.kpi{border-right:0;border-bottom:1px solid var(--line);padding:16px 0}
  .card,.filters{padding:20px}
  .go{width:100%}
}
.tag{min-height:0}
.notice.demobar{border:0;border-left:2px solid var(--caution);border-radius:0;background:var(--surface);color:var(--muted)}
.funnel{background:none;border:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:0;box-shadow:none;gap:0}
.funnel>div{background:none;border:0;border-right:1px solid var(--line);border-radius:0;padding:22px}
.funnel>div:first-child{padding-left:0}.funnel>div:last-child{border-right:0}
.research-table th button{background:none;border:0;color:inherit;font:inherit;text-decoration:none;min-height:0;padding:0}
/* grid children may shrink below their content, so wide charts scroll inside their own box instead of widening the page */
.two-column>*,.equal-column>*,.report-workspace>*,.report-lower>*,.check-grid>*,.field-grid>*{min-width:0}
main{min-width:0;max-width:100%}
.main-shell{min-width:0}
.stack>*,.panel,.evidence-rail,.main-chart{min-width:0}
/* ---------- Morning brief: things to look at first ---------- */
.brief-glance{border:1px solid var(--line);border-top:2px solid var(--accent);background:linear-gradient(180deg,rgba(0,229,255,.07),rgba(0,229,255,0) 70%),var(--surface);border-radius:var(--radius);padding:22px 24px;margin:8px 0 28px}
.brief-glance>.overline{color:var(--accent)}
.brief-glance h2{font-size:24px;margin:8px 0 18px;max-width:60ch}
.glance-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}
.glance-tile{border:1px solid var(--line);border-left:3px solid var(--control);background:var(--bg);border-radius:4px;padding:14px 16px;min-width:0}
.glance-tile .overline{font-size:10px}
.glance-tile .big{display:block;font:500 28px/1.2 var(--mono);letter-spacing:-.04em;margin:6px 0 4px;font-variant-numeric:tabular-nums}
.glance-tile p{font-size:12px;color:var(--muted)}
.glance-tile.bull{border-left-color:var(--positive)}.glance-tile.bull .big,.glance-tile.bull .read{color:var(--positive)}
.glance-tile.bear{border-left-color:var(--negative)}.glance-tile.bear .big,.glance-tile.bear .read{color:var(--negative)}
.glance-tile.warn{border-left-color:var(--caution)}.glance-tile.warn .big{color:var(--caution)}
.glance-tile.info{border-left-color:var(--accent)}.glance-tile.info .big{color:var(--accent)}
.glance-tile .read{font:600 11px/1.5 var(--mono);letter-spacing:.1em;text-transform:uppercase}
.watch-list{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:8px}
.watch-list li{display:grid;grid-template-columns:22px 1fr;gap:8px;font-size:14px;line-height:1.55;color:var(--text)}
.watch-list li:before{content:'→';color:var(--accent);font-family:var(--mono)}
.watch-list b{color:var(--accent);font-weight:500}
.brief-recap{border-left:3px solid var(--control)}
.brief-recap.bull{border-left-color:var(--positive);background:linear-gradient(90deg,rgba(61,214,140,.06),rgba(61,214,140,0) 40%),var(--surface)}
.brief-recap.bear{border-left-color:var(--negative);background:linear-gradient(90deg,rgba(255,107,107,.06),rgba(255,107,107,0) 40%),var(--surface)}
.brief-recap-head{font-size:18px;line-height:1.4;color:var(--text);margin:8px 0 10px}
.brief-points{margin:0 0 10px;padding-left:18px}.brief-points li+li{margin-top:4px}
.brief-take{border:1px solid var(--line);background:var(--bg);border-radius:4px;padding:12px 14px;font-size:14px;margin-top:8px}
.brief-take strong{color:var(--caution);font-weight:500}
.metric .datum.pos{color:var(--positive)}.metric .datum.neg{color:var(--negative)}
.brief-markets td{vertical-align:top}
.mk{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:3px;margin-right:8px;font:600 12px/1 var(--mono);vertical-align:-4px}
.mk.up{color:var(--positive);background:rgba(61,214,140,.14)}.mk.down{color:var(--negative);background:rgba(255,107,107,.14)}.mk.mixed{color:var(--caution);background:rgba(242,201,76,.14)}
.brief-release.high{border-top:2px solid var(--caution)}
.topic-chip{display:inline-block;font:11px/1.5 var(--mono);color:var(--accent);border:1px solid rgba(0,229,255,.45);border-radius:3px;padding:2px 7px;margin-right:8px}
@media(max-width:760px){.brief-glance{padding:18px 16px}.brief-glance h2{font-size:20px}.glance-tile .big{font-size:24px}}
.space-top-s{margin-top:8px}
.brief-plain{font-size:15px;line-height:1.6;color:var(--text);margin:4px 0 10px;max-width:72ch}
.brief-wait{font-size:13px;color:var(--muted);border-left:2px solid var(--accent);padding:6px 0 6px 12px;margin:6px 0 4px}.brief-wait strong{color:var(--accent);font-weight:500}
.brief-more{margin-top:14px}.brief-more>summary{color:var(--accent)}
.brief-expect{margin-top:18px;border:1px solid rgba(242,201,76,.4);background:rgba(242,201,76,.06);border-radius:4px;padding:14px 16px}
.brief-expect .overline{color:var(--caution)}.brief-expect p+p{margin-top:6px;font-size:15px;line-height:1.6;color:var(--text)}
.week-strip{margin-top:20px}
.week-days{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:8px}
.week-day{border:1px solid var(--line);border-radius:4px;padding:10px;background:var(--bg);min-width:0}
.week-day.today{border-color:var(--accent);box-shadow:inset 0 2px 0 var(--accent)}
.week-day>p.mono{font-size:11px;color:var(--dim);margin-bottom:6px}.week-day.today>p.mono{color:var(--accent)}
.week-day ul{list-style:none;margin:0;padding:0;display:grid;gap:5px}
.wk-chip{font:11px/1.4 var(--mono);padding:4px 6px;border-radius:3px;border:1px solid var(--control);color:var(--muted);overflow-wrap:anywhere}
.wk-chip.out.bull{border-color:var(--positive);color:var(--positive);background:rgba(61,214,140,.08)}
.wk-chip.out.bear{border-color:var(--negative);color:var(--negative);background:rgba(255,107,107,.08)}
.wk-chip.coming{border-style:dashed}.wk-chip.coming.high{border-color:var(--caution);color:var(--caution)}
.wk-key{display:inline-block;width:12px;height:12px;border:1px solid var(--control);border-radius:2px}
.wk-key.bull{border-color:var(--positive);background:rgba(61,214,140,.25)}.wk-key.bear{border-color:var(--negative);background:rgba(255,107,107,.25)}.wk-key.high{border:1px dashed var(--caution)}
@media(max-width:760px){.week-days{grid-template-columns:1fr 1fr}.brief-plain{font-size:14px}}
/* ---------- rate cards (Day stats, Morning brief) ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin-bottom:8px}
.stat-grid.featured-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.stat-card{border:1px solid var(--line);border-top:3px solid var(--control);background:var(--surface);border-radius:var(--radius);padding:16px 18px;display:flex;flex-direction:column;gap:8px;min-width:0}
.stat-card h3{font-size:14px;line-height:1.4;color:var(--muted);font-weight:400}
.stat-top{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.stat-big{font:500 40px/1.05 var(--mono);letter-spacing:-.05em;color:var(--text);font-variant-numeric:tabular-nums}
.stat-card.featured .stat-big{font-size:46px}
.stat-delta{font:12px/1.4 var(--mono);color:var(--muted)}
.stat-bar{position:relative;height:14px;border-radius:7px;background:var(--raised);border:1px solid var(--line);overflow:hidden;margin-top:4px}
.stat-fill{position:absolute;left:0;top:0;bottom:0;background:#2a6f7a;border-radius:7px 0 0 7px}
.stat-ci{position:absolute;top:0;bottom:0;background:rgba(232,234,237,.16)}
.stat-base{position:absolute;top:-2px;bottom:-2px;width:2px;margin-left:-1px;background:var(--text)}
.stat-scale{display:flex;justify-content:space-between;font:10px/1 var(--mono);color:var(--dim)}
.stat-meta{font:11px/1.5 var(--mono);color:var(--dim)}
.stat-card .tag{align-self:flex-start;margin-top:auto}
.stat-card.up{border-top-color:var(--positive)}.stat-card.up .stat-fill{background:#1f8f5c}.stat-card.up .stat-big,.stat-card.up .stat-delta{color:var(--positive)}
.stat-card.down{border-top-color:var(--negative)}.stat-card.down .stat-fill{background:#a9474c}.stat-card.down .stat-big,.stat-card.down .stat-delta{color:var(--negative)}
.stat-card.few{border-top-color:var(--caution)}.stat-card.few .stat-fill{background:#6b5a24}
.stat-card.same{border-top-color:var(--accent)}
.stat-key{display:inline-block;width:18px;height:10px;border-radius:3px}
.stat-key.fill{background:#2a6f7a}.stat-key.ci{background:rgba(232,234,237,.25)}.stat-key.base{width:2px;height:14px;border-radius:0;background:var(--text)}
@media(max-width:760px){.stat-grid,.stat-grid.featured-grid{grid-template-columns:1fr 1fr;gap:10px}.stat-big,.stat-card.featured .stat-big{font-size:30px}.stat-card{padding:14px}}
@media(max-width:420px){.stat-grid,.stat-grid.featured-grid{grid-template-columns:1fr}}
@media(forced-colors:active){.stat-fill{background:Highlight}.stat-base{background:CanvasText}.stat-ci{background:GrayText}}
.creator-code{margin:16px 0 8px;max-width:420px}.creator-code input{text-transform:uppercase;font-family:var(--mono);letter-spacing:.06em}
.creator-code .askrow{display:flex;gap:8px;align-items:center}.creator-code .askrow input{flex:1}
.okline{color:var(--positive);font-size:13px;margin-top:8px}
.feedback-box{margin-top:40px;border:1px dashed var(--control);border-radius:var(--radius);padding:4px 16px 12px}.feedback-box>summary{color:var(--accent)}.feedback-box textarea{min-height:110px}
