:root{--sans: "Geist", -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--mono: "Geist Mono", "SF Mono", ui-monospace, Menlo, monospace}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100vh}body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;letter-spacing:-.011em}::selection{background:color-mix(in srgb,var(--accent) 22%,transparent)}a{color:inherit;text-decoration:none}button{font-family:inherit}h1,h2,h3{letter-spacing:-.02em}h2{font-size:22px;font-weight:650}.container{max-width:1120px;margin:0 auto;padding:0 clamp(20px,4vw,44px)}.muted{color:var(--ink-dim)}.center{text-align:center}.num{font-variant-numeric:tabular-nums}.nav{height:62px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--rule);position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:saturate(180%) blur(12px);backdrop-filter:saturate(180%) blur(12px)}.nav .brand{font-weight:650;font-size:17px;display:flex;align-items:center;gap:10px}.nav .brand img{width:26px;height:26px;border-radius:7px;object-fit:cover}.nav-links{display:flex;align-items:center;gap:20px;font-size:14px}.nav-links a{color:var(--ink-2);transition:color .15s}.nav-links a:hover{color:var(--accent)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 18px;border-radius:10px;font-size:14px;font-weight:550;cursor:pointer;border:1px solid transparent;transition:all .16s ease;white-space:nowrap}.btn-primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 1px 2px #00000014,0 4px 14px color-mix(in srgb,var(--accent) 22%,transparent)}.btn-primary:hover{filter:brightness(1.06);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-ghost{background:var(--bg-card);color:var(--ink)}.btn-ghost:hover{background:var(--rule-2)}.btn-outline{background:transparent;color:var(--ink);border-color:var(--rule-2)}.btn-outline:hover{border-color:var(--accent);color:var(--accent)}.btn-block{width:100%}.btn-lg{padding:13px 26px;font-size:15px;border-radius:12px}.card{background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius);padding:22px;box-shadow:0 1px 2px #11111a0a,0 4px 16px #11111a0a;transition:box-shadow .18s ease,border-color .18s ease}.card-soft{background:var(--bg-soft);box-shadow:none}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 860px){.grid-3,.grid-4{grid-template-columns:1fr 1fr}}@media (max-width: 560px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.field{margin-bottom:16px}.field label{display:block;font-size:13px;font-weight:550;margin-bottom:6px}.input{width:100%;padding:11px 14px;border:1px solid var(--rule-2);border-radius:10px;font-size:15px;background:var(--bg);color:var(--ink);transition:border-color .15s,box-shadow .15s}.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent)}.input::placeholder{color:var(--ink-faint)}.hero{padding:84px 0 64px}.hero h1{font-size:clamp(30px,5vw,46px);line-height:1.12;letter-spacing:-.02em;margin:0 0 18px;font-weight:700;overflow-wrap:break-word}.hero p.lead{font-size:18px;color:var(--ink-dim);max-width:640px;margin:0 0 30px;line-height:1.6}.hero .cta{display:flex;gap:12px;flex-wrap:wrap}@media (max-width: 560px){.hero{padding:56px 0 44px}.hero h1{font-size:32px}}.pill{font-size:12px;padding:4px 11px;border-radius:100px;background:var(--bg-card);color:var(--ink-2);display:inline-flex;align-items:center;gap:5px;border:1px solid var(--rule)}.chip{padding:7px 15px;border-radius:100px;font-size:13px;cursor:pointer;border:1px solid var(--rule-2);color:var(--ink-dim);background:transparent;transition:all .14s ease;white-space:nowrap}.chip:hover{border-color:var(--accent);color:var(--accent)}.chip.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.tag{display:inline-block;font-size:11.5px;padding:2px 9px;border-radius:7px;background:var(--bg-card);color:var(--ink-2)}.badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:3px 9px;border-radius:7px}.badge.ok{color:#16a34a;background:color-mix(in srgb,#16a34a 12%,transparent)}.badge.off{color:var(--ink-dim);background:var(--bg-card)}.price{font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink)}.price-unit{font-size:11px;color:var(--ink-dim);font-weight:400}.kpi{font-size:31px;font-weight:720;letter-spacing:-.025em;font-variant-numeric:tabular-nums}.kpi-lbl{font-size:12.5px;color:var(--ink-dim);margin-top:4px}.model-row{display:flex;align-items:center;justify-content:space-between;padding:13px 4px;border-bottom:1px solid var(--rule);transition:background .14s;border-radius:8px}.model-row:hover{background:var(--bg-soft)}.model-row:last-child{border-bottom:none}.model-name{font-weight:550;font-size:14.5px}.model-meta{font-size:12.5px;color:var(--ink-dim)}.app{display:grid;grid-template-columns:224px 1fr;min-height:100vh}.app-side{background:var(--bg-card);border-right:1px solid var(--rule);padding:18px 12px}.app-side .side-brand{font-weight:650;padding:8px 10px 16px;font-size:15px}.side-link{display:block;padding:9px 12px;border-radius:9px;font-size:14px;color:var(--ink-2);cursor:pointer;transition:all .14s;margin-bottom:2px}.side-link:hover{background:var(--bg);color:var(--ink)}.side-link.on{background:var(--bg);color:var(--accent);font-weight:550;box-shadow:inset 0 0 0 1px var(--rule)}.app-main{padding:30px 34px;max-width:1040px}@media (max-width: 720px){.app{grid-template-columns:1fr}.app-side{display:none}}.toast{position:fixed;top:20px;right:20px;background:var(--ink);color:var(--bg);padding:12px 18px;border-radius:10px;font-size:14px;z-index:100;box-shadow:0 8px 30px #0000002e}.toast.err{background:#ff3b30;color:#fff}.ann-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px;background:#0f172a6b;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.ann-modal{width:min(560px,100%);max-height:min(82vh,720px);overflow:auto;background:var(--bg);color:var(--ink);border:1px solid var(--rule);border-radius:16px;box-shadow:0 24px 80px #0f172a42;animation:annModalIn .18s ease-out}.ann-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:24px 24px 14px;border-bottom:1px solid var(--rule)}.ann-modal-kicker{color:var(--accent);font-size:12px;font-weight:650;margin-bottom:6px}.ann-modal-head h2{margin:0;font-size:21px;line-height:1.25}.ann-modal-close{width:34px;height:34px;flex-shrink:0;border:1px solid var(--rule);border-radius:999px;color:var(--ink-dim);background:var(--bg-soft);cursor:pointer;font-size:22px;line-height:1}.ann-modal-close:hover{color:var(--ink);border-color:var(--rule-2)}.ann-modal-body{display:grid;gap:12px;padding:18px 24px 24px}.ann-modal-item{border:1px solid var(--rule);border-radius:12px;padding:16px;background:var(--bg-soft)}.ann-modal-item-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.ann-modal-item h3{margin:0;min-width:0;font-size:15px;line-height:1.5;overflow-wrap:anywhere}.ann-modal-item p{margin:9px 0 0;color:var(--ink-dim);font-size:14px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere}.ann-modal-time{margin-top:10px;color:var(--ink-dim);font-size:12px}@keyframes annModalIn{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}@media (max-width: 560px){.ann-modal-backdrop{padding:16px;align-items:flex-start}.ann-modal{margin-top:42px;max-height:calc(100vh - 84px)}.ann-modal-head{padding:20px 18px 12px}.ann-modal-body{padding:16px 18px 20px}}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:13px 14px;font-size:13.5px;border-bottom:1px solid var(--rule)}th{color:var(--ink-dim);font-weight:550;font-size:12px;text-transform:uppercase;letter-spacing:.04em}tbody tr{transition:background .14s}tbody tr:hover{background:var(--bg-soft)}tbody tr:last-child td{border-bottom:none}td.num,th.num{font-variant-numeric:tabular-nums}.footer{border-top:1px solid var(--rule);padding:32px 0;color:var(--ink-dim);font-size:13px;margin-top:64px}@keyframes auroraDrift{0%{transform:translateZ(0) scale(1)}50%{transform:translate3d(2%,-2%,0) scale(1.08)}to{transform:translate3d(-2%,1%,0) scale(1.05)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes pillPulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--accent) 30%,transparent)}50%{box-shadow:0 0 0 6px transparent}}.hero{position:relative;overflow:hidden}.hero>div{position:relative;z-index:1;animation:fadeUp .7s cubic-bezier(.22,.61,.36,1) both}.hero:before{content:"";position:absolute;top:-30%;right:-10%;bottom:-30%;left:-10%;z-index:0;pointer-events:none;background:radial-gradient(38% 48% at 20% 28%,color-mix(in srgb,var(--accent) 28%,transparent),transparent 70%),radial-gradient(40% 50% at 82% 18%,color-mix(in srgb,var(--accent) 16%,transparent),transparent 72%),radial-gradient(52% 60% at 62% 82%,color-mix(in srgb,var(--accent) 12%,transparent),transparent 72%);filter:blur(34px);opacity:.7;animation:auroraDrift 18s ease-in-out infinite alternate}.hero .pill{animation:pillPulse 3.2s ease-in-out infinite}html.reveal-on .container section:not(.hero){opacity:0;transform:translateY(24px);transition:opacity .6s ease,transform .65s cubic-bezier(.22,.61,.36,1);will-change:opacity,transform}html.reveal-on .container section:not(.hero).in-view{opacity:1;transform:none}@media (prefers-reduced-motion: reduce){.hero:before,.hero>div,.hero .pill{animation:none}}@keyframes drawerIn{0%{transform:translate(100%)}to{transform:none}}@keyframes maskIn{0%{opacity:0}to{opacity:1}}.drawer-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:90;animation:maskIn .25s ease}.drawer{position:fixed;top:0;right:0;height:100vh;width:min(460px,94vw);background:var(--bg-card, var(--bg));border-left:1px solid var(--rule);box-shadow:-12px 0 40px #0000002e;z-index:91;overflow-y:auto;padding:24px;animation:drawerIn .3s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion: reduce){.drawer,.drawer-mask{animation:none}}.cat-tile{transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.cat-tile:hover{transform:translateY(-4px);border-color:var(--accent);box-shadow:0 10px 30px #0000001a}@media (prefers-reduced-motion: reduce){.cat-tile:hover{transform:none}}.cta-banner{border-radius:var(--radius, 16px);padding:48px 24px;text-align:center;color:#fff;position:relative;overflow:hidden;background:radial-gradient(60% 120% at 15% 10%,color-mix(in srgb,var(--accent) 85%,#000 0%),transparent 60%),linear-gradient(135deg,color-mix(in srgb,var(--accent) 92%,#000 8%),color-mix(in srgb,var(--accent) 60%,#000 40%))}.cta-banner:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(40% 60% at 85% 90%,rgba(255,255,255,.16),transparent 70%)}.cta-inner{position:relative;z-index:1;max-width:640px;margin:0 auto}.btn-cta-primary{background:#fff;color:#111;border:none;box-shadow:0 6px 20px #0000002e}.btn-cta-primary:hover{transform:translateY(-2px)}.btn-cta-ghost{background:#ffffff1f;color:#fff;border:1px solid rgba(255,255,255,.5)}.btn-cta-ghost:hover{background:#fff3}@media (prefers-reduced-motion: reduce){.btn-cta-primary:hover{transform:none}}.app-side{display:flex;flex-direction:column}.app-side nav{flex:1;overflow-y:auto}.side-section{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-dim);opacity:.7;padding:14px 12px 6px}.side-link{display:flex;align-items:center;gap:10px}.side-link .ico{width:18px;text-align:center;font-size:14px;opacity:.9}.side-user{margin-top:12px;padding:12px;border-top:1px solid var(--rule);display:flex;align-items:center;gap:10px}.avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 55%,#000));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;flex-shrink:0}.app-main{padding:0;max-width:none;display:flex;flex-direction:column}.app-topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 34px;background:color-mix(in srgb,var(--bg) 78%,transparent);backdrop-filter:saturate(160%) blur(10px);-webkit-backdrop-filter:saturate(160%) blur(10px);border-bottom:1px solid var(--rule)}.topbar-right{display:flex;align-items:center;gap:12px}.bal-chip{font-size:13px;color:var(--ink-dim);background:var(--bg-soft);border:1px solid var(--rule);border-radius:999px;padding:5px 12px}.bal-chip b{color:var(--ink);font-variant-numeric:tabular-nums}.app-content{padding:26px 34px;max-width:1080px;width:100%;box-sizing:border-box}.btn-sm{padding:5px 12px;font-size:13px}.kpi-card{display:flex;gap:14px;align-items:center}.kpi-ico{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;background:color-mix(in srgb,var(--accent) 12%,transparent);flex-shrink:0}.pill-status{display:inline-block;font-size:12px;font-weight:600;padding:2px 9px;border-radius:999px;white-space:nowrap}.pill-status.ok{background:color-mix(in srgb,#16a34a 15%,transparent);color:#16a34a}.pill-status.err{background:color-mix(in srgb,#dc2626 15%,transparent);color:#dc2626}.pill-status.warn{background:color-mix(in srgb,#d97706 16%,transparent);color:#b45309}.empty-state{text-align:center;padding:38px 20px}.empty-state .es-ico{font-size:28px;line-height:1}.empty-state .es-title{font-weight:600;margin:12px 0 4px}.quick-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:16px}.qa{flex:1;min-width:160px;display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--rule);border-radius:12px;cursor:pointer;text-decoration:none;color:var(--ink);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease;background:var(--bg-card, var(--bg))}.qa:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:0 8px 22px #00000014}.qa .qa-ico{font-size:18px}@media (max-width: 720px){.app-topbar{padding:12px 16px}.app-content{padding:18px 16px}}@media (prefers-reduced-motion: reduce){.qa:hover{transform:none}}
