:root{--bg: #f4f6fb;--bg-soft: #ffffff;--surface: rgba(255, 255, 255, .72);--surface-solid: #ffffff;--border: rgba(17, 24, 39, .08);--text: #0f172a;--text-soft: #475569;--text-faint: #94a3b8;--primary: #6366f1;--primary-2: #8b5cf6;--accent: #06b6d4;--grad: linear-gradient(135deg, #6366f1 0%, #8b5cf6 45%, #06b6d4 100%);--grad-soft: linear-gradient(135deg, rgba(99,102,241,.12), rgba(6,182,212,.12));--ok: #10b981;--warn: #f59e0b;--danger: #ef4444;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06), 0 2px 8px rgba(15, 23, 42, .05);--shadow-md: 0 8px 30px rgba(15, 23, 42, .1);--shadow-lg: 0 20px 60px rgba(15, 23, 42, .16);--radius: 18px;--radius-sm: 12px;--maxw: 1120px;--ease: cubic-bezier(.4, 0, .2, 1)}[data-theme=dark]{--bg: #070a14;--bg-soft: #0d1222;--surface: rgba(20, 27, 45, .62);--surface-solid: #111729;--border: rgba(255, 255, 255, .09);--text: #e8edf7;--text-soft: #aab4c8;--text-faint: #6b7689;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 8px 30px rgba(0, 0, 0, .45);--shadow-lg: 0 24px 70px rgba(0, 0, 0, .6)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,Hiragino Sans GB,Roboto,Helvetica,Arial,sans-serif;color:var(--text);background:var(--bg);line-height:1.6;min-height:100vh;-webkit-font-smoothing:antialiased;overflow-x:hidden}code{font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.9em}::selection{background:#6366f14d}.bg-orbs{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;overflow:hidden;pointer-events:none}.bg-orbs span{position:absolute;border-radius:50%;filter:blur(70px);opacity:.5;background:var(--grad);animation:drift 22s var(--ease) infinite alternate}.bg-orbs span:nth-child(1){width:46vw;height:46vw;top:-12vw;left:-10vw}.bg-orbs span:nth-child(2){width:38vw;height:38vw;bottom:-12vw;right:-8vw;animation-delay:-6s;opacity:.4}.bg-orbs span:nth-child(3){width:30vw;height:30vw;top:30%;right:20%;animation-delay:-12s;opacity:.35;background:linear-gradient(135deg,#06b6d4,#3b82f6)}.bg-orbs span:nth-child(4){width:26vw;height:26vw;bottom:18%;left:12%;animation-delay:-3s;opacity:.3;background:linear-gradient(135deg,#f472b6,#8b5cf6)}@keyframes drift{0%{transform:translateZ(0) scale(1)}to{transform:translate3d(4vw,3vw,0) scale(1.18)}}[data-theme=dark] .bg-orbs span{opacity:.28}.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:16px;padding:9px clamp(14px,4vw,36px);background:var(--surface);backdrop-filter:blur(16px) saturate(160%);-webkit-backdrop-filter:blur(16px) saturate(160%);border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);font-weight:700;font-size:18px;letter-spacing:.3px}.brand-mark{width:30px;height:30px;border-radius:9px;object-fit:cover;box-shadow:var(--shadow-sm);background:var(--surface)}.brand-text{background:linear-gradient(135deg,#6366f1,#8b5cf6);-webkit-background-clip:text;background-clip:text;color:transparent;white-space:nowrap}.brand-slogan{font-size:12.5px;font-weight:500;color:var(--text-faint);margin-left:10px;padding-left:10px;border-left:1px solid var(--border);white-space:nowrap}.topnav{display:flex;gap:6px;margin-left:auto}.topnav a{text-decoration:none;color:var(--text-soft);font-size:14px;font-weight:600;padding:8px 14px;border-radius:999px;transition:all .2s var(--ease)}.topnav a:hover{color:var(--text);background:#6366f114}.topnav a.active{color:#fff;background:var(--grad);box-shadow:var(--shadow-sm)}.icon-btn{width:38px;height:38px;border-radius:12px;border:1px solid var(--border);background:var(--surface-solid);color:var(--text-soft);cursor:pointer;display:grid;place-items:center;transition:all .2s var(--ease)}.icon-btn:hover{color:var(--text);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.icon-btn svg{width:19px;height:19px}.theme-toggle{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 14px;border-radius:12px;border:1px solid var(--border);background:var(--surface-solid);color:var(--text-soft);cursor:pointer;font-size:13px;font-weight:600;transition:all .2s var(--ease);white-space:nowrap}.theme-toggle:hover{color:var(--text);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.theme-toggle svg{width:18px;height:18px}.theme-toggle span{line-height:1}.view{max-width:var(--maxw);margin:0 auto;padding:clamp(20px,4vw,40px) clamp(14px,4vw,36px) 60px;min-height:60vh}.footer{text-align:center;color:var(--text-faint);font-size:13px;padding:26px 16px 40px;display:flex;gap:8px;justify-content:center;align-items:center}.footer .dot{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 4px #10b9812e}.footer code{background:var(--surface);padding:1px 6px;border-radius:6px;border:1px solid var(--border)}.hero{padding:clamp(12px,2.5vw,22px) 0 clamp(8px,1.5vw,14px);text-align:center}.hero-left{max-width:720px;margin:0 auto}.hero h1{font-size:clamp(22px,5vw,32px);line-height:1.15;margin:0 0 4px;font-weight:800;letter-spacing:-.5px}.hero-slogan{margin:0 0 10px;font-size:clamp(13px,2.2vw,15px);color:var(--text-soft)}.hero-qr{display:inline-flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);margin-bottom:10px;transition:transform .2s var(--ease),box-shadow .2s var(--ease)}.hero-qr:hover{transform:translateY(-1px);box-shadow:var(--shadow)}.hero-qr .mp-qr{width:92px;height:92px;border-radius:10px;background:#fff;padding:5px;box-shadow:var(--shadow-sm);pointer-events:none}.hero-qr .mp-title{font-size:12px;font-weight:600;color:var(--text-soft)}.qr-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:grid;place-items:center;background:#080b1ab8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:20px}.qr-lightbox[hidden]{display:none}.qr-lightbox-inner{position:relative;text-align:center}.qr-lightbox-inner img{width:min(72vw,300px);height:min(72vw,300px);border-radius:16px;background:#fff;padding:12px;box-shadow:0 20px 60px #0006}.qr-lightbox-inner p{color:#fff;font-size:14px;margin:14px 0 0;opacity:.9}.qr-lightbox-close,#qr-lightbox-close{position:absolute;top:-14px;right:-14px;width:36px;height:36px;border-radius:50%;border:none;background:#fff;color:#222;font-size:22px;line-height:1;cursor:pointer;box-shadow:0 6px 18px #0000004d}.group-title{display:flex;align-items:center;gap:10px;margin:18px 4px 12px;font-size:15px;font-weight:700;color:var(--text-soft);letter-spacing:.4px}.group-title:after{content:"";flex:1;height:1px;background:var(--border)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:14px}.card{position:relative;text-align:center;cursor:pointer;border:1px solid var(--border);background:var(--surface);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius);padding:16px;overflow:hidden;transition:transform .28s var(--ease),box-shadow .28s var(--ease),border-color .28s var(--ease)}.card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s var(--ease);background:radial-gradient(420px circle at var(--mx,50%) var(--my,0%),rgba(99,102,241,.1),transparent 60%)}.card:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg);border-color:transparent}.card:hover:before{opacity:1}.card-top{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px}.card-ico{position:relative;width:44px;height:44px;flex:none;border-radius:13px;display:grid;place-items:center;font-size:26px;line-height:1;background:transparent;color:inherit;box-shadow:none}.card-ico svg{width:23px;height:23px}.corner-badge{position:absolute;top:8px;right:8px;z-index:2;font-size:10px;font-weight:700;line-height:1;padding:3px 9px;border-radius:999px;white-space:nowrap;background:#f59e0b29;color:#d97706;box-shadow:0 0 0 2px var(--surface)}.card h3{margin:0;font-size:15px;font-weight:700;color:var(--text);text-align:center}.card p{margin:0;font-size:12px;color:var(--text-soft);line-height:1.45}.card .card-go{display:none}.card .card-go svg{width:16px;height:16px;transition:transform .2s var(--ease)}.card:hover .card-go svg{transform:translate(4px)}.module-head{display:flex;align-items:center;gap:14px;margin-bottom:22px;flex-wrap:wrap}.module-head .back{width:40px;height:40px;border-radius:12px;border:1px solid var(--border);background:var(--surface-solid);color:var(--text-soft);cursor:pointer;display:grid;place-items:center;transition:all .2s var(--ease);flex:none}.module-head .back:hover{color:var(--text);transform:translate(-2px);box-shadow:var(--shadow-sm)}.module-head .back svg{width:20px;height:20px}.module-head .m-ico{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;color:var(--primary-2);background:var(--grad-soft);border:1px solid var(--border);box-shadow:none;flex:none}.module-head .m-ico svg{width:24px;height:24px}.module-head h2{margin:0;font-size:22px;font-weight:800}.module-head .m-sub{margin:2px 0 0;font-size:13px;color:var(--text-soft)}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:18px;border-bottom:1px solid var(--border)}.tab{border:none;background:none;cursor:pointer;padding:10px 16px;font-size:14px;font-weight:600;color:var(--text-soft);border-bottom:2px solid transparent;transition:all .2s var(--ease);margin-bottom:-1px}.tab:hover{color:var(--text)}.tab.active{color:var(--primary-2);border-bottom-color:var(--primary-2)}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:18px}.input,.select{border:1px solid var(--border);background:var(--surface-solid);color:var(--text);border-radius:12px;padding:10px 14px;font-size:14px;outline:none;transition:all .2s var(--ease);min-width:130px}.input:focus,.select:focus{border-color:var(--primary);box-shadow:0 0 0 3px #6366f12e}.btn{border:none;cursor:pointer;border-radius:12px;padding:10px 18px;font-size:14px;font-weight:700;color:#fff;background:var(--grad);box-shadow:var(--shadow-sm);transition:all .2s var(--ease)}.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn:active{transform:translateY(0)}.btn--ghost{background:var(--surface-solid);color:var(--text-soft);border:1px solid var(--border);box-shadow:none}.btn--ghost:hover{color:var(--text)}.toolbar .spacer{flex:1}.pager{display:flex;gap:8px;align-items:center;justify-content:center;margin-top:18px}.pager .btn{padding:8px 14px}.pager span{color:var(--text-faint);font-size:13px}.row-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}.tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:16px;transition:transform .2s var(--ease),box-shadow .2s var(--ease)}.tile:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}.tile .t-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.tile h4{margin:0;font-size:15.5px;font-weight:700;color:var(--text)}.tile .t-date{font-size:12.5px;color:var(--text-faint);margin-top:4px}.tile .t-meta{font-size:12.5px;color:var(--text-soft);margin-top:8px}.badge{font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;white-space:nowrap}.badge--soon{background:#f59e0b29;color:#d97706}.badge--hot{background:#ef444424;color:#dc2626}.badge--ok{background:#10b98129;color:#059669}.badge--faint{background:#94a3b82e;color:var(--text-faint)}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}table.tbl{width:100%;border-collapse:collapse;font-size:14px}table.tbl th,table.tbl td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}table.tbl th{font-size:12.5px;color:var(--text-faint);font-weight:700;text-transform:none;position:sticky;top:0;background:var(--surface-solid)}table.tbl tbody tr{transition:background .15s var(--ease)}table.tbl tbody tr:hover{background:var(--grad-soft)}table.tbl td.num{text-align:right;font-variant-numeric:tabular-nums}.up{color:#dc2626;font-weight:700}.down{color:#059669;font-weight:700}.flat{color:var(--text-faint)}.chart-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 18px 8px}.chart-card h4{margin:0 0 12px;font-size:14px;color:var(--text-soft);font-weight:700}.bars{display:flex;align-items:flex-end;gap:10px;height:200px;padding-top:10px}.bar-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0}.bar{width:100%;max-width:34px;border-radius:8px 8px 4px 4px;background:var(--grad);transition:height .6s var(--ease);position:relative}.bar-col:hover .bar{filter:brightness(1.12)}.bar-val{font-size:12px;font-weight:700;color:var(--text)}.bar-lab{font-size:11.5px;color:var(--text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.spark{width:100%;height:200px}.spark path.line{fill:none;stroke:url(#lg);stroke-width:2.4}.spark circle{fill:var(--primary)}.svg-defs{position:absolute;width:0;height:0}.skeleton{padding:10px 0}.sk-bar{height:14px;border-radius:7px;margin:10px 0;background:linear-gradient(90deg,var(--surface-solid) 25%,var(--border) 37%,var(--surface-solid) 63%);background-size:400% 100%;animation:shimmer 1.3s infinite}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.state{text-align:center;padding:50px 20px;max-width:460px;margin:20px auto}.state-ico{width:60px;height:60px;margin:0 auto 16px;border-radius:18px;display:grid;place-items:center;background:var(--grad-soft);color:var(--primary-2)}.state-ico svg{width:30px;height:30px}.state h3{margin:0 0 8px;font-size:18px}.state p{margin:0;color:var(--text-soft);font-size:14px}.state-tag{display:inline-block;margin-top:14px;font-size:12px;font-weight:700;padding:4px 12px;border-radius:999px;background:var(--surface-solid);border:1px solid var(--border);color:var(--text-faint)}.toast-box{position:fixed;right:18px;bottom:20px;z-index:200;display:flex;flex-direction:column;gap:10px}.toast{display:flex;align-items:center;gap:9px;padding:11px 16px;border-radius:12px;background:var(--surface-solid);border:1px solid var(--border);box-shadow:var(--shadow-lg);font-size:13.5px;color:var(--text);transform:translate(120%);opacity:0;transition:all .32s var(--ease);max-width:320px}.toast.show{transform:translate(0);opacity:1}.toast svg{width:17px;height:17px;flex:none;color:var(--primary-2)}.toast--error svg{color:var(--danger)}.toast span{overflow:hidden;text-overflow:ellipsis}.view{animation:fade .35s var(--ease)}@keyframes fade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}@media (max-width: 720px){.card-grid{grid-template-columns:1fr 1fr}.row-grid{grid-template-columns:1fr}.brand{font-size:16px;gap:8px}.brand-slogan{display:none}.topbar{gap:8px}.topnav{display:flex;margin-left:auto;gap:2px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.topnav::-webkit-scrollbar{display:none}.topnav a{padding:7px 9px;font-size:13px;white-space:nowrap}.topnav a.nav-rss{display:none}.theme-toggle{padding:0 10px;font-size:12px}}@media (max-width: 460px){.card-grid{grid-template-columns:repeat(3,1fr);gap:8px}.card{padding:10px}.corner-badge{top:6px;right:6px;font-size:9px;padding:2px 7px}.card p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:11px;line-height:1.4;min-height:0;text-align:center}.mini-promo{flex-direction:column;text-align:center}.mini-promo .mp-qr{width:100px;height:100px}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--text-faint)}.search-wrap{position:relative;max-width:560px;margin:12px auto 6px}.search-wrap input{width:100%;padding:14px 44px;border-radius:14px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:15px;outline:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:border-color .2s,box-shadow .2s}.search-wrap input:focus{border-color:var(--primary);box-shadow:0 0 0 4px #6366f124}.search-wrap .s-ico{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:var(--text-faint);display:flex}.search-wrap .s-clear{position:absolute;right:12px;top:50%;transform:translateY(-50%);border:none;background:transparent;color:var(--text-faint);cursor:pointer;font-size:18px;display:none}.cat-pills{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:4px 0 10px}.cat-pill{padding:7px 15px;border-radius:999px;cursor:pointer;font-size:13px;border:1px solid var(--border);background:var(--surface);color:var(--text-soft);transition:all .18s}.cat-pill:hover,.cat-pill.active{color:#fff;background:var(--grad);border-color:transparent}.qr-stage{display:flex;flex-direction:column;align-items:center;gap:14px}.qr-img{background:#fff;padding:14px;border-radius:16px;box-shadow:var(--shadow);width:220px;height:220px;display:grid;place-items:center}.qr-img canvas,.qr-img img{max-width:100%;max-height:100%}.qr-opt{display:flex;gap:10px;flex-wrap:wrap;align-items:center;justify-content:center}.qr-opt label{font-size:13px;color:var(--text-soft);display:flex;align-items:center;gap:6px}.ico-preview{max-width:100%;border-radius:12px;background:var(--bg-2);padding:10px}.tool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.kv{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px dashed var(--border);font-size:14px}.kv span:first-child{color:var(--text-faint)}.kv b{font-weight:600}.stat-row{display:flex;gap:14px;flex-wrap:wrap}.stat-row .s{background:var(--bg-2);border-radius:12px;padding:12px 16px;min-width:84px;text-align:center}.stat-row .s b{display:block;font-size:22px}.stat-row .s span{font-size:12px;color:var(--text-faint)}.choice-list{display:flex;flex-wrap:wrap;gap:10px}.fun-result{margin:18px auto;padding:26px;border-radius:18px;text-align:center;background:var(--grad-soft);font-size:28px;font-weight:700;min-height:40px}.io-wrap{display:flex;flex-direction:column;gap:10px;max-width:820px}.lbl{font-size:13px;font-weight:600;color:var(--text-soft);margin-top:2px}.tarea{width:100%;border:1px solid var(--border);background:var(--surface-solid);color:var(--text);border-radius:12px;padding:12px 14px;font-size:14px;line-height:1.6;outline:none;resize:vertical;font-family:inherit}.tarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #6366f12e}.tarea--mono{font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:13px}.res-box{margin-top:4px}.hint{font-size:12px;color:var(--text-faint)}.copy-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.seg{display:inline-flex;border:1px solid var(--border);border-radius:12px;overflow:hidden}.seg button{border:none;background:var(--surface-solid);color:var(--text-soft);padding:9px 14px;font-size:13px;font-weight:600;cursor:pointer}.seg button.active{background:var(--grad);color:#fff}.chk{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text-soft);cursor:pointer;-webkit-user-select:none;user-select:none}.chk input{accent-color:var(--primary);width:15px;height:15px;cursor:pointer}.mini-promo{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:34px 4px 6px;padding:16px 18px;border-radius:var(--radius);border:1px solid var(--border);background:var(--grad-soft);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.mini-promo .mp-title{font-size:15px;font-weight:700;color:var(--text);margin-bottom:4px}.mini-promo .mp-text p{margin:0;font-size:13px;color:var(--text-soft)}.mini-promo .mp-qr{width:84px;height:84px;flex:none;border-radius:12px;background:#fff;padding:5px;box-shadow:var(--shadow-sm)}@media (max-width: 720px){.topbar{padding:8px 14px}.hero-left{width:100%}.hero-qr .mp-qr{width:96px;height:96px}.card-grid{grid-template-columns:repeat(3,1fr);gap:10px}.card{padding:12px}.card-ico{width:34px;height:34px;font-size:22px}.card-ico svg{width:18px;height:18px}.card h3{font-size:13.5px}.card p{font-size:11px;min-height:26px}.card .card-go{display:none}.toolbar{flex-direction:column;align-items:stretch}.toolbar .input,.toolbar .select{width:100%}.tool-grid{grid-template-columns:1fr}}.card{display:block;text-decoration:none;color:inherit}.card:hover{text-decoration:none}
