body{margin:0}.om *{box-sizing:border-box}.om{--bg:#F3F6FA;--surface:#FFFFFF;--surface2:#F7F9FC;--line:#E2E8F0;--line2:#EDF1F6;--text:#0F172A;--muted:#475569;--subtle:#5B6B82;--accent:#2563EB;--accentText:#1D4ED8;--accentSoft:#EAF1FF;--nav:rgba(255,255,255,.94);--input:#FFFFFF;--inputLine:#CBD5E1;--code:#0F172A;--codeText:#E2E8F0;--okBg:#DCFCE7;--okFg:#166534;--warnBg:#FEF3C7;--warnFg:#92400E;--badBg:#FEE2E2;--badFg:#991B1B;--infoBg:#E0F2FE;--infoFg:#075985;--naBg:#F1F5F9;--naFg:#334155;--orgBg:#FFEDD5;--orgFg:#9A3412;--ok:#15803D;--warn:#B45309;--bad:#B91C1C;--shadow:0 1px 2px rgba(16,24,40,.05),0 1px 3px rgba(16,24,40,.04);min-height:100vh;background:var(--bg);color:var(--text);font-family:Inter,system-ui,sans-serif;font-size:14px;color-scheme:light}.om.dark{--bg:#0A1120;--surface:#111B2F;--surface2:#0E172A;--line:#22314B;--line2:#1A2741;--text:#E6EDF7;--muted:#A6B4C8;--subtle:#93A3BA;--accent:#3B82F6;--accentText:#93C5FD;--accentSoft:rgba(59,130,246,.2);--nav:rgba(10,17,32,.94);--input:#0C1527;--inputLine:#33445F;--code:#050A15;--okBg:rgba(34,197,94,.16);--okFg:#86EFAC;--warnBg:rgba(245,158,11,.16);--warnFg:#FCD34D;--badBg:rgba(239,68,68,.18);--badFg:#FCA5A5;--infoBg:rgba(56,189,248,.16);--infoFg:#7DD3FC;--naBg:rgba(148,163,184,.14);--naFg:#CBD5E1;--orgBg:rgba(249,115,22,.18);--orgFg:#FDBA74;--ok:#4ADE80;--warn:#FBBF24;--bad:#F87171;--shadow:none;color-scheme:dark;background:radial-gradient(900px 500px at 85% -10%,rgba(37,99,235,.28),transparent 60%),radial-gradient(700px 420px at -10% 35%,rgba(14,165,233,.12),transparent 60%),#0a1120}.om a{color:var(--accentText)}.om button{font-family:inherit;cursor:pointer}.om input,.om select,.om textarea{font-family:inherit}.sr{position:absolute;left:-9999px}.row{display:flex;align-items:center}.col{display:flex;flex-direction:column}.wrap{flex-wrap:wrap}.stretch{align-items:stretch}.start{align-items:flex-start}.end{align-items:flex-end}.gap6{gap:6px}.gap8{gap:8px}.gap10{gap:10px}.gap12{gap:12px}.gap14{gap:14px}.gap16{gap:16px}.gap18{gap:18px}.pad{padding:16px 18px}.small{font-size:12px}.muted{color:var(--muted)}.b{font-weight:700}.mono{font-family:JetBrains Mono,monospace;font-size:12px}.lnk{color:var(--accentText);font-weight:600}.okt{color:var(--ok);font-weight:700}.warnt{color:var(--warn);font-weight:700}.badt{color:var(--bad);font-weight:700}.grow{flex:1;min-width:0}.nav{position:sticky;top:0;z-index:40;background:var(--nav);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.nav-in{max-width:1480px;margin:0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:4px;padding:6px 16px;min-height:60px}.brand{display:flex;align-items:center;gap:9px;height:44px;padding:0 10px 0 2px;border:none;background:transparent;color:var(--text);font-weight:800;font-size:17px;letter-spacing:-.2px}.brand-ico{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,#3b82f6,#1d4ed8);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #2563eb59}.navlinks{display:flex;align-items:center;flex-wrap:wrap;gap:2px}.nwrap{position:relative}.nl{height:40px;padding:0 10px;border:none;border-radius:9px;background:transparent;color:var(--text);font-size:14px;font-weight:500;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.nl:hover{background:var(--surface2)}.nl.on{background:var(--accentSoft);color:var(--accentText);font-weight:700}.nb{min-width:20px;height:20px;border-radius:10px;padding:0 6px;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.nb.blue{background:#0284c7;color:#fff}.nb.red{background:#dc2626;color:#fff}.nav-r{display:flex;align-items:center;gap:6px;margin-left:auto}.ib{position:relative;width:42px;height:42px;border-radius:11px;border:1px solid var(--line);background:var(--surface);color:var(--text);display:inline-flex;align-items:center;justify-content:center;font-weight:700}.ib .dot{position:absolute;top:5px;right:5px;min-width:17px;height:17px;border-radius:9px;background:#dc2626;color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px}.sync{color:var(--ok);font-weight:600}.dd{position:absolute;top:46px;left:0;min-width:240px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 44px #02061740;padding:6px;z-index:60}.dd.r{left:auto;right:0}.ddi{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:40px;padding:0 10px;border:none;background:transparent;border-radius:8px;color:var(--text);font-size:14px;text-align:left}.ddi:hover{background:var(--surface2)}.dd-sep{height:1px;background:var(--line);margin:6px 4px}.burger{display:none}.scrim0{position:fixed;top:0;right:0;bottom:0;left:0;z-index:35}@media (max-width:1180px){.navlinks{display:none;order:9;width:100%;flex-direction:column;align-items:stretch;padding:6px 0 10px}.navlinks.open{display:flex}.burger{display:inline-flex}.dd{position:static;box-shadow:none;margin:2px 0 6px 14px}.nl{width:100%;justify-content:flex-start}}.main{max-width:1480px;margin:0 auto;padding:20px 16px 96px;display:flex;flex-direction:column;gap:18px}.ph{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;justify-content:space-between}.pt{margin:0;font-size:24px;font-weight:800;letter-spacing:-.3px}.pd{margin:4px 0 0;color:var(--muted);font-size:13px;max-width:780px;line-height:1.5}.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);min-width:0}.card-h{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:13px 18px;border-bottom:1px solid var(--line)}.h2{margin:0;font-size:15px;font-weight:700}.scroll{overflow-x:auto}.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{text-align:left;color:var(--muted);font-size:12px;font-weight:600;padding:10px 12px;background:var(--surface2);border-bottom:1px solid var(--line);white-space:nowrap}.tbl td{padding:10px 12px;border-top:1px solid var(--line2);vertical-align:middle}.tbl tr:hover td{background:var(--surface2)}.tbl th:first-child,.tbl td:first-child{padding-left:18px}.tbl th:last-child,.tbl td:last-child{padding-right:18px}.btn{height:38px;padding:0 14px;border-radius:9px;border:1px solid var(--inputLine);background:var(--surface);color:var(--text);font-weight:600;font-size:13px;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}.btn:hover{filter:brightness(.97)}.btn.p{background:linear-gradient(180deg,#3b82f6,#2563eb);border-color:#2563eb;color:#fff}.btn.g{background:linear-gradient(180deg,#16a34a,#15803d);border-color:#15803d;color:#fff}.btn.o{background:linear-gradient(180deg,#fbbf24,#f59e0b);border-color:#f59e0b;color:#1f1300}.btn.y{background:linear-gradient(180deg,#fde68a,#fcd34d);border-color:#fcd34d;color:#1f1300}.btn.r{background:linear-gradient(180deg,#ef4444,#dc2626);border-color:#dc2626;color:#fff}.btn.ghost{background:transparent}.btn.sm{height:32px;padding:0 10px;font-size:12px}.btn.lg{height:46px;padding:0 20px;font-size:14px}.in{height:40px;width:100%;border:1px solid var(--inputLine);border-radius:9px;padding:0 10px;font-size:14px;color:var(--text);background:var(--input)}textarea.in{height:auto;padding:10px}.f{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted);font-weight:600;min-width:0}.fg{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.chk{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--text);font-weight:600;min-height:40px}.chk input{width:20px;height:20px}.pill{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:11px;font-size:12px;font-weight:600;white-space:nowrap}.ok{background:var(--okBg);color:var(--okFg)}.warn{background:var(--warnBg);color:var(--warnFg)}.bad{background:var(--badBg);color:var(--badFg)}.info{background:var(--infoBg);color:var(--infoFg)}.na{background:var(--naBg);color:var(--naFg)}.org{background:var(--orgBg);color:var(--orgFg)}.pre{margin:0;padding:12px 14px;border-radius:10px;background:var(--code);color:var(--codeText);font-family:JetBrains Mono,monospace;font-size:12px;line-height:1.65;white-space:pre-wrap;overflow-x:auto}.tabs{display:flex;flex-wrap:wrap;gap:2px;border-bottom:1px solid var(--line)}.tab{height:42px;padding:0 14px;border:none;background:transparent;color:var(--muted);font-weight:600;font-size:13px;border-bottom:2px solid transparent;margin-bottom:-1px}.tab.on{color:var(--accentText);border-bottom-color:var(--accent)}.chip{height:34px;padding:0 13px;border-radius:17px;border:1px solid var(--inputLine);background:var(--surface);color:var(--text);font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:6px}.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.seg{display:flex;border:1px solid var(--line);border-radius:10px;padding:3px;gap:3px;background:var(--surface)}.sg{height:34px;padding:0 10px;border:none;border-radius:7px;background:transparent;color:var(--muted);font-size:13px;font-weight:600}.sg.on{background:var(--accent);color:#fff}.sw{position:relative;flex:none;width:44px;height:26px;border-radius:13px;border:none;padding:0;background:#94a3b8}.sw.on{background:#2563eb}.sw span{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:10px;background:#fff;box-shadow:0 1px 2px #00000040;transition:left .15s}.sw.on span{left:21px}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}.tile{position:relative;overflow:hidden;text-align:left;border-radius:16px;padding:16px 18px 12px;display:flex;flex-direction:column;gap:12px;border:1px solid;transition:transform .15s,box-shadow .15s}.tile:before{content:"";position:absolute;left:0;right:0;top:0;height:55%;background:linear-gradient(180deg,#ffffffa6,#fff0);pointer-events:none}.tile:hover{transform:translateY(-2px);box-shadow:0 14px 28px #0f172a24}.tile-top{position:relative;display:flex;align-items:center;gap:14px}.ico{width:50px;height:50px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex:none;box-shadow:inset 0 1px #ffffff73,0 6px 14px #0f172a26}.i-blue{background:linear-gradient(135deg,#38bdf8,#0284c7)}.i-green{background:linear-gradient(135deg,#4ade80,#16a34a)}.i-slate{background:linear-gradient(135deg,#94a3b8,#475569)}.i-orange{background:linear-gradient(135deg,#fdba74,#ea580c)}.tile-num{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end}.num{font-size:38px;font-weight:800;letter-spacing:-1px;line-height:1}.tl{font-size:13px;font-weight:700;margin-top:4px}.tile-sub{position:relative;display:flex;justify-content:space-between;gap:8px;font-size:12px;font-weight:600;padding-top:9px;border-top:1px solid rgba(15,23,42,.1)}.t-blue{background:linear-gradient(135deg,#f0f9ff,#bae6fd);border-color:#7dd3fc;color:#0c4a6e}.t-green{background:linear-gradient(135deg,#f0fdf4,#bbf7d0);border-color:#86efac;color:#14532d}.t-slate{background:linear-gradient(135deg,#f8fafc,#e2e8f0);border-color:#cbd5e1;color:#1e293b}.t-orange{background:linear-gradient(135deg,#fff7ed,#fed7aa);border-color:#fdba74;color:#7c2d12}.om.dark .tile:before{background:linear-gradient(180deg,#ffffff1f,#fff0)}.om.dark .tile-sub{border-top-color:#ffffff1f}.om.dark .t-blue{background:linear-gradient(135deg,#0ea5e94d,#0ea5e914);border-color:#38bdf873;color:#e0f2fe}.om.dark .t-green{background:linear-gradient(135deg,#22c55e47,#22c55e12);border-color:#4ade8066;color:#dcfce7}.om.dark .t-slate{background:linear-gradient(135deg,#94a3b842,#94a3b80f);border-color:#94a3b866;color:#e2e8f0}.om.dark .t-orange{background:linear-gradient(135deg,#f973164d,#f9731612);border-color:#fb923c73;color:#ffedd5}.dotg{width:8px;height:8px;border-radius:4px;background:#22c55e;display:inline-block}.po{border-top:1px solid var(--line2)}.po:first-child{border-top:none}.po-h{display:flex;align-items:center;gap:10px;width:100%;min-height:46px;padding:0 18px;border:none;background:transparent;color:var(--text);font-size:14px;text-align:left}.po-h:hover{background:var(--surface2)}.chev{transition:transform .15s}.chev.open{transform:rotate(90deg)}.po-b{padding:2px 18px 12px 44px;display:flex;flex-direction:column;gap:6px}.po-i{display:flex;flex-wrap:wrap;gap:10px;align-items:center;font-size:13px}.feed{display:flex;flex-direction:column}.fi{display:flex;gap:10px;padding:10px 18px;border-top:1px solid var(--line2);font-size:13px;line-height:1.45}.fi:first-child{border-top:none}.kv{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px}.kv div{display:flex;flex-direction:column;gap:3px}.kv .k{font-size:12px;color:var(--muted)}.ig{display:grid;grid-template-columns:minmax(120px,170px) 1fr;gap:7px 14px;font-size:13px}.ig .k{color:var(--muted);text-align:right;font-weight:600}.meter{position:relative;height:6px;border-radius:3px;background:linear-gradient(90deg,#ef4444,#f59e0b 22%,#22c55e 42%,#22c55e 82%,#f59e0b)}.meter i{position:absolute;top:-4px;width:3px;height:14px;border-radius:2px;background:var(--text)}.rx{flex:1;min-width:150px;border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:6px;background:var(--surface2)}.port{width:34px;height:34px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}.port.o{background:#15803d;color:#fff}.port.l{background:#dc2626;color:#fff}.port.p{background:#b45309;color:#fff}.port.f{background:var(--naBg);color:var(--naFg)}.cnt{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px}.cnt .card{padding:12px 14px;display:flex;flex-direction:column;gap:4px}.cnt .n{font-size:24px;font-weight:800}.step{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--muted)}.step .sn{width:28px;height:28px;border-radius:14px;display:flex;align-items:center;justify-content:center;border:2px solid var(--line);font-weight:800}.step.on{color:var(--accentText)}.step.on .sn{border-color:var(--accent);background:var(--accent);color:#fff}.step.done{color:var(--ok)}.step.done .sn{border-color:var(--ok);color:var(--ok)}.bar{height:8px;border-radius:4px;background:var(--naBg);overflow:hidden}.bar i{display:block;height:8px;border-radius:4px;background:linear-gradient(90deg,#3b82f6,#2563eb)}.pv{min-width:86px;height:30px;border:none;border-radius:15px;font-size:12px;font-weight:700}.star{width:34px;height:34px;border:none;background:transparent;display:inline-flex;align-items:center;justify-content:center;color:#f59e0b}.aib{position:fixed;right:20px;bottom:20px;z-index:70;height:52px;padding:0 18px;border-radius:26px;border:none;background:linear-gradient(135deg,#3b82f6,#1d4ed8);color:#fff;font-weight:700;font-size:14px;box-shadow:0 12px 30px #2563eb66;display:flex;align-items:center;gap:8px}.aip{position:fixed;right:20px;bottom:84px;z-index:80;width:min(410px,calc(100vw - 32px));height:min(620px,calc(100vh - 120px));display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 60px #02061759}.msgs{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;background:var(--surface2)}.bub{max-width:88%;padding:10px 12px;border-radius:14px;font-size:13px;line-height:1.55;white-space:pre-line}.bub.me{align-self:flex-end;background:#2563eb;color:#fff}.bub.ai{align-self:flex-start;background:var(--surface);border:1px solid var(--line)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0206178c;z-index:85}.modal{position:fixed;z-index:90;top:3vh;bottom:3vh;left:0;right:0;margin:0 auto;width:min(980px,94vw);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 60px #02061766}.mb{flex:1;overflow-y:auto;padding:20px 22px;display:flex;flex-direction:column;gap:20px}.sec{font-size:12px;font-weight:800;color:var(--accentText);letter-spacing:.6px}.toast{position:fixed;right:24px;bottom:84px;z-index:100;max-width:430px;background:#0f172a;color:#fff;border:1px solid #1E293B;border-radius:14px;padding:14px 16px;box-shadow:0 16px 40px #02061759;display:flex;gap:12px;align-items:flex-start;font-size:14px;line-height:1.45}.mapwrap svg{display:block;width:100%;height:auto}.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--muted);padding:10px 18px}.legend span{display:inline-flex;align-items:center;gap:6px}.sq{width:10px;height:10px;border-radius:3px;display:inline-block}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}@keyframes popIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.fade{animation:fadeIn .16s ease-out}.pop{animation:popIn .2s ease-out}.olt-stage{background:radial-gradient(120% 90% at 50% 0%,rgba(90,162,245,.12),transparent 60%),#1a2128;border:1px solid #0e1418;border-radius:12px;padding:14px 16px}.olt-stage.sm{padding:4px;border-radius:6px}.olt-pic{position:relative;container-type:inline-size;filter:drop-shadow(0 8px 14px rgba(0,0,0,.5))}.olt-pic svg{width:100%;height:auto;display:block}.olt-lb{position:absolute;white-space:nowrap;line-height:1;pointer-events:none}.om-blink{animation:omb 1.1s steps(2,end) infinite}@keyframes omb{50%{opacity:.25}}@media (prefers-reduced-motion:reduce){.om-blink{animation:none}}.live-sum{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.live-tile{padding:10px 14px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}.port-sum{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;background:var(--surface2);border:1px solid var(--line);border-radius:10px;padding:8px 10px}.port-sum>div{display:flex;flex-direction:column;gap:2px;font-size:13px}.port-sum .k{font-size:11px;color:var(--muted)}.card.on{border:2px solid var(--accent);background:var(--accentSoft)}body{background:#f3f6fa}.om{display:flex;flex-direction:column}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:40px 16px}.login-card{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:0 20px 50px #0f172a14;padding:32px;display:flex;flex-direction:column;gap:18px}.login-card .in{height:46px;border-radius:12px;font-size:15px}.err{background:var(--badBg);color:var(--badFg);border-radius:10px;padding:10px 12px;font-size:13px;font-weight:600;line-height:1.45}.note{background:var(--infoBg);color:var(--infoFg);border-radius:10px;padding:10px 12px;font-size:13px;line-height:1.5}.dlg{position:fixed;z-index:90;top:5vh;left:0;right:0;margin:0 auto;width:min(760px,94vw);max-height:90vh;display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:0 30px 80px #02061773}.dlg-h{display:flex;align-items:center;gap:10px;padding:14px 20px;border-bottom:1px solid var(--line)}.dlg-b{overflow-y:auto;padding:18px 20px;display:flex;flex-direction:column;gap:16px}.dlg-f{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;padding:12px 20px;border-top:1px solid var(--line);background:var(--surface2)}.empty{padding:36px 18px;text-align:center;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:10px}.btn:disabled{opacity:.55;cursor:not-allowed}.olt-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}.boards{display:flex;flex-wrap:wrap;gap:6px}.bd{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:58px;padding:6px 8px;border-radius:8px;border:1px solid var(--line);background:var(--surface2);font-size:11px}.bd b{font-family:JetBrains Mono,monospace;font-size:11px}.copy-wrap{position:relative}.copy-wrap .btn{position:absolute;top:8px;right:8px}@media (max-width:640px){.pt{font-size:20px}.dlg{top:0;max-height:100vh;width:100vw;border-radius:0}}
