:root{--bg:#0d1117;--bg2:#12171f;--panel:#161c25;--panel2:#1c232e;--panel3:#222b38;--line:#28303c;--line2:#333d4b;--ink:#e8edf3;--ink2:#c3ccd6;--muted:#8b97a5;--faint:#5c6775;--accent:#3ec7d3;--accent-hover:#5ad4df;--accent-dark:#0a5a62;--accent-ink:#08262a;--accent-soft:#3ec7d31f;--danger:#e5534b;--danger-soft:#e5534b1f;--ok:#5fbf77;--ok-soft:#5fbf771f;--warn:#e3b341;--warn-soft:#e3b3411f;--r-sm:8px;--r:10px;--r-lg:14px;--shadow:0 20px 60px #00000073;--sidebar:248px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font:14px/1.45 Golos Text,system-ui,-apple-system,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;color:inherit}::selection{background:var(--accent-dark)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line2);border:2px solid var(--bg);border-radius:10px}::-webkit-scrollbar-track{background:0 0}.shell{grid-template-columns:var(--sidebar) 1fr;height:100%;display:grid}.shell.collapsed{--sidebar:64px}.sidebar{background:var(--bg2);border-right:1px solid var(--line);flex-direction:column;display:flex;overflow:hidden}.brand{white-space:nowrap;align-items:center;gap:10px;height:60px;padding:0 18px;font-size:16px;font-weight:700;display:flex}.brand .menu-btn{margin-left:-6px}.brand-mark{background:linear-gradient(135deg, var(--accent), #2a7fd4);width:28px;height:28px;color:var(--accent-ink);border-radius:8px;flex:none;place-items:center;display:grid}.brand b{color:var(--accent)}.nav{flex:1;padding:6px 10px 16px;overflow-y:auto}.nav-section{letter-spacing:.09em;text-transform:uppercase;color:var(--faint);white-space:nowrap;align-items:center;gap:8px;padding:18px 10px 8px;font-size:10.5px;font-weight:600;display:flex}.nav a{height:38px;color:var(--ink2);white-space:nowrap;border-radius:999px;align-items:center;gap:12px;margin:2px 0;padding:0 12px;font-size:13.5px;text-decoration:none;display:flex}.nav a svg{width:18px;height:18px;color:var(--muted);flex:none}.nav a:hover{background:var(--panel);color:var(--ink)}.nav a.active{background:var(--panel2);color:var(--ink)}.nav a.active svg{color:var(--accent)}.nav a .badge{margin-left:auto}.collapsed .nav-section span,.collapsed .nav a span,.collapsed .brand span,.collapsed .nav a .badge{display:none}.sidebar-foot{border-top:1px solid var(--line);color:var(--muted);align-items:center;gap:10px;padding:12px 14px;font-size:12.5px;display:flex}.avatar{background:var(--accent-dark);width:30px;height:30px;color:var(--accent);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.main{flex-direction:column;min-width:0;display:flex;overflow:hidden}.topbar{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0d1117d9;flex:none;align-items:center;gap:14px;height:60px;padding:0 24px;display:flex}.crumbs{color:var(--muted);align-items:center;gap:10px;font-size:13.5px;display:flex}.crumbs b{color:var(--ink);font-weight:600}.crumbs .sep{background:var(--line2);width:1px;height:18px}.topbar .spacer{flex:1}.content{flex:1;padding:22px 24px 40px;overflow:auto}.page-head{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:18px;display:flex}.page-head h1{margin:0;font-size:20px;font-weight:600}.page-head .sub{color:var(--muted);font-size:13px}.page-head .spacer{flex:1}.btn{background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:8px;height:36px;padding:0 14px;font-size:13.5px;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.btn:hover{background:var(--panel3);border-color:var(--line2)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn svg{width:16px;height:16px}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.btn.primary:hover{background:var(--accent-hover)}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--panel)}.btn.outline{background:0 0}.btn.danger{color:var(--danger)}.btn.danger:hover{background:var(--danger-soft);border-color:var(--danger)}.btn.sm{border-radius:var(--r-sm);height:30px;padding:0 10px;font-size:12.5px}.btn.icon{width:36px;padding:0}.btn.sm.icon{width:30px}.create-btn{color:var(--ink2);cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:6px 4px;font-size:13.5px;display:inline-flex}.create-btn:hover{color:var(--accent)}.create-btn .plus{border:1.5px solid;border-radius:50%;place-items:center;width:22px;height:22px;display:grid}.input,.select,.textarea{background:var(--bg2);width:100%;height:36px;color:var(--ink);border:1px solid var(--line);border-radius:var(--r);font:inherit;outline:none;padding:0 12px;font-size:13.5px;transition:border-color .12s,box-shadow .12s}.textarea{resize:vertical;height:auto;min-height:84px;padding:10px 12px}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input.sm,.select.sm{border-radius:var(--r-sm);height:30px;font-size:12.5px}.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%238B97A5' stroke-width='2'%3E%3Cpath d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding-right:30px}.search{position:relative}.search svg{width:15px;height:15px;color:var(--muted);position:absolute;top:50%;left:11px;transform:translateY(-50%)}.search .input{padding-left:34px}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field>label,.label{color:var(--muted);font-size:11.5px;font-weight:500}.field .hint{color:var(--faint);font-size:11.5px}.grid2{grid-template-columns:1fr 1fr;gap:14px;display:grid}.grid3{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.span2{grid-column:span 2}.span-all{grid-column:1/-1}.row{align-items:center;gap:10px;display:flex}.row.wrap{flex-wrap:wrap}.col{flex-direction:column;gap:12px;display:flex}.grow{flex:1;min-width:0}.muted{color:var(--muted)}.faint{color:var(--faint)}.mono{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12.5px}.ok-text{color:var(--ok)}.danger-text{color:var(--danger)}.warn-text{color:var(--warn)}.accent-text{color:var(--accent)}.slider{grid-template-columns:1fr 64px;align-items:center;gap:10px;display:grid}.slider input[type=range]{width:100%;accent-color:var(--accent)}.slider .input{text-align:right;font-variant-numeric:tabular-nums;height:28px;padding:0 8px}.color-field{gap:8px;display:flex}.color-field input[type=color]{border-radius:var(--r);border:1px solid var(--line);background:var(--bg2);cursor:pointer;width:40px;height:36px;padding:2px}.switch{flex:none;width:36px;height:20px;position:relative}.switch input{opacity:0;width:0;height:0}.switch span{background:var(--line2);cursor:pointer;border-radius:20px;transition:all .15s;position:absolute;inset:0}.switch span:before{content:"";background:var(--ink);border-radius:50%;width:14px;height:14px;transition:all .15s;position:absolute;top:3px;left:3px}.switch input:checked+span{background:var(--accent)}.switch input:checked+span:before{background:var(--accent-ink);transform:translate(16px)}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}.card-head{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:14px 18px;display:flex}.card-head h3{margin:0;font-size:14.5px;font-weight:600}.card-body,.stat{padding:16px 18px}.stat .v{letter-spacing:-.01em;font-size:26px;font-weight:700}.stat .k{color:var(--muted);margin-top:2px;font-size:12.5px}.stats{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;margin-bottom:18px;display:grid}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.chip-filter{border-radius:var(--r-sm);background:var(--panel2);border:1px solid var(--line);height:30px;color:var(--ink2);cursor:pointer;align-items:center;gap:6px;padding:0 12px;font-size:12.5px;display:inline-flex}.chip-filter.on{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.table-wrap{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);overflow:auto}table.table{border-collapse:collapse;width:100%;font-size:13px}.table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;background:var(--panel);z-index:1;padding:12px 14px;font-size:12px;font-weight:500;position:sticky;top:0}.table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:11px 14px}.table tr:last-child td{border-bottom:none}.table tbody tr{transition:background .1s}.table tbody tr:hover{background:var(--panel2)}.table tbody tr.selected{background:var(--accent-soft)}.table .link{color:var(--accent);text-underline-offset:3px;cursor:pointer;-webkit-text-decoration:underline #3ec7d373;text-decoration:underline #3ec7d373}.table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.table .actions{text-align:right;white-space:nowrap;width:1%}.thumb{border-radius:var(--r-sm);background:var(--bg2) center/cover no-repeat;border:1px solid var(--line);flex:none;width:40px;height:40px}.thumb.lg{width:64px;height:64px}.pager{color:var(--muted);justify-content:space-between;align-items:center;gap:10px;padding:12px 4px 0;font-size:12.5px;display:flex}.chip{letter-spacing:.04em;text-transform:uppercase;background:var(--panel3);height:20px;color:var(--ink2);border:1px solid var(--line2);white-space:nowrap;border-radius:4px;align-items:center;padding:0 7px;font-size:10.5px;font-weight:600;display:inline-flex}.chip.ok{background:var(--ok-soft);color:var(--ok);border-color:#5fbf774d}.chip.danger{background:var(--danger-soft);color:var(--danger);border-color:#e5534b4d}.chip.warn{background:var(--warn-soft);color:var(--warn);border-color:#e3b3414d}.chip.accent{background:var(--accent-soft);color:var(--accent);border-color:#3ec7d34d}.badge{background:var(--accent-dark);min-width:20px;height:20px;color:var(--accent);border-radius:10px;place-items:center;padding:0 6px;font-size:11px;font-weight:700;display:inline-grid}.overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:50;background:#05080cb3;justify-content:center;align-items:center;padding:20px;animation:.12s fade;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--line);width:min(560px,100%);max-height:calc(100vh - 40px);box-shadow:var(--shadow);border-radius:16px;overflow:auto}.modal.wide{width:min(980px,100%)}.modal-head{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:16px 20px;display:flex}.modal-head h3{flex:1;margin:0;font-size:15px}.modal-body{padding:18px 20px}.modal-foot{border-top:1px solid var(--line);justify-content:flex-end;gap:10px;padding:14px 20px;display:flex}.toasts{z-index:100;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:20px;right:20px}.toast{background:var(--panel2);border:1px solid var(--line2);border-left:3px solid var(--accent);border-radius:var(--r);min-width:240px;max-width:420px;box-shadow:var(--shadow);padding:10px 14px;font-size:13px;animation:.15s slide}.toast.error{border-left-color:var(--danger)}.toast.ok{border-left-color:var(--ok)}@keyframes fade{0%{opacity:0}}@keyframes slide{0%{opacity:0;transform:translateY(8px)}}.tabs{border-bottom:1px solid var(--line);gap:2px;margin-bottom:16px;display:flex}.tabs button{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 14px;font-size:13.5px}.tabs button.on{color:var(--ink);border-bottom-color:var(--accent)}.tabs button:hover{color:var(--ink)}.dropzone{border:1.5px dashed var(--line2);border-radius:var(--r-lg);text-align:center;color:var(--muted);cursor:pointer;padding:22px;font-size:13px;transition:border-color .12s,background .12s}.dropzone:hover,.dropzone.over{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.dropzone svg{width:22px;height:22px;margin-bottom:6px}.empty{text-align:center;color:var(--muted);padding:48px 20px}.empty svg{width:34px;height:34px;color:var(--faint);margin-bottom:8px}.progress{background:var(--line);border-radius:6px;height:6px;overflow:hidden}.progress>div{background:var(--accent);height:100%;transition:width .3s}.spinner{border:2px solid var(--line2);border-top-color:var(--accent);border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.split{grid-template-columns:minmax(380px,520px) 1fr;align-items:start;gap:18px;display:grid}.sticky{position:sticky;top:0}.viewport{border-radius:var(--r-lg);border:1px solid var(--line);background:radial-gradient(900px 500px at 50% 0,#1a2430 0%,#0b0f14 70%);height:520px;position:relative;overflow:hidden}.viewport canvas{display:block}.viewport .hud{flex-wrap:wrap;gap:6px;display:flex;position:absolute;top:12px;left:12px}.viewport .hud-r{gap:6px;display:flex;position:absolute;top:12px;right:12px}.viewport .hud-b{color:var(--muted);align-items:center;gap:8px;font-size:12px;display:flex;position:absolute;bottom:12px;left:12px;right:12px}.glass{border:1px solid var(--line);border-radius:var(--r);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#12171fd1}.seg{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);display:inline-flex;overflow:hidden}.seg button{color:var(--muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;height:30px;padding:0 12px;font-size:12.5px;display:inline-flex}.seg button.on{background:var(--accent);color:var(--accent-ink);font-weight:600}.compare{border-collapse:collapse;width:100%;font-size:12.5px}.compare td,.compare th{border-bottom:1px solid var(--line);text-align:right;font-variant-numeric:tabular-nums;padding:7px 8px}.compare th{color:var(--muted);font-weight:500}.compare td:first-child,.compare th:first-child{text-align:left;color:var(--muted)}.delta-good{color:var(--ok)}.delta-bad{color:var(--danger)}.tree-item{border-radius:var(--r);cursor:pointer;border:1px solid #0000;align-items:center;gap:10px;padding:8px 10px;display:flex}.tree-item:hover{background:var(--panel2)}.tree-item.on{background:var(--accent-soft);border-color:#3ec7d359}.tree-item .drag{color:var(--faint);cursor:grab}.tree-item.dragover{border-color:var(--accent);border-style:dashed}.maps-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.map-slot{aspect-ratio:1;border-radius:var(--r);border:1.5px dashed var(--line2);background:var(--bg2) center/cover no-repeat;cursor:pointer;align-items:flex-end;display:flex;position:relative;overflow:hidden}.map-slot.has{border-style:solid;border-color:var(--line)}.map-slot:hover{border-color:var(--accent)}.map-slot .lbl{width:100%;color:var(--ink);background:linear-gradient(#0000,#000000bf);padding:5px 7px;font-size:11px}.map-slot .x{position:absolute;top:4px;right:4px}.map-slot .ph{color:var(--faint);text-align:center;place-items:center;padding:6px;font-size:11px;display:grid;position:absolute;inset:0}.cards-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px;display:grid}.tile{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);cursor:pointer;transition:border-color .12s,transform .12s;overflow:hidden}.tile:hover{border-color:var(--accent);transform:translateY(-2px)}.tile .img{aspect-ratio:1;background:var(--bg2) center/cover no-repeat}.tile .meta{padding:10px 12px}.tile .meta b{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;display:block;overflow:hidden}.login{background:radial-gradient(1200px 700px at 70% -10%, #14303a 0%, var(--bg) 55%);place-items:center;height:100%;display:grid}.login .card{width:380px;padding:30px}.code-block{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);white-space:pre-wrap;word-break:break-all;color:var(--ink2);padding:12px 14px;font-family:ui-monospace,Consolas,monospace;font-size:12px}@media (width<=1100px){.split{grid-template-columns:1fr}.grid3{grid-template-columns:1fr 1fr}}@media (width<=760px){.shell{grid-template-columns:1fr}.sidebar{display:none}.content{padding:16px}.grid2,.grid3{grid-template-columns:1fr}.span2{grid-column:auto}}
