*{box-sizing:border-box;margin:0;padding:0}
:root{--bg:#f3f6fb;--bg-soft:#e9eef7;--card:#ffffff;--border:#e2e9f3;--text:#1b2537;--muted:#64748f;--faint:#94a3b8;--primary:#1b5cc6;--primary-weak:#e8effc;--accent:#0e9f9f;--accent-weak:#e2f6f6;--up:#d93a3a;--up-weak:#fdeeee;--down:#0a9d6d;--down-weak:#e6f7f1;--warn:#d97706;--warn-weak:#fdf3e3;--shadow:0 1px 2px rgba(16,32,64,.05),0 6px 20px rgba(16,32,64,.06);--shadow-lg:0 8px 30px rgba(16,32,64,.12);--radius:14px;--radius-sm:9px;--sidebar-w:236px;--topbar-h:58px;--font:"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
html{scroll-behavior:smooth}
body{font-family:var(--font);background:var(--bg);color:var(--text);font-size:15.2px;line-height:1.62;-webkit-font-smoothing:antialiased}
::selection{background:var(--primary);color:#fff}
.app{display:flex;min-height:100vh}
.sidebar{width:var(--sidebar-w);background:linear-gradient(180deg,var(--card),var(--bg-soft));border-right:1px solid var(--border);position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;z-index:50}
.brand{display:flex;align-items:center;gap:10px;padding:18px 18px 14px;border-bottom:1px solid var(--border)}
.brand .logo{width:36px;height:36px;flex:none}
.brand .name{font-size:17px;font-weight:700}
.brand .sub{font-size:11px;color:var(--muted);margin-top:1px}
.nav{flex:1;padding:10px 12px;overflow-y:auto}
.nav-group{font-size:11px;color:var(--faint);padding:12px 10px 4px;letter-spacing:1px}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:10px;color:var(--muted);cursor:pointer;font-size:14px;margin-bottom:2px;border:1px solid transparent;transition:all .15s;user-select:none}
.nav-item svg{width:17px;height:17px;flex:none}
.nav-item:hover{background:var(--bg-soft);color:var(--text)}
.nav-item.active{background:var(--primary-weak);color:var(--primary);border-color:color-mix(in srgb,var(--primary) 22%,transparent);font-weight:600}
.nav-item .new-tag{margin-left:auto;font-size:10px;background:var(--accent-weak);color:var(--accent);padding:1px 6px;border-radius:20px;font-weight:600}
.sidebar-foot{padding:12px 16px;border-top:1px solid var(--border);font-size:11px;color:var(--faint)}
.main{flex:1;margin-left:var(--sidebar-w);min-width:0}
.topbar{height:var(--topbar-h);display:flex;align-items:center;gap:12px;padding:0 22px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--card) 85%,transparent);backdrop-filter:blur(8px);position:sticky;top:0;z-index:40}
.topbar .hamburger{display:none}
.topbar .title{font-size:16px;font-weight:700}
.topbar .spacer{flex:1}
.icon-btn{width:34px;height:34px;border-radius:9px;border:1px solid var(--border);background:var(--card);color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s}
.icon-btn:hover{color:var(--primary);border-color:var(--primary)}
.icon-btn svg{width:16px;height:16px}
.content{max-width:1180px;margin:0 auto;padding:22px 24px 80px}
.view{display:none}
.view.active{display:block;animation:fadein .18s ease}
@keyframes fadein{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:18px;overflow:hidden}
.card-h{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--border);flex-wrap:wrap}
.card-h .ct{font-size:15px;font-weight:700}
.card-h .cd{font-size:12px;color:var(--muted)}
.card-h .spacer{flex:1}
.card-b{padding:16px 18px}
.card-b.flush{padding:0}
.hint{font-size:12px;color:var(--muted)}
.hint b{color:var(--text)}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));gap:12px}
.stat{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:13px 16px;box-shadow:var(--shadow)}
.stat .k{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}
.stat .v{font-size:21px;font-weight:750;margin-top:3px;font-variant-numeric:tabular-nums}
.stat .s{font-size:11px;color:var(--faint);margin-top:1px}
.stat.hero{background:linear-gradient(135deg,var(--primary),var(--accent));border:none}
.stat.hero .k,.stat.hero .v,.stat.hero .s{color:#fff}
.stat.hero-warm{background:linear-gradient(135deg,#be123c,#d64545 55%,#f59e0b 115%);border:none;box-shadow:0 10px 28px rgba(190,18,60,.28)}
.stat.hero-warm .k,.stat.hero-warm .v,.stat.hero-warm .s{color:#fff}
.table-wrap{overflow-x:auto}
table.dt{width:100%;border-collapse:collapse;font-size:13.2px;white-space:nowrap}
table.dt th{position:sticky;top:0;background:var(--bg-soft);color:var(--muted);font-weight:600;text-align:right;padding:9px 12px;border-bottom:1px solid var(--border);cursor:pointer;user-select:none;font-size:12.2px}
table.dt th.no-sort{cursor:default}
table.dt th:first-child,table.dt td:first-child{text-align:left}
table.dt td{padding:8px 12px;border-bottom:1px solid color-mix(in srgb,var(--border) 55%,transparent);text-align:right;font-variant-numeric:tabular-nums}
table.dt tbody tr:hover td{background:color-mix(in srgb,var(--primary-weak) 45%,transparent)}
.table-foot{display:flex;align-items:center;gap:10px;padding:10px 14px;flex-wrap:wrap}
.table-foot .info{font-size:12px;color:var(--muted)}
.pager{margin-left:auto;display:flex;gap:6px}
.up{color:var(--up)}
.down{color:var(--down)}
.badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:2px 8px;border-radius:20px;background:var(--bg-soft);color:var(--muted)}
.badge.b-primary{background:var(--primary-weak);color:var(--primary)}
.badge.b-accent{background:var(--accent-weak);color:var(--accent)}
.badge.b-warn{background:var(--warn-weak);color:var(--warn)}
.dot{width:7px;height:7px;border-radius:50%;background:var(--faint);display:inline-block}
.dot.live{background:var(--up);animation:pulse 1.2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.input,.select{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);padding:8px 12px;font-size:13.5px;font-family:var(--font);outline:none}
.input:focus,.select:focus{border-color:var(--primary)}
.input.w-sm{width:110px}.input.w-md{width:190px}
.btn{display:inline-flex;align-items:center;gap:6px;background:var(--primary);color:#fff;border:none;border-radius:var(--radius-sm);padding:8px 16px;font-size:13.5px;font-weight:600;cursor:pointer;font-family:var(--font)}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn.ghost{background:transparent;color:var(--primary);border:1px solid var(--primary)}
.btn.soft{background:var(--primary-weak);color:var(--primary);border:none}
.btn.sm{padding:5px 11px;font-size:12.5px}
.chart{width:100%;height:320px}
.chart.sm{height:240px}
.chart.lg{height:420px}
.chart-box{padding:8px 10px 12px}
.chart-title{font-size:13px;font-weight:700;color:var(--muted);padding:6px 8px 0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.timeline{position:relative;padding-left:18px}
.timeline::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:var(--border)}
.tl-item{position:relative;padding:8px 0 14px 14px}
.tl-item::before{content:"";position:absolute;left:-17px;top:15px;width:10px;height:10px;border-radius:50%;background:var(--primary);border:2px solid var(--card)}
.tl-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.tl-date{font-size:12px;color:var(--muted)}
.tl-title{font-weight:650}
.tl-meta{font-size:12px;color:var(--muted);margin-top:2px}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal .wd{text-align:center;font-size:11.5px;color:var(--faint);padding:4px 0}
.cal .cell{min-height:76px;border:1px solid var(--border);border-radius:10px;padding:5px 7px;background:var(--card)}
.cal .cell.today{border-color:var(--primary)}
.cal .dnum{font-size:12px;color:var(--muted);font-weight:600}
.cal .ev{margin-top:3px;padding:1px 6px;border-radius:6px;font-size:10.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.cal .ev.apply{background:var(--primary-weak);color:var(--primary)}
.cal .ev.list{background:var(--accent-weak);color:var(--accent)}
.cal .ev.release{background:var(--warn-weak);color:var(--warn)}
.cal-legend{display:flex;gap:14px;margin-top:10px;font-size:12px;color:var(--muted);flex-wrap:wrap}
.result{border-radius:var(--radius);padding:16px 18px;border:1px solid var(--border);background:var(--bg-soft)}
.result .rk{font-size:12.5px;color:var(--muted)}
.result .rv{font-size:24px;font-weight:750;font-variant-numeric:tabular-nums}
.result.ok{background:var(--accent-weak)}
.result.warn{background:var(--warn-weak)}
.result-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.faq-item{border-bottom:1px solid var(--border)}
.faq-q{width:100%;text-align:left;background:none;border:none;color:var(--text);font-family:var(--font);font-size:14px;font-weight:600;padding:13px 18px;cursor:pointer;display:flex;align-items:center;gap:8px}
.faq-a{max-height:0;overflow:hidden;transition:max-height .25s;padding:0 18px;font-size:13.5px;color:var(--muted)}
.faq-item.open .faq-a{max-height:420px;padding-bottom:14px}
table.rule{width:100%;border-collapse:collapse;font-size:13.5px}
table.rule th,table.rule td{padding:10px 14px;border-bottom:1px solid var(--border);text-align:left}
table.rule th{color:var(--muted);font-weight:600;width:128px;background:var(--bg-soft)}
.subtabs{display:flex;gap:6px;flex-wrap:wrap}
.subtab{padding:6px 14px;border-radius:20px;border:1px solid var(--border);background:var(--card);color:var(--muted);font-size:12.8px;cursor:pointer;font-family:var(--font)}
.subtab.active{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:600}
.slider-wrap{padding:14px 18px 18px}
input[type=range].replay{width:100%;accent-color:var(--primary);height:26px}
.slider-meta{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:4px}
.radar-head{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:14px 18px}
.kv{display:flex;gap:18px;flex-wrap:wrap}
.kv .kv-item{font-size:12.5px;color:var(--muted)}
.kv .kv-item b{color:var(--text);font-size:14px;margin-left:4px}
.match-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.match-card{border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;background:var(--bg-soft)}
.match-card .mc-name{font-weight:650;font-size:13.5px;display:flex;justify-content:space-between}
.match-card .mc-sim{font-size:11px;color:var(--accent);font-weight:700}
.promo-card{border:1px solid color-mix(in srgb,var(--primary) 24%,var(--border));background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow)}
.promo-icon{flex:none;width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(135deg,var(--primary),var(--accent))}
.promo-icon svg{width:21px;height:21px}
.promo-t{font-weight:750;font-size:15px}
.promo-d{font-size:12.5px;color:var(--muted);margin-top:2px}
.ledger-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:14px}
.ledger-empty{text-align:center;padding:34px 10px;color:var(--muted);font-size:13px}
.tool-icon{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 16%,transparent),color-mix(in srgb,var(--accent) 16%,transparent));color:var(--primary);margin-bottom:8px}
.tool-icon svg{width:19px;height:19px}
.steps{display:grid;grid-template-columns:1fr 1fr;gap:0 26px}
.step{display:flex;gap:12px;padding:11px 0;border-bottom:1px dashed var(--border)}
.s-no{flex:none;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:750;font-size:13px;color:#fff;background:linear-gradient(135deg,var(--primary),var(--accent))}
.s-body b{display:block;font-size:13.8px}
.s-body span{font-size:12.5px;color:var(--muted)}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.grid-2>.card{margin-bottom:0}
.footnote{font-size:12px;color:var(--faint);padding:10px 2px}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
.mt8{margin-top:8px}.mt14{margin-top:14px}.mb8{margin-bottom:8px}.mb14{margin-bottom:14px}
.flex{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.grow{flex:1}
.site-foot{text-align:center;padding:26px 10px 10px;font-size:12px;color:var(--faint);line-height:1.9}
.hero{position:relative;border-radius:22px;overflow:hidden;border:1px solid color-mix(in srgb,var(--primary) 22%,var(--border));background:var(--card);box-shadow:var(--shadow-lg);margin-bottom:14px}
.hero-inner{position:relative;display:grid;grid-template-columns:1.25fr .9fr;gap:18px;padding:46px 44px 42px;align-items:center}
.hero-badge{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;color:var(--primary);background:color-mix(in srgb,var(--primary) 10%,transparent);border:1px solid color-mix(in srgb,var(--primary) 30%,transparent);padding:5px 14px;border-radius:30px}
.hero-title{font-size:clamp(28px,3.6vw,44px);line-height:1.22;font-weight:800;margin:16px 0 12px}
.hero-title em{font-style:normal;background:linear-gradient(100deg,var(--primary),var(--accent));-webkit-background-clip:text;background-clip:text;color:transparent;padding-right:2px}
.hero-sub{color:var(--muted);font-size:15px;max-width:46ch}
.hero-cta{display:flex;gap:12px;margin-top:22px;flex-wrap:wrap}
.hero-note{margin-top:14px;font-size:12px;color:var(--faint)}
.hero-visual{position:relative;height:320px}
.hero-compass{position:absolute;inset:0;margin:auto;width:300px;height:300px;color:var(--text)}
.hero-chip{position:absolute;padding:9px 14px;border-radius:13px;background:color-mix(in srgb,var(--card) 78%,transparent);border:1px solid var(--border);box-shadow:var(--shadow);font-size:12px;color:var(--muted);white-space:nowrap}
.hero-chip b{display:block;font-size:10.5px;color:var(--faint);font-weight:600}
.hero-chip span{font-size:15px;font-weight:750;color:var(--text)}
.orbit{position:absolute;inset:0;margin:auto;border-radius:50%;border:1px dashed color-mix(in srgb,var(--primary) 30%,transparent)}
.orbit.o1{width:250px;height:250px}.orbit.o2{width:300px;height:300px}.orbit.o3{width:348px;height:348px;opacity:.5}
.orbit::before{content:"";position:absolute;top:-4px;left:50%;width:8px;height:8px;border-radius:50%;background:var(--accent)}
.glance-strip{display:flex;align-items:stretch;border:1px solid var(--border);border-radius:13px;overflow:hidden;background:var(--card);box-shadow:var(--shadow)}
.glance-strip .ticker-tag{flex:none;display:flex;align-items:center;padding:0 14px;font-size:12px;font-weight:700;color:#fff;background:linear-gradient(120deg,var(--primary),var(--accent))}
.glance-items{display:flex;flex-wrap:wrap;align-items:center;padding:6px 12px;gap:4px 22px}
.tk-item{display:inline-flex;align-items:baseline;gap:7px;font-size:13px;padding:3px 0}
.tk-item .n{font-weight:650;color:var(--text)}
.tk-item .c{color:var(--faint);font-size:11px}
.tk-item .v{font-weight:700}
.ledger-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:14px}
.ledger-empty{text-align:center;padding:34px 10px;color:var(--muted);font-size:13px}
dialog.sheet{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);color:var(--text);box-shadow:var(--shadow-lg);padding:0;width:min(480px,92vw)}
.form-grid{display:grid;grid-template-columns:96px 1fr;gap:10px 12px;align-items:center}
.form-grid label{font-size:13px;color:var(--muted);text-align:right}
.tool-icon{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 16%,transparent),color-mix(in srgb,var(--accent) 16%,transparent));color:var(--primary);margin-bottom:8px}
.tool-icon svg{width:19px;height:19px}
.tool-t{font-weight:700;font-size:14.5px}
.tool-d{font-size:12px;color:var(--muted);margin-top:3px}
.steps{display:grid;grid-template-columns:1fr 1fr;gap:0 26px}
.step{display:flex;gap:12px;padding:11px 0;border-bottom:1px dashed var(--border)}
.s-no{flex:none;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:750;font-size:13px;color:#fff;background:linear-gradient(135deg,var(--primary),var(--accent))}
.s-body b{display:block;font-size:13.8px}
.s-body span{font-size:12.5px;color:var(--muted)}
#drawer-mask{position:fixed;inset:0;background:rgba(8,14,26,.4);z-index:45;display:none}
#drawer-mask.show{display:block}
.footnote{font-size:12px;color:var(--faint);padding:10px 2px}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
.mt8{margin-top:8px}.mt14{margin-top:14px}.mb8{margin-bottom:8px}.mb14{margin-bottom:14px}
.flex{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.grow{flex:1}
.site-foot{text-align:center;padding:26px 10px 10px;font-size:12px;color:var(--faint);line-height:1.9}
@media(max-width:960px){.sidebar{transform:translateX(-105%);transition:transform .22s;box-shadow:none}.sidebar.open{transform:none;box-shadow:var(--shadow-lg)}.main{margin-left:0}.topbar .hamburger{display:inline-flex}.content{padding:16px 13px 70px}.stat .v{font-size:18px}table.dt{font-size:12.4px}.chart{height:260px}.hero-inner{grid-template-columns:1fr;padding:30px 22px 26px}.hero-visual{height:230px;order:-1}.hero-compass{width:210px;height:210px}.hero-cta .btn{flex:1 1 auto;justify-content:center}.steps{grid-template-columns:1fr}}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--faint) 45%,transparent);border-radius:8px}

