:root{
  --red:#CC0033; --red-dark:#8F0024; --tint:#FBEAEE; --tint2:#F6D9E1;
  --ink:#26262B; --side:#232227; --gray:#63636B; --muted:#9A9AA2;
  --line:#E5E3E6; --bg:#F5F4F5; --card:#FFFFFF;
  --pos:#12855F; --neu:#B4B4BC; --neg:#E8590C;
}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:"Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic UI","Meiryo",sans-serif;background:var(--bg);color:var(--ink);font-size:13px;line-height:1.55}
button{font-family:inherit;cursor:pointer;border:none;background:none}
.num{font-variant-numeric:tabular-nums}

/* ---- layout ---- */
.app{display:flex;min-height:100vh}
.side{width:198px;background:var(--side);color:#fff;flex-shrink:0;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.brand{padding:20px 18px 16px;border-bottom:1px solid rgba(255,255,255,.08)}
.brand .t1{font-size:10px;letter-spacing:.18em;color:#B9909C;font-weight:700}
.brand .t2{font-size:15px;font-weight:700;margin-top:4px;letter-spacing:.02em}
.brand .t3{font-size:9.5px;color:#8D8D96;margin-top:6px}
.nav{padding:14px 0;flex:1}
.nav button{display:flex;align-items:center;gap:10px;width:100%;padding:11px 18px;color:#B9B9C2;font-size:12.5px;text-align:left;border-left:3px solid transparent;transition:.15s}
.nav button:hover{color:#fff;background:rgba(255,255,255,.04)}
.nav button.on{color:#fff;background:rgba(204,0,51,.16);border-left-color:var(--red);font-weight:700}
.nav .ic{width:16px;height:16px;flex-shrink:0;opacity:.9}
.side .foot{padding:14px 18px;border-top:1px solid rgba(255,255,255,.08);font-size:10px;color:#8D8D96}
.pulse{display:inline-block;width:7px;height:7px;border-radius:50%;background:#3DDC97;margin-right:6px;animation:pl 2s infinite}
@keyframes pl{0%,100%{opacity:1}50%{opacity:.35}}
.main{flex:1;min-width:0;padding:0 26px 40px}
.wrap{max-width:1180px;margin:0 auto}

/* ---- topbar ---- */
.top{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;padding:22px 0 14px;flex-wrap:wrap}
.top h1{font-size:19px;font-weight:800;letter-spacing:.01em}
.top h1::after{content:"";display:block;width:34px;height:3px;background:var(--red);margin-top:6px;border-radius:2px}
.top .sub{font-size:11px;color:var(--gray);margin-top:6px}
.demo{font-size:10px;color:var(--muted);border:1px solid var(--line);border-radius:20px;padding:2px 9px;background:#fff}

/* ---- controls ---- */
.ctrl{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.seg{display:flex;background:#fff;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.seg button{padding:6px 13px;font-size:11.5px;color:var(--gray)}
.seg button.on{background:var(--red);color:#fff;font-weight:700}
.step{display:flex;align-items:center;background:#fff;border:1px solid var(--line);border-radius:8px}
.step button{padding:6px 10px;font-size:12px;color:var(--gray)}
.step button:hover{color:var(--red)}
.step .lab{font-size:11.5px;font-weight:700;padding:0 8px;min-width:104px;text-align:center}
.dateIn{font-family:inherit;padding:6px 13px;font-size:11.5px;color:var(--gray);border:0;background:#fff}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chips button{padding:5px 12px;border-radius:20px;border:1px solid var(--line);background:#fff;font-size:11.5px;color:var(--gray)}
.chips button.on{background:var(--red);border-color:var(--red);color:#fff;font-weight:700}

/* ---- cards / grid ---- */
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px 18px}
.card h3{font-size:12.5px;font-weight:800;margin-bottom:10px;display:flex;align-items:center;gap:8px}
.card h3 .dot{width:6px;height:6px;border-radius:2px;background:var(--red)}
.grid{display:grid;gap:12px}
.kpis{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:12px}
.kpi .lb{font-size:10.5px;color:var(--gray);font-weight:700}
.kpi .v{font-size:26px;font-weight:800;letter-spacing:-.01em;margin-top:2px}
.kpi .v small{font-size:12px;font-weight:700;color:var(--gray);margin-left:3px}
.up{color:var(--pos)}.dn{color:var(--neg)}.fl{color:var(--muted)}
.two{grid-template-columns:1.55fr 1fr}
@media(max-width:900px){.two{grid-template-columns:1fr}.side{display:none}}

/* ---- S01 ---- */
.tabs{display:flex;gap:4px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:4px;flex-wrap:wrap}
.tabs button{padding:5px 13px;border-radius:6px;font-size:11.5px;color:var(--gray)}
.tabs button.on{background:var(--red);color:#fff;font-weight:700}
.pick{background:linear-gradient(0deg,var(--tint),var(--tint));border:1px solid var(--red);border-radius:10px;padding:14px 18px;margin-bottom:12px}
.pick h3{color:var(--red);font-size:12.5px;font-weight:800;margin-bottom:8px}
.pick .it{display:flex;gap:10px;align-items:flex-start;padding:7px 0;border-top:1px dashed var(--tint2)}
.pick .it:first-of-type{border-top:none}
.pick .tt{font-weight:700;font-size:12.5px}
.pick .ds{font-size:11px;color:var(--gray);margin-top:1px}
.news .row{display:flex;gap:10px;align-items:flex-start;padding:9px 2px;border-top:1px solid #F0EFF1}
.news .row:first-child{border-top:none}
.tag{flex-shrink:0;font-size:10px;font-weight:700;padding:2.5px 8px;border-radius:4px;background:#EFEFF1;color:var(--gray);min-width:52px;text-align:center;margin-top:1px}
.tag.ind{background:var(--ink);color:#fff}
.news .bd{flex:1;min-width:0}
.news .tt{font-size:12.5px;font-weight:600}
.nl{color:inherit;text-decoration:none}
a.nl:hover{color:var(--red);text-decoration:underline;text-underline-offset:2px}
a.nl .ext{font-size:9px;color:var(--muted);margin-left:4px;vertical-align:super}
.src{display:inline-block;font-size:9px;font-weight:700;padding:1px 6px;border-radius:3px;background:#EFEFF1;color:var(--gray);margin-right:5px}
.src.pr{background:var(--tint);color:var(--red)}
.srcnm{font-size:10px;color:var(--muted);margin-right:8px}
a.nl:hover .ext{color:var(--red)}
.news .mn{font-size:11px;color:var(--gray);margin-top:2px}
.news .mn b{color:var(--red);font-weight:700;font-size:10px;margin-right:4px}
.tvmeta{display:flex;flex-wrap:wrap;gap:2px 10px}
.tvmeta .tvcoord{white-space:nowrap}
.tvmeta .tvsummary{flex-basis:100%}
.tvmeta b{color:var(--red);font-size:10px;margin-right:4px}
.find li{list-style:none;padding:7px 0 7px 16px;position:relative;font-size:12px;border-top:1px solid #F0EFF1}
.find li:first-child{border-top:none}
.find li::before{content:"";position:absolute;left:2px;top:14px;width:6px;height:6px;border-radius:50%;background:var(--red)}
.find .rp{display:inline-block;font-size:10px;font-weight:700;color:var(--red);background:var(--tint);border-radius:4px;padding:1px 6px;margin-left:6px}
.mbar{display:flex;align-items:center;gap:8px;margin:6px 0}
.mbar .nm{width:52px;font-size:10.5px;color:var(--gray);flex-shrink:0}
.mbar .tr{flex:1;height:10px;background:#EFEFF1;border-radius:5px;overflow:hidden;display:flex}
.mbar .sg{height:100%}
.mbar .vl{width:30px;font-size:10.5px;font-weight:700;text-align:right}
.legend{display:flex;gap:12px;font-size:10px;color:var(--gray);margin-top:8px}
.legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:4px}

/* ---- tables ---- */
table{width:100%;border-collapse:collapse;font-size:12px}
th{font-size:10.5px;color:var(--gray);text-align:left;font-weight:700;padding:6px 8px;border-bottom:2px solid var(--line)}
td{padding:8px;border-bottom:1px solid #F0EFF1;vertical-align:middle}
.tone{font-size:10px;font-weight:700;border-radius:4px;padding:2px 8px;display:inline-block}
.tone.p{background:#E3F3EC;color:var(--pos)}
.tone.n{background:#EFEFF1;color:var(--gray)}
.tone.g{background:#FDEBE0;color:var(--neg)}
.topic-tone{font-size:9.5px;color:var(--gray);line-height:1.5;white-space:nowrap}

/* ---- insight ---- */
.ins{border-left:3px solid var(--red);background:var(--tint);border-radius:0 10px 10px 0;padding:14px 18px}
.ins h3{color:var(--red);font-size:12.5px;font-weight:800;margin-bottom:8px}
.ins p{font-size:12px;margin:5px 0}
.ins b{color:var(--red-dark)}
.hbar{display:flex;align-items:center;gap:10px;margin:8px 0}
.hbar .nm{width:80px;font-size:11px;color:var(--gray);flex-shrink:0}
.hbar .tr{flex:1;height:14px;background:#EFEFF1;border-radius:4px;overflow:hidden}
.hbar .in{height:100%;background:var(--red);border-radius:4px}
.hbar .vl{width:70px;font-size:11px;font-weight:700;text-align:right}
.kdef{font-size:9.5px;color:var(--muted);margin:-4px 0 10px;line-height:1.6}
.rgt{flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;gap:2px;margin-top:2px}
.vol{font-size:9px;color:var(--muted);text-align:right;line-height:1.4;font-variant-numeric:tabular-nums}
.thbadge{display:inline-block;font-size:8.5px;font-weight:700;color:var(--red);border:1px solid var(--red);border-radius:3px;padding:0 5px;margin-left:7px;vertical-align:1px}
.pvol{display:inline-block;font-size:9.5px;font-weight:700;color:var(--red);background:#fff;border:1px solid var(--tint2);border-radius:4px;padding:1px 7px;margin-left:8px;font-variant-numeric:tabular-nums}
.thread{border-top:1px solid #F0EFF1;padding:9px 0}
.thread:first-child{border-top:none;padding-top:2px}
.thd{display:flex;justify-content:space-between;align-items:center}
.tname{font-size:11.5px;font-weight:700}
.tst{font-size:9px;font-weight:700;border-radius:8px;padding:1px 8px;background:#EFEFF1;color:var(--muted)}
.tst.live{background:var(--tint);color:var(--red)}
.tmeta{font-size:10px;color:var(--gray);margin:3px 0 5px}
.tmeta b{color:var(--ink);font-variant-numeric:tabular-nums}
.tbars{display:flex;gap:7px;align-items:flex-end;height:42px}
.tb{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:2px}
.tbi{width:16px;background:var(--red);border-radius:2px 2px 0 0;min-height:0}
.tb span{font-size:8px;color:var(--muted)}
.tnext{font-size:9.5px;color:var(--gray);margin-top:5px;padding-left:8px;border-left:2px solid var(--tint2)}
.mt12{margin-top:12px}.mb12{margin-bottom:12px}
canvas{max-width:100%}
.chartbox{position:relative;height:250px}
.chartbox.sm{height:210px}
.view{display:none}.view.on{display:block}
.foot-note{font-size:10px;color:var(--muted);margin-top:14px}
