:root{--font-display: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-ui: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--r-xs: 7px;--r-sm: 10px;--r-md: 14px;--r-lg: 20px;--r-pill: 999px;--ease: cubic-bezier(.32, .72, 0, 1);--bg: #f4f6fa;--bg-grad: radial-gradient(1100px 560px at 92% -12%, rgba(39,80,243,.09), transparent 60%);--surface: #fefeff;--surface-2: #f2f4f9;--surface-3: #e7ebf1;--border: #d9dce4;--border-soft: #e4e7ed;--text: #212033;--text-2: #4e4e60;--text-3: #737383;--text-faint: #9494a1;--accent: #2750f3;--accent-press: #1c3dd8;--accent-soft: rgba(39,80,243,.11);--accent-line: rgba(39,80,243,.4);--on-accent: #fafcff;--info: #0278c7;--info-soft: rgba(2,120,199,.12);--warn: #c06f0a;--warn-soft: rgba(206,124,34,.14);--danger: #d02b31;--danger-soft: rgba(208,43,49,.12);--violet: #7d40c8;--violet-soft: rgba(125,64,200,.12);--teal: #007e5b;--teal-soft: rgba(0,144,108,.13);--ok: #007e5b;--shadow-sm: 0 1px 2px rgba(68,65,113,.1);--shadow-md: 0 12px 30px rgba(67,62,123,.12);--ring: 0 0 0 3px var(--accent-soft);color-scheme:light}[data-theme=dark]{--bg: #131224;--bg-grad: radial-gradient(1200px 620px at 88% -10%, rgba(39,80,243,.24), transparent 60%);--surface: #1d1c30;--surface-2: #28273d;--surface-3: #34344c;--border: #3c3c53;--border-soft: #2c2b40;--text: #f4f5f9;--text-2: #c0c0ca;--text-3: #8d8e9b;--text-faint: #6a6a78;--accent: #5687ff;--accent-press: #4774f6;--accent-soft: rgba(86,135,255,.18);--accent-line: rgba(86,135,255,.42);--on-accent: #fafcff;--info: #3faff3;--info-soft: rgba(63,175,243,.16);--warn: #feb354;--warn-soft: rgba(254,179,84,.16);--danger: #f75c61;--danger-soft: rgba(247,92,97,.16);--violet: #c28efb;--violet-soft: rgba(194,142,251,.16);--teal: #48cba1;--teal-soft: rgba(72,203,161,.16);--ok: #48cba1;--shadow-sm: 0 1px 2px rgba(1,0,5,.45);--shadow-md: 0 10px 30px rgba(1,0,13,.5);color-scheme:dark}@supports (color: oklch(.5 .1 266)){:root{--bg: oklch(.972 .006 264);--bg-grad: radial-gradient(1100px 560px at 92% -12%, oklch(.55 .2 266 / .09), transparent 60%);--surface: oklch(.998 .001 264);--surface-2: oklch(.968 .006 264);--surface-3: oklch(.938 .009 264);--border: oklch(.895 .011 264);--border-soft: oklch(.928 .008 264);--text: oklch(.255 .035 285);--text-2: oklch(.43 .03 285);--text-3: oklch(.56 .025 285);--text-faint: oklch(.67 .02 285);--accent: oklch(.52 .245 266);--accent-press: oklch(.46 .235 266);--accent-soft: oklch(.52 .245 266 / .11);--accent-line: oklch(.52 .245 266 / .4);--on-accent: oklch(.99 .005 266);--info: oklch(.56 .15 248);--info-soft: oklch(.56 .15 248 / .12);--warn: oklch(.62 .14 62);--warn-soft: oklch(.66 .14 62 / .14);--danger: oklch(.56 .2 25);--danger-soft: oklch(.56 .2 25 / .12);--violet: oklch(.52 .2 300);--violet-soft: oklch(.52 .2 300 / .12);--teal: oklch(.52 .12 168);--teal-soft: oklch(.58 .12 168 / .13);--ok: oklch(.52 .12 168);--shadow-sm: 0 1px 2px oklch(.4 .08 285 / .1);--shadow-md: 0 12px 30px oklch(.4 .1 285 / .12)}[data-theme=dark]{--bg: oklch(.195 .035 285);--bg-grad: radial-gradient(1200px 620px at 88% -10%, oklch(.45 .18 266 / .24), transparent 60%);--surface: oklch(.238 .038 285);--surface-2: oklch(.285 .04 285);--surface-3: oklch(.335 .042 285);--border: oklch(.365 .04 285);--border-soft: oklch(.3 .038 285);--text: oklch(.97 .006 285);--text-2: oklch(.81 .014 285);--text-3: oklch(.65 .02 285);--text-faint: oklch(.53 .022 285);--accent: oklch(.66 .205 266);--accent-press: oklch(.6 .2 266);--accent-soft: oklch(.66 .205 266 / .18);--accent-line: oklch(.66 .205 266 / .42);--on-accent: oklch(.99 .005 266);--info: oklch(.72 .14 240);--info-soft: oklch(.72 .14 240 / .16);--warn: oklch(.82 .14 70);--warn-soft: oklch(.82 .14 70 / .16);--danger: oklch(.68 .19 22);--danger-soft: oklch(.68 .19 22 / .16);--violet: oklch(.74 .16 305);--violet-soft: oklch(.74 .16 305 / .16);--teal: oklch(.76 .13 168);--teal-soft: oklch(.76 .13 168 / .16);--ok: oklch(.76 .13 168);--shadow-sm: 0 1px 2px oklch(.05 .04 285 / .45);--shadow-md: 0 10px 30px oklch(.06 .06 285 / .5)}}*{box-sizing:border-box}body{margin:0;font-family:var(--font-ui);background:var(--bg);background-image:var(--bg-grad);background-attachment:fixed;color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}.brand-logo{height:auto;transition:filter .3s var(--ease)}[data-theme=dark] .brand-logo{filter:brightness(0) invert(1)}.login-split{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(420px,520px);background:var(--bg);color:var(--text)}.login-hero{position:relative;min-height:100vh;padding:48px 52px;display:flex;flex-direction:column;justify-content:space-between;border-right:1px solid var(--border-soft);overflow:hidden;background:radial-gradient(420px 420px at 28% 58%,var(--accent-soft),transparent 70%),var(--bg)}.login-hero>*{position:relative;z-index:1}.login-hero-mark{display:flex;flex-direction:column;gap:7px}.login-hero-sub{font-size:10.5px;color:var(--text-faint);letter-spacing:.06em;text-transform:uppercase}.login-hero-body{display:flex;flex-direction:column;gap:22px;max-width:440px}.login-hero-h{font-size:40px;font-weight:600;line-height:1.1;margin:0}.login-hero-tag{color:var(--text-3);font-size:15px;line-height:1.6;margin:0}.login-hero-stats{display:flex;gap:26px;margin-top:8px}.login-stat-v{font-size:24px;font-weight:700;color:var(--accent);line-height:1}.login-stat-k{font-size:12px;color:var(--text-faint)}.login-hero-foot{font-size:12px}.login-pane{min-height:100vh;padding:32px;background:var(--surface);display:grid;place-items:center}.login-form{width:372px;max-width:100%}.login-form-h{font-size:25px;font-weight:600;margin:0 0 6px}.login-form-sub{margin:0 0 24px;font-size:13.5px}.login-form-foot{gap:7px;margin-top:22px;color:var(--text-faint);font-size:12px;align-items:center}.btn.lg{padding:12px 22px;font-size:14px}.btn.block{width:100%}.login-form .btn.block{display:inline-flex;align-items:center;justify-content:center;gap:8px}@media (max-width: 860px){.login-split{grid-template-columns:1fr}.login-hero{display:none}.login-pane{min-height:100vh;padding:24px;background:var(--bg)}}.portal-wrap{min-height:100vh;display:flex;justify-content:center;align-items:flex-start;padding:clamp(24px,7vh,72px) 24px 40px;background:var(--bg)}.portal-card-wrap{width:560px;max-width:100%;background:var(--surface);border:1px solid var(--border-soft);padding:32px 36px;border-radius:var(--r-lg);box-shadow:var(--shadow-md)}.portal-card-wrap h1{font-family:var(--font-display);font-size:21px;font-weight:600;letter-spacing:-.01em}@media (max-width: 640px){.portal-wrap{padding:16px 12px 32px}.portal-card-wrap{padding:24px 20px}}.portal-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:0 24px}.portal-inner{width:100%;max-width:940px;padding-top:64px;padding-bottom:48px}.portal-topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:40px}.portal-brand{display:flex;align-items:center;gap:12px}.portal-brand-sub{font-family:var(--font-display);font-weight:600;font-size:12px;color:var(--text-3);letter-spacing:.02em}.portal-welcome{margin-bottom:26px}.portal-welcome-h{font-size:30px;font-weight:600;margin:0}.portal-welcome-sub{margin:0;font-size:14px}.portal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.portal-tile{display:block;text-align:left;text-decoration:none;cursor:pointer;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:20px;transition:transform .16s var(--ease),border-color .16s,box-shadow .16s,background .16s;animation:besen-rise .4s var(--ease) both}.portal-tile:hover{transform:translateY(-2px);border-color:var(--text-faint);box-shadow:var(--shadow-md);text-decoration:none}.portal-tile-icon{display:inline-flex;width:42px;height:42px;border-radius:11px;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent)}.portal-tile-icon.tone-teal{background:var(--teal-soft);color:var(--teal)}.portal-tile-icon.tone-warn{background:var(--warn-soft);color:var(--warn)}.portal-tile-icon.tone-info{background:var(--info-soft);color:var(--info)}.portal-tile-icon.tone-violet{background:var(--violet-soft);color:var(--violet)}.portal-tile-icon.tone-danger{background:var(--danger-soft);color:var(--danger)}.portal-tile-arrow{color:var(--text-faint);transition:transform .16s var(--ease),color .16s}.portal-tile:hover .portal-tile-arrow{transform:translate(3px);color:var(--text-2)}.portal-tile-name{font-weight:600;font-size:16px;color:var(--text)}.portal-tile-desc{font-size:12.5px;color:var(--text-3);line-height:1.5}.portal-scope{gap:8px;margin-top:28px;font-size:12px;color:var(--text-faint)}.portal-scope .mono{color:var(--text-faint)}.layout{display:flex;min-height:100vh}.sidebar{width:230px;background:var(--surface);border-right:1px solid var(--border-soft);display:flex;flex-direction:column;padding:18px 0}.brand{display:flex;flex-direction:column;align-items:flex-start;gap:9px;padding:4px 20px 18px}.brand-sub{font-family:var(--font-display);font-weight:600;font-size:12px;color:var(--text-3);letter-spacing:.02em}.sidebar nav{display:flex;flex-direction:column;flex:1;gap:2px;padding:0 12px}.nav-link{padding:10px 12px;color:var(--text-3);text-decoration:none;border-radius:var(--r-sm);font-size:13.5px;font-weight:500;transition:background .14s var(--ease),color .14s}.nav-link:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.nav-link.active{color:var(--accent);background:var(--accent-soft);font-weight:600}.nav-link.portal-back{color:var(--text-faint);font-size:12px;padding-top:6px;padding-bottom:14px}.nav-link.portal-back:hover{color:var(--text-2);background:transparent}.nav-section{font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);padding:14px 8px 4px}.ops .brand-sub{color:var(--teal)}.ops .nav-link.active{color:var(--teal);background:var(--teal-soft)}.factory .brand-sub{color:var(--warn)}.factory .nav-link.active{color:var(--warn);background:var(--warn-soft)}.sidebar-foot{padding:14px 20px 0;margin:0 8px;border-top:1px solid var(--border-soft)}.scopes{font-family:var(--font-mono);font-size:11px;color:var(--text-faint);margin-bottom:10px;word-break:break-all}.content{flex:1;padding:28px 32px;overflow:auto;max-width:1320px}h2{font-family:var(--font-display);margin:0 0 18px;font-size:22px;font-weight:600;letter-spacing:-.01em}.card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-lg);padding:20px;margin-bottom:18px;box-shadow:var(--shadow-sm)}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}label{display:block;font-size:11px;font-weight:500;color:var(--text-3);margin-bottom:6px;letter-spacing:.02em;text-transform:uppercase}input,select,textarea{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:9px 12px;border-radius:var(--r-sm);font-size:14px;width:100%;font-family:var(--font-ui);transition:border-color .15s,box-shadow .15s}input::placeholder,textarea::placeholder{color:var(--text-faint)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent-line);box-shadow:var(--ring)}.field{margin-bottom:12px}.btn{background:var(--accent);color:var(--on-accent);border:1px solid transparent;padding:9px 17px;border-radius:var(--r-sm);cursor:pointer;font-size:14px;font-weight:600;font-family:var(--font-ui);transition:background .15s var(--ease),border-color .15s,transform .08s,box-shadow .15s}td .btn{white-space:nowrap}.btn:hover{background:var(--accent-press)}.btn:active{transform:translateY(1px)}.btn:focus-visible{outline:none;box-shadow:var(--ring)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.ghost{background:transparent;border-color:var(--border);color:var(--text-2)}.btn.ghost:hover{background:var(--surface-2);color:var(--text);border-color:var(--text-faint)}.btn.sm{padding:6px 12px;font-size:12px;border-radius:var(--r-xs)}.btn.danger{background:var(--danger-soft);color:var(--danger)}.btn.danger:hover{background:var(--danger);color:#fff}.btn.danger.sm{background:var(--danger-soft);color:var(--danger)}.btn.danger.sm:hover{background:var(--danger);color:#fff}.chk{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--text-2);margin:0 0 2px;white-space:nowrap}.chk input{width:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--border-soft);font-size:13px}th{color:var(--text-3);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em;border-bottom-color:var(--border)}tbody tr{transition:background .12s}tbody tr:hover{background:var(--surface-2)}.tag{display:inline-block;padding:3px 9px;border-radius:var(--r-pill);font-size:11.5px;font-weight:600;background:var(--surface-2);color:var(--text-2);line-height:1.5}.tag.admin{background:var(--accent-soft);color:var(--accent)}.tag.operator{background:var(--teal-soft);color:var(--teal)}.tag.factory{background:var(--warn-soft);color:var(--warn)}.tag.field{background:var(--info-soft);color:var(--info)}.tag.sysadmin{background:var(--violet-soft);color:var(--violet)}.tag.status-created,.tag.status-bound{background:var(--accent-soft);color:var(--accent)}.tag.status-activated{background:var(--teal-soft);color:var(--teal)}.tag.status-registered{background:var(--info-soft);color:var(--info)}.tag.status-decommissioned{background:var(--danger-soft);color:var(--danger)}.tag.status-conflict{background:var(--warn-soft);color:var(--warn)}.tag.status-invalid{background:var(--danger-soft);color:var(--danger)}.tag.wo-open{background:var(--info-soft);color:var(--info)}.tag.wo-scheduled{background:var(--teal-soft);color:var(--teal)}.tag.wo-in_progress{background:var(--accent-soft);color:var(--accent)}.tag.wo-blocked{background:var(--warn-soft);color:var(--warn)}.tag.wo-completed{background:var(--surface-3);color:var(--text-3)}.tag.wo-cancelled{background:var(--danger-soft);color:var(--danger)}.tag.prio-low{background:var(--surface-3);color:var(--text-3)}.tag.prio-normal{background:var(--accent-soft);color:var(--accent)}.tag.prio-high{background:var(--warn-soft);color:var(--warn)}.tag.prio-critical{background:var(--danger-soft);color:var(--danger)}.err{color:var(--danger);margin:8px 0;font-size:13px}.ok{color:var(--ok);margin:8px 0;font-size:13px}.warn{color:var(--warn);background:var(--warn-soft);border:1px solid var(--accent-line);border-color:color-mix(in oklch,var(--warn) 35%,transparent);border-radius:var(--r-sm);padding:9px 12px;margin:8px 0;font-size:12px}.muted{color:var(--text-3)}.tabs{display:flex;gap:4px;margin-bottom:14px;border-bottom:1px solid var(--border)}.tab{padding:9px 14px;cursor:pointer;color:var(--text-3);border-bottom:2px solid transparent;font-weight:500}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.tab:hover{color:var(--text-2)}.kv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px 18px}.kv-k{font-size:10.5px;color:var(--text-faint);margin-bottom:3px;text-transform:uppercase;letter-spacing:.04em;font-weight:500}.kv-v{color:var(--text);font-size:13.5px;word-break:break-all}pre{background:var(--surface-2);border:1px solid var(--border);padding:14px;border-radius:var(--r-md);overflow:auto;font-size:12px;max-height:360px;font-family:var(--font-mono);color:var(--text-2)}.mono{font-family:var(--font-mono);font-size:12px}.statgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.stat{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-lg);padding:18px;box-shadow:var(--shadow-sm)}.stat .v{font-family:var(--font-display);font-size:26px;font-weight:700;color:var(--text);font-feature-settings:"tnum" 1}.stat .k{font-size:12px;color:var(--text-3);margin-top:4px}*{scrollbar-width:thin;scrollbar-color:var(--surface-3) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--surface-3);border-radius:99px;border:3px solid transparent;background-clip:content-box}:root{--r-xl: 28px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-7: 32px;--sp-8: 44px;--sp-9: 64px;--sidebar-w: 248px;--topbar-h: 60px;--maxw: 1320px;--chart-grid: #e4e7ed;--shadow-lg: 0 30px 70px rgba(67,62,123,.18)}[data-theme=dark]{--chart-grid: rgba(60,60,83,.6);--shadow-lg: 0 28px 66px rgba(0,0,8,.6)}@supports (color: oklch(.5 .1 266)){:root{--chart-grid: oklch(.9 .01 264);--shadow-lg: 0 30px 70px oklch(.4 .12 285 / .18)}[data-theme=dark]{--chart-grid: oklch(.34 .04 285 / .6);--shadow-lg: 0 28px 66px oklch(.03 .06 285 / .6)}}.display{letter-spacing:-.02em}.num{font-family:var(--font-display);font-feature-settings:"tnum" 1}.col{display:flex;flex-direction:column}.between{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.center{align-items:center}.grow{flex:1}.gap2{gap:var(--sp-2)}.gap4{gap:var(--sp-4)}.gap6{gap:var(--sp-6)}.hr{height:1px;background:var(--border-soft);border:none;margin:var(--sp-5) 0}.faint{color:var(--text-faint)}label.lbl{display:block;font-size:11px;font-weight:500;color:var(--text-3);margin-bottom:6px;letter-spacing:.02em;text-transform:uppercase}.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-2);cursor:pointer;transition:all .15s var(--ease)}.iconbtn:hover{background:var(--surface-2);color:var(--text)}.iconbtn .ic{width:17px;height:17px}.searchbox{position:relative}.searchbox .ic{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--text-faint);pointer-events:none}.searchbox input{padding-left:34px}.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--r-sm);padding:3px;gap:2px}.seg button{border:none;background:transparent;color:var(--text-3);font-family:var(--font-ui);font-size:12.5px;font-weight:600;padding:6px 12px;border-radius:var(--r-xs);cursor:pointer;transition:all .15s var(--ease)}.seg button:hover{color:var(--text)}.seg button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.tag .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.tag.accent{background:var(--accent-soft);color:var(--accent)}.tag.info{background:var(--info-soft);color:var(--info)}.tag.danger{background:var(--danger-soft);color:var(--danger)}.tag.violet{background:var(--violet-soft);color:var(--violet)}.tag.teal{background:var(--teal-soft);color:var(--teal)}.tag.solid{background:var(--accent);color:var(--on-accent)}.tag.warn-tone{background:var(--warn-soft);color:var(--warn)}.kv{display:grid;gap:3px;min-width:0}.kv .k{font-size:10.5px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint)}.kv .v{font-size:13.5px;color:var(--text);overflow-wrap:anywhere}.tbl{width:100%;border-collapse:collapse}.tbl th{text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-3);padding:11px 16px;border-bottom:1px solid var(--border);white-space:nowrap}.tbl td{padding:13px 16px;border-bottom:1px solid var(--border-soft);font-size:13px;color:var(--text-2);vertical-align:middle}.tbl tbody tr{transition:background .12s}.tbl tbody tr:hover{background:var(--surface-2)}.tbl tbody tr:last-child td{border-bottom:none}.tbl td .strong{color:var(--text);font-weight:500}.bar{height:7px;border-radius:99px;background:var(--surface-3);overflow:hidden}.bar>i{display:block;height:100%;border-radius:99px;background:var(--accent);transition:width .6s var(--ease)}.bar.indet{--indet-w: 38%}.bar.indet>i{width:var(--indet-w);animation:besen-indet 1.15s linear infinite}@keyframes besen-indet{0%{margin-left:calc(-1 * var(--indet-w))}to{margin-left:100%}}.flashline{display:flex;flex-direction:column}.flashline .fstage{display:flex;gap:10px;position:relative;padding-bottom:13px}.flashline .fstage:before{content:"";position:absolute;left:9px;top:21px;bottom:1px;width:2px;background:var(--surface-3)}.flashline .fstage:last-child{padding-bottom:0}.flashline .fstage:last-child:before{display:none}.flashline .fnode{width:20px;height:20px;border-radius:50%;flex:none;z-index:1;display:flex;align-items:center;justify-content:center;background:var(--surface-3);color:var(--text-3);font-size:11px;font-weight:600;font-family:var(--font-ui)}.flashline .fstage.done .fnode{background:var(--accent);color:var(--on-accent)}.flashline .fstage.active .fnode{background:var(--accent-soft);color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.flashline .fstage.err .fnode{background:var(--danger);color:#fff}.flashline .ftext{font-size:13px;color:var(--text-2);padding-top:1.5px;min-width:0;overflow-wrap:anywhere}.flashline .fstage.active .ftext{color:var(--text);font-weight:500}.flashline .fstage.err .ftext{color:var(--danger)}.flashline .fbar{margin-top:6px;max-width:420px}.spark{display:flex;align-items:flex-end;gap:3px;height:38px}.spark>i{flex:1;background:var(--accent-soft);border-radius:2px;transition:height .5s var(--ease);min-height:3px}.spark>i.hi{background:var(--accent)}.statcard-ic{display:inline-flex;width:34px;height:34px;border-radius:9px;align-items:center;justify-content:center}.statcard-ic.accent{background:var(--accent-soft);color:var(--accent)}.statcard-ic.teal{background:var(--teal-soft);color:var(--teal)}.statcard-ic.info{background:var(--info-soft);color:var(--info)}.statcard-ic.warn{background:var(--warn-soft);color:var(--warn)}.statcard-ic.violet{background:var(--violet-soft);color:var(--violet)}.statcard-ic.danger{background:var(--danger-soft);color:var(--danger)}.chartbox{width:100%}.chartbox svg{display:block;width:100%}.ring-wrap{position:relative;display:inline-flex;align-items:center;justify-content:center}.ring-wrap .ring-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}.ring-wrap .ring-label .num{font-size:18px;font-weight:700;color:var(--text);line-height:1}.ring-wrap .ring-label .cap{font-size:10px;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em}.ring-track{stroke:var(--surface-3);fill:none}.ring-fill{fill:none;stroke-linecap:round;transition:stroke-dashoffset .6s var(--ease)}.stepper{display:flex;align-items:flex-start;gap:0;width:100%}.stepper .step{display:flex;flex-direction:column;align-items:center;gap:6px;flex:1;position:relative;text-align:center}.stepper .step+.step:before{content:"";position:absolute;top:13px;left:-50%;width:100%;height:2px;background:var(--border);z-index:0}.stepper .step.done+.step:before,.stepper .step.active:before{background:var(--accent)}.stepper .step .node{width:28px;height:28px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-2);border:2px solid var(--border);color:var(--text-3);font-size:12px;font-weight:600;z-index:1;position:relative;transition:all .2s var(--ease)}.stepper .step.active .node{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.stepper .step.done .node{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.stepper .step .step-label{font-size:12px;color:var(--text-3)}.stepper .step.active .step-label,.stepper .step.done .step-label{color:var(--text);font-weight:500}@keyframes besen-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.rise{animation:besen-rise .4s var(--ease) both}@keyframes besen-fade{0%{opacity:0}to{opacity:1}}.fade{animation:besen-fade .3s var(--ease) both}@media print{body{background:#fff;color:#000}.sidebar,form.card,.btn{display:none!important}.card{border:none;background:#fff;margin:0;padding:0;box-shadow:none}.warn{color:#000;background:#fff;border:1px solid #999}th,td{border-bottom:1px solid #ccc;color:#000}th{color:#333}.tag{background:#eee!important;color:#000!important;border:1px solid #ccc}.muted{color:#555}.no-print{display:none!important}.layout{display:block;min-height:0}.content{padding:0;overflow:visible;max-width:none}}
