:root{--navy:#0B213E;--paper:#F7F7F2;--card:#FFFFFF;--ink:#202124;--muted:#5f6368;--teal:#176B5D;--teal-soft:#E4F2EE;--amber:#9A5B13;--amber-soft:#F7E9D4;--gold:#D6AC58;--blue:#2F6F9F;--red:#B94A48;--purple:#5A2D82;--line:#DADCD3;--line-strong:#BFC4B7;--shadow:0 10px 28px rgba(32,33,36,.08);--serif:"Songti SC","SimSun","Noto Serif SC",Georgia,serif;--sans:"PingFang SC","Microsoft YaHei","Noto Sans SC",sans-serif;--mono:"SF Mono",Menlo,monospace}*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.7}
a{color:inherit}
h1{font-family:var(--serif);font-weight:700;font-size:38px;line-height:1.2;color:var(--ink)}
h2{font-family:var(--serif);font-size:23px;line-height:1.3;color:var(--ink)}
h3{font-family:var(--serif);font-size:18px;line-height:1.3;color:var(--ink)}
.wrap{max-width:1120px;margin:0 auto;padding:0 24px}
.internal-banner{display:inline-block;margin-top:8px;border:1px solid var(--red);color:var(--red);
  background:color-mix(in srgb,var(--red) 12%,var(--card));border-radius:4px;padding:2px 9px;
  font:11.5px var(--mono);letter-spacing:.04em}
.chip{display:inline-flex;align-items:center;min-height:20px;border:1px solid var(--line);
  border-radius:4px;padding:1px 8px;font-size:11.5px;color:var(--muted);background:var(--card)}
.chip-track{border-color:var(--teal);color:var(--teal);background:color-mix(in srgb,var(--teal) 14%,var(--card))}.chip-status{border-color:var(--amber);color:var(--amber);background:color-mix(in srgb,var(--amber) 14%,var(--card))}.chip-accent{border-color:var(--purple);color:var(--purple);background:color-mix(in srgb,var(--purple) 14%,var(--card))}.chip-risk{border-color:var(--red);color:var(--red);background:color-mix(in srgb,var(--red) 14%,var(--card))}.chip-neutral{border-color:var(--line);color:var(--muted);background:var(--paper)}
.badge{display:inline-flex;align-items:center;min-height:20px;border:1px solid var(--line);
  border-radius:4px;padding:1px 8px;font:11px var(--mono);white-space:nowrap;background:var(--card)}
.badge-pass{border-color:var(--teal);color:var(--teal);background:color-mix(in srgb,var(--teal) 14%,var(--card))}.badge-warn{border-color:var(--amber);color:var(--amber);background:color-mix(in srgb,var(--amber) 14%,var(--card))}.badge-fail{border-color:var(--red);color:var(--red);background:color-mix(in srgb,var(--red) 14%,var(--card))}.badge-draft{border-color:var(--line);color:var(--muted);background:var(--paper)}.badge-new{border-color:var(--line);color:var(--muted);background:var(--paper)}.badge-ask{border-color:var(--amber);color:var(--amber);background:color-mix(in srgb,var(--amber) 14%,var(--card))}.badge-adv{border-color:var(--teal);color:var(--teal);background:color-mix(in srgb,var(--teal) 14%,var(--card))}.badge-done{border-color:var(--purple);color:var(--purple);background:color-mix(in srgb,var(--purple) 14%,var(--card))}.badge-hold{border-color:var(--amber);color:var(--amber);background:color-mix(in srgb,var(--amber) 14%,var(--card))}.badge-stop{border-color:var(--red);color:var(--red);background:color-mix(in srgb,var(--red) 14%,var(--card))}
.stat{background:var(--card);border:1px solid var(--line);border-top:3px solid var(--teal);
  border-radius:6px;padding:14px 13px;min-height:82px}
.stat b{display:block;font-family:var(--mono);font-size:26px;line-height:1.05;color:var(--ink)}
.stat span{display:block;margin-top:4px;color:var(--muted);font-size:12.5px}
.card{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:16px}
.card-top{border-top:3px solid var(--teal)}
.card-left{border-left:3px solid var(--teal)}
.timeline{display:grid;gap:10px}
.timeline-item{display:grid;grid-template-columns:110px 1fr;gap:12px;border:1px solid var(--line);
  border-radius:6px;background:var(--card);padding:12px}
.timeline-time{font-family:var(--mono);font-size:12px;color:var(--teal);font-weight:700}
.timeline-item b{display:block;font-size:14px;color:var(--ink);line-height:1.35}
.timeline-item p{font-size:12.5px;color:var(--muted);margin-top:3px}
.scenario-card{border:1px solid var(--line);border-top:3px solid var(--line);border-radius:6px;
  background:var(--card);padding:14px}
.scenario-card.bear{border-top-color:var(--red)}
.scenario-card.base{border-top-color:var(--muted)}
.scenario-card.bull{border-top-color:var(--teal)}
.scenario-card .tag{font-family:var(--mono);font-size:11.5px;color:var(--muted);display:flex;
  justify-content:space-between;gap:10px;margin-bottom:5px}
.scenario-card h3{font-family:var(--serif);font-size:17px;line-height:1.3;margin-bottom:6px;color:var(--ink)}
.scenario-card p{font-size:12.5px;color:var(--muted);margin-top:8px;border-top:1px solid var(--line);padding-top:7px}
.evidence-detail{border:1px solid var(--line);border-left:3px solid var(--teal);border-radius:4px;
  background:var(--card)}
.evidence-detail[hidden]{display:none}
.evidence-detail summary{cursor:pointer;list-style:none;padding:10px 12px;font-size:13.5px;
  color:var(--ink);font-weight:700}
.evidence-detail summary::-webkit-details-marker{display:none}
.evidence-detail>div{border-top:1px solid var(--line);padding:9px 12px}
.evidence-detail p{font-size:12.5px;color:var(--muted);margin-top:3px}
button,.btn{min-height:34px}
.search{min-height:38px}

.mast{background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}
.mast .bar{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:70px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink)}
.mark{width:36px;height:36px;border-radius:4px;background:var(--navy);display:grid;place-items:center;
  color:#fff;font-family:var(--serif);font-weight:700}
.brand strong{display:block;font-family:var(--serif);font-size:18px;line-height:1.15}
.brand span{display:block;color:var(--muted);font-size:12px;font-family:var(--mono);margin-top:2px}
.nav{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.nav a{text-decoration:none;font-size:13px;color:var(--muted);border:1px solid transparent;
  border-radius:4px;padding:6px 9px}
.nav a[aria-current="page"],.nav a:hover{border-color:var(--line-strong);background:var(--card);color:var(--ink)}
.notice{border-left:4px solid var(--amber);background:var(--amber-soft);padding:12px 14px;
  border-radius:4px;font-size:13px;color:var(--ink)}
.hero{background:var(--navy);color:var(--paper);padding:42px 0 30px}
.hero-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:22px;align-items:center}
.kicker{font-family:var(--mono);font-size:11.5px;color:var(--teal-soft);text-transform:uppercase;margin-bottom:8px}
.hero h1{font-size:42px;color:#fff}
.hero .lead{color:var(--paper);font-size:16px;max-width:700px;margin-top:10px;opacity:.86}
.hero .notice{background:rgba(247,233,212,.12);border-color:var(--gold);color:var(--paper)}
.chip.track{border-color:var(--teal);color:var(--teal);background:var(--teal-soft)}
.chip.status{border-color:var(--amber);color:var(--amber);background:var(--amber-soft)}
.claim-no{font-family:var(--mono);font-weight:700;color:var(--gold)}
.workspace{display:grid;grid-template-columns:240px minmax(0,1fr) 280px;gap:16px;align-items:start}
.report-layout{display:grid;grid-template-columns:1fr 300px;gap:18px;align-items:start}
.method-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.claim-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.chart-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.scenario-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.report-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.quality-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.report-brief{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.deck-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.company-table{overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:6px}
.company-table table{min-width:760px}
.chart-visual{margin-top:12px;display:grid;gap:8px}
.chart-line svg{display:block;width:100%;height:auto}
.chart-axis{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);font-family:var(--mono)}
.mini-legend{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;color:var(--muted);font-size:11px}
.mini-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:3px}
.stack-row{display:grid;grid-template-columns:92px 1fr 54px;gap:8px;align-items:center;font-size:11.5px;color:var(--muted)}
.stack-bar{height:18px;border:1px solid var(--line);border-radius:4px;overflow:hidden;background:var(--paper);display:flex}
.stack-seg{height:100%;min-width:2px}
.matrix-table{width:100%;border-collapse:collapse;margin-top:10px;font-size:11.5px}
.matrix-table th,.matrix-table td{border-bottom:1px solid var(--line);padding:6px 5px;text-align:left;vertical-align:top}
.matrix-table th{color:var(--muted);font-weight:600;background:var(--paper)}
@media(max-width:880px){
  .hero-grid,.workspace,.report-layout,.method-grid,.claim-grid,.chart-grid,.scenario-grid{grid-template-columns:1fr}
  .stats,.report-brief,.deck-strip{grid-template-columns:repeat(2,1fr)}
  .report-grid{grid-template-columns:1fr}
}
@media(max-width:560px){
  .wrap{padding:0 18px}
  .mast .bar{align-items:flex-start;flex-direction:column;padding:14px 0}
  h1{font-size:30px}
  .stats,.metrics,.quality-strip,.report-brief,.deck-strip{grid-template-columns:1fr}
  .search{min-width:100%}
  .timeline-item{grid-template-columns:1fr}
}
.mark{background:linear-gradient(135deg,var(--teal),var(--purple))}
.hero h1{max-width:760px}

/* 首屏右侧信号面板：卡片 + 边框强调，不用渐变/发光/悬浮圆点装饰 */
.terminal-visual{border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.055);border-radius:6px;padding:18px}
.visual-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:16px;font-family:var(--mono);font-size:11.5px;color:var(--teal-soft)}
.visual-head b{color:#fff;font-weight:600}
.visual-caption{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.visual-caption span{border:1px solid rgba(255,255,255,.14);border-radius:4px;padding:7px 8px;font-size:11.5px;color:var(--paper)}
.visual-caption b{display:block;color:#fff;font-family:var(--mono);font-size:15px;line-height:1.2}
.proof-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px}
.proof-cell{border:1px solid rgba(255,255,255,.16);border-left:3px solid var(--gold);border-radius:4px;padding:10px 11px;background:rgba(255,255,255,.055)}
.proof-cell b{display:block;color:#fff;font-family:var(--mono);font-size:18px;line-height:1.1}
.proof-cell span{color:var(--teal-soft);font-size:12px}

main{padding:24px 0 42px}
section{margin-top:24px}
.section-head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:6px 16px;border-bottom:2px solid var(--line);padding-bottom:9px;margin-bottom:14px}
.section-head h2{white-space:nowrap}
.section-note{font-size:12.5px;color:var(--muted);font-family:var(--mono)}

/* 研究工作台三栏（index 页）：260/300px 侧栏宽度是本站固定契约，design_system 的
   通用 workspace 令牌（240/280px）在这里被覆盖成本站实际使用的宽度。 */
.workspace{grid-template-columns:260px minmax(0,1fr) 300px;gap:14px}
.control-stack{position:sticky;top:92px;display:grid;gap:12px}
.terminal-inspector{position:sticky;top:92px;display:grid;gap:12px}
.inspector-card{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:14px}
.inspector-card h3{font-family:var(--serif);font-size:17px;color:var(--teal);margin-bottom:8px}
.decision-ladder{display:grid;gap:8px}
.decision-step{border:1px solid var(--line);border-left:3px solid var(--teal);border-radius:4px;background:var(--paper);padding:9px 10px}
.decision-step b{display:block;font-size:13.5px;color:var(--ink);line-height:1.3}
.decision-step span{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.source-score{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:8px}
.source-score div{border:1px solid var(--line);border-radius:4px;background:var(--paper);padding:8px}
.source-score b{display:block;font-family:var(--mono);font-size:19px;line-height:1.05;color:var(--ink)}
.source-score span{display:block;color:var(--muted);font-size:11.5px;margin-top:3px}
.watch-list{display:grid;gap:7px}
.watch-list span{border:1px solid var(--line);border-radius:4px;background:var(--card);padding:8px;font-size:12.5px;color:var(--muted)}
.panel{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:15px}
.panel h3{font-family:var(--serif);font-size:17px;margin-bottom:8px;color:var(--teal)}
.flow{display:grid;gap:10px}
.flow-step{display:grid;grid-template-columns:28px 1fr;gap:10px}
.flow-step .no{width:28px;height:28px;border-radius:50%;background:var(--teal-soft);color:var(--teal);display:grid;place-items:center;font-family:var(--mono);font-weight:700;font-size:12px}
.flow-step b{display:block;font-size:13.5px;color:var(--ink)}
.flow-step p{font-size:12.5px;color:var(--muted)}
.tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.search{height:38px;min-width:260px;flex:1;border:1px solid var(--line-strong);border-radius:4px;background:var(--card);padding:0 12px;font:14px var(--sans);color:var(--ink)}
.segments{display:flex;gap:6px;flex-wrap:wrap}
.segments button{height:34px;border:1px solid var(--line-strong);background:var(--card);color:var(--muted);border-radius:4px;padding:0 10px;font:13px var(--sans);cursor:pointer}
.segments button[aria-pressed="true"]{background:var(--teal);border-color:var(--teal);color:#fff}
.count{font-family:var(--mono);font-size:12.5px;color:var(--muted);margin:7px 0 12px}

/* 分析卡片列表（design_system 没有 .report-card，这是本站独有的清单卡片） */
.report-card{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--teal);border-radius:6px;padding:16px;transition:border-color .16s ease,transform .16s ease}
.report-card:hover{border-color:var(--teal);transform:translateY(-1px)}
.report-card[hidden]{display:none}
.report-card h3{font-family:var(--serif);font-size:20px;line-height:1.32;color:var(--ink);margin-bottom:6px}
.headline{font-size:13.5px;color:var(--muted);margin:8px 0 11px}
.meta{font-family:var(--mono);font-size:12px;color:var(--muted);margin-bottom:9px}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 10px}
.chip.type{border-color:var(--blue);color:var(--blue)}
.metric{border-top:1px solid var(--line);padding-top:8px}
.metric b{display:block;font-family:var(--mono);font-size:17px;color:var(--ink);line-height:1.2}
.metric span{font-size:12px;color:var(--muted)}
.quality-cell{border:1px solid var(--line);border-radius:4px;background:var(--paper);padding:7px 8px;min-height:48px}
.quality-cell b{display:block;font-family:var(--mono);font-size:15px;line-height:1.12;color:var(--ink)}
.quality-cell span{display:block;color:var(--muted);font-size:11px;margin-top:2px}
.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:13px}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:34px;border:1px solid var(--teal);border-radius:4px;padding:5px 11px;color:var(--teal);text-decoration:none;font-size:13px;font-weight:600;background:var(--card)}
.btn:hover{background:var(--teal-soft)}
.empty{display:none;background:var(--card);border:1px dashed var(--line-strong);border-radius:6px;padding:18px;color:var(--muted);font-size:14px}
.bars{display:grid;gap:8px;margin-top:12px}
.bar-row{display:grid;grid-template-columns:92px 1fr 32px;gap:10px;align-items:center;font-size:12.5px;color:var(--muted)}
.bar-row i{display:block;height:8px;border-radius:99px;background:var(--teal);min-width:8px}

