:root{--bg:#f4f6f8;--surface:#fff;--surface2:#f8fafb;--text:#17202a;--dim:#66717d;--mute:#929ca6;--border:#e2e7ec;--red:#df2f27;--red-soft:#fff0ef;--up:#df2f27;--down:#07885f;--warn:#ce8b14;--head-a:#fbfcfd;--head-b:#f3f5f7;--shadow:0 8px 28px rgba(22,31,40,.08)}[data-theme="dark"]{--bg:#0e1319;--surface:#151c24;--surface2:#1a222c;--text:#e7edf3;--dim:#a9b3be;--mute:#78838e;--border:#293440;--head-a:#1b232d;--head-b:#151c24;--shadow:0 10px 34px rgba(0,0,0,.28)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:"Microsoft YaHei","Segoe UI",sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.app{min-height:100vh}.main{min-height:100vh}.pgw{width:min(1180px,calc(100% - 42px));margin:0 auto;padding:26px 0 60px}.pgh{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.ti b{display:block;font-size:24px}.ti small{display:block;margin-top:5px;color:var(--mute)}.pgb,.card,.about,.mye,.dsk,.pv,.panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow)}.pgb{padding:20px}.about{padding:18px;line-height:1.9;margin-bottom:16px}.about h2{margin-top:0}.about p{color:var(--dim)}h1,h2,h3{letter-spacing:0}.tw{overflow:auto;border:1px solid var(--border);border-radius:7px;margin:12px 0 22px}table{width:100%;border-collapse:collapse;background:var(--surface)}th,td{padding:11px 13px;border-bottom:1px solid var(--border);text-align:left;font-size:13px;white-space:nowrap}th{background:var(--surface2);color:var(--dim);font-weight:700}tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--surface2)}.mono{font-family:Consolas,monospace}.dim{color:var(--mute)}.up,.red{color:var(--up)}.down,.green{color:var(--down)}.tag,.pill{display:inline-flex;align-items:center;border-radius:999px;padding:3px 9px;background:var(--red-soft);color:var(--red);font-size:11px}.cards,.g3,.g4{display:grid;gap:14px}.cards,.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.card{padding:16px}.card b{font-size:22px}.card small{display:block;color:var(--mute);margin-top:5px}.kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:16px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:7px;padding:14px}.kpi i{display:block;font-style:normal;color:var(--mute);font-size:11px}.kpi b{display:block;margin-top:6px;font-size:24px}.ftr{display:flex;justify-content:space-between;gap:20px;margin-top:28px;padding:18px 0;color:var(--mute);font-size:11px;border-top:1px solid var(--border)}.fl{display:flex;gap:14px;flex-wrap:wrap}.sronly{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.dskbn{padding:11px 15px;background:#fff8e8;border:1px solid #f0d9a3;border-radius:7px;margin-bottom:12px;font-size:12px}.dsk{display:grid;grid-template-columns:330px 1fr;min-height:560px;overflow:hidden}.dskl{border-right:1px solid var(--border);min-width:0}.dskr{min-width:0;padding:18px}.dtabs{display:flex;gap:2px;overflow:auto;border-bottom:1px solid var(--border);padding:8px}.dtabs b{padding:7px 9px;border-radius:4px;white-space:nowrap;cursor:pointer;font-size:12px}.dtabs b.on{background:var(--red);color:#fff}.dgqw{padding:10px;position:relative}.dgqw input{width:100%;height:36px;border:1px solid var(--border);border-radius:5px;padding:0 10px;background:var(--surface2);color:var(--text)}.dlist{min-height:420px}.dske,.mye{padding:48px 20px;text-align:center;color:var(--mute);box-shadow:none}.djr{padding:12px}.djr textarea{width:100%;border:1px solid var(--border);border-radius:5px;margin:5px 0;padding:8px;background:var(--surface2);color:var(--text)}.myb,.aiask,#djsave{display:inline-block;border:0;border-radius:5px;background:var(--red);color:#fff;padding:8px 13px;cursor:pointer}.hero{padding:80px 24px;text-align:center}.hero h1{margin:0;font-size:54px}.hero .sub{margin:20px auto;color:var(--dim);max-width:700px}.ctas{display:flex;justify-content:center;gap:12px}.cta,.cta2{padding:12px 22px;border-radius:7px}.cta{background:var(--red);color:#fff}.cta2{border:1px solid var(--border);background:var(--surface)}.nav,.hdr{display:flex;align-items:center;gap:20px;padding:0 28px;height:58px;background:var(--surface);border-bottom:1px solid var(--border)}.nav a,.hdr a{font-size:13px}.local-notice{position:fixed;right:16px;bottom:16px;z-index:50;max-width:360px;padding:10px 14px;border:1px solid #e4c27a;background:#fff8df;color:#705115;border-radius:6px;box-shadow:var(--shadow);font-size:12px}.loading{padding:28px;text-align:center;color:var(--mute)}@media(max-width:900px){.main{margin-left:0}.pgw{width:min(100% - 24px,760px);padding-top:66px}.kpis{grid-template-columns:repeat(3,1fr)}.cards,.g3,.g4{grid-template-columns:1fr 1fr}.dsk{grid-template-columns:1fr}.dskl{border-right:0;border-bottom:1px solid var(--border)}}@media(max-width:560px){.cards,.g3,.g4,.kpis{grid-template-columns:1fr 1fr}.hero h1{font-size:36px}.pgb{padding:12px}.ti b{font-size:20px}.ftr{display:block}.fl{margin-top:10px}.dsk{min-height:0}}
.local-notice{display:none!important}
.offline-state{padding:24px!important;text-align:center!important;color:var(--mute,#7b8494)!important}
.local-tools{display:flex;align-items:center;gap:8px;margin:12px 0;padding:10px;border:1px solid var(--border,#e4e7ee);background:var(--surface,#fff);border-radius:6px}
.local-tools input{flex:1;min-width:120px;padding:9px 11px;border:1px solid var(--border,#e4e7ee);border-radius:5px;background:var(--surface2,#f5f6f9);color:var(--text,#1a2030)}
.local-tools button{padding:8px 12px;border:1px solid var(--border,#e4e7ee);border-radius:5px;background:var(--surface,#fff);color:var(--text,#1a2030);cursor:pointer}
.local-tools span{font-size:12px;color:var(--mute,#646d7f)}
th.local-sortable{cursor:pointer;user-select:none}.local-sortable:after{content:' ↕';color:var(--mute,#7b8494);font-size:11px}.local-sortable[data-order=asc]:after{content:' ↑';color:var(--up,#e0241b)}.local-sortable[data-order=desc]:after{content:' ↓';color:var(--up,#e0241b)}
.local-toast{position:fixed;right:20px;bottom:20px;z-index:9999;padding:10px 14px;border-radius:6px;background:#111827;color:#fff;opacity:0;transform:translateY(8px);pointer-events:none;transition:.2s}.local-toast.show{opacity:1;transform:none}
.offline-panel{padding:34px;border:1px dashed var(--border,#d7dce5);border-radius:6px;background:var(--surface2,#f5f6f9);text-align:center}.offline-panel h2{font-size:18px;margin:0 0 10px}.offline-panel p{margin:0;color:var(--mute,#646d7f);line-height:1.8}
@media(max-width:640px){.local-tools{flex-wrap:wrap}.local-tools input{width:100%;flex-basis:100%}}
.archive-head{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border:1px solid var(--border);border-bottom:0;background:var(--surface)}.archive-head b{display:block}.archive-head small{display:block;margin-top:4px;color:var(--mute)}
.stock-link{border:0;background:transparent;color:var(--text);font:inherit;font-weight:700;cursor:pointer}.stock-link:hover{color:var(--up)}
.local-desk-head{display:flex;justify-content:space-between;padding:12px;border-bottom:1px solid var(--border)}.local-desk-head span,.local-watch small{color:var(--mute);font-size:11px}.local-watch{display:flex;align-items:center;border-bottom:1px solid var(--border)}.local-watch>button:first-child{flex:1;display:flex;justify-content:space-between;padding:12px;border:0;background:transparent;color:var(--text);cursor:pointer}.local-watch>[data-local-del]{width:34px;height:34px;border:0;background:transparent;color:var(--mute);cursor:pointer;font-size:18px}
.local-live{padding:20px}.local-live h2{font-size:18px;margin:0 0 14px}.live-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.live-grid article{padding:16px;border:1px solid var(--border);border-radius:6px;background:var(--surface2)}.live-grid span,.live-grid small{display:block;color:var(--mute)}.live-grid b{display:block;margin:8px 0;font-size:25px;color:var(--up)}.local-live>p{margin-top:16px;color:var(--mute)}
.training-card{max-width:720px;margin:24px auto;padding:24px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.training-card h2{margin:14px 0 20px;font-size:20px;line-height:1.6}.training-options{display:grid;gap:10px}.training-options button,.training-next{padding:12px;border:1px solid var(--border);border-radius:6px;background:var(--surface2);color:var(--text);text-align:left;cursor:pointer}.training-options button.correct{border-color:var(--green);color:var(--green)}.training-note{min-height:48px;margin:16px 0;color:var(--dim);line-height:1.7}.training-next{background:var(--up);color:#fff;text-align:center}
@media(max-width:640px){.live-grid{grid-template-columns:repeat(2,1fr)}}
.archive-page{max-width:1120px;margin:0 auto;padding:28px 24px 60px}.archive-back{display:inline-block;margin-bottom:28px;color:var(--dim)}.archive-page header{padding:28px 0;border-bottom:1px solid var(--border)}.archive-page header>span{color:var(--up);font-size:12px;font-weight:700}.archive-page h1{margin:8px 0;font-size:30px}.archive-page header p{color:var(--mute)}.archive-toolbar{display:flex;align-items:center;gap:12px;margin:20px 0}.archive-toolbar input{flex:1;padding:11px 13px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text)}.archive-toolbar span{font-size:12px;color:var(--mute)}.archive-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.archive-card{display:grid;grid-template-columns:1fr auto;gap:6px 12px;padding:16px;border:1px solid var(--border);border-radius:6px;background:var(--surface)}.archive-card b{font-size:15px}.archive-card code{color:var(--up)}.archive-card small{grid-column:1/-1;color:var(--mute);line-height:1.5}.archive-card button{grid-column:1/-1;padding:7px;border:1px solid var(--border);border-radius:5px;background:var(--surface2);color:var(--text);cursor:pointer}.archive-card[hidden]{display:none}
@media(max-width:800px){.archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:520px){.archive-grid{grid-template-columns:1fr}.archive-toolbar{align-items:stretch;flex-direction:column}}
.snapshot-badge{padding:9px 12px;border:1px solid rgba(192,138,8,.35);background:rgba(192,138,8,.08);color:var(--gold,#c08a08);font-size:12px;font-weight:700}
.ai-fab{position:fixed;right:20px;bottom:20px;z-index:9000;width:48px;height:48px;border:0;border-radius:50%;background:var(--up,#e0241b);color:#fff;font-weight:900;box-shadow:0 8px 24px rgba(0,0,0,.22);cursor:pointer}.ai-panel{position:fixed;right:20px;bottom:78px;z-index:9001;display:none;width:min(430px,calc(100vw - 24px));max-height:min(680px,calc(100vh - 100px));overflow:auto;border:1px solid var(--border,#e4e7ee);border-radius:8px;background:var(--surface,#fff);color:var(--text,#1a2030);box-shadow:0 18px 55px rgba(0,0,0,.25)}.ai-panel.open{display:block}.ai-panel header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border)}.ai-panel header b,.ai-panel header small{display:block}.ai-panel header small{margin-top:3px;color:var(--mute);font-size:11px}.ai-panel header button{border:0;background:transparent;color:var(--mute);font-size:22px;cursor:pointer}.ai-quick{display:flex;gap:7px;padding:12px;border-bottom:1px solid var(--border)}.ai-quick button{flex:1;padding:8px 4px;border:1px solid var(--border);border-radius:5px;background:var(--surface2);color:var(--text);cursor:pointer;font-size:12px}.ai-answer{min-height:180px;padding:16px;white-space:pre-wrap;line-height:1.75;font-size:14px}.ai-panel form{display:flex;gap:8px;padding:12px;border-top:1px solid var(--border)}.ai-panel textarea{flex:1;min-height:68px;resize:vertical;padding:9px;border:1px solid var(--border);border-radius:5px;background:var(--surface2);color:var(--text)}.ai-panel form>button{align-self:stretch;padding:0 16px;border:0;border-radius:5px;background:var(--up);color:#fff;cursor:pointer}.ai-panel form>button:disabled{opacity:.5}
@media(max-width:520px){.ai-fab{right:12px;bottom:12px}.ai-panel{right:12px;bottom:70px}.ai-quick{flex-wrap:wrap}.ai-quick button{flex-basis:30%}}
.market-strip{position:sticky;top:0;z-index:8500;display:flex;align-items:center;gap:14px;min-height:38px;padding:5px 14px;border-bottom:1px solid var(--border);background:var(--surface);box-shadow:0 2px 8px rgba(0,0,0,.05)}.index-tape{display:flex;gap:16px;overflow:auto;flex:1;white-space:nowrap;font-size:12px}.index-tape span b{margin-left:4px}.market-strip>button{padding:7px 10px;border:1px solid var(--border);border-radius:5px;background:var(--surface2);color:var(--text);cursor:pointer}.market-search{position:relative;width:230px}.market-search input{width:100%;padding:7px 9px;border:1px solid var(--border);border-radius:5px;background:var(--surface2);color:var(--text)}.market-search>div{position:absolute;top:36px;left:0;right:0;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);max-height:340px;overflow:auto}.market-search>div:empty{display:none}.market-search>div button{display:flex;justify-content:space-between;width:100%;padding:9px;border:0;border-bottom:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer}.market-search small{color:var(--mute)}
.stock-modal{position:fixed;inset:0;z-index:9500;display:none;align-items:center;justify-content:center;padding:18px;background:rgba(5,10,18,.65)}.stock-modal.open{display:flex}.stock-modal>section{width:min(1000px,100%);max-height:94vh;overflow:auto;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.stock-modal header,.market-panel header{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--border);font-weight:800}.stock-modal header button,.market-panel header button{border:0;background:transparent;color:var(--mute);font-size:22px;cursor:pointer}#sm-quote{display:flex;align-items:baseline;gap:14px;padding:16px}#sm-quote>b{font-size:30px}#sm-quote small{margin-left:auto;color:var(--mute)}.k-tabs,.market-tabs{display:flex;gap:6px;padding:0 16px 10px}.k-tabs button,.market-tabs button{padding:7px 13px;border:1px solid var(--border);border-radius:5px;background:var(--surface2);color:var(--text);cursor:pointer}.k-tabs button.on,.market-tabs button.on{border-color:var(--up);color:var(--up)}#sm-chart{padding:0 12px 12px}.k-svg{display:block;width:100%;height:auto;min-height:300px}.k-svg .grid line{stroke:var(--border)}.k-svg .grid text,.k-svg>text{fill:var(--mute);font-size:11px}
.market-panel{position:fixed;right:0;top:0;bottom:0;z-index:9200;display:none;width:min(560px,100%);overflow:auto;background:var(--surface);box-shadow:-12px 0 40px rgba(0,0,0,.24)}.market-panel.open{display:block}.market-table{width:100%;border-collapse:collapse}.market-table th,.market-table td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:right}.market-table th:first-child,.market-table td:first-child{text-align:left}.market-table tr{cursor:pointer}.market-table td small{display:block;color:var(--mute)}
@media(max-width:760px){.index-tape span:nth-child(n+4){display:none}.market-search{width:150px}#sm-quote{flex-wrap:wrap}#sm-quote small{width:100%;margin:0}.market-strip{gap:7px}.market-strip>button{font-size:0}.market-strip>button:after{content:'榜单';font-size:12px}}
.local-notice[data-build="LOCAL-FRONTEND"]{display:none!important}

.public-tool{min-height:100vh;background:var(--bg);color:var(--text);padding:18px}.public-tool>header{max-width:1180px;margin:auto;display:flex;align-items:center;gap:18px;border-bottom:1px solid var(--border);padding:12px 0}.public-tool>header>a{font-size:18px;font-weight:900;color:var(--up)}.public-tool h1{font-size:22px;margin:0}.public-tool header p,.tool-note{margin:3px 0;color:var(--mute);font-size:12px}.public-tool header button,.tool-controls button,.weight-box button{margin-left:auto;border:0;background:var(--up);color:#fff;padding:9px 14px;border-radius:6px;cursor:pointer}.public-tool>nav{max-width:1180px;margin:12px auto;display:flex;gap:6px;overflow:auto}.public-tool>nav a{white-space:nowrap;padding:7px 10px;background:var(--surface);border:1px solid var(--border);border-radius:6px}.public-tool>#tool-body{max-width:1180px;margin:auto}.tool-cards{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin:12px 0}.tool-cards article{background:var(--surface);border:1px solid var(--border);padding:12px;border-radius:7px}.tool-cards span{display:block;color:var(--mute);font-size:12px}.tool-cards b{font-size:22px}.tool-table{overflow:auto;background:var(--surface);border:1px solid var(--border)}.tool-table table{width:100%;border-collapse:collapse}.tool-table th,.tool-table td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--border);white-space:nowrap}.stock-link{border:0;background:none;color:var(--text);font-weight:700;cursor:pointer}.up{color:var(--up)!important}.dn{color:var(--down)!important}.tool-controls{display:flex;gap:8px;align-items:end;flex-wrap:wrap;background:var(--surface);padding:12px;border:1px solid var(--border);margin-bottom:10px}.tool-controls label{font-size:11px;color:var(--mute)}.tool-controls input,.weight-box input{display:block;padding:9px;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:5px}.index-row{display:flex;gap:14px;overflow:auto;padding:10px 0}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.calendar-grid>*{padding:12px;background:var(--surface);border:1px solid var(--border);min-height:42px}.calendar-grid span small{display:block;color:var(--mute);font-size:10px}.calendar-grid .rest{opacity:.5}.calendar-grid .today{border-color:var(--up)}.reason-list,.term-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.reason-list article,.term-grid article,.ai-review,.weight-box{background:var(--surface);border:1px solid var(--border);padding:14px;border-radius:7px}.reason-list article span{float:right}.reason-list p,.term-grid p{color:var(--mute)}.ai-review{line-height:1.8}.public-tool>footer{max-width:1180px;margin:24px auto;color:var(--mute);font-size:11px}@media(max-width:700px){.tool-cards{grid-template-columns:repeat(2,1fr)}.reason-list,.term-grid{grid-template-columns:1fr}.public-tool{padding:8px}}
/* The global index ribbon was removed; stock dialogs remain available. */
.market-strip{display:none!important}
.fph .idxc{display:none!important}
/* Unified screenshot-inspired content layout. Navigation remains owned by the project. */
.app{min-height:100vh}.app .main{width:100%;max-width:1280px;margin:0 auto;padding:0 18px 36px}.app .main>*{max-width:1180px;margin-left:auto;margin-right:auto}.app .pgw,.app .pg,.app .feature,.app .research,.app .tool-page{width:100%;max-width:1180px}.app .pgb,.app .feature-body,.app .research-body{font-size:14px;line-height:1.7}.app h1,.app h2,.app h3{line-height:1.35}.app h1{font-size:24px}.app h2{font-size:19px}.app h3{font-size:16px}.app .card,.app .panel,.app .box,.app .table-wrap,.app .pgw,.app .hero{border-radius:8px}.app .card,.app .panel,.app .box{padding:16px}.app table{font-size:13px}.app th,.app td{padding:10px 12px}.app .muted,.app small{font-size:12px}@media(max-width:700px){.app .main{padding:0 10px 24px}.app h1{font-size:21px}.app h2{font-size:17px}.app .pgb,.app .feature-body,.app .research-body{font-size:13px}.app .card,.app .panel,.app .box{padding:12px}}
/* Stock archive and performance pages */
body:has(.tw) .app .pgw,body:has(.tw) .app .main{max-width:1240px}body:has(.tw) .app .tw{border:1px solid var(--border);border-radius:8px;background:var(--surface);overflow:auto}body:has(.tw) .app .tw table{font-size:14px}body:has(.tw) .app .tw th,body:has(.tw) .app .tw td{padding:11px 14px}body:has(.tw) .app .tw tbody tr:hover{background:var(--surface2)}body:has(.tw) .app .about{font-size:14px;line-height:1.8}body:has(.tw) .app h2{font-size:20px;margin:18px 0 10px}@media(max-width:700px){body:has(.tw) .app .tw table{font-size:13px}body:has(.tw) .app .tw th,body:has(.tw) .app .tw td{padding:9px 10px}}
/* Workbench layout */
.dsk{width:100%;max-width:1240px;margin:0 auto;display:grid;grid-template-columns:300px minmax(0,1fr) 320px;gap:12px}.dskl,.dskr,.dski{min-width:0}.dskl,.dskr,.dski{border:1px solid var(--border);border-radius:8px;background:var(--surface)}.dgqw input{height:42px;font-size:14px}.dtabs b{font-size:13px;padding:9px 10px}.dlist,.djr{font-size:14px}.dskr{overflow:hidden}.dski{font-size:14px}.dski h2,.dski h3{font-size:17px}.dski small{font-size:12px}@media(max-width:1050px){.dsk{grid-template-columns:250px minmax(0,1fr)}.dski{grid-column:1/-1}}@media(max-width:700px){.dsk{display:block}.dskl,.dskr,.dski{margin-bottom:10px}.dskl{max-height:none}.dskr{min-height:420px}}
/* Forecast list page */
body:has(.hyrate) .app .pgw{max-width:1180px;margin:0 auto}body:has(.hyrate) .app .pgh{padding:14px 18px;border-bottom:1px solid var(--border)}body:has(.hyrate) .app .ti b{font-size:22px}body:has(.hyrate) .app .ti small{font-size:13px}body:has(.hyrate) .app .forecast-row{padding:15px 18px;border-radius:8px}body:has(.hyrate) .app .forecast-head{font-size:14px}body:has(.hyrate) .app .forecast-head b{font-size:16px}body:has(.hyrate) .app .forecast-chip{font-size:13px;padding:8px 11px}body:has(.hyrate) .app .reason-list li{font-size:13px}@media(max-width:700px){body:has(.hyrate) .app .ti b{font-size:19px}body:has(.hyrate) .app .forecast-row{padding:12px}body:has(.hyrate) .app .forecast-chip{font-size:12px}}
