.login-wrap[data-v-eb7969cb]{background:linear-gradient(160deg,#101828 0%,#1d2a45 100%);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card[data-v-eb7969cb]{background:#fff;border-radius:14px;width:100%;max-width:420px;padding:30px 32px;box-shadow:0 18px 50px #00000059}.login-card h1[data-v-eb7969cb]{margin-bottom:4px;font-size:1.4rem}.login-card .muted[data-v-eb7969cb]{margin-bottom:20px}.swatch-inline[data-v-f0ed9fe9]{vertical-align:-1px;border-radius:3px;width:11px;height:11px;margin-right:7px;display:inline-block}:root{--bg:#f2f4f8;--panel:#fff;--border:#dde3ec;--text:#1c2333;--muted:#5c6779;--accent:#1f5eff;--accent-dark:#1749c9;--danger:#d92d20;--ok:#12805c;--warn:#b54708;--radius:10px;--shadow:0 1px 2px #1018280f, 0 1px 3px #1018281a}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);margin:0;padding:0;font-family:Segoe UI,system-ui,-apple-system,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.45}#app{min-height:100vh}h1,h2,h3{margin:0 0 .5rem;font-weight:650}h2{font-size:1.15rem}h3{font-size:1rem}p{margin:.35rem 0}a{color:var(--accent)}.topbar{color:#fff;z-index:40;background:#101828;align-items:center;gap:22px;height:54px;padding:0 20px;display:flex;position:sticky;top:0}.topbar .brand{white-space:nowrap;font-size:1.05rem;font-weight:700}.topbar .brand small{opacity:.65;margin-left:8px;font-weight:400}.topbar nav{flex:1;gap:4px;display:flex;overflow-x:auto}.topbar nav button{color:#cdd5e3;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;padding:8px 14px;font-size:.95rem}.topbar nav button:hover{color:#fff;background:#ffffff14}.topbar nav button.active{color:#fff;background:#ffffff24;font-weight:600}.topbar .conn{color:#cdd5e3;white-space:nowrap;align-items:center;gap:8px;font-size:.85rem;display:flex}.topbar .logout{color:#fff;cursor:pointer;background:0 0;border:1px solid #ffffff40;border-radius:8px;padding:5px 12px;font-size:.85rem}.topbar .logout:hover{background:#ffffff1a}.container{max-width:1280px;margin:0 auto;padding:22px 20px 60px}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:18px;padding:18px 20px}.card>h2{margin-bottom:12px}.grid2{grid-template-columns:1fr 1fr;align-items:start;gap:18px;display:grid}@media (width<=1000px){.grid2{grid-template-columns:1fr}}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.spacer{flex:1}.muted{color:var(--muted)}.small{font-size:.85rem}.mono{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.85em}label.field{margin-bottom:12px;display:block}label.field>span{color:var(--muted);margin-bottom:4px;font-size:.85rem;font-weight:600;display:block}input[type=text],input[type=password],input[type=number],input[type=time],input[type=url],select,textarea{border:1px solid var(--border);width:100%;font:inherit;color:var(--text);background:#fff;border-radius:8px;padding:8px 10px}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:2px solid #1f5eff59}input[type=checkbox]{width:auto}.check{cursor:pointer;align-items:center;gap:8px;display:inline-flex}.check input{accent-color:var(--accent)}button.btn{border:1px solid var(--border);color:var(--text);font:inherit;cursor:pointer;background:#fff;border-radius:8px;align-items:center;gap:7px;padding:8px 15px;font-weight:600;display:inline-flex}button.btn:hover{background:#f6f8fc}button.btn:disabled{opacity:.5;cursor:not-allowed}button.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.btn.primary:hover{background:var(--accent-dark)}button.btn.danger{color:var(--danger);background:#fff;border-color:#f2b8b5}button.btn.danger:hover{background:#fef3f2}button.btn.small{padding:4px 10px;font-size:.85rem}button.btn.ghost{background:0 0;border-color:#0000}button.btn.ghost:hover{background:#eef1f6}.badge{color:var(--muted);white-space:nowrap;background:#eef1f6;border-radius:99px;align-items:center;gap:5px;padding:2px 9px;font-size:.78rem;font-weight:600;display:inline-flex}.badge.ok{color:var(--ok);background:#e6f4ee}.badge.err{color:var(--danger);background:#fee4e2}.badge.warn{color:var(--warn);background:#fef0c7}.badge.blue{color:var(--accent-dark);background:#e4ecff}.dot{border-radius:50%;width:9px;height:9px;display:inline-block}.dot.online{background:#17b26a;box-shadow:0 0 0 3px #17b26a22}.dot.offline{background:#98a2b3;box-shadow:0 0 0 3px #98a2b322}table.tbl{border-collapse:collapse;width:100%}table.tbl th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:2px solid var(--border);white-space:nowrap;padding:8px 10px;font-size:.78rem}table.tbl td{border-bottom:1px solid var(--border);vertical-align:middle;padding:9px 10px}table.tbl tr:last-child td{border-bottom:none}table.tbl tr:hover td{background:#fafbfe}.dropzone{border-radius:var(--radius);text-align:center;color:var(--muted);cursor:pointer;background:#fafbfe;border:2px dashed #b6c2d6;padding:26px 16px;transition:all .15s}.dropzone:hover,.dropzone.drag{border-color:var(--accent);color:var(--accent-dark);background:#f0f5ff}.dropzone strong{color:var(--text)}.progress{background:#e7ebf2;border-radius:99px;height:8px;overflow:hidden}.progress>div{background:var(--accent);height:100%;transition:width .2s}.itemlist{flex-direction:column;gap:8px;display:flex}.itemrow{border:1px solid var(--border);background:#fff;border-radius:8px;align-items:center;gap:12px;padding:8px 12px;display:flex}.itemrow.dragover-top{box-shadow:0 -2px 0 0 var(--accent)}.itemrow.dragover-bottom{box-shadow:0 2px 0 0 var(--accent)}.itemrow .drag-handle{cursor:grab;color:var(--muted);-webkit-user-select:none;user-select:none;padding:0 4px;font-size:1.1rem}.itemrow .drag-handle:active{cursor:grabbing}.itemrow.ghost{opacity:.45;border-style:dashed}.thumb{object-fit:cover;background:#101828;border-radius:6px;flex-shrink:0;width:74px;height:44px}.switch{flex-shrink:0;width:38px;height:21px;display:inline-block;position:relative}.switch input{opacity:0;width:0;height:0}.switch .slider{cursor:pointer;background:#cfd6e2;border-radius:99px;transition:all .15s;position:absolute;inset:0}.switch .slider:before{content:"";background:#fff;border-radius:50%;width:15px;height:15px;transition:all .15s;position:absolute;top:3px;left:3px;box-shadow:0 1px 2px #00000040}.switch input:checked+.slider{background:var(--ok)}.switch input:checked+.slider:before{transform:translate(17px)}.modal-back{z-index:100;background:#10182873;justify-content:center;align-items:flex-start;padding:60px 16px;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:12px;width:100%;max-width:720px;max-height:82vh;padding:20px 22px;overflow:auto;box-shadow:0 12px 40px #10182840}.modal .modal-head{align-items:center;margin-bottom:14px;display:flex}.modal .modal-head h2{flex:1;margin:0}.toasts{z-index:200;flex-direction:column;gap:8px;max-width:440px;display:flex;position:fixed;bottom:20px;right:20px}.toast{color:#fff;background:#101828;border-radius:9px;align-items:flex-start;gap:10px;padding:11px 16px;font-size:.9rem;display:flex;box-shadow:0 6px 20px #1018284d}.toast.error{background:#912018}.toast.warn{background:#7a3e0b}.toast.ok{background:#056549}.toast button{color:#fff;cursor:pointer;opacity:.7;background:0 0;border:none;padding:0;font-size:1rem}.toast button:hover{opacity:1}.timeline{flex-direction:column;gap:4px;display:flex}.timeline .tl-head,.timeline .tl-row{grid-template-columns:44px 1fr;align-items:center;gap:8px;display:grid}.timeline .tl-label{color:var(--muted);text-align:right;padding-right:2px;font-size:.82rem;font-weight:600}.timeline .tl-head .hours{height:16px;position:relative}.timeline .tl-head .hours span{color:var(--muted);font-size:.7rem;position:absolute;transform:translate(-50%)}.timeline .track{border:1px solid var(--border);background:repeating-linear-gradient(90deg,#eef1f6 0 1px,#0000 1px 4.16667%);border-radius:6px;height:26px;position:relative;overflow:hidden}.timeline .bar{opacity:.85;color:#fff;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;align-items:center;min-width:2px;padding:0 6px;font-size:.7rem;display:flex;position:absolute;top:3px;bottom:3px;overflow:hidden}.timeline .overlap{pointer-events:none;background:repeating-linear-gradient(-45deg,#d92d2066 0 5px,#0000 5px 10px);border-left:1px solid #d92d2099;border-right:1px solid #d92d2099;position:absolute;top:0;bottom:0}.timeline .nowline{background:var(--danger);z-index:2;width:2px;position:absolute;top:0;bottom:0}.legend{color:var(--muted);flex-wrap:wrap;gap:14px;margin-top:10px;font-size:.82rem;display:flex}.legend .swatch{vertical-align:-1px;border-radius:3px;width:12px;height:12px;margin-right:5px;display:inline-block}.daychips{flex-wrap:wrap;gap:6px;display:flex}.daychips button{border:1px solid var(--border);cursor:pointer;min-width:46px;font:inherit;color:var(--muted);background:#fff;border-radius:8px;padding:7px 0;font-weight:600}.daychips button.on{background:var(--accent);border-color:var(--accent);color:#fff}.daychips button:hover:not(.on){border-color:var(--accent);color:var(--accent)}.mediagrid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;display:grid}.mcard{border:1px solid var(--border);background:#fff;border-radius:10px;flex-direction:column;display:flex;overflow:hidden}.mcard .preview{background:#0d1420;justify-content:center;align-items:center;height:120px;display:flex}.mcard .preview img,.mcard .preview video{object-fit:contain;max-width:100%;max-height:100%}.mcard .body{flex-direction:column;flex:1;gap:5px;padding:10px 12px;display:flex}.mcard .fn{word-break:break-all;font-size:.9rem;font-weight:600}.mcard .meta{color:var(--muted);font-size:.8rem}.mcard .actions{gap:6px;padding:0 12px 12px;display:flex}.empty{text-align:center;color:var(--muted);padding:26px 10px}.spinner{border:3px solid #d6dcea;border-top-color:var(--accent);border-radius:50%;width:26px;height:26px;margin:20px auto;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.errorbox{color:#912018;background:#fee4e2;border:1px solid #f2b8b5;border-radius:8px;margin-bottom:12px;padding:10px 14px;font-size:.9rem}.infobox{color:#1749c9;background:#e4ecff;border:1px solid #c3d4ff;border-radius:8px;margin-bottom:12px;padding:10px 14px;font-size:.9rem}@media (width<=1100px){.topbar{flex-wrap:wrap;row-gap:4px;height:auto;padding:8px 14px}.topbar nav{flex-basis:100%;order:3}.topbar .brand small,.topbar .conn span:last-child{display:none}}table.tbl{min-width:640px}.tbl-scroll{overflow-x:auto}