/* 单篇报告页 */
.article{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:22px}
.article h2{margin-top:20px}
.article h2:first-child{margin-top:0}
.article p,.article li{font-size:14px;color:var(--muted)}
.article ul{list-style:none;display:grid;gap:7px;margin-top:8px}
.article li{position:relative;padding-left:15px}
.article li:before{content:"";position:absolute;left:0;top:.76em;width:5px;height:5px;border-radius:50%;background:var(--teal)}
.side{position:sticky;top:92px;display:grid;gap:12px}
.table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);font-size:13.5px}
.table th,.table td{padding:10px 11px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.table th{background:var(--paper);color:var(--muted);font-size:12px;font-weight:600}
.table td.num{font-family:var(--mono);color:var(--ink)}
.evidence{display:grid;gap:10px;margin-top:10px}
.evidence-item{border:1px solid var(--line);border-left:3px solid var(--blue);border-radius:4px;padding:10px 12px;background:var(--card)}
.evidence-item b{display:block;font-size:13.5px;color:var(--ink)}
.evidence-item p{font-size:12.5px;color:var(--muted);margin-top:3px}
.risk{border-left-color:var(--red)}
.brief-cell{border:1px solid rgba(255,255,255,.16);border-radius:4px;background:rgba(255,255,255,.055);padding:11px 12px;min-height:78px}
.brief-cell span{display:block;color:var(--teal-soft);font-size:11.5px;font-family:var(--mono);margin-bottom:4px}
.brief-cell b{display:block;color:#fff;font-size:14px;line-height:1.35}
.deck-strip span{border:1px solid var(--line);border-left:3px solid var(--teal);border-radius:4px;padding:8px 10px;background:var(--paper);font-size:12.5px;color:var(--muted)}
.deck-strip b{display:block;font-family:var(--mono);font-size:13px;color:var(--ink);line-height:1.2}

/* 观点卡：claim-card 结构 design_system 未收编，八段阅读索引专属组件 */
.claim-card{border:1px solid var(--line);border-top:3px solid var(--teal);border-radius:6px;background:var(--card);padding:14px;min-height:220px}
.claim-card[data-claim-card]{cursor:pointer;transition:border-color .16s ease,background .16s ease,transform .16s ease}
.claim-card[data-claim-card]:hover,.claim-card[data-active="1"]{border-color:var(--teal);background:var(--teal-soft);transform:translateY(-1px)}
.claim-card:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
.claim-top{display:flex;justify-content:space-between;gap:10px;align-items:start;margin-bottom:8px}
.confidence{font-size:11.5px;color:var(--muted);border:1px solid var(--line-strong);border-radius:4px;padding:1px 6px;background:var(--paper)}
.claim-card h3{font-family:var(--serif);font-size:18px;color:var(--ink);line-height:1.3;margin-bottom:7px}
.claim-card p{font-size:13.5px;color:var(--muted)}
.counter{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}
.counter b{display:block;font-size:12px;color:var(--ink);margin-bottom:3px}
.counter ul{gap:5px;margin-top:0}
.counter li{font-size:12.5px;padding-left:13px}

/* 图表卡壳；chart-visual 内部由 design_system 的三个渲染器直接吐 SVG/表格 */
.chart-card{border:1px solid var(--line);border-radius:6px;background:var(--card);min-height:206px;padding:12px;position:relative;overflow:hidden}
.chart-card h3{font-family:var(--serif);font-size:17px;line-height:1.3}
.chart-card p{font-size:12.5px;color:var(--muted);margin-top:4px}
.chart-fields{display:flex;gap:5px;flex-wrap:wrap;position:absolute;left:12px;right:12px;bottom:12px}
.chart-fields span{border:1px solid var(--line);border-radius:4px;background:var(--card);padding:1px 6px;font-size:11px;color:var(--muted)}
.chart-visual{padding-bottom:28px}

.method-box{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:16px}
.method-box h3{font-family:var(--serif);font-size:18px;color:var(--teal);margin-bottom:6px}
.method-box p,.method-box li{font-size:13.5px;color:var(--muted)}
.method-box ul{list-style:none;display:grid;gap:6px;margin-top:8px}
.method-box li{padding-left:15px;position:relative}
.method-box li:before{content:"";position:absolute;left:0;top:.72em;width:5px;height:5px;border-radius:50%;background:var(--amber)}
footer{border-top:1px solid var(--line);background:var(--card);color:var(--muted);font-size:12.5px;padding:22px 0 28px}
footer b{font-family:var(--serif);color:var(--ink)}

/* IPO 观察页：板块速览 / 日期时间轴 / 在审清单（details 原生展开详情，零依赖） */
.board-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:10px}
.board-card{border:1px solid var(--line);background:var(--card);border-radius:6px;padding:11px 12px;text-align:left;cursor:pointer;font:inherit}
.board-card[aria-pressed="true"]{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal)}
.board-card b{display:block;font-family:var(--mono);font-size:19px;color:var(--ink);line-height:1.15}
.board-card span{font-size:12px;color:var(--muted)}
.board-card .off{color:var(--amber)}
.timeline{display:grid;gap:8px}
.timeline-day{display:grid;grid-template-columns:104px 1fr;gap:12px;border:1px solid var(--line);background:var(--card);border-radius:6px;padding:9px 12px}
.timeline-day .d{font-family:var(--mono);font-size:12px;color:var(--muted)}
.timeline-day .d b{display:block;font-size:14.5px;color:var(--teal)}
.timeline-day .names{display:flex;flex-wrap:wrap;gap:5px;align-content:center}
.ipo-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.ipo-tools select{border:1px solid var(--line);border-radius:5px;background:var(--card);color:var(--ink);padding:8px 10px;font-size:13.5px}
.ipo-item{border:1px solid var(--line);background:var(--card);border-radius:6px;margin-bottom:7px}
.ipo-item summary{display:grid;grid-template-columns:92px minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:9px 12px;cursor:pointer;list-style:none}
.ipo-item summary::-webkit-details-marker{display:none}
.ipo-item .nm{font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ipo-item .dt{font-family:var(--mono);font-size:12px;color:var(--muted)}
.ipo-detail{border-top:1px solid var(--line);padding:12px;display:grid;gap:10px}
.ipo-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.ipo-fields div{border:1px solid var(--line);border-radius:4px;padding:7px 9px}
.ipo-fields b{display:block;font-size:13.5px;color:var(--ink)}
.ipo-fields span{font-size:11.5px;color:var(--muted)}
.ipo-links{display:flex;gap:8px;flex-wrap:wrap}
.steps{display:flex;gap:4px;flex-wrap:wrap}
.steps span{font-size:11.5px;border:1px solid var(--line);border-radius:999px;padding:2px 9px;color:var(--muted)}
.steps .done{border-color:var(--teal);color:var(--teal)}
.steps .cur{background:var(--teal);border-color:var(--teal);color:#fff}
.steps .cur.risk{background:var(--red);border-color:var(--red)}
.chip.st-new{border-color:var(--teal);color:var(--teal)}
.chip.st-adv{border-color:var(--gold);color:var(--gold)}
.chip.st-risk{border-color:var(--red);color:var(--red)}

/* 首页市场入口卡（IPO 观察 / 打新日历），带实时数字 */
.entry-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px}
.entry-card{display:block;border:1px solid var(--line);border-left:3px solid var(--teal);background:var(--card);border-radius:6px;padding:13px 16px;text-decoration:none;color:inherit}
.entry-card:hover{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal)}
.entry-card b{font-family:var(--mono);font-size:24px;color:var(--teal);display:block;line-height:1.1}
.entry-card span{font-weight:600;font-size:14px;color:var(--ink);display:block;margin-top:3px}
.entry-card p{font-size:12.5px;color:var(--muted);margin-top:4px}

