@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Noto+Sans+SC:wght@400;500;600;700&display=swap');

:root{--bg:#0b0f19;--panel:#1e293b;--panel-deep:#151e2e;--line:rgba(255,255,255,.06);--line-strong:rgba(148,163,184,.22);--text:#f8fafc;--muted:#94a3b8;--orange:#ffa500;--orange-soft:rgba(255,165,0,.13);--green:#4ade80;--red:#fb7185}
*{box-sizing:border-box}body{min-height:100vh;margin:0;color:var(--text);font-family:"Inter","Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;background:radial-gradient(900px 500px at 83% -14%,rgba(30,58,138,.16),transparent 60%),radial-gradient(700px 440px at -12% 78%,rgba(15,118,110,.07),transparent 62%),var(--bg);background-attachment:fixed}header,main,footer{position:relative;max-width:1320px;margin:auto}header{height:78px;display:flex;align-items:center;border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;color:var(--text);text-decoration:none;font:700 24px Inter,"Noto Sans SC",sans-serif;letter-spacing:-1.2px}.brand:before{content:"OW";display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--orange);border-radius:9px;color:var(--orange);font:700 12px Inter,sans-serif;letter-spacing:-1px;background:rgba(255,165,0,.06);box-shadow:0 0 20px rgba(255,165,0,.1)}.brand span{margin-left:2px;color:#cbd5e1;font:600 13px "Noto Sans SC",sans-serif;letter-spacing:0}
main{padding:32px 0 52px}.workspace{display:grid;grid-template-columns:minmax(290px,.78fr) minmax(0,1.92fr);gap:20px;align-items:start}.panel{border:1px solid var(--line);border-radius:16px;background:linear-gradient(145deg,rgba(30,41,59,.96),rgba(21,30,46,.96));padding:24px;box-shadow:0 20px 50px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.025)}.panel-title{display:flex;justify-content:space-between;gap:16px;align-items:start}.eyebrow{font:500 10px Inter,sans-serif;letter-spacing:1.45px;color:var(--orange);margin:0 0 10px}h1{font-size:24px;font-weight:700;letter-spacing:-1px;line-height:1.18;margin:0}.watch-badge{white-space:nowrap;font:11px Inter,sans-serif;padding:6px 8px;border-radius:6px;color:var(--orange);background:var(--orange-soft);border:1px solid rgba(255,165,0,.24)}.panel-copy{color:#aebdce;font-size:13px;line-height:1.75;margin:22px 0}.signal-placeholder{display:flex;gap:11px;align-items:center;border:1px dashed rgba(148,163,184,.28);background:rgba(15,23,42,.34);border-radius:10px;padding:16px}.signal-placeholder b{font-size:13px}.signal-placeholder small{display:block;margin-top:5px;color:var(--muted);font-size:11px}.pulse-dot{width:9px;height:9px;flex:none;border-radius:50%;background:var(--orange);box-shadow:0 0 0 5px rgba(255,165,0,.1),0 0 12px rgba(255,165,0,.25)}.signal-rules{margin-top:24px;border-top:1px solid var(--line)}.signal-rules div{display:flex;gap:10px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line);font-size:12px;color:#dce6f1}.signal-rules span{font:10px Inter,sans-serif;color:var(--orange)}
.search-workspace{margin-top:26px;padding:16px;border:1px solid var(--line);border-radius:12px;background:rgba(15,23,42,.28)}.hot-search{display:flex;align-items:center;gap:12px;margin-bottom:12px;color:var(--muted);font-size:11px}.hot-search>span{white-space:nowrap}.hot-tokens{display:flex;gap:7px;flex-wrap:wrap}.hot-token{padding:4px 9px;color:#cbd5e1;background:rgba(148,163,184,.08);border:1px solid rgba(148,163,184,.18);border-radius:999px;font:600 10px Inter,sans-serif;box-shadow:none}.hot-token:hover{color:var(--orange);border-color:rgba(255,165,0,.34);background:var(--orange-soft);box-shadow:none;transform:none}form{display:flex;gap:9px;padding:6px;border:1px solid var(--line-strong);border-radius:10px;background:rgba(30,41,59,.72);box-shadow:inset 0 1px 0 rgba(255,255,255,.02)}input,button{font:inherit;border:0}input{flex:1;min-width:0;color:var(--text);background:transparent;outline:none;padding:12px 13px;font:13px Inter,"Noto Sans SC",sans-serif}input::placeholder{color:#64748b}button{cursor:pointer;color:#17120a;background:var(--orange);font-weight:700;border-radius:8px;padding:12px 18px;transition:transform .16s ease,box-shadow .16s ease,background .16s ease}button:hover{background:#ffb52b;transform:translateY(-1px);box-shadow:0 8px 20px rgba(255,165,0,.18)}button:disabled{opacity:.55;cursor:wait;transform:none;box-shadow:none}
.hidden{display:none!important}#dashboard{margin-top:26px}.topline{display:flex;justify-content:space-between;gap:12px;align-items:end;margin-bottom:14px}h2{font:800 31px Inter,sans-serif;letter-spacing:-1.4px;margin:0}.tabs{display:flex;background:#111827;border:1px solid var(--line-strong);padding:3px;border-radius:8px;gap:2px}.tabs button{padding:7px 9px;color:#94a3b8;background:transparent;font-size:12px;box-shadow:none}.tabs button.active{color:#17120a;background:var(--orange)}#metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin:0 0 14px}.metric{border:1px solid var(--line);background:rgba(15,23,42,.42);padding:7px 9px;border-radius:8px;min-width:0}.metric small{color:#94a3b8;display:block;font-size:8px;line-height:1.1}.metric b{display:block;color:#e6edf5;font:600 11px Inter,sans-serif;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:4px}.grid{display:grid;grid-template-columns:minmax(0,2.4fr) minmax(220px,.6fr);gap:16px}.chart-card,aside article{background:rgba(15,23,42,.68);border:1px solid var(--line);border-radius:12px;box-shadow:inset 0 1px 0 rgba(255,255,255,.02)}.chart-card{padding:9px;position:relative}.fullscreen{position:absolute;right:9px;top:9px;z-index:2;background:rgba(30,41,59,.94);color:#cbd5e1;border:1px solid var(--line-strong);font-size:10px;padding:6px 8px}.fullscreen:hover{color:#17120a;background:var(--orange);border-color:var(--orange)}.chart-card canvas{width:100%;height:440px;display:block}.chart-card:fullscreen,.chart-card.local-fullscreen{width:100%;height:100%;padding:12px;background:var(--bg)}.chart-card:fullscreen canvas,.chart-card.local-fullscreen canvas{height:calc(100vh - 24px)}.chart-card.local-fullscreen{position:fixed;inset:0;z-index:99;border-radius:0}.chart-fullscreen{overflow:hidden}aside{display:flex;flex-direction:column}.narrative{padding:19px;min-height:150px}.narrative h3{font-size:18px;font-weight:700;margin:0 0 15px}.narrative-row{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}.narrative-row b{font:600 12px Inter,"Noto Sans SC",sans-serif;color:#e6edf5;text-align:right}.empty-analysis{margin-top:26px;padding:28px;border:1px dashed rgba(148,163,184,.28);border-radius:12px;background:rgba(15,23,42,.25);color:var(--muted);font-size:13px;text-align:center}footer{border-top:1px solid var(--line);padding:24px 0;color:#64748b;font-size:11px}
@media(max-width:900px){header,main,footer{margin-left:18px;margin-right:18px}.workspace{grid-template-columns:1fr}.signal-panel{order:2}.analysis-panel{order:1}}@media(max-width:620px){header{height:70px}.brand{font-size:22px}.brand:before{width:34px;height:34px}main{padding-top:20px}.panel{padding:17px}.search-workspace{padding:12px}.hot-search{align-items:flex-start;flex-direction:column;gap:8px}form{flex-wrap:wrap}input{min-width:180px}.topline{align-items:start;flex-direction:column}.tabs{width:100%;overflow:auto}.tabs button{padding:6px 8px}#metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.grid{grid-template-columns:1fr}.chart-card canvas{height:320px}h1{font-size:21px}}
.chart-card canvas{touch-action:none;cursor:grab;user-select:none}.chart-card canvas.dragging{cursor:grabbing}

/* 首屏工作台：两大功能区尽量占满可视范围。 */
header,main,footer{width:calc(100vw - 28px);max-width:1760px}header{height:66px}main{padding:16px 0 20px}.workspace{grid-template-columns:minmax(320px,31%) minmax(0,1fr);gap:14px;align-items:stretch}.panel{min-height:calc(100vh - 102px);padding:20px}.analysis-panel{min-width:0}.search-workspace{margin-top:18px;padding:13px}#dashboard{margin-top:16px}.topline{margin-bottom:10px}.grid{grid-template-columns:minmax(0,1fr) minmax(205px,23%);gap:12px}.chart-card{padding:8px}.chart-toolbar{height:38px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 2px 6px}.fullscreen{position:static;flex:none}.chart-card canvas{height:clamp(350px,calc(100vh - 330px),560px)}.hot-token{display:inline-flex;align-items:center;gap:6px}.hot-token i{color:var(--orange);font-style:normal;font-size:9px}.hot-empty{color:#64748b;font-size:10px}footer{padding:10px 0}
header,main,footer{width:calc(100vw - 28px);max-width:1760px}header{height:66px}main{padding:16px 0 20px}.workspace{grid-template-columns:minmax(320px,31%) minmax(0,1fr);gap:14px;align-items:stretch}.panel{min-height:calc(100vh - 102px);padding:20px}.analysis-panel{min-width:0}.search-workspace{margin-top:18px;padding:13px}#dashboard{margin-top:16px}.topline{margin-bottom:10px}.grid{grid-template-columns:minmax(0,1fr) minmax(205px,23%);gap:12px}.chart-card{padding:8px}.chart-toolbar{height:38px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 2px 6px}.fullscreen{position:static;flex:none}.chart-card canvas{height:clamp(350px,calc(100vh - 330px),560px)}.hot-token{display:inline-flex;align-items:center;gap:6px}.hot-token i{color:var(--orange);font-style:normal;font-size:9px}.hot-placeholder{cursor:default;opacity:.46;pointer-events:none}.hot-empty{color:#64748b;font-size:10px}footer{padding:10px 0}

@media(max-width:900px){header,main,footer{width:auto}.panel{min-height:auto}.workspace{grid-template-columns:1fr}.chart-card canvas{height:420px}}
@media(max-width:620px){.chart-toolbar{height:auto;align-items:flex-start}.chart-toolbar .tabs{width:auto;max-width:calc(100% - 54px)}.chart-card canvas{height:330px}.panel{padding:15px}}

/* 紧凑双语工作台与信号队列。 */
header{justify-content:space-between}.brand{gap:8px}.brand span{margin-left:0}.language-toggle{padding:7px 11px;color:var(--orange);background:rgba(255,165,0,.07);border:1px solid rgba(255,165,0,.28);border-radius:8px;font:700 11px Inter,"Noto Sans SC",sans-serif;box-shadow:none}.language-toggle:hover{color:#17120a;background:var(--orange);box-shadow:0 0 18px rgba(255,165,0,.16)}
.panel{min-height:calc(80vh - 82px)}.panel-title h1{max-width:760px}.signal-panel .panel-title h1{max-width:440px}.signal-feed{display:flex;flex-direction:column;gap:9px;margin-top:30px}.signal-placeholder{min-height:64px}.pulse-dot{animation:signal-breathe 1.7s ease-in-out infinite}.signal-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 14px;border:1px solid var(--line);border-radius:10px;background:rgba(15,23,42,.42);cursor:pointer}.signal-row:hover{border-color:rgba(255,165,0,.28);background:rgba(255,165,0,.04)}.signal-row div{display:flex;min-width:0;flex-direction:column;gap:4px}.signal-row b{overflow:hidden;color:#e6edf5;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.signal-row b em{display:inline-block;margin-left:6px;padding:2px 6px;border:1px solid rgba(255,165,0,.35);border-radius:999px;color:var(--orange);font:700 9px Inter,"Noto Sans SC",sans-serif;font-style:normal;vertical-align:1px}.signal-row small{color:#64748b;font:9px Inter,sans-serif}.signal-row time{color:var(--muted);font:10px Inter,sans-serif}.signal-row strong{flex:none;color:var(--orange);font:800 17px Inter,sans-serif}.signal-overflow{border-top:1px solid var(--line);padding-top:8px}.signal-overflow summary{cursor:pointer;color:var(--muted);font-size:11px;margin-bottom:8px}.signal-overflow .signal-row{margin-top:8px}.chart-card canvas{height:clamp(280px,calc(80vh - 264px),448px)}
@keyframes signal-breathe{0%,100%{opacity:.5;box-shadow:0 0 0 4px rgba(255,165,0,.07),0 0 8px rgba(255,165,0,.16)}50%{opacity:1;box-shadow:0 0 0 8px rgba(255,165,0,.11),0 0 20px rgba(255,165,0,.4)}}
@media(max-width:900px){.panel{min-height:auto}.chart-card canvas{height:336px}}
@media(max-width:620px){header{height:62px}.brand{font-size:20px}.brand span{font-size:12px}.language-toggle{padding:6px 9px}.signal-feed{margin-top:22px}.chart-card canvas{height:270px}.panel-title h1{font-size:19px}}
.signal-row b em.risk{border-color:rgba(255,140,0,.5);color:#ffb347}.signal-row b em.slow{border-color:rgba(96,165,250,.35);color:#93c5fd}.signal-row b em.observing{border-color:rgba(255,255,255,.1);color:#94a3b8}.signal-row b em.status-icon{margin-left:5px;padding:0;border:0;background:none;font-size:13px;line-height:1;vertical-align:-1px}.signal-row b em.confirm{color:#6ee7b7}.signal-row b em.weak{color:#fca5a5}
.signal-group{display:flex;flex-direction:column;gap:7px}.signal-group+.signal-group{margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}.signal-group>h3{margin:0 0 2px;color:#94a3b8;font:700 10px Inter,"Noto Sans SC",sans-serif;letter-spacing:.4px}.signal-placeholder.compact{min-height:42px;padding:10px 12px}.signal-placeholder.compact b{font-size:11px}

/* 每日战绩保持在信号标题与实时队列之间，主界面只展示前五名。 */
.performance-card{margin-top:20px;padding:0 14px;border:1px solid rgba(255,255,255,.06);border-radius:12px;background:rgba(11,15,25,.32)}.performance-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0;padding:12px 0;cursor:pointer;list-style:none}.performance-head::-webkit-details-marker{display:none}.performance-head h2{margin:0;color:#e6edf5;font-size:14px;font-weight:650}.performance-head h2 b{color:var(--orange);font-size:20px}.performance-chevron{color:var(--orange);font-size:18px;line-height:1;transition:transform .18s ease}.performance-card[open] .performance-chevron{transform:rotate(180deg)}.performance-body{padding:0 0 12px}.performance-body>button{margin-bottom:9px;padding:7px 10px;border:1px solid rgba(255,165,0,.28);border-radius:8px;background:rgba(255,165,0,.06);color:var(--orange);font:700 10px Inter,"Noto Sans SC",sans-serif}.performance-body>button:hover{background:rgba(255,165,0,.12);box-shadow:0 0 16px rgba(255,165,0,.1)}.performance-list{display:flex;flex-direction:column;gap:5px}.performance-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;padding:7px 8px;border:0;border-radius:8px;background:transparent;color:#e6edf5;text-align:left}.performance-row:hover{background:rgba(255,255,255,.035)}.performance-row span{display:flex;min-width:0;flex-direction:column}.performance-row b{overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.performance-row small{margin-top:2px;color:#64748b;font-size:8px}.performance-row strong{color:var(--orange);font:800 15px Inter,sans-serif}.performance-empty{margin:10px 0;color:#64748b;font-size:10px}.performance-card+.signal-feed{margin-top:12px}
.performance-dialog{width:min(900px,calc(100vw - 32px));max-height:88vh;padding:0;border:1px solid rgba(255,165,0,.18);border-radius:16px;background:#111827;color:#e6edf5;box-shadow:0 24px 80px rgba(0,0,0,.65)}.performance-dialog::backdrop{background:rgba(2,6,14,.78);backdrop-filter:blur(5px)}.calendar-shell{padding:22px}.calendar-shell>header{display:flex;width:auto;height:auto;max-width:none;align-items:flex-start;justify-content:space-between;margin:0 0 14px}.calendar-shell h2{margin:4px 0 0;font-size:21px}.dialog-close{display:grid;width:32px;height:32px;place-items:center;border:1px solid rgba(255,255,255,.08);border-radius:9px;background:rgba(255,255,255,.03);color:#94a3b8;font-size:20px}.calendar-nav{display:grid;grid-template-columns:34px 1fr 34px;align-items:center;gap:9px;margin-bottom:8px}.calendar-nav>button{height:30px;border:1px solid rgba(255,255,255,.07);border-radius:8px;background:rgba(255,255,255,.025);color:var(--orange)}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);color:#64748b;text-align:center;font:600 9px Inter,"Noto Sans SC",sans-serif}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.calendar-blank,.calendar-day{min-height:76px}.calendar-day{display:flex;min-width:0;flex-direction:column;align-items:flex-start;padding:8px;border:1px solid rgba(255,255,255,.055);border-radius:9px;background:rgba(15,23,42,.55);color:#94a3b8;text-align:left}.calendar-day:hover,.calendar-day.selected{border-color:rgba(255,165,0,.32);background:rgba(255,165,0,.055)}.calendar-day.is-today b{color:var(--orange)}.calendar-day.has-performance{color:#e6edf5}.calendar-day b{font:700 11px Inter,sans-serif}.calendar-day small{margin-top:auto;color:#94a3b8;font-size:8px}.calendar-day strong{margin-top:3px;color:var(--orange);font:750 10px Inter,sans-serif}.calendar-day-detail{margin-top:16px;padding-top:14px;border-top:1px solid rgba(255,255,255,.06)}.calendar-day-detail h3{margin:0 0 8px;font-size:13px}.calendar-day-detail .performance-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 14px}
@media(max-width:620px){.performance-card{margin-top:15px;padding:0 11px}.performance-head{align-items:center;padding:10px 0}.performance-head h2{font-size:12px}.performance-head h2 b{font-size:17px}.performance-body{padding-bottom:10px}.performance-body>button{padding:6px 8px;font-size:9px}.performance-list{display:flex;gap:4px}.performance-row{padding:6px}.performance-row b{font-size:9px}.performance-row small{font-size:7px}.performance-row strong{font-size:12px}.calendar-shell{padding:15px}.calendar-shell h2{font-size:18px}.calendar-grid{gap:3px}.calendar-blank,.calendar-day{min-height:58px}.calendar-day{padding:5px}.calendar-day small{font-size:7px}.calendar-day strong{font-size:8px}.calendar-day-detail .performance-list{display:grid;grid-template-columns:1fr}.calendar-day-detail .performance-row{grid-template-columns:minmax(0,1fr) auto}}

/* 无密码邮箱验证码个人中心。邮箱不进入本站 D1 数据库。 */
.header-actions{display:flex;align-items:center;gap:8px}.user-center-button{padding:7px 11px;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:rgba(255,255,255,.035);color:#cbd5e1;font:650 11px Inter,"Noto Sans SC",sans-serif;box-shadow:none}.user-center-button:hover,.user-center-button.signed-in{border-color:rgba(255,165,0,.28);background:rgba(255,165,0,.07);color:var(--orange);box-shadow:none}.user-dialog{width:min(430px,calc(100vw - 28px));padding:0;border:1px solid rgba(255,165,0,.18);border-radius:16px;background:#111827;color:#e6edf5;box-shadow:0 24px 80px rgba(0,0,0,.65)}.user-dialog::backdrop{background:rgba(2,6,14,.78);backdrop-filter:blur(5px)}.user-shell{padding:22px}.user-shell>header{display:flex;width:auto;height:auto;max-width:none;align-items:flex-start;justify-content:space-between;margin:0 0 22px;border:0}.user-shell h2{font-size:22px}.user-shell h3{margin:0 0 8px;font-size:17px}.auth-copy{margin:0 0 18px;color:#94a3b8;font-size:11px;line-height:1.65}.user-shell label{display:block;margin:13px 0;color:#94a3b8;font-size:10px}.user-shell label span{display:block;margin-bottom:7px}.user-shell input{width:100%;padding:12px;border:1px solid rgba(148,163,184,.2);border-radius:9px;background:rgba(15,23,42,.72);color:#f8fafc}.user-shell input:focus{border-color:rgba(255,165,0,.48)}.otp-input{font:750 24px Inter,sans-serif!important;letter-spacing:8px;text-align:center}.turnstile-container{min-height:65px;margin:14px 0}.auth-primary,.auth-secondary{width:100%;margin-top:9px;padding:11px}.auth-secondary{border:1px solid rgba(255,255,255,.08);background:transparent;color:#94a3b8;box-shadow:none}.auth-secondary:hover{background:rgba(255,255,255,.04);color:#e2e8f0;box-shadow:none}.auth-secondary.danger:hover{border-color:rgba(248,113,113,.25);color:#fca5a5}.auth-message{min-height:18px;margin:14px 0 0;color:#6ee7b7;font-size:10px;text-align:center}.auth-message.error{color:#fca5a5}.profile-identity{display:flex;align-items:center;gap:12px;margin-bottom:18px;padding:13px;border:1px solid rgba(255,255,255,.06);border-radius:11px;background:rgba(15,23,42,.45)}.profile-identity>span{display:grid;width:42px;height:42px;place-items:center;border:1px solid rgba(255,165,0,.3);border-radius:12px;background:rgba(255,165,0,.08);color:var(--orange);font:750 12px Inter,sans-serif}.profile-identity h3{margin:0;font-size:14px}.profile-identity small{color:#64748b;font:9px Inter,sans-serif}
.invite-input{text-transform:uppercase;letter-spacing:1.5px;font-weight:700!important}.invite-activation{margin:0 0 17px;padding:14px;border:1px solid rgba(255,165,0,.16);border-radius:11px;background:rgba(255,165,0,.035)}.invite-activation .auth-copy{margin-bottom:10px}.core-access-status{margin:0 0 16px;padding:10px;border:1px solid rgba(74,222,128,.18);border-radius:9px;background:rgba(74,222,128,.05);color:#6ee7b7;font-size:11px;text-align:center}
@media(max-width:620px){.header-actions{gap:5px}.user-center-button,.language-toggle{padding:6px 8px;font-size:9px}.user-shell{padding:17px}.user-dialog{max-height:90vh}.turnstile-container{transform:scale(.88);transform-origin:left top;margin-bottom:5px}}

/* 手机首屏：信号优先，搜索分析其次，压缩空状态占用。 */
@media(max-width:900px){.signal-panel{order:1}.analysis-panel{order:2}}
@media(max-width:620px){header,main,footer{margin-left:12px;margin-right:12px}header{height:58px}main{padding:10px 0 14px}.workspace{gap:10px}.panel{padding:12px;border-radius:14px}.panel-title h1{font-size:17px;line-height:1.2}.signal-panel{padding-bottom:11px}.performance-card{margin-top:9px}.performance-head{padding:7px 0}.performance-card+.signal-feed{margin-top:8px}.signal-feed{max-height:210px;margin-top:8px;gap:6px;overflow:auto}.signal-placeholder{min-height:42px;padding:9px 10px}.signal-placeholder b{font-size:11px}.signal-placeholder small{display:none}.analysis-panel{padding-top:12px}.search-workspace{margin-top:10px;padding:9px}.hot-search{gap:6px;margin-bottom:8px}.hot-search>span{font-size:9px}.hot-tokens{gap:4px}.hot-token{padding:3px 7px;font-size:8px}.hot-token i{font-size:8px}form{flex-wrap:nowrap;gap:5px;padding:4px}form input{min-width:0;padding:9px 8px;font-size:10px}form button{flex:none;padding:9px 11px;font-size:11px}.empty-analysis{margin-top:9px;padding:9px 12px;font-size:9px;line-height:1.35}.analysis-panel #dashboard{margin-top:10px}footer{padding:8px 0}}

/* Mobile analysis stack: the chart owns the full row; narrative follows below. */
@media(max-width:620px){
  .analysis-panel .grid{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}
  .analysis-panel .chart-card{width:100%;min-width:0;overflow:hidden}
  .analysis-panel .chart-toolbar{width:100%;align-items:center;gap:6px}
  .analysis-panel .chart-toolbar .tabs{display:flex;width:auto;max-width:calc(100% - 50px);flex:1 1 auto;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
  .analysis-panel .chart-toolbar .tabs::-webkit-scrollbar{display:none}
  .analysis-panel .chart-toolbar .tabs button{flex:0 0 auto;padding:6px 7px}
  .analysis-panel .fullscreen{flex:0 0 auto;padding:6px 7px}
  .analysis-panel .chart-card canvas{width:100%;height:330px;min-height:330px}
  .analysis-panel aside{display:block;width:100%;min-width:0}
  .analysis-panel .narrative{min-height:0;padding:14px}
  .analysis-panel .narrative h3{margin-bottom:10px;font-size:15px}
  .analysis-panel .narrative-row{padding:10px 0}
}
