:root{--bg: #0f1011;--bg-sidebar: #0b0c0d;--bg-elevated: #18191b;--bg-overlay: #151618;--bg-hover: #16171a;--bg-selected: #1d1e22;--bg-input: #0f1011;--border: #23252a;--border-strong: #2e3036;--border-subtle: #1a1b1e;--text-1: #f7f8f8;--text-2: #b4b8bf;--text-3: #8a8f98;--accent: #5e6ad2;--accent-hover: #6b77e0;--accent-soft: #1e2140;--accent-text: #a5adff;--green: #4cb782;--green-soft: #1d3a2c;--green-text: #7fdcae;--yellow: #f2c94c;--yellow-soft: #3a2f15;--orange: #f2994a;--red: #c4433a;--red-hover: #d24d43;--red-text: #ff8f86;--red-soft: #3a1a18;--font: "Inter", system-ui, -apple-system, sans-serif;--mono: "JetBrains Mono", ui-monospace, monospace;--fs-xs: 11px;--fs-sm: 12px;--fs-md: 13px;--fs-lg: 15px;--fs-xl: 20px;--fs-2xl: 24px;--fs-3xl: 28px;--r-xs: 4px;--r-sm: 6px;--r-md: 8px;--r-lg: 10px;--r-xl: 12px;--r-2xl: 14px;--h-btn: 28px;--h-row: 42px;--h-top: 44px;--w-sidebar: 232px;--shadow-pop: 0 16px 40px rgba(0, 0, 0, .5);--shadow-hud: 0 20px 48px rgba(0, 0, 0, .55)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text-1);font:400 var(--fs-md)/1.45 var(--font);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}h1,h2,h3{margin:0;letter-spacing:-.02em;font-weight:600}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}::selection{background:var(--accent-soft)}.dim{color:var(--text-3)}.mut{color:var(--text-2)}.mono{font-family:var(--mono);font-size:var(--fs-sm)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.grow{flex:1;min-width:0}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-flex{display:flex;align-items:center;gap:8px}.stack{display:flex;flex-direction:column;gap:12px}.shell{display:flex;min-height:100%}.sidebar{flex:0 0 var(--w-sidebar);background:var(--bg-sidebar);border-right:1px solid var(--border);padding:10px;display:flex;flex-direction:column;gap:1px;position:sticky;top:0;height:100vh;overflow-y:auto}.main{flex:1;min-width:0;display:flex;flex-direction:column;min-height:100vh}.nav{display:flex;align-items:center;gap:10px;height:28px;padding:0 8px;border-radius:var(--r-sm);color:var(--text-2);border:0;background:none;width:100%;cursor:pointer;text-align:left}.nav:hover{background:var(--bg-hover);color:var(--text-1)}.nav.active{background:var(--bg-selected);color:var(--text-1)}.nav svg{flex:none}.nav .count{margin-left:auto;font-size:var(--fs-xs);color:var(--text-3)}.nav-section{font-size:var(--fs-xs);font-weight:500;color:var(--text-3);padding:16px 8px 6px}.topbar{min-height:var(--h-top);display:flex;align-items:center;gap:8px;padding:0 20px;border-bottom:1px solid var(--border);flex-wrap:wrap;position:sticky;top:0;background:var(--bg);z-index:5}.topbar .title{font-weight:500}.topbar .spacer{margin-left:auto;display:flex;align-items:center;gap:8px}.toolbar{display:flex;gap:6px;padding:10px 20px;border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;align-items:center}.page{padding:24px;display:flex;flex-direction:column;gap:20px}.page.narrow{max-width:760px}@media (max-width: 760px){.shell{flex-direction:column}.sidebar{position:static;height:auto;flex:none;width:100%;border-right:0;border-bottom:1px solid var(--border)}}.btn{height:var(--h-btn);padding:0 10px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-1);font-weight:500;font-size:var(--fs-sm);display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;white-space:nowrap}.btn:hover:not(:disabled){border-color:var(--border-strong);background:#1c1d20}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn.danger{background:var(--red);border-color:var(--red);color:#fff}.btn.danger:hover:not(:disabled){background:var(--red-hover)}.btn.ghost{background:none;border-color:transparent;color:var(--text-2)}.btn.ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text-1)}.btn.lg{height:36px;padding:0 14px;font-size:var(--fs-md);border-radius:var(--r-md)}.btn.icon{width:var(--h-btn);padding:0}.btn.on{background:var(--accent-soft);border-color:#4b55b8}.btn .kbd{margin-left:2px}.btn.primary .kbd,.btn.danger .kbd{background:#ffffff29;border-color:transparent;color:#fff}.kbd{font:500 var(--fs-xs) var(--font);min-width:18px;height:18px;padding:0 4px;border-radius:var(--r-xs);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-2);display:inline-flex;align-items:center;justify-content:center}.chip{height:22px;padding:0 8px;border-radius:11px;border:1px solid var(--border);display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);color:var(--text-2);white-space:nowrap;background:none}.chip b{color:var(--text-1);font-weight:500}button.chip{cursor:pointer}button.chip:hover{border-color:var(--border-strong)}.chip.active{border-color:var(--accent);color:var(--text-1);background:var(--accent-soft)}.tabs{display:flex;gap:2px}.tab{height:26px;padding:0 10px;border-radius:var(--r-sm);border:1px solid transparent;background:none;color:var(--text-2);font-weight:500;font-size:var(--fs-sm);cursor:pointer;display:inline-flex;align-items:center}.tab:hover{color:var(--text-1)}.tab.active{background:var(--bg-elevated);border-color:var(--border);color:var(--text-1)}.field{display:flex;flex-direction:column;gap:6px}.field>span{font-size:var(--fs-sm);color:var(--text-2);font-weight:500}.field .hint{font-size:var(--fs-sm);color:var(--text-3)}.input,.select,.textarea{height:32px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg-input);padding:0 10px;color:var(--text-1);outline:none;width:100%}.textarea{height:auto;min-height:72px;padding:8px 10px;resize:vertical;line-height:1.5}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #5e6ad233}.input::placeholder,.textarea::placeholder{color:var(--text-3)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.list{display:flex;flex-direction:column}.group-head{display:flex;align-items:center;gap:8px;height:36px;padding:0 20px;background:var(--bg-sidebar);border-bottom:1px solid var(--border-subtle);font-weight:500}.row{display:flex;align-items:center;gap:12px;min-height:var(--h-row);padding:0 20px;border-bottom:1px solid var(--border-subtle);cursor:pointer;box-shadow:inset 2px 0 0 transparent;color:inherit}.row:hover{background:var(--bg-hover)}.row.selected{background:var(--bg-selected);box-shadow:inset 2px 0 0 var(--accent)}.row.static{cursor:default}.row .id{color:var(--text-3);font-size:var(--fs-sm);width:72px;flex:none}.row .meta{color:var(--text-3);font-size:var(--fs-sm);white-space:nowrap}.table-scroll{overflow-x:auto}table.table{width:100%;border-collapse:collapse}.table th{font-weight:500;color:var(--text-3);font-size:var(--fs-sm);text-align:left;padding:0 12px;height:34px;border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:0 12px;height:var(--h-row);border-bottom:1px solid var(--border-subtle);white-space:nowrap}.table th:first-child,.table td:first-child{padding-left:20px}.table tbody tr:hover{background:var(--bg-hover)}.table tbody tr.clickable{cursor:pointer}.pager{display:flex;align-items:center;gap:8px;padding:10px 20px;color:var(--text-3);font-size:var(--fs-sm)}.status{width:14px;height:14px;border-radius:50%;flex:none;border:1.5px solid var(--text-3);display:inline-block}.status.queued{border-style:dashed}.status.half{border-color:var(--yellow);background:conic-gradient(var(--yellow) 0 50%,transparent 0)}.status.progress{border-color:var(--accent);background:conic-gradient(var(--accent) 0 75%,transparent 0)}.status.done{border-color:var(--green);background:var(--green)}.status.off{border-color:var(--text-3);background:var(--text-3)}.status.danger{border-color:var(--red);background:var(--red)}.status.sm{width:12px;height:12px}.dot{width:8px;height:8px;border-radius:50%;flex:none;display:inline-block}.avatar{width:20px;height:20px;border-radius:50%;font-size:9px;font-weight:600;flex:none;display:inline-flex;align-items:center;justify-content:center;color:#fff}.avatar.md{width:28px;height:28px;font-size:11px}.avatar.lg{width:44px;height:44px;font-size:15px}.avatar.xl{width:72px;height:72px;font-size:24px}.card{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--bg-elevated)}.card-head{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border-subtle);font-weight:500}.card-body{padding:16px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.stat{padding:14px 16px;display:flex;flex-direction:column;gap:4px}.stat .label{font-size:var(--fs-sm);color:var(--text-3)}.stat .value{font-size:var(--fs-2xl);font-weight:600;letter-spacing:-.02em}.kv{display:grid;grid-template-columns:140px minmax(0,1fr);row-gap:12px;column-gap:12px;align-items:center}.kv>.k{color:var(--text-3)}.bar{height:6px;border-radius:3px;background:#202227;overflow:hidden;display:flex;gap:2px}.bar>span{height:100%}.empty{padding:64px 24px;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;color:var(--text-2)}.empty h3{font-size:var(--fs-lg);color:var(--text-1)}.banner{border:1px solid var(--border);border-radius:var(--r-md);padding:10px 12px;display:flex;gap:10px;align-items:flex-start;font-size:var(--fs-md)}.banner.error{border-color:#5a2724;background:var(--red-soft);color:var(--red-text)}.banner.warn{border-color:#5c4a1d;background:var(--yellow-soft);color:#f5d77e}.banner.ok{border-color:#2e5c45;background:var(--green-soft);color:var(--green-text)}.banner.info{background:var(--accent-soft);border-color:#33386b;color:#c9cdff}.skeleton{background:linear-gradient(90deg,#16171a,#1c1d21,#16171a);background-size:200% 100%;animation:sk 1.2s infinite;border-radius:4px;height:12px}@keyframes sk{to{background-position:-200% 0}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#05060799;z-index:50;display:flex;align-items:flex-start;justify-content:center;padding:12vh 16px 16px}.modal{width:min(520px,100%);background:var(--bg-overlay);border:1px solid var(--border-strong);border-radius:var(--r-xl);box-shadow:var(--shadow-pop);display:flex;flex-direction:column;max-height:76vh}.modal-head{padding:14px 16px;border-bottom:1px solid var(--border);font-weight:600;display:flex;align-items:center;gap:8px}.modal-body{padding:16px;overflow-y:auto;display:flex;flex-direction:column;gap:14px}.modal-foot{padding:12px 16px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px}.palette{width:min(640px,100%);background:var(--bg-overlay);border:1px solid var(--border-strong);border-radius:var(--r-xl);box-shadow:var(--shadow-pop);overflow:hidden}.palette-input{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border)}.palette-input input{flex:1;background:none;border:0;outline:0;font-size:16px}.palette-list{max-height:52vh;overflow-y:auto;padding-bottom:6px}.palette-group{font-size:var(--fs-xs);font-weight:500;color:var(--text-3);padding:12px 16px 6px}.palette-item{display:flex;align-items:center;gap:12px;height:40px;padding:0 12px;margin:0 6px;border-radius:7px;cursor:pointer;width:calc(100% - 12px);border:0;background:none;text-align:left}.palette-item.active{background:#222328}.palette-item svg{color:var(--text-3);flex:none}.palette-foot{display:flex;gap:16px;padding:10px 16px;border-top:1px solid var(--border);color:var(--text-3);font-size:var(--fs-sm);flex-wrap:wrap}.toasts{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:60}.toast{min-width:260px;max-width:380px;background:var(--bg-overlay);border:1px solid var(--border-strong);border-radius:var(--r-md);padding:10px 12px;box-shadow:var(--shadow-pop);display:flex;gap:10px;align-items:flex-start}.toast .rid{font-family:var(--mono);font-size:10px;color:var(--text-3)}.hud{position:fixed;left:50%;bottom:20px;transform:translate(-50%);width:min(680px,calc(100% - 32px));background:var(--bg-overlay);border:1px solid var(--border-strong);border-radius:var(--r-2xl);box-shadow:var(--shadow-hud);display:flex;align-items:center;gap:12px;padding:10px 12px;flex-wrap:wrap;z-index:40}.hud-spacer{height:88px;flex:none}.auth{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{width:min(380px,100%);display:flex;flex-direction:column;gap:18px}.auth-card form{display:flex;flex-direction:column;gap:14px}.brand{width:22px;height:22px;border-radius:6px;background:var(--accent);display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#fff;flex:none}.focus{flex:1;display:flex;flex-wrap:wrap}.focus-center{flex:999 1 560px;min-width:0;display:flex;flex-direction:column;align-items:center;padding:48px 24px;gap:28px}.focus-side{flex:1 0 320px;border-left:1px solid var(--border);padding:20px;display:flex;flex-direction:column;gap:18px}.outcomes{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}.outcome{min-height:44px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--bg-elevated);display:flex;align-items:center;gap:10px;padding:0 12px;cursor:pointer;text-align:left;font-weight:500}.outcome:hover{border-color:var(--border-strong)}.outcome.selected{border-color:var(--accent);background:var(--accent-soft)}.timer{font-size:var(--fs-xl);font-weight:500}.wave{display:flex;align-items:center;gap:3px;height:28px}.wave i{width:3px;border-radius:2px;background:var(--green);transition:height .2s}.state-pill{height:24px;padding:0 10px;border-radius:12px;display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);font-weight:500}.timeline{display:flex;flex-direction:column;gap:14px;position:relative}.timeline:before{content:"";position:absolute;left:11px;top:12px;bottom:12px;width:1px;background:var(--border)}.tl-item{display:grid;grid-template-columns:24px minmax(0,1fr);gap:12px;position:relative}.tl-icon{width:24px;height:24px;border-radius:50%;background:#1c1d21;border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--text-2);z-index:1}