/* 打新资金日历：横向甘特（认购期/冻资期/上市标记）+ 事实表 */
.gantt{border:1px solid var(--line);background:var(--card);border-radius:6px;padding:12px;overflow-x:auto}
.gantt-axis,.gantt-row{display:grid;grid-template-columns:168px minmax(320px,1fr);gap:10px;align-items:center}
.gantt-axis{margin-bottom:6px}
.gantt-axis .track{position:relative;height:16px}
.gantt-axis .tick{position:absolute;top:0;font-size:10.5px;color:var(--muted);font-family:var(--mono);transform:translateX(-50%)}
.gantt-row{padding:5px 0;border-top:1px dashed var(--line)}
.gantt-row .who{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gantt-row .who b{display:block;font-size:13px}
.gantt-row .track{position:relative;height:20px;background:color-mix(in srgb,var(--line) 34%,transparent);border-radius:4px}
.gantt-row .seg{position:absolute;top:3px;height:14px;border-radius:3px}
.gantt-row .seg.sub{background:var(--teal)}
.gantt-row .seg.lock{background:var(--amber)}
.gantt-row .mark{position:absolute;top:0;width:3px;height:20px;background:var(--blue);border-radius:2px}
.gantt-legend{display:flex;gap:14px;margin-top:10px;font-size:11.5px;color:var(--muted)}
.gantt-legend i{display:inline-block;width:12px;height:9px;border-radius:2px;margin-right:5px}
.cash-table{width:100%;border-collapse:collapse;font-size:12.5px}
.cash-table th,.cash-table td{border-bottom:1px solid var(--line);padding:8px 8px;text-align:left;white-space:nowrap}
.cash-table th{font-size:11.5px;color:var(--muted);font-weight:600}
.cash-table .mono{font-family:var(--mono)}
.cash-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:6px;background:var(--card);padding:4px 10px}

@media(max-width:880px){
  .side,.control-stack,.terminal-inspector{position:static}
  /* .workspace 的 260/300px 覆盖写在本文件顶部、且不在任何 @media 里，源码顺序上
     排在 design_system 的响应式重置规则之后，选择器优先级又完全相同——按级联规则，
     后声明的无条件规则会在所有视口宽度下都赢，等于让响应式收窄永远生效不了。这里
     用同优先级、但限定在断点内、且源码顺序更靠后的规则把它在窄屏下重新收窄为单列。 */
  .workspace{grid-template-columns:1fr}
}
@media(max-width:560px){
  .hero{padding-top:22px}
  .bar-row{grid-template-columns:76px 1fr 28px}
}
