:root{--bg: #e8ecfa;--card: #ffffff;--ink: #1b2440;--ink-2: #4a5476;--ink-3: #8a93b2;--line: #e6e9f4;--soft: #f4f6fc;--blue: #2f5fe0;--blue-soft: #e8eefe;--green: #2fb344;--green-soft: #e6f7ea;--amber: #e69500;--amber-soft: #fff4dc;--red: #e03131;--red-soft: #fde8e8;--violet: #8e5cf7;--violet-soft: #f1ebff;--grey-soft: #eef0f5;--radius: 16px;--shadow: 0 10px 30px rgba(36, 52, 110, .12), 0 2px 6px rgba(36, 52, 110, .06);font-family:Inter,system-ui,-apple-system,sans-serif;color:var(--ink)}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;overflow:hidden;background:var(--bg)}button{font:inherit;color:inherit;cursor:pointer;border:none;background:none}input{font:inherit;color:inherit}.app{position:relative;width:100vw;height:100vh}.canvas-wrap{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.hud{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1}.hud>*{pointer-events:auto}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow)}.header{position:absolute;top:0;left:0;right:0;height:68px;display:flex;align-items:center;gap:18px;padding:0 22px;background:#fffffff5;box-shadow:0 1px 0 var(--line)}.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:20px;white-space:nowrap}.brand-logo{width:34px;height:34px;border-radius:10px;background:linear-gradient(140deg,#4a7bff,#1f3fa8);display:grid;place-items:center;color:#fff;font-weight:800;box-shadow:0 4px 10px #2f5fe059}.brand small{font-weight:500;color:var(--ink-3);font-size:13px;margin-left:2px}.search{position:relative;flex:1;max-width:460px}.search-box{display:flex;align-items:center;gap:10px;height:42px;border:1px solid var(--line);border-radius:12px;padding:0 12px;background:#fff}.search-box input{flex:1;border:none;outline:none;font-size:14px;background:transparent}.search-box kbd{font-family:inherit;font-size:12px;border:1px solid var(--line);border-radius:6px;padding:1px 7px;color:var(--ink-3)}.search-results{position:absolute;top:48px;left:0;right:0;padding:6px;z-index:50}.search-results button{display:flex;flex-direction:column;align-items:flex-start;width:100%;padding:8px 10px;border-radius:10px;text-align:left}.search-results button:hover,.search-results button.on{background:var(--soft)}.search-results small{color:var(--ink-3);font-size:12px}.search-empty{padding:10px;color:var(--ink-3);font-size:13px}.spacer{flex:1}.site-picker{position:relative}.site-btn{display:flex;align-items:center;gap:10px;height:46px;padding:0 10px 0 6px;border:1px solid var(--line);border-radius:12px;background:#fff;min-width:250px}.site-code{font-size:11px;font-weight:700;color:#fff;background:var(--blue);border-radius:8px;padding:6px 7px}.site-btn .txt{display:flex;flex-direction:column;align-items:flex-start;line-height:1.2;flex:1}.site-btn .txt b{font-size:14px}.site-btn .txt small{font-size:12px;color:var(--ink-3)}.site-menu{position:absolute;top:52px;right:0;width:320px;padding:6px;z-index:50}.site-menu button{display:flex;align-items:center;gap:10px;width:100%;padding:8px;border-radius:10px;text-align:left}.site-menu button:hover,.site-menu button.on{background:var(--soft)}.site-menu .txt{display:flex;flex-direction:column;line-height:1.25}.site-menu small{color:var(--ink-3);font-size:12px}.live{display:flex;align-items:center;gap:8px;height:42px;padding:0 6px 0 12px;border-radius:12px;background:var(--green-soft);color:#1e7b30;font-weight:600;font-size:14px}.live.paused{background:var(--amber-soft);color:#9a6200}.live .dot{width:8px;height:8px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px #2fb3442e}.live.paused .dot{box-shadow:none}.speeds{display:flex;gap:2px;background:#ffffffb3;border-radius:9px;padding:2px}.speeds button{font-size:12px;font-weight:600;padding:4px 7px;border-radius:7px;color:var(--ink-2)}.speeds button.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px #0000001f}.bell{position:relative;width:42px;height:42px;border-radius:12px;display:grid;place-items:center}.bell:hover{background:var(--soft)}.bell .badge{position:absolute;top:6px;right:6px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--red);color:#fff;font-size:10px;font-weight:700;display:grid;place-items:center}.alerts{position:absolute;top:52px;right:0;width:340px;padding:8px;z-index:50}.alerts h4{margin:4px 8px 8px;font-size:13px}.alert-row{display:flex;gap:8px;align-items:center;padding:8px;border-radius:10px;font-size:13px}.alert-row:hover{background:var(--soft)}.alert-row i{width:8px;height:8px;border-radius:50%;flex:none}.user{display:flex;align-items:center;gap:10px;padding-left:14px;border-left:1px solid var(--line);white-space:nowrap}.avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(140deg,#ffd8a8,#f59f00);display:grid;place-items:center;font-weight:700;color:#7a4a00}.user .txt{display:flex;flex-direction:column;line-height:1.2}.user small{color:var(--ink-3);font-size:12px}.kpis{position:absolute;top:84px;left:22px;display:flex;gap:14px}.kpi{display:flex;align-items:center;gap:14px;padding:14px 18px 14px 14px;min-width:210px}.kpi-ico{width:44px;height:44px;border-radius:12px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center}.kpi .lbl{font-size:13px;color:var(--ink-2)}.kpi .val{display:flex;align-items:baseline;gap:8px;font-size:26px;font-weight:700;letter-spacing:-.02em}.kpi .val small{font-size:13px;font-weight:600}.kpi .sub{font-size:12px;color:var(--ink-3)}.up{color:var(--green)}.down{color:var(--red)}.scene-ctrl{position:absolute;top:84px;right:404px;display:flex;flex-direction:column;gap:10px}.ctrl-col{display:flex;flex-direction:column;padding:6px;gap:2px}.ctrl-col button{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;color:var(--ink-2)}.ctrl-col button:hover{background:var(--soft);color:var(--ink)}.ctrl-col hr{border:none;border-top:1px solid var(--line);margin:4px 6px}.floors{display:flex;flex-direction:column;padding:6px;gap:2px}.floors .ttl{font-size:10px;font-weight:700;color:var(--ink-3);text-align:center;letter-spacing:.06em;padding:4px 0}.floors button{width:38px;height:34px;border-radius:10px;font-size:12px;font-weight:700;color:var(--ink-2)}.floors button.on{background:var(--blue);color:#fff}.floors button:hover:not(.on){background:var(--soft)}.detail{position:absolute;top:84px;right:22px;width:368px;max-height:calc(100vh - 346px);overflow:auto;padding:18px}.detail::-webkit-scrollbar{width:6px}.detail::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}.d-head{display:flex;gap:12px;align-items:flex-start;padding-bottom:14px;border-bottom:1px solid var(--line)}.d-ico{width:48px;height:48px;border-radius:12px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;flex:none}.d-kind{font-size:11px;font-weight:700;color:var(--blue);letter-spacing:.05em;text-transform:uppercase}.d-name{font-size:19px;font-weight:700;line-height:1.2}.d-sub{font-size:13px;color:var(--ink-3)}.d-actions{margin-left:auto;display:flex;gap:4px}.d-actions button{width:30px;height:30px;border-radius:8px;border:1px solid var(--line);display:grid;place-items:center;color:var(--ink-2)}.d-actions button:hover{background:var(--soft)}.d-status{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 0;font-size:13px;color:var(--ink-2)}.d-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}.d-tile{background:var(--soft);border-radius:12px;padding:10px 12px}.d-tile .lbl{font-size:12px;color:var(--ink-3)}.d-tile .v{font-size:18px;font-weight:700}.d-tile .v small{font-size:12px;font-weight:500;color:var(--ink-3)}.d-sec{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;font-weight:700;margin:6px 0}.d-sec small{font-weight:500;color:var(--ink-3)}.d-list{display:flex;flex-direction:column}.d-row{display:flex;align-items:center;gap:10px;padding:8px 4px;border-bottom:1px solid var(--soft);font-size:13px}.d-row:last-child{border-bottom:none}.d-row .grow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.d-row .num{font-weight:600;font-variant-numeric:tabular-nums}.d-row.click{cursor:pointer;border-radius:8px}.d-row.click:hover{background:var(--soft)}.kv{display:flex;justify-content:space-between;gap:12px;padding:7px 0;font-size:13px;border-bottom:1px solid var(--soft)}.kv span:first-child{color:var(--ink-3)}.kv span:last-child{font-weight:500;text-align:right}.kv a{color:var(--blue);font-weight:600;cursor:pointer}.chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 8px}.chip{font-size:12px;padding:3px 9px;border-radius:999px;background:var(--soft);color:var(--ink-2)}.ended{margin:0 0 10px;padding:8px 12px;border-radius:10px;background:var(--grey-soft);color:var(--ink-2);font-size:12px;font-weight:600}.events{list-style:none;margin:0;padding:0}.events li{position:relative;padding:6px 0 6px 18px;font-size:12.5px;color:var(--ink-2)}.events li:before{content:"";position:absolute;left:4px;top:12px;width:7px;height:7px;border-radius:50%;background:var(--blue)}.events li b{color:var(--ink);font-weight:600;margin-right:6px}.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:4px 10px;border-radius:8px;white-space:nowrap}.pill.green{background:var(--green-soft);color:#1e7b30}.pill.blue{background:var(--blue-soft);color:var(--blue)}.pill.violet{background:var(--violet-soft);color:#6b3fd4}.pill.amber{background:var(--amber-soft);color:#9a6200}.pill.red{background:var(--red-soft);color:var(--red)}.pill.grey{background:var(--grey-soft);color:var(--ink-2)}.bar{height:6px;border-radius:3px;background:var(--line);overflow:hidden;margin-top:6px}.bar>i{display:block;height:100%;border-radius:3px;background:var(--blue)}.bar.green>i{background:var(--green)}.bar.amber>i{background:var(--amber)}.bar.red>i{background:var(--red)}.mini-bar{width:64px}.tracker{position:absolute;left:22px;bottom:18px;width:min(1000px,calc(100vw - 604px));min-width:640px;display:flex;gap:16px;padding:16px 18px;align-items:stretch}.tr-main{flex:1;min-width:0}.tr-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}.tr-head b{font-size:16px}.tr-head small{margin-left:auto;color:var(--ink-3);font-size:12px}.steps{display:flex;align-items:flex-start}.step{flex:1;display:flex;flex-direction:column;align-items:center;position:relative;text-align:center}.step:before{content:"";position:absolute;top:17px;left:-50%;width:100%;height:3px;background:var(--line);z-index:0}.step:first-child:before{display:none}.step.done:before,.step.current:before{background:var(--blue)}.step .dot{position:relative;z-index:1;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--soft);color:var(--ink-3);border:3px solid #fff;box-shadow:0 0 0 1px var(--line)}.step.done .dot{background:var(--blue);color:#fff;box-shadow:none}.step.current .dot{background:var(--blue);color:#fff;box-shadow:0 0 0 5px #2f5fe02e}.step.bad .dot{background:var(--red);color:#fff;box-shadow:none}.step .t{margin-top:6px;font-size:12.5px;font-weight:600}.step .s{font-size:11.5px;color:var(--ink-3)}.tr-card{width:300px;flex:none;background:var(--soft);border-radius:14px;padding:12px 14px;display:flex;gap:12px;align-items:center;cursor:pointer}.tr-card:hover{background:#eceffa}.tr-card .ico{width:48px;height:48px;border-radius:12px;background:#fff;display:grid;place-items:center;color:var(--blue);flex:none}.tr-card .txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;font-size:12.5px}.tr-card .txt b{font-size:15px}.tr-card .txt span{color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.table{position:absolute;right:22px;bottom:18px;width:520px;padding:12px 14px 8px}.tabs{display:flex;align-items:center;gap:4px;margin-bottom:6px}.tabs button{padding:7px 10px;border-radius:10px;font-size:13px;font-weight:600;color:var(--ink-2)}.tabs button em{font-style:normal;color:var(--ink-3);font-weight:500;margin-left:4px}.tabs button.on{background:var(--soft);color:var(--ink)}.tabs .where{margin-left:auto;font-size:12px;color:var(--ink-3)}.rows{height:168px;overflow:auto}.rows::-webkit-scrollbar{width:6px}.rows::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}.row{display:grid;grid-template-columns:92px 1fr 104px 74px 14px;align-items:center;gap:8px;padding:6px 4px;border-bottom:1px solid var(--soft);font-size:12.5px;cursor:pointer;border-radius:8px}.row:hover,.row.on{background:var(--soft)}.row .id{display:flex;flex-direction:column;line-height:1.2}.row .id b{font-size:12.5px}.row .id small{color:var(--ink-3);font-size:11px}.row .what{display:flex;align-items:center;gap:6px;min-width:0;color:var(--ink-2)}.row .what span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .dotc{width:7px;height:7px;border-radius:50%;flex:none}.row .meta{color:var(--ink-3);font-size:12px;font-variant-numeric:tabular-nums}.row .chev{color:var(--ink-3)}.empty{padding:30px 0;text-align:center;color:var(--ink-3);font-size:13px}.scene-tag{display:flex;align-items:center;gap:6px;padding:4px 9px;border-radius:8px;background:#fffffff2;box-shadow:0 4px 12px #24346e2e;font-size:12px;white-space:nowrap;transform:translateY(-50%)}.scene-tag b{font-weight:700}.scene-tag span{color:var(--ink-3)}.scene-tag--sel{background:var(--blue);color:#fff}.scene-tag--sel span{color:#ffffffd9;background:#ffffff2e;padding:1px 6px;border-radius:5px}.ov-tag{display:flex;align-items:center;gap:10px;padding:6px 12px 6px 6px;border-radius:12px;background:#fff;box-shadow:0 6px 18px #24346e33;border:2px solid transparent;white-space:nowrap;text-align:left}.ov-tag:hover{transform:translateY(-2px)}.ov-code{font-size:11px;font-weight:800;color:#fff;background:var(--ink);border-radius:8px;padding:7px 8px}.ov-body{display:flex;flex-direction:column;line-height:1.25}.ov-body b{font-size:14px}.ov-body small{font-size:12px;color:var(--ink-3)}.ov-body em{font-style:normal;font-weight:700}.ov-body em.good{color:var(--green)}.ov-body em.bad{color:var(--red)}.nogl{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--ink-2);font-size:15px}@media (max-width: 1500px){.kpi{min-width:0;padding-right:14px}.kpi:nth-child(4){display:none}.tracker{min-width:560px}.tr-card{width:240px}}@media (max-width: 1279px){.tracker,.kpis{display:none}}