/* 暗色主题 */
html[data-theme="dark"]{--bg:#0d1420;--bg-soft:#111b2a;--card:#16202f;--border:#253349;--text:#dbe5f3;--muted:#8394ae;--faint:#5c6c88;--primary:#5b93f0;--primary-weak:#1a2a45;--accent:#2fc6c6;--accent-weak:#10302f;--up:#ef5350;--up-weak:#331d1d;--down:#26b586;--down-weak:#12302a;--warn:#e8a23d;--warn-weak:#33270f;--shadow:0 1px 2px rgba(0,0,0,.3),0 6px 20px rgba(0,0,0,.25);--shadow-lg:0 8px 30px rgba(0,0,0,.45)}

/* 配色方案覆盖 */
html[data-scheme="fashion"]{--primary:#be123c;--primary-weak:#fdf2f4;--accent:#d97706;--accent-weak:#fef3c7}
html[data-scheme="fresh"]{--primary:#0d9488;--primary-weak:#ccfbf1;--accent:#0ea5e9;--accent-weak:#e0f2fe}
html[data-scheme="tech"]{--primary:#1b5cc6;--primary-weak:#e8effc;--accent:#0e9f9f;--accent-weak:#e2f6f6}
html[data-scheme="finance"]{--primary:#1e3a5f;--primary-weak:#e8edf4;--accent:#c9a227;--accent-weak:#fbf3d9}
html[data-scheme="morandi"]{--primary:#78716c;--primary-weak:#f0ebe5;--accent:#a8a29e;--accent-weak:#f5f0eb}
html[data-scheme="macaron"]{--primary:#c97b96;--primary-weak:#fdf0f4;--accent:#7c9cbf;--accent-weak:#e8f0f8}
html[data-theme="dark"][data-scheme="fashion"]{--primary:#fb7185;--primary-weak:#1f1428;--accent:#fbbf24;--accent-weak:#2b1f0a}
html[data-theme="dark"][data-scheme="fresh"]{--primary:#2dd4bf;--primary-weak:#0c1a1a;--accent:#6ee7b7;--accent-weak:#0a1f14}
html[data-theme="dark"][data-scheme="tech"]{--primary:#60a5fa;--primary-weak:#122036;--accent:#22d3ee;--accent-weak:#0a1a20}
html[data-theme="dark"][data-scheme="finance"]{--primary:#93b5e8;--primary-weak:#0f1a28;--accent:#e8c547;--accent-weak:#1a1808}
