:root{color-scheme:light;--seed-bg:#f2f4f8;--seed-surface:#ffffff;--seed-fg:#182231;--seed-primary:#1f5fc4;--seed-accent:#0b7f8f;--seed-alert:#bf3350;--seed-ok:#16794c;--seed-warn:#8a5a06;--seed-radius:10px;--seed-space:1;--seed-type:1;--page-bg: var(--seed-bg);--panel: var(--seed-surface);--panel-sub: color-mix(in srgb, var(--seed-fg) 4%, var(--seed-surface));--panel-inset: color-mix(in srgb, var(--seed-fg) 7%, var(--seed-surface));--ink: var(--seed-fg);--ink-2: color-mix(in srgb, var(--seed-fg) 66%, var(--seed-surface));--ink-3: color-mix(in srgb, var(--seed-fg) 46%, var(--seed-surface));--line: color-mix(in srgb, var(--seed-fg) 13%, var(--seed-surface));--line-soft: color-mix(in srgb, var(--seed-fg) 8%, var(--seed-surface));--line-strong: color-mix(in srgb, var(--seed-fg) 22%, var(--seed-surface));--primary: var(--seed-primary);--primary-hover: color-mix(in srgb, var(--seed-primary) 84%, var(--seed-fg));--on-primary: var(--seed-surface);--primary-soft: color-mix(in srgb, var(--seed-primary) 11%, var(--seed-surface));--primary-line: color-mix(in srgb, var(--seed-primary) 32%, var(--seed-surface));--accent: var(--seed-accent);--accent-soft: color-mix(in srgb, var(--seed-accent) 11%, var(--seed-surface));--accent-line: color-mix(in srgb, var(--seed-accent) 32%, var(--seed-surface));--ok: color-mix(in srgb, var(--seed-ok) 82%, var(--seed-fg));--ok-soft: color-mix(in srgb, var(--ok) 13%, var(--seed-surface));--ok-line: color-mix(in srgb, var(--ok) 34%, var(--seed-surface));--warn: color-mix(in srgb, var(--seed-warn) 82%, var(--seed-fg));--warn-soft: color-mix(in srgb, var(--warn) 14%, var(--seed-surface));--warn-line: color-mix(in srgb, var(--warn) 34%, var(--seed-surface));--bad: color-mix(in srgb, var(--seed-alert) 88%, var(--seed-fg));--bad-soft: color-mix(in srgb, var(--bad) 12%, var(--seed-surface));--bad-line: color-mix(in srgb, var(--bad) 32%, var(--seed-surface));--info: color-mix(in srgb, var(--seed-primary) 88%, var(--seed-fg));--info-soft: color-mix(in srgb, var(--info) 11%, var(--seed-surface));--neutral-soft: color-mix(in srgb, var(--seed-fg) 8%, var(--seed-surface));--side-bg:#0e1a2d;--side-bg-2:#0b1524;--side-ink:#aebccd;--side-ink-dim:#6d7f98;--side-line:rgba(255,255,255,.075);--side-hover:rgba(255,255,255,.06);--side-active:rgba(96,150,255,.17);--r: var(--seed-radius);--r-sm: calc(var(--seed-radius) * .62);--side-w: 244px;--row-pad-y: calc(9px * var(--seed-space));--row-pad-x: calc(12px * var(--seed-space));--gap: calc(14px * var(--seed-space));--pad: calc(16px * var(--seed-space));--fs: calc(13.5px * var(--seed-type));--mono: "Bahnschrift","Segoe UI","Microsoft YaHei",Consolas,ui-monospace,monospace;--sans: "Inter","Segoe UI","Microsoft YaHei","PingFang SC",system-ui,-apple-system,sans-serif;--shadow-sm: 0 1px 2px color-mix(in srgb, var(--seed-fg) 6%, transparent);--shadow: 0 1px 2px color-mix(in srgb, var(--seed-fg) 7%, transparent), 0 2px 8px color-mix(in srgb, var(--seed-fg) 5%, transparent);--shadow-md: 0 4px 18px color-mix(in srgb, var(--seed-fg) 12%, transparent)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--sans);font-size:var(--fs);line-height:1.5;color:var(--ink);background:radial-gradient(1100px 480px at 78% -180px,color-mix(in srgb,var(--primary) 7%,transparent),transparent 62%),var(--page-bg);background-attachment:fixed;-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none}button{font-family:inherit}::selection{background:color-mix(in srgb,var(--primary) 22%,transparent)}:focus-visible{outline:2px solid var(--primary);outline-offset:1px}*{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--seed-fg) 20%,transparent) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--seed-fg) 17%,transparent);border-radius:8px;border:2.5px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--seed-fg) 30%,transparent);border:2.5px solid transparent;background-clip:content-box}.shell{display:grid;grid-template-columns:var(--side-w) 1fr;height:100vh;overflow:hidden}.side{display:flex;flex-direction:column;min-height:0;padding:calc(14px * var(--seed-space)) 0 0;background:linear-gradient(180deg,var(--side-bg) 0%,var(--side-bg-2) 100%);border-right:1px solid color-mix(in srgb,var(--side-bg) 40%,#000);position:relative}.side:after{content:"";position:absolute;top:0;right:0;bottom:0;width:1px;background:linear-gradient(180deg,#ffffff0f,#ffffff04)}.brand{display:flex;align-items:center;gap:10px;padding:0 16px 14px;border-bottom:1px solid var(--side-line)}.brand-mark{width:32px;height:32px;flex:none;border-radius:9px;display:grid;place-items:center;background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 88%,#fff) 0%,var(--primary) 55%,color-mix(in srgb,var(--accent) 46%,var(--primary)) 100%);color:#fff;font-weight:800;font-size:14px;letter-spacing:.02em;box-shadow:0 2px 8px color-mix(in srgb,var(--primary) 45%,transparent),inset 0 1px #ffffff59}.brand-mark.logo{background:#fff;box-shadow:0 2px 8px #02081459,inset 0 0 0 1px #ffffff40}.brand-mark.logo img{width:100%;height:100%;object-fit:contain;padding:2px}.brand-text{min-width:0}.brand-text b{display:block;font-size:13.5px;letter-spacing:.01em;color:#f2f6fc}.brand-text span{display:block;font-size:11px;color:var(--side-ink-dim);letter-spacing:.04em}.side-scroll{flex:1;min-height:0;overflow-y:auto;padding:4px 10px 10px}.side-scroll::-webkit-scrollbar-thumb{background:#ffffff24;border:2.5px solid transparent;background-clip:content-box}.nav-group{margin-top:calc(15px * var(--seed-space))}.nav-group>.nav-group-label{font-size:10.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--side-ink-dim);padding:0 9px 5px}.nav-item{display:flex;align-items:center;gap:9px;width:100%;text-align:left;padding:calc(6.5px * var(--seed-space)) 9px;margin:1px 0;border:0;border-radius:var(--r-sm);background:transparent;color:var(--side-ink);font-size:13px;font-weight:500;cursor:pointer;transition:background .12s ease-out,color .12s ease-out;text-decoration:none;position:relative}.nav-item:hover{background:var(--side-hover);color:#e8eef7}.nav-item.on{background:var(--side-active);color:#fff;font-weight:650;box-shadow:inset 2px 0 0 var(--primary)}.nav-item.on:before{content:"";position:absolute;left:-10px;top:18%;bottom:18%;width:2px;border-radius:2px;background:var(--primary)}.nav-item .ic{width:16px;height:16px;flex:none;display:inline-grid;place-items:center;color:currentColor;opacity:.92}.nav-item .ic svg{width:15px;height:15px;stroke:currentColor;stroke-width:1.6;fill:none}.nav-item .nav-label-txt{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-item .cnt{margin-left:auto;font-family:var(--mono);font-size:11px;font-weight:700;color:var(--side-ink);background:#ffffff14;padding:0 6px;border-radius:20px;min-width:20px;text-align:center;flex:none}.nav-item.on .cnt{background:color-mix(in srgb,var(--primary) 55%,transparent);color:#fff}.nav-item .cnt.hot{background:color-mix(in srgb,var(--bad) 30%,transparent);color:#ff9aab}.nav-item .cnt.plan{font-weight:600;font-family:var(--sans);background:transparent;border:1px dashed rgba(255,255,255,.22);color:var(--side-ink-dim);min-width:0}.nav-item.soon{color:var(--side-ink-dim)}.nav-item.soon:hover{background:var(--side-hover);color:var(--side-ink)}.side-foot{border-top:1px solid var(--side-line);padding:11px 16px;font-size:11px;color:var(--side-ink-dim);line-height:1.6}.main{display:flex;flex-direction:column;min-width:0;height:100vh}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:16px;padding:calc(11px * var(--seed-space)) calc(22px * var(--seed-space));background:color-mix(in srgb,var(--panel) 82%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.topbar h1{margin:0;font-size:calc(17px * var(--seed-type));letter-spacing:.01em;font-weight:700}.topbar .sub{font-size:12px;color:var(--ink-3)}.top-actions{margin-left:auto;display:flex;align-items:center;gap:calc(8px * var(--seed-space))}.search-trigger{display:flex;align-items:center;gap:8px;min-width:240px;padding:6.5px 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--panel-sub);color:var(--ink-3);cursor:pointer;font-size:12.5px;transition:border-color .12s ease-out,background .12s ease-out}.search-trigger:hover{border-color:var(--primary-line);background:var(--panel);color:var(--ink-2)}.search-trigger kbd{margin-left:auto;font-family:var(--mono);font-size:10px;border:1px solid var(--line);border-radius:4px;padding:1px 5px;color:var(--ink-3);background:var(--panel)}.user-chip{display:flex;align-items:center;gap:9px;padding-left:6px}.avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,var(--primary-soft),var(--accent-soft));color:var(--primary-hover);font-weight:700;border:1px solid var(--primary-line);box-shadow:var(--shadow-sm)}.user-meta{line-height:1.25}.user-meta b{font-size:12.5px}.user-meta span{display:block;font-size:11px;color:var(--ink-3)}.content{flex:1;min-height:0;overflow-y:auto;padding:calc(20px * var(--seed-space)) calc(24px * var(--seed-space)) 44px;scroll-behavior:smooth}.btn{display:inline-flex;align-items:center;gap:6px;padding:calc(6px * var(--seed-space)) 12px;font-size:12.5px;font-weight:600;background:var(--panel);color:var(--ink-2);border:1px solid var(--line-strong);border-radius:var(--r-sm);box-shadow:var(--shadow-sm);white-space:nowrap;cursor:pointer;transition:background .12s ease-out,border-color .12s ease-out,color .12s ease-out,box-shadow .12s ease-out}.btn:hover{border-color:var(--primary-line);color:var(--primary-hover);background:var(--panel)}.btn:active{transform:translateY(1px)}.btn.primary{background:linear-gradient(180deg,color-mix(in srgb,var(--primary) 90%,#fff) 0%,var(--primary) 100%);border-color:color-mix(in srgb,var(--primary) 78%,#000);color:var(--on-primary);box-shadow:0 1px 2px color-mix(in srgb,var(--primary) 30%,transparent),inset 0 1px #ffffff38}.btn.primary:hover{background:linear-gradient(180deg,var(--primary) 0%,var(--primary-hover) 100%);color:var(--on-primary)}.btn.ghost{background:transparent;border-color:transparent;box-shadow:none}.btn.ghost:hover{background:var(--panel-inset);color:var(--ink)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn.link{background:none;border:0;padding:0;box-shadow:none;color:var(--primary);font-weight:600}.btn.link:hover{text-decoration:underline;color:var(--primary-hover)}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}.panel+.panel{margin-top:var(--gap)}.panel-head{display:flex;align-items:center;gap:12px;padding:calc(13px * var(--seed-space)) var(--pad);border-bottom:1px solid var(--line-soft)}.panel-head h2{margin:0;font-size:14px;font-weight:700;letter-spacing:.01em}.panel-head .desc{font-size:12px;color:var(--ink-3)}.panel-body{padding:var(--pad)}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:var(--pad);border-bottom:1px solid var(--line-soft);background:color-mix(in srgb,var(--panel-sub) 55%,transparent)}.field{display:flex;flex-direction:column;gap:4px}.field>label{font-size:11px;color:var(--ink-3);font-weight:600;letter-spacing:.02em}.txt,.sel{font-family:inherit;font-size:12.5px;color:var(--ink);background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:7px 10px;min-width:0;transition:border-color .12s ease-out,box-shadow .12s ease-out,background .12s ease-out}.txt:hover,.sel:hover{border-color:color-mix(in srgb,var(--seed-fg) 34%,var(--seed-surface))}.txt:focus,.sel:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 16%,transparent)}.txt::placeholder{color:color-mix(in srgb,var(--ink-3) 78%,transparent)}.search-field{position:relative;display:flex;align-items:center}.search-field .txt{padding-left:30px;min-width:280px}.search-field .mag{position:absolute;left:9px;color:var(--ink-3);pointer-events:none}.spacer{margin-left:auto}.table-wrap{width:100%;overflow-x:auto}table.grid{display:table;width:100%;table-layout:auto;border-collapse:separate;border-spacing:0;font-size:12.5px}table.grid>thead{display:table-header-group}table.grid>tbody{display:table-row-group}table.grid tr{display:table-row}table.grid th,table.grid td{display:table-cell}table.grid td .num,table.grid th .num{white-space:nowrap}table.grid th{text-align:left;font-size:10.5px;font-weight:700;letter-spacing:.055em;text-transform:uppercase;color:var(--ink-3);background:var(--panel-sub);padding:calc(var(--row-pad-y) + 1px) var(--row-pad-x);border-bottom:1px solid var(--line);white-space:nowrap;position:sticky;top:0;z-index:2}table.grid td{padding:var(--row-pad-y) var(--row-pad-x);border-bottom:1px solid var(--line-soft);vertical-align:middle}table.grid tbody tr{cursor:pointer;transition:background .1s ease-out,box-shadow .1s ease-out}table.grid tbody tr:hover{background:var(--panel-inset);box-shadow:inset 2px 0 0 var(--primary)}table.grid tbody tr.sel-row{background:var(--primary-soft);box-shadow:inset 2px 0 0 var(--primary)}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--ink-3)}.strong{font-weight:650}tr.detail-row>td{padding:0;background:var(--panel-sub);border-bottom:1px solid var(--line)}.pill{display:inline-flex;align-items:center;gap:6px;padding:2px 9px;border-radius:20px;font-size:11.5px;font-weight:650;border:1px solid transparent;white-space:nowrap}.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.9;box-shadow:0 0 0 2.5px color-mix(in srgb,currentColor 16%,transparent)}.pill.ok{color:var(--ok);background:var(--ok-soft);border-color:var(--ok-line)}.pill.info{color:var(--info);background:var(--info-soft);border-color:var(--primary-line)}.pill.warn{color:var(--warn);background:var(--warn-soft);border-color:var(--warn-line)}.pill.bad{color:var(--bad);background:var(--bad-soft);border-color:var(--bad-line)}.pill.neutral{color:var(--ink-2);background:var(--neutral-soft);border-color:var(--line)}.detail{padding:calc(16px * var(--seed-space)) var(--pad);display:flex;flex-direction:column;gap:var(--gap);background:color-mix(in srgb,var(--panel-sub) 42%,transparent)}.detail-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.detail-head .id{font-family:var(--mono);font-size:12px;color:var(--primary-hover);border:1px solid var(--primary-line);border-radius:6px;padding:1px 7px;background:var(--primary-soft)}.detail-head h3{margin:0;font-size:15px;font-weight:700}.kv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px 18px}.kv{display:flex;flex-direction:column;gap:2px}.kv .k{font-size:11px;color:var(--ink-3)}.kv .v{font-size:13px;font-weight:600}.lines{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px;border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;box-shadow:var(--shadow-sm)}.lines th{background:var(--panel-inset);text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-3);padding:8px 10px}.lines td{padding:8px 10px;border-top:1px solid var(--line-soft)}.lines tbody tr:first-child td{border-top:0}.lines .money{text-align:right}.detail-actions{display:flex;gap:8px;align-items:center}.load-note{font-size:12px;color:var(--ink-3);display:flex;align-items:center;gap:8px}.pager{display:flex;align-items:center;gap:12px;padding:12px var(--pad);border-top:1px solid var(--line-soft);background:color-mix(in srgb,var(--panel-sub) 45%,transparent)}.pager .info{font-size:12px;color:var(--ink-3)}.board{display:flex;flex-direction:column;gap:var(--gap)}.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--gap)}.c3{grid-column:span 3}.c4{grid-column:span 4}.c5{grid-column:span 5}.c6{grid-column:span 6}.c7{grid-column:span 7}.c8{grid-column:span 8}.c12{grid-column:span 12}@media (max-width:1180px){.c4,.c5,.c7,.c8{grid-column:span 12}.c3,.kpi,.kpi.kpi-lead{grid-column:span 6}}@media (max-width:720px){.c3,.kpi,.kpi.kpi-lead{grid-column:span 12}}.kpi{grid-column:span 3;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:calc(12px * var(--seed-space)) calc(13px * var(--seed-space));display:flex;flex-direction:column;gap:2px;box-shadow:var(--shadow);min-width:0;position:relative;overflow:hidden}.kpi:before{content:"";position:absolute;top:0;left:0;right:0;height:2.5px;background:linear-gradient(90deg,var(--primary),color-mix(in srgb,var(--accent) 55%,var(--primary)));opacity:.55;border-radius:2px 2px 0 0}.kpi.alert:before{background:linear-gradient(90deg,var(--bad),color-mix(in srgb,var(--bad) 40%,transparent));opacity:.6}.kpi.kpi-lead{grid-column:span 6}.kpi .k-label{font-size:11px;color:var(--ink-3);font-weight:700;letter-spacing:.05em;text-transform:uppercase}.kpi .k-value{font-family:var(--mono);font-size:calc(23px * var(--seed-type));font-weight:700;line-height:1.25;color:var(--ink);letter-spacing:-.01em;margin-top:3px}.kpi .k-value small{font-size:11px;font-weight:600;color:var(--ink-3);margin-left:3px}.kpi .k-foot{display:flex;align-items:center;gap:6px;margin-top:6px;font-size:11.5px;color:var(--ink-3)}.kpi .spark{margin-top:8px;height:26px;width:100%}.kpi.alert{border-color:var(--bad-line);background:linear-gradient(180deg,var(--bad-soft),var(--panel) 62%)}.kpi.alert .k-value{color:var(--bad)}.delta{display:inline-flex;align-items:center;gap:3px;font-family:var(--mono);font-size:11px;font-weight:700;padding:1px 6px;border-radius:20px}.delta.up{background:var(--ok-soft);color:var(--ok)}.delta.down{background:var(--bad-soft);color:var(--bad)}.delta.flat{background:var(--neutral-soft);color:var(--ink-3)}.spark-line{fill:none;stroke:var(--primary);stroke-width:1.6}.spark-area{fill:color-mix(in srgb,var(--primary) 14%,transparent);stroke:none}.chart-wrap{position:relative;padding-top:calc(4px * var(--seed-space))}.chart-legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--ink-2)}.lg{display:inline-flex;align-items:center;gap:6px}.lg i{width:10px;height:10px;border-radius:3px;flex:none}svg text{font-family:var(--mono);font-size:10px;fill:var(--ink-3)}.bar{transition:opacity .1s ease-out}.bar:hover{opacity:.82}.funnel{display:grid;gap:calc(10px * var(--seed-space))}.fn-row{display:grid;grid-template-columns:84px minmax(0,1fr) auto;align-items:center;gap:10px}.fn-row .nm{font-size:12px;color:var(--ink-2);display:flex;align-items:center;gap:6px}.fn-row .nm i{width:7px;height:7px;border-radius:2px;flex:none;background:var(--primary)}.fn-bar{height:22px;background:var(--panel-inset);border-radius:var(--r-sm);overflow:hidden;position:relative}.fn-bar span{position:absolute;inset:0 auto 0 0;border-radius:var(--r-sm);background:var(--primary);opacity:.82;min-width:3px}.fn-bar em{position:absolute;right:7px;top:50%;transform:translateY(-50%);font-style:normal;font-family:var(--mono);font-size:11px;color:var(--ink-2)}.fn-val{font-family:var(--mono);font-size:12px;color:var(--ink);min-width:52px;text-align:right}.stack{display:grid}.stack-item{border-bottom:1px solid var(--line-soft)}.stack-item:last-child{border-bottom:0}.stack-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;text-align:left;border:0;background:transparent;padding:calc(9px * var(--seed-space)) var(--pad);cursor:pointer;color:var(--ink);font-size:12.5px;transition:background .1s ease-out}.stack-head:hover{background:var(--panel-sub)}.stack-head .tk-dot{width:8px;height:8px;border-radius:50%;flex:none}.stack-head .nm{display:flex;align-items:center;gap:9px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stack-head .tc{font-family:var(--mono);font-size:13px;font-weight:700}.stack-empty{padding:calc(14px * var(--seed-space)) var(--pad);font-size:12px;color:var(--ink-3)}.notif-item{display:grid;grid-template-columns:14px minmax(0,1fr);gap:10px;padding:calc(10px * var(--seed-space)) var(--pad);border-bottom:1px solid var(--line-soft);cursor:pointer;transition:background .1s ease-out}.notif-item:last-child{border-bottom:0}.notif-item:hover{background:var(--panel-sub)}.notif-item .ndot{width:7px;height:7px;border-radius:50%;background:var(--primary);margin-top:6px;justify-self:center;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 16%,transparent)}.notif-item .nb b{display:block;font-size:12.5px;font-weight:600}.notif-item .nb p{margin:2px 0 0;font-size:12px;color:var(--ink-2);line-height:1.45}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--gap)}.kpi-grid .kpi{grid-column:auto}.notice{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--panel-sub);font-size:12.5px}.notice.bad{color:var(--bad);background:var(--bad-soft);border-color:var(--bad-line)}.notice.warn{color:var(--warn);background:var(--warn-soft);border-color:var(--warn-line)}.notice.info{color:var(--info);background:var(--info-soft);border-color:var(--primary-line)}.empty{padding:44px 20px;text-align:center;color:var(--ink-3);font-size:13px}.spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--line-strong);border-top-color:var(--primary);animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{display:flex;align-items:center;gap:8px;color:var(--ink-3);font-size:12.5px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--seed-fg) 34%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:flex-start;justify-content:center;padding-top:10vh;z-index:100}.cmd{width:min(680px,92vw);background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:0 18px 50px color-mix(in srgb,var(--seed-fg) 30%,transparent);overflow:hidden}.cmd-top{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line)}.cmd-top input{flex:1;border:0;outline:none;font-size:15px;background:transparent;color:var(--ink)}.cmd-body{max-height:60vh;overflow-y:auto;padding:6px}.cmd-group-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);padding:8px 10px 2px}.cmd-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--r-sm);cursor:pointer;transition:background .1s ease-out}.cmd-item:hover,.cmd-item.active{background:var(--primary-soft)}.cmd-item .t{font-weight:600}.cmd-item .s{color:var(--ink-3);font-size:12px}.cmd-item .m{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--ink-3)}.login-wrap{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,1fr)}.login-hero{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;gap:40px;padding:52px 56px;color:#e8eefb;background:radial-gradient(1100px 700px at -12% -22%,color-mix(in srgb,var(--primary) 46%,#0d1a2e) 0%,transparent 58%),radial-gradient(900px 620px at 112% 118%,color-mix(in srgb,var(--accent) 30%,transparent) 0%,transparent 55%),linear-gradient(158deg,#0d1a2e,#13294a 56%,#0f1f38)}.login-hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.5;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:52px 52px;mask-image:radial-gradient(ellipse 85% 70% at 40% 30%,black,transparent 78%);-webkit-mask-image:radial-gradient(ellipse 85% 70% at 40% 30%,black,transparent 78%)}.login-hero:after{content:"";position:absolute;left:-18%;bottom:-34%;width:72%;height:64%;pointer-events:none;background:conic-gradient(from 210deg at 50% 50%,transparent 0deg,color-mix(in srgb,var(--primary) 40%,transparent) 42deg,transparent 84deg);filter:blur(6px);opacity:.5}.login-hero>*{position:relative;z-index:1}.login-hero-brand{display:flex;align-items:center;gap:12px}.login-hero-brand .brand-mark{width:42px;height:42px;font-size:17px;border-radius:12px}.login-hero-brand b{display:block;font-size:16px;color:#fff;letter-spacing:.01em}.login-hero-brand span{display:block;font-size:12px;color:#e8eefb9e;letter-spacing:.05em}.login-hero-body h2{margin:0 0 12px;font-size:clamp(24px,2.6vw,32px);line-height:1.3;font-weight:750;letter-spacing:.01em;color:#fff}.login-hero-body h2 em{font-style:normal;background:linear-gradient(92deg,#9cc2ff,#6fd3e0);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.login-hero-body p{margin:0;max-width:46ch;font-size:13.5px;line-height:1.75;color:#e8eefbb8}.login-hero-feats{display:grid;gap:12px;margin-top:26px}.login-hero-feats .ft{display:flex;align-items:flex-start;gap:10px;font-size:12.5px;color:#e8eefbd9}.login-hero-feats .ft i{flex:none;width:20px;height:20px;margin-top:1px;border-radius:7px;display:grid;place-items:center;font-style:normal;background:color-mix(in srgb,var(--primary) 40%,transparent);border:1px solid rgba(156,194,255,.35);color:#cfe0ff;font-size:10.5px;font-weight:800}.login-hero-foot{font-size:11.5px;color:#e8eefb80;letter-spacing:.03em}.login-pane{display:grid;place-items:center;padding:36px 28px;background:radial-gradient(900px 500px at 82% -8%,color-mix(in srgb,var(--primary) 8%,transparent),transparent 58%),radial-gradient(700px 420px at 8% 108%,color-mix(in srgb,var(--accent) 7%,transparent),transparent 55%),var(--page-bg)}.login-card{width:min(400px,94vw);background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-md);padding:30px 28px}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:22px}.login-brand .brand-mark{width:40px;height:40px;font-size:16px;border-radius:11px}.login-brand b{display:block;font-size:15px;color:var(--ink)}.login-brand span{display:block;font-size:12px;color:var(--ink-3)}.login-form{display:flex;flex-direction:column;gap:14px}.login-form .field{gap:6px}.login-form .txt{width:100%;padding:10.5px 12px;font-size:14px}.login-foot{margin-top:18px;font-size:11.5px;color:var(--ink-3);text-align:center;line-height:1.6}@media (max-width:940px){.login-wrap{grid-template-columns:1fr}.login-hero{display:none}}.ssel{position:relative;display:flex;flex-direction:column;gap:4px}.ssel-control{position:relative;display:flex;align-items:center}.ssel-control .txt{width:100%;padding-right:26px;text-overflow:ellipsis}.ssel-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:var(--ink-3);font-size:15px;line-height:1;cursor:pointer;padding:2px 4px;border-radius:4px}.ssel-clear:hover{color:var(--bad);background:var(--bad-soft)}.ssel-pop{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:40;max-height:280px;overflow-y:auto;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:0 12px 32px color-mix(in srgb,var(--seed-fg) 20%,transparent);padding:4px}.ssel-opt{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:7px 9px;border:0;border-radius:var(--r-sm);background:transparent;cursor:pointer;color:var(--ink);font-size:12.5px}.ssel-opt:hover{background:var(--primary-soft)}.ssel-opt.on{background:var(--primary-soft);font-weight:600}.ssel-opt .t{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ssel-opt .m{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--ink-3);white-space:nowrap}.ssel-note{padding:9px 10px;font-size:12px;color:var(--ink-3)}.ssel-note.bad{color:var(--bad)}.ssel-more{display:block;width:calc(100% - 12px);margin:4px 6px 6px;padding:7px 10px;border:1px dashed var(--line);border-radius:var(--r-sm);background:transparent;color:var(--primary);font-size:12px;font-weight:600;cursor:pointer;text-align:center}.ssel-more:hover{background:var(--primary-soft)}.ssel-more:disabled{color:var(--ink-3);cursor:default;background:transparent}.modal{width:min(480px,92vw);background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:0 24px 64px color-mix(in srgb,var(--seed-fg) 30%,transparent);overflow:hidden;animation:modalIn .14s ease-out}@keyframes modalIn{0%{transform:translateY(8px);opacity:.55}to{transform:translateY(0);opacity:1}}.modal-head{padding:14px var(--pad);font-size:14.5px;font-weight:700;border-bottom:1px solid var(--line-soft)}.modal-body{padding:var(--pad)}.modal-msg{font-size:13px;color:var(--ink);line-height:1.6}.modal-detail{margin-top:10px;font-size:12px;color:var(--ink-3);background:var(--panel-inset);border:1px solid var(--line-soft);border-radius:var(--r-sm);padding:9px 11px;line-height:1.6}.modal-foot{display:flex;align-items:center;gap:8px;padding:12px var(--pad);border-top:1px solid var(--line-soft);background:color-mix(in srgb,var(--panel-sub) 45%,transparent)}.btn.danger{background:linear-gradient(180deg,color-mix(in srgb,var(--bad) 90%,#fff) 0%,var(--bad) 100%);border-color:color-mix(in srgb,var(--bad) 76%,#000);color:#fff;box-shadow:0 1px 2px color-mix(in srgb,var(--bad) 30%,transparent),inset 0 1px #ffffff2e}.btn.danger:hover{background:linear-gradient(180deg,var(--bad) 0%,color-mix(in srgb,var(--bad) 86%,var(--seed-fg)) 100%);color:#fff}.field-hint{font-size:11px;color:var(--ink-3);line-height:1.4}.field-hint.bad{color:var(--bad)}.txt.area{resize:vertical;font-family:inherit;line-height:1.5;min-height:44px}.txt.num-input{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}.line-grid{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px;border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden}.line-grid th{background:var(--panel-inset);text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-3);padding:7px 8px;white-space:nowrap}.line-grid td{padding:6px 8px;border-top:1px solid var(--line-soft);vertical-align:top}.line-grid td .txt,.line-grid td .sel{width:100%;padding:6px 8px;font-size:12px}.line-grid .col-r{text-align:right}.line-grid .row-total{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right;font-weight:650;padding-top:12px}.line-grid .row-del{border:0;background:transparent;color:var(--ink-3);cursor:pointer;font-size:16px;line-height:1;padding:6px;border-radius:6px}.line-grid .row-del:hover{color:var(--bad);background:var(--bad-soft)}.editor-totals{display:flex;flex-wrap:wrap;gap:18px;justify-content:flex-end;padding-top:6px}.editor-totals .t{display:flex;flex-direction:column;gap:2px;text-align:right}.editor-totals .t .k{font-size:11px;color:var(--ink-3)}.editor-totals .t .v{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:16px;font-weight:700}.editor-totals .t.grand .v{color:var(--primary)}.kpi{transition:border-color .14s ease-out,box-shadow .14s ease-out,transform .14s ease-out}.kpi:hover{border-color:var(--primary-line);box-shadow:var(--shadow-md);transform:translateY(-1px)}.kpi .spark-wrap{position:relative;height:26px;margin-top:8px;width:100%}.kpi .spark-wrap .spark{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;width:100%;height:100%}.kpi .spark-dot{position:absolute;width:5px;height:5px;border-radius:50%;background:var(--primary);border:1.5px solid var(--panel);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 22%,transparent);transform:translate(-50%,-50%);pointer-events:none}.kpi.alert .spark-dot{background:var(--bad);box-shadow:0 0 0 2px color-mix(in srgb,var(--bad) 22%,transparent)}.seg{display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid var(--line);border-radius:8px;background:var(--panel-sub)}.seg button{border:0;background:transparent;font-family:inherit;font-size:11.5px;font-weight:600;line-height:1.4;color:var(--ink-3);padding:4px 10px;border-radius:6px;cursor:pointer;transition:color .12s ease-out,background .12s ease-out}.seg button:hover{color:var(--ink)}.seg button.on{background:var(--panel);color:var(--primary);box-shadow:var(--shadow-sm)}.trend{display:grid;grid-template-columns:30px minmax(0,1fr);column-gap:6px}.trend-y{position:relative;min-width:0}.trend-y span{position:absolute;right:0;transform:translateY(-50%);font-family:var(--mono);font-size:10px;line-height:1;color:var(--ink-3);white-space:nowrap}.trend-plot{position:relative;height:216px;min-width:0}.trend-plot>svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.t-hl{position:absolute;top:0;bottom:14px;background:color-mix(in srgb,var(--primary) 6%,transparent);border-radius:4px;pointer-events:none}.t-hit{position:absolute;top:0;height:202px}.t-dot{position:absolute;width:7px;height:7px;border-radius:50%;background:var(--accent);border:2px solid var(--panel);box-shadow:0 0 0 1px var(--accent);transform:translate(-50%,-50%);pointer-events:none;transition:transform .12s ease-out}.t-dot.on{transform:translate(-50%,-50%) scale(1.4)}.t-vlab{position:absolute;transform:translate(-50%,-100%);font-family:var(--mono);font-size:10px;font-weight:650;color:var(--ink-3);pointer-events:none;white-space:nowrap}.t-vlab.on{color:var(--primary)}.t-vlab.accent.on{color:var(--accent)}.t-tip{position:absolute;top:6px;transform:translate(-50%);min-width:172px;background:var(--panel);border:1px solid var(--line-strong);border-radius:8px;box-shadow:0 8px 24px color-mix(in srgb,var(--seed-fg) 14%,transparent);padding:8px 11px;font-size:11px;color:var(--ink-2);z-index:5;pointer-events:none}.t-tip b{display:block;font-family:var(--mono);font-size:11px;color:var(--ink);margin-bottom:4px}.t-tip>div{display:flex;align-items:center;gap:6px;line-height:1.8}.t-tip em{font-style:normal;font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ink);margin-left:auto}.t-tip .sw{width:8px;height:8px;border-radius:2px;flex:none}.t-tip .sw.dot{border-radius:50%}.t-tip .sub{margin-top:4px;padding-top:4px;border-top:1px dashed var(--line);color:var(--ink-3);font-size:10.5px}.trend-x{grid-column:2;display:flex;margin-top:4px;min-width:0}.trend-x span{flex:none;font-family:var(--mono);font-size:10px;line-height:1;color:var(--ink-3);text-align:center;overflow:visible}.trend-x span.off{visibility:hidden}.trend-foot{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:14px;padding-top:12px;border-top:1px solid var(--line-soft)}.tf{display:flex;flex-direction:column;gap:3px;padding:0 14px;border-left:1px solid var(--line-soft);min-width:0}.tf:first-child{padding-left:0;border-left:0}.tf span{font-size:10.5px;color:var(--ink-3);white-space:nowrap}.tf b{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:13px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tf b small{font-size:10.5px;color:var(--ink-3);font-weight:600;margin-left:3px}@media (max-width:1180px){.trend-foot{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:12px}.tf:nth-child(3){padding-left:0;border-left:0}}.panel-head .chart-tools{display:flex;align-items:center;gap:14px;flex-wrap:wrap;justify-content:flex-end;min-width:0}.lg.off{opacity:.35}.lg i.lg-dot{width:8px;height:8px;border-radius:50%}.fn-row{grid-template-columns:88px minmax(0,1fr) auto}.fn-bar{height:24px}.fn-bar i{position:absolute;inset:0 auto 0 0;border-radius:var(--r-sm);min-width:0;transition:width .25s ease-out}.fn-row .nm i{width:8px;height:8px;border-radius:3px}.fn-val{display:flex;flex-direction:column;align-items:flex-end;gap:1px;min-width:58px;text-align:right;font-family:var(--sans)}.fn-val b{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:12.5px;font-weight:700;color:var(--ink);line-height:1.2}.fn-val span{font-size:10px;color:var(--ink-3);line-height:1.2;white-space:nowrap}.fn-row .nm i.s0,.fn-bar i.s0{background:color-mix(in srgb,var(--primary) 55%,var(--panel))}.fn-row .nm i.s1,.fn-bar i.s1{background:var(--primary)}.fn-row .nm i.s2,.fn-bar i.s2{background:color-mix(in srgb,var(--primary) 52%,var(--accent))}.fn-row .nm i.s3,.fn-bar i.s3{background:var(--accent)}.fn-row .nm i.s4,.fn-bar i.s4{background:color-mix(in srgb,var(--accent) 45%,var(--ok))}.fn-bar i{opacity:.88}.callout{margin-top:12px;padding:9px 11px;border-radius:var(--r-sm);background:var(--info-soft);border:1px solid var(--primary-line);font-size:11.5px;line-height:1.6;color:var(--ink-2);display:flex;gap:8px}.callout:before{content:"ℹ";flex:none;width:16px;height:16px;margin-top:2px;border-radius:50%;background:var(--panel);border:1px solid var(--primary-line);color:var(--primary);font-size:10px;font-weight:800;display:grid;place-items:center}.todo-row{display:grid;grid-template-columns:10px minmax(0,1fr) auto 12px;align-items:center;gap:10px;width:100%;text-align:left;border:0;background:transparent;padding:calc(8.5px * var(--seed-space)) var(--pad);cursor:pointer;color:var(--ink);font-size:12.5px;transition:background .1s ease-out}.todo-row:hover{background:var(--panel-sub)}.todo-row .tk-dot{width:8px;height:8px;border-radius:50%;flex:none}.todo-row .nm{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.todo-row .tc{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:11.5px;font-weight:700;padding:1px 8px;border-radius:20px;background:var(--neutral-soft);color:var(--ink-3);min-width:32px;text-align:center}.todo-row .tc.ok{background:var(--ok-soft);color:var(--ok)}.todo-row .tc.info{background:var(--info-soft);color:var(--info)}.todo-row .tc.warn{background:var(--warn-soft);color:var(--warn)}.todo-row .tc.bad{background:var(--bad-soft);color:var(--bad)}.chev{color:var(--ink-3);font-size:14px;line-height:1;opacity:0;transform:translate(-2px);transition:opacity .12s ease-out,transform .12s ease-out}.todo-row:hover .chev,.notif-item:hover .chev{opacity:1;transform:none}.notif-item{grid-template-columns:14px minmax(0,1fr) 12px}.head-chip{font-size:11px;font-weight:700;color:var(--ink-3);background:var(--panel-inset);border:1px solid var(--line);padding:2px 9px;border-radius:20px;white-space:nowrap}.head-chip.hot{color:var(--bad);background:var(--bad-soft);border-color:var(--bad-line)}.all-ok{display:flex;flex-direction:column;align-items:center;gap:10px;padding:30px 16px;color:var(--ink-3);font-size:12.5px}.ok-ring{width:36px;height:36px;border-radius:50%;background:var(--ok-soft);border:1px solid var(--ok-line);color:var(--ok);display:grid;place-items:center;font-size:16px;font-weight:800}.row-actions{display:inline-flex;align-items:center;gap:2px}.row-actions .btn.link{padding:2px 6px;font-size:12px}.row-actions .row-del{color:var(--bad)}.row-actions .row-del:hover{color:color-mix(in srgb,var(--bad) 80%,#000)}table.grid th.op-col{position:sticky;right:0;z-index:3;background:var(--panel-sub);box-shadow:-1px 0 0 var(--line)}table.grid td.op-col{position:sticky;right:0;background:var(--panel);box-shadow:-1px 0 0 var(--line-soft)}table.grid tbody tr:hover td.op-col{background:var(--panel-inset)}table.grid tbody tr.sel-row td.op-col{background:color-mix(in srgb,var(--primary) 11%,var(--panel-inset))}
