:root{--font-display: "Bahnschrift", "DIN Alternate", "Oswald", "Arial Narrow", system-ui, sans-serif;--font-sans: system-ui, "Segoe UI", Roboto, -apple-system, sans-serif;--font-mono: "Cascadia Mono", "Cascadia Code", "Consolas", "SF Mono", ui-monospace, monospace;--bg-0: #0a0d12;--panel: rgba(16, 21, 28, .72);--panel-solid: #11161d;--panel-2: rgba(24, 31, 41, .82);--hairline: rgba(140, 170, 200, .14);--hairline-strong: rgba(150, 180, 210, .28);--text: #e8edf4;--text-dim: #9aa7b6;--text-faint: #647183;--accent: #38d6ff;--accent-dim: #1c8db0;--accent-glow: rgba(56, 214, 255, .55);--ok: #56e0a0;--warn: #ffc24b;--alert: #ff5d52;--ore: #ff9a3c;--waste: #9aa7b6;--radius: 10px;--shadow: 0 12px 40px rgba(0, 0, 0, .55)}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;padding:0;height:100%;overflow:hidden;background:var(--bg-0);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}#app{position:fixed;inset:0}#scene{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab}#scene:active{cursor:grabbing}#scene-overlay{position:fixed;inset:0;pointer-events:none;z-index:5}.chrome{position:fixed;z-index:10;background:var(--panel);backdrop-filter:blur(14px) saturate(120%);-webkit-backdrop-filter:blur(14px) saturate(120%);border:1px solid var(--hairline);box-shadow:var(--shadow)}#topbar{top:12px;left:12px;right:12px;height:58px;border-radius:var(--radius);display:flex;align-items:center;justify-content:space-between;padding:0 14px;gap:14px}.topbar-left{display:flex;align-items:center;gap:11px;min-width:0}.brandmark{color:var(--accent);display:flex;filter:drop-shadow(0 0 8px var(--accent-glow))}.brand-title{font-family:var(--font-display);font-size:18px;letter-spacing:2.5px;font-weight:700;line-height:1;color:var(--text)}.brand-sub{font-family:var(--font-mono);font-size:9.5px;letter-spacing:1.6px;color:var(--text-faint);margin-top:4px}.topbar-center{display:flex;align-items:center;gap:14px}.shift-clock{display:flex;align-items:baseline;gap:8px;padding:6px 12px;border:1px solid var(--hairline);border-radius:8px;background:#00000040}.clock-label{font-family:var(--font-display);font-size:10px;letter-spacing:2px;color:var(--text-faint)}.clock-shift{font-size:12px;color:var(--accent);letter-spacing:1px}.clock-time{font-size:18px;color:var(--text);letter-spacing:1px;font-variant-numeric:tabular-nums}.time-controls{display:flex;align-items:center;gap:6px}.speed-group{display:flex;gap:2px;border:1px solid var(--hairline);border-radius:8px;overflow:hidden}.tc-btn,.cam-btn,.icon-btn,.panel-tab,.ai-btn,.chip,.speed-btn{font-family:var(--font-display);cursor:pointer;border:none;background:transparent;color:var(--text-dim);transition:background .15s,color .15s,box-shadow .15s,border-color .15s}.tc-btn{width:34px;height:32px;border:1px solid var(--hairline);border-radius:8px;color:var(--text);font-size:13px;display:inline-flex;align-items:center;justify-content:center}.speed-btn{border:none;border-radius:0;width:38px;height:32px;font-size:12px;letter-spacing:.5px}.tc-btn:hover,.speed-btn:hover{background:#38d6ff1a;color:var(--text)}.speed-btn[aria-pressed=true]{background:var(--accent);color:#06222c;font-weight:700}.tc-btn.paused .icon-pause:before{content:"►"}.tc-btn.paused .icon-pause{font-size:12px}.cam-presets{display:flex;gap:4px}.cam-btn{font-size:10.5px;letter-spacing:1px;padding:7px 10px;border:1px solid var(--hairline);border-radius:7px;white-space:nowrap}.cam-btn:hover{background:#38d6ff1a;color:var(--text)}.cam-btn[aria-pressed=true]{border-color:var(--accent-dim);color:var(--accent);background:#38d6ff1a;box-shadow:inset 0 0 12px #38d6ff1f}.icon-btn{width:34px;height:34px;border:1px solid var(--hairline);border-radius:8px;font-size:16px;color:var(--text-dim);display:inline-flex;align-items:center;justify-content:center}.icon-btn:hover{background:#38d6ff1a;color:var(--text)}.topbar-right{display:flex;align-items:center;gap:10px}#left-rail{top:82px;left:12px;width:256px;bottom:138px;border-radius:var(--radius);padding:12px;display:flex;flex-direction:column;overflow:hidden}.rail-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.rail-title{font-family:var(--font-display);font-size:12px;letter-spacing:2.5px;color:var(--text-dim)}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--text-faint)}.status-dot.live{background:var(--ok);box-shadow:0 0 8px var(--ok);animation:pulse 2s infinite}.status-dot.paused{background:var(--warn);box-shadow:0 0 8px var(--warn);animation:none}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.kpi-list{display:flex;flex-direction:column;gap:7px;overflow-y:auto;padding-right:4px}.kpi{display:grid;grid-template-columns:1fr auto;align-items:center;padding:8px 10px;border:1px solid var(--hairline);border-radius:8px;background:#0000002e}.kpi-label{font-size:10px;letter-spacing:.6px;color:var(--text-dim);text-transform:uppercase}.kpi-val{font-family:var(--font-mono);font-size:16px;color:var(--text);text-align:right;font-variant-numeric:tabular-nums}.kpi-val .unit{font-size:10px;color:var(--text-faint);margin-left:3px}.kpi-sub{grid-column:1 / -1;font-family:var(--font-mono);font-size:9.5px;color:var(--text-faint);margin-top:2px}.kpi.good .kpi-val{color:var(--ok)}.kpi.warn .kpi-val{color:var(--warn)}.kpi.alert .kpi-val{color:var(--alert)}.kpi-bar{grid-column:1 / -1;height:3px;border-radius:2px;background:#ffffff14;margin-top:6px;overflow:hidden}.kpi-bar>i{display:block;height:100%;background:var(--accent);border-radius:2px;transition:width .4s ease}.kpi.good .kpi-bar>i{background:var(--ok)}.kpi.warn .kpi-bar>i{background:var(--warn)}.kpi.alert .kpi-bar>i{background:var(--alert)}#right-panel{top:82px;right:12px;width:340px;bottom:138px;border-radius:var(--radius);display:flex;flex-direction:column;overflow:hidden}.panel-tabs{display:flex;border-bottom:1px solid var(--hairline)}.panel-tab{flex:1;padding:12px 8px;font-size:11px;letter-spacing:1.5px;border-bottom:2px solid transparent}.panel-tab:hover{color:var(--text)}.panel-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-pane{display:none;flex:1;overflow-y:auto;padding:14px}.tab-pane.active{display:block}.detail-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;padding:24px;color:var(--text-faint)}.detail-empty-icon{font-size:34px;color:var(--accent-dim);margin-bottom:12px;opacity:.6}.detail-empty-title{font-family:var(--font-display);font-size:15px;letter-spacing:1px;color:var(--text-dim);margin:0 0 6px}.detail-empty-sub{font-size:12px;line-height:1.5;max-width:220px;margin:0}.dt-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.dt-icon{width:38px;height:38px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:20px;border:1px solid var(--hairline-strong);background:#0000004d}.dt-titles{min-width:0}.dt-name{font-family:var(--font-display);font-size:17px;letter-spacing:1px;line-height:1.05}.dt-type{font-family:var(--font-mono);font-size:10px;letter-spacing:1px;color:var(--text-faint);margin-top:3px;text-transform:uppercase}.dt-state{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:11px;letter-spacing:.5px;padding:5px 10px;border-radius:20px;margin-bottom:14px;border:1px solid var(--hairline)}.dt-state .sd{width:8px;height:8px;border-radius:50%}.dt-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}.dt-metric{padding:9px 10px;border:1px solid var(--hairline);border-radius:8px;background:#0000002e}.dt-metric.full{grid-column:1 / -1}.dt-m-label{font-size:9.5px;letter-spacing:.8px;color:var(--text-faint);text-transform:uppercase}.dt-m-val{font-family:var(--font-mono);font-size:16px;margin-top:3px;font-variant-numeric:tabular-nums}.dt-m-val .unit{font-size:10px;color:var(--text-faint)}.dt-section-h{font-family:var(--font-display);font-size:11px;letter-spacing:2px;color:var(--text-dim);margin:14px 0 8px}.dt-hist{display:flex;align-items:flex-end;gap:3px;height:46px;padding:6px 8px;border:1px solid var(--hairline);border-radius:8px;background:#0000002e}.dt-hist>i{flex:1;background:var(--accent-dim);border-radius:2px 2px 0 0;min-height:2px;opacity:.85}.dt-hist>i.over{background:var(--alert)}.dt-log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}.dt-log li{font-family:var(--font-mono);font-size:10.5px;color:var(--text-dim);display:flex;gap:8px}.dt-log .t{color:var(--text-faint)}.dt-focus-btn{width:100%;margin-top:12px}.ai-section{display:flex;flex-direction:column;gap:14px}.ai-h{font-family:var(--font-display);font-size:12px;letter-spacing:2px;color:var(--text-dim);margin:0 0 4px}.ai-desc{font-size:11.5px;color:var(--text-faint);margin:0 0 10px;line-height:1.4}.ai-divider{height:1px;background:var(--hairline);margin:2px 0}.ai-btn{font-size:12px;letter-spacing:.8px;padding:9px 14px;border:1px solid var(--hairline-strong);border-radius:8px;color:var(--text)}.ai-btn:hover{background:#38d6ff1f;border-color:var(--accent-dim)}.ai-btn.primary{background:var(--accent);color:#06222c;font-weight:700;border-color:transparent}.ai-btn.primary:hover{background:#5fe0ff;box-shadow:0 0 18px var(--accent-glow)}.ai-btn:disabled{opacity:.5;cursor:not-allowed}.ai-suggestions{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.chip{font-family:var(--font-sans);font-size:11px;padding:6px 10px;border:1px solid var(--hairline);border-radius:20px;color:var(--text-dim);text-align:left}.chip:hover{background:#38d6ff1a;color:var(--text);border-color:var(--accent-dim)}.ai-input-row{display:flex;gap:6px}.ai-input{flex:1;min-width:0;padding:9px 11px;background:#0000004d;border:1px solid var(--hairline);border-radius:8px;color:var(--text);font-size:12px}.ai-input:focus{outline:none;border-color:var(--accent-dim);box-shadow:0 0 0 2px #38d6ff26}.ai-output{margin-top:2px}.ai-msg{border:1px solid var(--hairline);border-left:3px solid var(--accent-dim);border-radius:8px;padding:12px 14px;background:#00000038;margin-top:10px}.ai-msg .ai-q{font-size:11px;color:var(--text-faint);margin-bottom:8px;font-style:italic}.ai-msg .ai-a{font-size:13px;line-height:1.55;color:var(--text);white-space:pre-wrap}.ai-msg.error{border-left-color:var(--alert)}.ai-msg.error .ai-a{color:#ffd0cc}.ai-msg .ai-tag{font-family:var(--font-display);font-size:10px;letter-spacing:2px;color:var(--accent);margin-bottom:8px;display:block}.ai-loading{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--hairline);border-radius:8px;background:#00000038;margin-top:10px}.ai-loading .scan{width:30px;height:30px;border-radius:50%;flex:none;background:conic-gradient(from 0deg,transparent,var(--accent));-webkit-mask:radial-gradient(closest-side,transparent 62%,#000 64%);mask:radial-gradient(closest-side,transparent 62%,#000 64%);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.ai-loading .scan-txt{font-family:var(--font-mono);font-size:11px;color:var(--text-dim)}.ai-loading .scan-txt b{color:var(--accent);font-weight:400}#event-feed{left:12px;right:12px;bottom:12px;height:116px;border-radius:var(--radius);padding:10px 12px;display:flex;flex-direction:column}.feed-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.feed-title{font-family:var(--font-display);font-size:12px;letter-spacing:2.5px;color:var(--text-dim)}.feed-legend{font-family:var(--font-mono);font-size:10px;color:var(--text-faint);display:flex;gap:10px;align-items:center}.feed-legend .lg{font-size:9px}.lg-ok{color:var(--ok)}.lg-warn{color:var(--warn)}.lg-alert{color:var(--alert)}.feed-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:3px}.feed-row{display:grid;grid-template-columns:70px 16px 1fr auto;align-items:center;gap:8px;font-family:var(--font-mono);font-size:11px;padding:3px 6px;border-radius:5px;animation:feedIn .35s ease}@keyframes feedIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1}}.feed-row .ts{color:var(--text-faint)}.feed-row .dot{font-size:8px}.feed-row .msg{color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.feed-row .src{color:var(--text-faint);font-size:10px}.feed-row.ok .dot{color:var(--ok)}.feed-row.warn .dot{color:var(--warn)}.feed-row.warn{background:#ffc24b0f}.feed-row.alert .dot{color:var(--alert)}.feed-row.alert{background:#ff5d5214}.feed-row.alert .msg{color:#ffd0cc}.tooltip{position:absolute;pointer-events:none;background:var(--panel-2);backdrop-filter:blur(8px);border:1px solid var(--hairline-strong);border-radius:7px;padding:7px 10px;box-shadow:var(--shadow);max-width:230px;transform:translate(-50%,calc(-100% - 14px));z-index:20}.tooltip .tt-name{font-family:var(--font-display);font-size:13px;letter-spacing:.5px;color:var(--text)}.tooltip .tt-row{font-family:var(--font-mono);font-size:10.5px;color:var(--text-dim);margin-top:2px}.tooltip .tt-row .k{color:var(--text-faint)}.modal-backdrop{position:fixed;inset:0;z-index:100;background:#040609a8;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center}.modal-backdrop[hidden]{display:none}.modal{width:min(460px,92vw);background:var(--panel-solid);border:1px solid var(--hairline-strong);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--hairline)}.modal-head h2{font-family:var(--font-display);font-size:17px;letter-spacing:1px;margin:0}.modal-body{padding:18px;display:flex;flex-direction:column;gap:13px}.modal-note{font-size:12px;line-height:1.55;color:var(--text-dim);margin:0;padding:10px 12px;border:1px solid var(--hairline);border-radius:8px;background:#38d6ff0d}.field{display:flex;flex-direction:column;gap:5px}.field-label{font-family:var(--font-display);font-size:11px;letter-spacing:1.5px;color:var(--text-dim)}.field-input{padding:10px 12px;background:#00000059;border:1px solid var(--hairline);border-radius:8px;color:var(--text);font-size:12px}.field-input:focus{outline:none;border-color:var(--accent-dim);box-shadow:0 0 0 2px #38d6ff26}.field-row{display:flex}.check{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-dim);cursor:pointer}.check input{accent-color:var(--accent)}.settings-status{font-family:var(--font-mono);font-size:11px;margin:0;min-height:14px}.settings-status.ok{color:var(--ok)}.settings-status.err{color:var(--alert)}.modal-foot{padding:14px 18px;border-top:1px solid var(--hairline);display:flex;justify-content:flex-end}#splash{position:fixed;inset:0;z-index:200;background:radial-gradient(circle at 50% 40%,#1a140e,#0a0d12 70%);display:flex;align-items:center;justify-content:center;transition:opacity .8s ease,visibility .8s}#splash.hidden{opacity:0;visibility:hidden;pointer-events:none}.splash-inner{text-align:center}.splash-mark{font-size:46px;filter:drop-shadow(0 0 16px rgba(255,154,60,.6))}.splash-title{font-family:var(--font-display);font-size:26px;letter-spacing:6px;margin-top:14px;color:var(--text)}.splash-sub{font-family:var(--font-mono);font-size:12px;letter-spacing:2px;color:var(--text-faint);margin-top:8px}.splash-bar{width:240px;height:3px;background:#ffffff1a;border-radius:2px;margin:22px auto 0;overflow:hidden}.splash-bar-fill{height:100%;width:30%;background:var(--ore);border-radius:2px;animation:load 1.4s ease-in-out infinite}@keyframes load{0%{transform:translate(-100%)}to{transform:translate(400%)}}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}button:focus-visible{box-shadow:0 0 0 2px #38d6ff66}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#8caac82e;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#8caac852}@media (max-width: 1100px){#left-rail{width:216px}#right-panel{width:300px}.cam-btn{font-size:9.5px;padding:6px 7px}.brand-sub{display:none}}@media (max-width: 860px){#topbar{flex-wrap:wrap;height:auto;padding:8px 10px;gap:8px}.topbar-center,.topbar-right{width:100%;justify-content:space-between}.cam-presets{flex-wrap:wrap}#left-rail{top:auto;bottom:138px;left:8px;width:180px;max-height:42vh}#right-panel{top:auto;bottom:138px;right:8px;width:220px;max-height:52vh}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.status-dot.live{animation:none}}
