:root{--bg:#F4F5F8;--card:#fff;--line:#E2E5EB;--line2:#EDF0F4;--line3:#C5CCD8;--ink:#121A2B;--mut:#566074;--hover:#F6F8FB;--chip:#EEF1F6;--track:#E3E8EF;--off:#8791A3;
--navHover:rgba(255,255,255,.08);--sideText:#E1E7F1;--sideMut:#9AA6BB;--sideLine:rgba(255,255,255,.14);--code:#0C1424;
--ok:#1A7F4B;--okBg:#DDF3E6;--okText:#0E5C33;--warn:#A15C07;--warnBg:#FCEBCB;--warnText:#7A4300;--bad:#B42318;--badBg:#FDE9E7;--badText:#8A1C13;
--pri:#14213D;--priInk:#fff;--accent:#C8A04A;--accentInk:#121A2B;--accentText:#7A5A10;--accentSoft:#F6EDD6;--side:#0C1424}
:root[data-mode=dark]{--bg:#0B0F18;--card:#131A27;--line:#243047;--line2:#1C2638;--line3:#34425E;--ink:#EEF1F7;--mut:#A3AEC2;--hover:#182032;--chip:#1B2538;--track:#26324A;--off:#5B667A;--code:#070B13;
--ok:#4CC98A;--okBg:#12301F;--okText:#7BE0AB;--warn:#E5A23A;--warnBg:#33260D;--warnText:#F2BE6B;--bad:#F0766B;--badBg:#3A1714;--badText:#FFA79F}
:root[data-skin=gold][data-mode=dark]{--pri:#D4AF5A;--priInk:#121A2B;--accent:#D4AF5A;--accentText:#E3C37A;--accentSoft:#2A2412;--side:#070B13}
:root[data-skin=emerald]{--pri:#0B6B58;--accent:#2FBF9B;--accentInk:#06251E;--accentText:#0B6B58;--accentSoft:#DDF2EC;--side:#0A1F1B}
:root[data-skin=emerald][data-mode=dark]{--pri:#2FBF9B;--priInk:#06251E;--accentText:#6FE0C3;--accentSoft:#10302A;--side:#06130F}
:root[data-skin=blue]{--pri:#2F4FCB;--accent:#8EA8FF;--accentInk:#0E1530;--accentText:#2F4FCB;--accentSoft:#E4EAFE;--side:#141823}
:root[data-skin=blue][data-mode=dark]{--pri:#8EA8FF;--priInk:#0E1530;--accentText:#A9BCFF;--accentSoft:#1B2442;--side:#0A0D15}
*{box-sizing:border-box}
body{margin:0;font-family:'Plus Jakarta Sans',system-ui,sans-serif;background:var(--bg);color:var(--ink)}
button,input,select{font-family:inherit}button{cursor:pointer}
button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.shell{display:flex;flex-wrap:wrap;min-height:100vh}
.side{flex:0 0 244px;flex-grow:1;max-width:100%;background:var(--side);color:var(--sideText);padding:24px 16px;display:flex;flex-direction:column;gap:6px}
.main{flex:999 1 560px;min-width:0;padding:28px 32px;display:flex;flex-direction:column;gap:22px}
.brand{display:flex;align-items:center;gap:10px;padding:0 10px 18px}
.logo{width:36px;height:36px;border-radius:10px;background:var(--accent);color:var(--accentInk);font-weight:800;display:flex;align-items:center;justify-content:center}
.nav{display:flex;justify-content:space-between;align-items:center;width:100%;text-align:left;border:0;border-radius:10px;padding:12px;min-height:44px;font-size:14px;font-weight:500;color:var(--sideText);background:transparent}
.nav:hover{background:var(--navHover)}
.nav.on{font-weight:700;color:var(--accentInk);background:var(--accent)}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px}
.h{margin:0 0 14px;font-size:15px;font-weight:700;letter-spacing:-.01em}
.mut{color:var(--mut)}
.grid4{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}
.flex{display:flex;flex-wrap:wrap;gap:18px}.flex>*{min-width:0}
.big{font-size:32px;font-weight:800;letter-spacing:-.03em;margin:6px 0 4px}
.row{display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding:13px 0;border-top:1px solid var(--line2)}
.row:first-of-type{border-top:0}
table{width:100%;border-collapse:collapse}
.th{text-align:left;font-size:12px;font-weight:600;color:var(--mut);padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.td{font-size:14px;padding:13px 12px;border-bottom:1px solid var(--line2);white-space:nowrap}
.scroll{overflow-x:auto}
.b-pri{background:var(--pri);color:var(--priInk);border:0;border-radius:10px;padding:10px 16px;font-weight:700;font-size:14px;min-height:44px}
.b-sec{background:var(--card);color:var(--ink);border:1px solid var(--line3);border-radius:10px;padding:10px 16px;font-weight:700;font-size:14px;min-height:44px}
.b-sm{background:transparent;color:var(--ink);border:1px solid var(--line3);border-radius:8px;padding:8px 12px;font-size:13px;font-weight:600;min-height:40px}
.chip{font-size:12px;font-weight:600;color:var(--mut);background:var(--chip);border-radius:999px;padding:4px 10px;white-space:nowrap}
.tag{font-size:12px;font-weight:700;border-radius:999px;padding:3px 10px;white-space:nowrap}
.tag.ok{background:var(--okBg);color:var(--okText)}.tag.warn{background:var(--warnBg);color:var(--warnText)}.tag.bad{background:var(--badBg);color:var(--badText)}
.dot{flex:0 0 auto;width:10px;height:10px;border-radius:50%;margin-top:5px}
.dot.ok{background:var(--ok)}.dot.warn{background:var(--warn)}.dot.bad{background:var(--bad)}.dot.off{background:var(--off)}
.sw{flex:0 0 auto;position:relative;width:48px;height:28px;border-radius:999px;border:0;padding:0;background:var(--off)}
.sw.on{background:var(--pri)}
.sw i{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:left .15s}
.sw.on i{left:23px}
:root[data-mode=dark] .sw.on i{background:var(--priInk)}
.field{width:100%;border:1px solid var(--line3);background:var(--card);color:var(--ink);border-radius:10px;padding:10px 12px;font-size:14px;min-height:44px}
.bar{height:8px;border-radius:999px;background:var(--track);overflow:hidden}.bar>div{height:100%;border-radius:999px;background:var(--accent)}
.banner{background:var(--badBg);color:var(--badText);border-radius:12px;padding:14px 18px;font-size:14px;font-weight:600}
.bubble{font-size:14px;background:var(--chip);border-radius:10px 10px 10px 2px;padding:10px 14px;max-width:640px;white-space:pre-wrap;word-break:break-word}
.bubble.r{background:var(--accentSoft);border-radius:10px 10px 2px 10px;margin:8px 0 0 auto}
.log{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px}
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}
.login .card{width:100%;max-width:380px;padding:28px}
.sub{font-size:12px;color:var(--sideMut)}
.themes{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.th-btn{width:34px;height:34px;border-radius:50%;padding:0;background:transparent;border:2px solid transparent;display:flex;align-items:center;justify-content:center}
.th-btn.on{border-color:#fff}.th-btn span{display:block;width:22px;height:22px;border-radius:50%}
.dark-btn{background:transparent;color:#fff;border:1px solid var(--sideLine);border-radius:8px;padding:8px 12px;min-height:40px;font-size:13px;font-weight:600}
.empty{padding:18px 0;color:var(--mut);font-size:14px}

.stage3d{position:relative;height:560px;border-radius:18px;overflow:hidden;border:1px solid #1B2233;background:#06080D;box-shadow:0 30px 80px -40px #000}
.stage3d canvas{display:block;width:100%;height:100%;touch-action:pan-y;cursor:grab}
.s3-labels{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:2}
.s3-lbl{position:absolute;left:0;top:0;color:#E8EDF7;font:600 13px/1.25 'Plus Jakarta Sans',system-ui,sans-serif;text-align:center;white-space:nowrap;text-shadow:0 1px 8px #000;will-change:transform;transition:opacity .2s}
.s3-col{display:flex;flex-direction:column;align-items:center;gap:2px}
.s3-col b{font-size:14px;font-weight:700}.s3-col i,.s3-col small{font-style:normal;font-size:11.5px;font-weight:500;color:#9AA8C2}
.s3-small{font-size:11.5px;font-weight:500;color:#9AA8C2}.s3-strong{color:#E8EDF7;font-weight:700}
.s3-big{font-size:20px;font-weight:700;color:#C9D3E6}.s3-accent{color:var(--accent);font-weight:700}
.s3-row b{font-size:13px;font-weight:600}.s3-num{font-size:22px!important;font-weight:800!important}.s3-off b{color:#7C879C}
.s3-head{position:absolute;left:18px;top:16px;right:18px;display:flex;justify-content:space-between;align-items:flex-start;gap:10px;pointer-events:none;z-index:3;color:#EAF0FA}
.s3-head b{font-size:15px}.s3-hint{font-size:12px;color:#9AA8C2}
.s3-q{pointer-events:auto;background:#0A0E17cc;color:#9AA8C2;border:1px solid #1F2738;border-radius:999px;padding:6px 12px;font-size:12px;min-height:34px}
.s3-q:hover{color:#EAF0FA;border-color:var(--accent)}
.s3-kpis{position:absolute;left:18px;bottom:14px;display:flex;gap:28px;flex-wrap:wrap;z-index:3;pointer-events:none}
.s3-kpis b{display:block;font-size:30px;font-weight:800;letter-spacing:-.03em;color:#F2F5FB;line-height:1.1}.s3-kpis span{font-size:12px;color:#9AA8C2}
.s3-tip{position:absolute;pointer-events:none;background:#0A0E17ee;color:#EAF0FA;border:1px solid #1F2738;border-radius:8px;padding:6px 10px;font-size:12px;opacity:0;transition:opacity .12s;white-space:nowrap;z-index:4}
.s3-nogl{display:none;padding:60px 16px;text-align:center;color:#9AA8C2}
#stageslot:not(:empty){margin-bottom:0}
@media (max-width:760px){.stage3d{height:auto;display:flex;flex-direction:column}.stage3d canvas{height:380px;flex:0 0 380px}.s3-labels{inset:0 0 auto 0;height:380px}
  .s3-kpis{position:static;padding:12px 18px 16px;gap:22px;background:#06080D}.s3-kpis b{font-size:24px}.s3-hint{display:none}.s3-col b{font-size:12.5px}.s3-col i{font-size:10.5px}.s3-head{right:12px}}
.fl{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600}
.fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:12px}
.okmsg{background:var(--okBg);color:var(--okText);border-radius:12px;padding:14px 18px;font-size:14px;font-weight:600}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip2{position:relative;display:inline-flex}
.chip2 input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.chip2 span{border:1px solid var(--line3);border-radius:999px;padding:9px 14px;font-size:13.5px;font-weight:600;color:var(--ink);background:var(--card);min-height:40px;display:inline-flex;align-items:center}
.chip2 input:checked+span{background:var(--pri);color:var(--priInk);border-color:var(--pri)}
.chip2 input:focus-visible+span{outline:3px solid var(--accent);outline-offset:2px}
