:root{--bg:#f4f6f9;--panel:#fff;--border:#d4dae3;--navy:#1a3a6b;--crimson:#9e1b32;--text:#1c2b45;--sub:#5a6577;--green:#1f8a4c;--red:#c0392b;--yellow:#c77c0a;--orange:#d2691e;--arc:#7b5cff}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,sans-serif;font-size:15px}h1{text-align:center;color:var(--navy);border-bottom:3px solid var(--crimson);letter-spacing:1px;background:#fff;padding:12px;font-size:22px;font-weight:700}.subtitle{text-align:center;color:var(--sub);padding:6px 0 4px;font-size:14px}#authScreen{flex-direction:column;justify-content:center;align-items:center;gap:20px;min-height:78vh;padding:20px;display:flex}#authScreen h2{color:var(--navy);text-align:center;font-size:28px}#authScreen p{color:var(--text);text-align:center;max-width:680px;font-size:16px;line-height:1.8}#authScreen .logo-badge{background:var(--navy);color:#fff;letter-spacing:1px;border-radius:8px;padding:10px 26px;font-size:24px;font-weight:700}#authScreen .logo-badge span{color:#fff;background:var(--crimson);border-radius:5px;margin-left:6px;padding:3px 10px}#authBtn{background:var(--crimson);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:14px 48px;font-size:18px;font-weight:700}#authBtn:hover{opacity:.9}#mainApp{display:none}.layout{grid-template-columns:340px 1fr 300px;gap:10px;height:calc(100vh - 92px);padding:10px;display:grid}.left-col,.right-col,.centre-col{flex-direction:column;gap:10px;min-height:0;display:flex}.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:12px;box-shadow:0 1px 3px #1a3a6b0f}.panel-title{color:var(--navy);letter-spacing:.5px;text-transform:uppercase;border-bottom:2px solid var(--crimson);margin-bottom:10px;padding-bottom:7px;font-size:14px;font-weight:700}.mat-card{border:1px solid var(--border);background:#f4f6f9;border-radius:6px;padding:10px}.mat-name{color:var(--crimson);margin-bottom:6px;font-size:17px;font-weight:700}.mat-props{color:var(--sub);font-size:14px;line-height:1.9}.mat-props b{color:var(--text)}.param-row{flex-direction:column;gap:5px;margin-bottom:12px;display:flex}.param-label{color:var(--text);font-size:14px;font-weight:600}.param-ctl{align-items:center;gap:10px;display:flex}.param-slider{min-width:0;accent-color:var(--navy);flex:1;height:6px}.param-input{text-align:center;border:1px solid var(--border);width:74px;color:var(--text);background:#fff;border-radius:5px;flex-shrink:0;padding:6px 4px;font-size:15px}.param-input:focus{border-color:var(--navy);outline:none}select{border:1px solid var(--border);width:100%;color:var(--text);background:#fff;border-radius:5px;margin-bottom:10px;padding:8px;font-size:14px}.btn-row{gap:8px;margin-top:6px;display:flex}.btn{cursor:pointer;white-space:nowrap;border:none;border-radius:6px;padding:11px 10px;font-size:15px;font-weight:700}.btn-primary{background:var(--crimson);color:#fff;flex:2}.btn-reset{color:var(--text);background:#e2e8f0;flex:1}.btn:hover{opacity:.9}.btn:disabled{opacity:.4;cursor:not-allowed}.metric-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.metric-box{border:1px solid var(--border);text-align:center;background:#f4f6f9;border-radius:6px;padding:8px}.metric-val{font-size:22px;font-weight:700}.metric-lbl{color:var(--sub);margin-top:3px;font-size:13px}canvas{background:#eef1f5;border-radius:6px;width:100%;display:block}.scene-row{flex:1;grid-template-columns:1fr 1fr;gap:8px;min-height:0;display:grid}.scene-cell{flex-direction:column;min-height:0;display:flex}.scene-cell .cap{color:var(--navy);margin-bottom:4px;font-size:13px;font-weight:700}.scene-cell canvas{flex:1;min-height:0}.centre-col .build-panel{flex-direction:column;flex:1;min-height:0;display:flex}#vaCanvas{flex:none;height:96px;margin-top:8px}#log{background:#f4f6f9;border-radius:6px;flex:1;min-height:60px;padding:8px;font-family:Consolas,monospace;font-size:13px;line-height:1.7;overflow-y:auto}#log .sys{color:var(--sub)}#log .ok{color:var(--green)}#log .warn{color:var(--yellow)}#log .err{color:var(--red)}#log .mdo{color:var(--navy)}#log .arc{color:var(--arc)}.formula-box{border:1px solid var(--border);color:var(--text);background:#f4f6f9;border-radius:6px;padding:10px;font-family:Consolas,monospace;font-size:13px;line-height:1.9}.formula-box b{color:var(--navy)}.task-box{color:var(--text);background:#fbf3f4;border:1px solid #e8c4cb;border-radius:6px;padding:10px;font-size:14px;line-height:1.8}.task-box b{color:var(--crimson)}.stage-bar{gap:4px;margin:6px 0;display:flex}.stage-seg{text-align:center;color:var(--sub);background:#e2e8f0;border-radius:4px;flex:1;padding:6px 2px;font-size:12px;transition:all .2s}.stage-seg.active{color:#fff;font-weight:700}.s-anod.active{background:#7a828f}.s-spark.active{background:var(--yellow)}.s-micro.active{background:var(--green)}.s-arc.active{background:var(--red)}.heat-info{color:var(--sub);flex-wrap:wrap;gap:18px;padding:8px 0 0;font-size:14px;display:flex}.heat-info b{color:var(--text);font-size:15px}.sensor{border-bottom:1px solid #e8ecf2;justify-content:space-between;padding:5px 0;font-size:14px;display:flex}.sensor .sl{color:var(--sub)}.sensor .sv{color:var(--green);font-weight:700}.verdict{text-align:center;border-radius:6px;margin-top:10px;padding:10px;font-size:15px;font-weight:700;display:none}.v-good{color:var(--green);border:1px solid var(--green);background:#1f8a4c1f}.v-bad{color:var(--red);border:1px solid var(--red);background:#c0392b1f}.legend{color:var(--sub);flex-wrap:wrap;gap:14px;padding:6px 0;font-size:13px;display:flex}.legend span{align-items:center;gap:5px;display:inline-flex}.legend i{border-radius:3px;width:12px;height:12px;display:inline-block}@media (width<=1000px){.layout{grid-template-columns:1fr;height:auto}.scene-row{grid-template-columns:1fr}}.vto-back-bar{z-index:9999;backdrop-filter:blur(10px);background:#ffffffeb;border-bottom:1px solid #123a8624;align-items:center;gap:10px;padding:9px 18px;display:flex;position:fixed;top:0;left:0;right:0;box-shadow:0 2px 8px #09193812}.vto-back-bar a{color:#123a86;border:1px solid #123a8640;border-radius:999px;align-items:center;gap:7px;padding:6px 14px;font-size:12px;font-weight:700;text-decoration:none;display:inline-flex}.vto-back-bar span{color:#52627d;font-size:12px;font-weight:600}body{padding-top:48px!important}
