*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg-page:#f4f6fb;--surface:#fff;--surface-2:#f7f9fd;--surface-hover:#f2f5fc;--border:#e4e9f2;--border-strong:#cdd5e3;--text-primary:#0e1630;--text-secondary:#344158;--text-muted:#5a6882;--accent:#3b5bdb;--accent-hover:#2f4bc2;--accent-soft:#edf1ff;--accent-text:#2f4bc2;--focus-ring:#3b5bdb;--success:#16a34a;--success-soft:#e7f7ed;--success-text:#15803d;--danger:#dc2626;--danger-soft:#fdecec;--danger-text:#b91c1c;--warning:#d97706;--warning-soft:#fdf3e2;--warning-text:#b45309;--purple:#7c3aed;--purple-soft:#f3edff;--purple-text:#6d28d9;--overlay:#0e16306b;--shadow-sm:0 1px 2px #0e16300d;--shadow-md:0 6px 20px #0e163012;--shadow-lg:0 24px 60px #0e16302e;--sidebar-bg:#fff;--header-bg:#f4f6fbd9;--radius:12px;--radius-sm:8px;--ease:cubic-bezier(0.2,0,0,1);--bg-dark:var(--surface-2);--bg-card:var(--surface);--bg-hover:var(--surface-hover);--bg-primary:var(--bg-page);--bg-secondary:var(--surface-2);--primary:var(--accent);--primary-hover:var(--accent-hover)}.viewer-loading,.viewer-wrapper,[data-theme=dark]{--bg-page:#0a0f1e;--surface:#111829;--surface-2:#0d1424;--surface-hover:#172036;--border:#222d45;--border-strong:#34425f;--text-primary:#e6edf6;--text-secondary:#c3cfdf;--text-muted:#93a3ba;--accent:#3b5bdb;--accent-hover:#4c6ef5;--accent-soft:#5c7cfa29;--accent-text:#91a7ff;--focus-ring:#91a7ff;--success:#22c55e;--success-soft:#22c55e24;--success-text:#4ade80;--danger:#f05252;--danger-soft:#f0525224;--danger-text:#ff8080;--warning:#f59e0b;--warning-soft:#f59e0b26;--warning-text:#fbbf24;--purple:#a78bfa;--purple-soft:#a78bfa26;--purple-text:#c4b5fd;--overlay:#020610b3;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 6px 18px #00000047;--shadow-lg:0 30px 80px #0000008c;--sidebar-bg:#0c1222;--header-bg:#0a0f1ed1;--bg-dark:var(--surface-2);--bg-card:var(--surface);--bg-hover:var(--surface-hover);--bg-primary:var(--bg-page);--bg-secondary:var(--surface-2);--primary:var(--accent);--primary-hover:var(--accent-hover)}body{-webkit-font-smoothing:antialiased;background:#f4f6fb;background:var(--bg-page);color:#0e1630;color:var(--text-primary);font-family:Segoe UI Variable Text,Segoe UI,system-ui,-apple-system,Helvetica Neue,Arial,sans-serif;line-height:1.5;min-height:100vh;transition:background-color .2s ease,color .2s ease}button{border:none;cursor:pointer}button,input,select,textarea{font-family:inherit;outline:none}a{color:inherit;text-decoration:none}[tabindex]:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #3b5bdb;outline:2px solid var(--focus-ring);outline-offset:2px}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:#0000}::-webkit-scrollbar-thumb{background:#cdd5e3;background:var(--border-strong);border-radius:4px}.spinner{animation:spin .8s linear infinite;border:3px solid #e4e9f2;border-top-color:#3b5bdb;border:3px solid var(--border);border-radius:50%;border-top-color:var(--accent);height:40px;margin:20px auto;width:40px}@keyframes spin{to{transform:rotate(1turn)}}.badge{border-radius:20px;display:inline-block;font-size:11px;font-weight:600;letter-spacing:.5px;padding:2px 10px;text-transform:uppercase}.badge.online{background:#e7f7ed;background:var(--success-soft);color:#15803d;color:var(--success-text)}.badge.offline{background:#fdecec;background:var(--danger-soft);color:#b91c1c;color:var(--danger-text)}.badge.busy{background:#fdf3e2;background:var(--warning-soft);color:#b45309;color:var(--warning-text)}canvas,img,video{max-width:100%}body,html{overflow-x:hidden}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;transition:none!important}}.btn{align-items:center;border:1px solid #0000;border-radius:10px;display:inline-flex;font-size:14px;font-weight:600;gap:8px;height:38px;justify-content:center;padding:0 16px;transition:background-color .15s var(--ease),border-color .15s var(--ease),color .15s var(--ease),box-shadow .15s var(--ease),transform .1s;white-space:nowrap}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{cursor:not-allowed;opacity:.55}.btn-primary{background:var(--accent);box-shadow:0 1px 2px #141e5033,0 4px 12px color-mix(in srgb,var(--accent) 28%,#0000);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--surface);border-color:var(--border);box-shadow:var(--shadow-sm);color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border-strong)}.btn-ghost{background:#0000;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--surface-hover);color:var(--text-primary)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 86%,#000)}.btn-sm{border-radius:8px;font-size:13px;height:32px;padding:0 12px}.btn-icon{padding:0;width:38px}.btn-icon.btn-sm{width:32px}.btn.spinning svg{animation:spin .8s linear infinite}.page-header{align-items:flex-end;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:22px}.page-title{color:var(--text-primary);font-size:26px;font-weight:700;letter-spacing:-.4px;line-height:1.2}.page-subtitle{color:var(--text-muted);font-size:14px;margin-top:5px}.page-actions{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.kpi-grid{grid-gap:14px;display:grid;gap:14px;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:18px}.kpi-card{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);display:flex;gap:14px;padding:16px 18px;position:relative;transition:box-shadow .2s var(--ease),border-color .2s var(--ease),background-color .2s}.kpi-card:hover{box-shadow:var(--shadow-md)}.kpi-icon{align-items:center;border-radius:12px;display:flex;flex-shrink:0;height:44px;justify-content:center;width:44px}.kpi-body{display:flex;flex-direction:column;min-width:0}.kpi-value{font-feature-settings:"tnum";color:var(--text-primary);font-size:24px;font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:-.3px;line-height:1.15}.kpi-label{color:var(--text-muted);font-size:13px;font-weight:500}.kpi-spark{align-items:flex-end;display:flex;gap:3px;height:26px;margin-left:auto;opacity:.75}.kpi-spark span{background:currentColor;border-radius:2px;width:4px}.kpi-spark span:first-child{height:35%;opacity:.45}.kpi-spark span:nth-child(2){height:60%;opacity:.6}.kpi-spark span:nth-child(3){height:45%;opacity:.75}.kpi-spark span:nth-child(4){height:85%}.tone-primary{--tone:var(--accent);--tone-soft:var(--accent-soft);--tone-text:var(--accent-text)}.tone-success{--tone:var(--success);--tone-soft:var(--success-soft);--tone-text:var(--success-text)}.tone-danger{--tone:var(--danger);--tone-soft:var(--danger-soft);--tone-text:var(--danger-text)}.tone-warning{--tone:var(--warning);--tone-soft:var(--warning-soft);--tone-text:var(--warning-text)}.tone-purple{--tone:var(--purple);--tone-soft:var(--purple-soft);--tone-text:var(--purple-text)}.tone-neutral{--tone:var(--text-muted);--tone-soft:var(--surface-2);--tone-text:var(--text-secondary)}.kpi-card[class*=tone-] .kpi-icon{background:var(--tone-soft);color:var(--tone-text)}.kpi-card[class*=tone-] .kpi-spark{color:var(--tone-text)}.toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}.toolbar .search-input{flex:1 1 280px}.filter-select,.search-input{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-sm);display:flex;height:40px;position:relative;transition:border-color .15s,box-shadow .15s,background-color .2s}.filter-select:focus-within,.search-input:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.filter-select>svg,.search-input>svg{color:var(--text-muted);left:13px;pointer-events:none;position:absolute}.search-input input{background:#0000;border:none;color:var(--text-primary);font-size:14px;height:100%;padding:0 36px 0 38px;width:100%}.search-input input::placeholder{color:var(--text-muted)}.search-input input::-webkit-search-cancel-button{display:none}.filter-select select:focus-visible,.search-input input:focus-visible{outline:none}.search-clear{align-items:center;background:#0000;border-radius:7px;color:var(--text-muted);display:flex;height:26px;justify-content:center;position:absolute;right:7px;width:26px}.search-clear:hover{background:var(--surface-hover);color:var(--text-primary)}.filter-select{min-width:160px}.filter-select select{appearance:none;-webkit-appearance:none;background:#0000;background-image:linear-gradient(45deg,#0000 50%,currentColor 0),linear-gradient(135deg,currentColor 50%,#0000 0);background-position:calc(100% - 16px) 52%,calc(100% - 11px) 52%;background-repeat:no-repeat;background-size:5px 5px;border:none;color:var(--text-primary);cursor:pointer;font-size:14px;font-weight:500;height:100%;padding:0 32px 0 36px;width:100%}.filter-select select option{background:var(--surface);color:var(--text-primary)}.filter-select.is-active{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 50%,var(--border))}.filter-select.is-active select,.filter-select.is-active>svg{color:var(--accent-text)}.data-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden;transition:background-color .2s,border-color .2s}.table-scroll{overflow-x:auto}.data-table{border-collapse:collapse;font-size:14px;width:100%}.data-table th{background:var(--surface-2);color:var(--text-muted);font-size:12px;font-weight:600;letter-spacing:.2px;padding:12px 18px;text-align:left}.data-table td,.data-table th{border-bottom:1px solid var(--border);white-space:nowrap}.data-table td{color:var(--text-primary);padding:14px 18px;vertical-align:middle}.data-table tbody tr{transition:background-color .15s var(--ease)}.data-table tbody tr:hover{background:var(--surface-hover)}.data-table tbody tr:last-child td{border-bottom:none}.data-table tr.row-busy{opacity:.5;pointer-events:none}.data-table .col-actions{text-align:right;width:1%}.data-table .num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right}.cell-muted{color:var(--text-muted)}.cell-icon{align-items:center;display:inline-flex;gap:8px}.cell-icon>svg{color:var(--text-muted);flex-shrink:0}.row-actions{gap:6px;justify-content:flex-end}.ident,.row-actions{align-items:center;display:flex}.ident{gap:12px;min-width:0}.ident-text{display:flex;flex-direction:column;min-width:0}.ident-primary{color:var(--text-primary);font-weight:600;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ident-secondary{color:var(--text-muted);font-size:12px}.mono{font-family:ui-monospace,Cascadia Mono,Consolas,monospace}.avatar{align-items:center;background:linear-gradient(135deg,#5c7cfa,#3b5bdb);border-radius:50%;color:#fff;display:flex;flex-shrink:0;font-size:13px;font-weight:700;height:34px;justify-content:center;width:34px}.avatar.lg{font-size:14px;height:38px;width:38px}.avatar.tone-warning{background:linear-gradient(135deg,#fbbf24,#d97706)}.avatar.tone-purple{background:linear-gradient(135deg,#a78bfa,#7c3aed)}.avatar.tone-neutral{background:linear-gradient(135deg,#94a3b8,#64748b)}.tag{background:var(--accent-soft);color:var(--accent-text);font-size:11px;font-weight:700;padding:1px 8px}.badge-pill,.tag{align-items:center;border-radius:999px;display:inline-flex}.badge-pill{background:var(--tone-soft);border:1px solid color-mix(in srgb,var(--tone) 28%,#0000);color:var(--tone-text);font-size:12px;font-weight:600;gap:6px;padding:3px 10px;white-space:nowrap}.badge-dot{background:currentColor;border-radius:50%;flex-shrink:0;height:7px;width:7px}.badge-pill.pulse .badge-dot{box-shadow:0 0 0 3px color-mix(in srgb,var(--tone) 22%,#0000)}.menu-trigger{align-items:center;background:#0000;border-radius:9px;color:var(--text-secondary);display:inline-flex;height:34px;justify-content:center;transition:background-color .15s,color .15s;width:34px}.menu-trigger:hover,.menu-trigger[aria-expanded=true]{background:var(--surface-hover);color:var(--text-primary)}.menu-popover{animation:menuIn .14s var(--ease);background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-lg);min-width:200px;padding:6px;position:fixed;z-index:500}@keyframes menuIn{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:none}}.menu-item{align-items:center;background:#0000;border-radius:8px;color:var(--text-primary);display:flex;font-size:14px;gap:10px;padding:9px 11px;text-align:left;width:100%}.menu-item svg{color:var(--text-muted);flex-shrink:0}.menu-item:focus-visible,.menu-item:hover:not(:disabled){background:var(--surface-hover);outline:none}.menu-item:disabled{cursor:not-allowed;opacity:.45}.menu-item.danger,.menu-item.danger svg{color:var(--danger-text)}.menu-item.danger:focus-visible,.menu-item.danger:hover:not(:disabled){background:var(--danger-soft)}.menu-sep{background:var(--border);height:1px;margin:6px 4px}.menu-label{color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.5px;padding:8px 11px 4px;text-transform:uppercase}.pagination{border-top:1px solid var(--border);flex-wrap:wrap;font-size:14px;gap:16px;padding:12px 18px}.page-size,.pagination{align-items:center;display:flex}.page-size{color:var(--text-secondary);gap:8px}.page-size select{appearance:none;-webkit-appearance:none;background-color:var(--surface);background-image:linear-gradient(45deg,#0000 50%,currentColor 0),linear-gradient(135deg,currentColor 50%,#0000 0);background-position:calc(100% - 14px) 52%,calc(100% - 9px) 52%;background-repeat:no-repeat;background-size:5px 5px;border:1px solid var(--border);border-radius:8px;color:var(--text-primary);cursor:pointer;font-size:14px;height:34px;padding:0 28px 0 12px}.page-range{color:var(--text-muted);margin-left:auto}.page-buttons{align-items:center;display:flex;gap:5px}.page-btn{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:8px;color:var(--text-secondary);display:inline-flex;font-size:14px;font-weight:600;height:34px;justify-content:center;min-width:34px;padding:0 9px;transition:background-color .15s,color .15s,border-color .15s}.page-btn:hover:not(:disabled):not(.current){background:var(--surface-hover);color:var(--text-primary)}.page-btn.current{background:var(--accent);border-color:var(--accent);color:#fff}.page-btn:disabled{cursor:not-allowed;opacity:.45}.page-gap{color:var(--text-muted);padding:0 2px}.empty-state{padding:56px 20px;text-align:center}.empty-icon{align-items:center;background:var(--accent-soft);border-radius:18px;color:var(--accent-text);display:flex;height:64px;justify-content:center;margin:0 auto 16px;width:64px}.empty-state h3{color:var(--text-primary);font-size:17px;font-weight:700;margin-bottom:6px}.empty-state p{margin:0 auto 20px;max-width:360px}.empty-state p,.loading-state{color:var(--text-muted);font-size:14px}.loading-state{padding:56px 20px;text-align:center}.error-banner{background:var(--danger-soft);border-radius:10px;color:var(--danger-text);font-size:14px;gap:10px;margin-bottom:14px;padding:12px 14px}.error-banner,.modal-overlay{align-items:center;display:flex}.modal-overlay{animation:fadeIn .15s var(--ease);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:var(--overlay);inset:0;justify-content:center;padding:20px;position:fixed;z-index:1000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-box{animation:modalIn .18s var(--ease);background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-lg);max-height:90vh;max-width:480px;overflow-y:auto;width:100%}@keyframes modalIn{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.modal-header{border-bottom:1px solid var(--border);gap:12px;justify-content:space-between;padding:18px 22px}.modal-header,.modal-title-row{align-items:center;display:flex}.modal-title-row{gap:11px;min-width:0}.modal-hdr-icon{align-items:center;background:var(--accent-soft);border-radius:10px;color:var(--accent-text);display:flex;flex-shrink:0;height:34px;justify-content:center;width:34px}.modal-header h3{color:var(--text-primary);font-size:16px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-close{align-items:center;background:#0000;border-radius:8px;color:var(--text-muted);display:flex;padding:7px;transition:background-color .15s,color .15s}.modal-close:hover{background:var(--surface-hover);color:var(--text-primary)}.modal-body{padding:20px 22px 22px}.modal-desc{color:var(--text-muted);font-size:14px;line-height:1.6;margin-bottom:16px}.modal-hint{color:var(--text-muted);font-size:12px;margin-top:8px;word-break:break-all}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:22px}.form{gap:16px}.field,.form{display:flex;flex-direction:column}.field{gap:6px}.field-label{color:var(--text-secondary);font-size:13px;font-weight:600}.field-hint{color:var(--text-muted);font-size:12px}.check-row{align-items:flex-start;color:var(--text-primary);cursor:pointer;display:flex;font-size:14px;gap:10px}.check-row input{accent-color:var(--primary);cursor:pointer;flex-shrink:0;height:16px;margin-top:2px;width:16px}.check-hint{display:block;margin-top:2px}.field-error{background:var(--danger-soft);border-radius:9px;color:var(--danger-text);font-size:13px;padding:9px 12px}.input,.select{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;color:var(--text-primary);font-size:15px;height:42px;padding:0 13px;transition:border-color .15s,box-shadow .15s,background-color .2s;width:100%}.input::placeholder{color:var(--text-muted)}.input:focus,.select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.input:disabled,.select:disabled{cursor:not-allowed;opacity:.6}.input-wrap{position:relative}.input-wrap .input{padding-right:42px}.input-eye{align-items:center;background:#0000;border-radius:8px;color:var(--text-muted);display:flex;height:32px;justify-content:center;position:absolute;right:6px;top:50%;transform:translateY(-50%);width:32px}.input-eye:hover{background:var(--surface-hover);color:var(--text-primary)}.copy-row{display:flex;gap:8px}.copy-row .input{font-size:13px}@media (max-width:1200px){.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.page-header{align-items:stretch;flex-direction:column;margin-bottom:16px}.page-title{font-size:22px}.page-actions .btn-primary{flex:1 1}.kpi-grid{gap:10px}.kpi-card{gap:11px;padding:13px}.kpi-icon{border-radius:10px;height:38px;width:38px}.kpi-value{font-size:20px}.kpi-label{font-size:12px}.kpi-spark{display:none}.toolbar .filter-select{min-width:0}.toolbar .btn-reset,.toolbar .filter-select{flex-basis:calc(50% - 5px);flex-grow:1;flex-shrink:1}.modal-overlay{align-items:flex-end;padding:12px}.modal-body,.modal-header{padding-left:16px;padding-right:16px}}@media (max-width:760px){.data-card.responsive{background:#0000;border:none;box-shadow:none;overflow:visible}.data-card.responsive .table-scroll{overflow:visible}.data-card.responsive .data-table thead{display:none}.data-card.responsive .data-table,.data-card.responsive .data-table tbody,.data-card.responsive .data-table td,.data-card.responsive .data-table tr{display:block;width:100%}.data-card.responsive .data-table tbody{display:flex;flex-direction:column;gap:12px}.data-card.responsive .data-table tbody tr{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:4px 16px 12px}.data-card.responsive .data-table tbody tr:hover{background:var(--surface)}.data-card.responsive .data-table td{align-items:center;display:flex;gap:12px;justify-content:space-between;padding:9px 0;text-align:right;white-space:normal;word-break:break-word}.data-card.responsive .data-table tbody tr:last-child td,.data-card.responsive .data-table td{border-bottom:1px solid var(--border)}.data-card.responsive .data-table td:before{color:var(--text-muted);content:attr(data-label);flex-shrink:0;font-size:12px;font-weight:600;text-align:left}.data-card.responsive .data-table td.cell-head{justify-content:flex-start;padding:12px 0;text-align:left}.data-card.responsive .data-table td.cell-head:before,.data-card.responsive .data-table td.col-actions:before{content:none}.data-card.responsive .data-table td.col-actions{border-bottom:none!important;padding-top:12px;width:100%}.data-card.responsive .row-actions{width:100%}.data-card.responsive .row-actions .btn-primary{flex:1 1;height:40px}.data-card.responsive .menu-trigger{border:1px solid var(--border);height:40px;width:40px}.data-card.responsive .ident-primary{max-width:100%;white-space:normal;word-break:break-word}.data-card.responsive .pagination{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-top:12px}.pagination .page-range{margin-left:0;order:3;text-align:center;width:100%}.pagination .page-buttons{margin-left:auto}}@media (max-width:420px){.pagination .page-buttons,.pagination .page-size{justify-content:center;margin-left:0;width:100%}.modal-actions{flex-direction:column-reverse}.modal-actions .btn{width:100%}}.auth-bg{align-items:center;background:radial-gradient(ellipse at 50% 0,var(--accent-soft) 0,var(--bg-page) 65%);display:flex;justify-content:center;min-height:100vh;padding:20px}.auth-card{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-lg);max-width:420px;padding:40px;width:100%}.auth-logo{margin-bottom:32px;text-align:center}.auth-logo-icon{font-size:40px;margin-bottom:8px}.auth-logo h1{color:var(--text-primary);font-size:26px;font-weight:700;margin-bottom:4px}.auth-logo p{color:var(--text-muted);font-size:14px}.auth-error{background:var(--danger-soft);border:1px solid color-mix(in srgb,var(--danger) 40%,#0000);border-radius:8px;color:var(--danger-text)}.auth-error,.auth-info{font-size:13px;margin-bottom:20px;padding:10px 14px}.auth-info{background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 35%,#0000);border-radius:8px;color:var(--accent-text);line-height:1.5}.auth-form{gap:18px}.auth-form,.form-group{display:flex;flex-direction:column}.form-group{gap:6px}.form-group label{color:var(--text-muted);font-size:13px;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.form-group input{background:var(--bg-dark);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);font-size:15px;padding:11px 14px;transition:border-color .2s}.form-group input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.form-group input::placeholder{color:var(--text-muted)}.auth-form .btn-primary{background:var(--accent);border-radius:8px;color:#fff;font-size:15px;font-weight:600;margin-top:6px;padding:12px;transition:background .2s,opacity .2s}.auth-form .btn-primary:hover:not(:disabled){background:var(--accent-hover)}.auth-form .btn-primary:disabled{cursor:not-allowed;opacity:.6}.auth-footer{color:var(--text-muted);font-size:14px;margin-top:24px;text-align:center}.auth-footer a{color:var(--accent);font-weight:600}.auth-footer a:hover{text-decoration:underline}.pw-wrap{align-items:center;display:flex;position:relative}.pw-wrap input{padding-right:44px!important;width:100%}.pw-eye{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:16px;line-height:1;padding:4px;position:absolute;right:10px;top:50%;transform:translateY(-50%);transition:opacity .2s;-webkit-user-select:none;user-select:none}.pw-eye:hover{opacity:.8}@media (max-width:480px){.auth-bg{align-items:flex-start;padding:8vh 16px 16px}.auth-card{border-radius:14px;padding:28px 20px}.auth-logo{margin-bottom:24px}.auth-logo h1{font-size:22px}.form-group input{font-size:16px}}.theme-switcher{align-items:center;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;display:inline-flex;gap:2px;height:40px;padding:3px}.theme-opt{align-items:center;background:#0000;border-radius:8px;color:var(--text-muted);display:flex;height:32px;justify-content:center;transition:background-color .2s,color .2s,box-shadow .2s;width:36px}.theme-opt:hover{color:var(--text-primary)}.theme-opt.selected.light{background:#fff4d6;box-shadow:var(--shadow-sm);color:#b45309}.theme-opt.selected.dark{background:var(--accent);box-shadow:var(--shadow-sm);color:#fff}.theme-opt:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}.app-shell{background:var(--bg-page);min-height:100vh}.app-sidebar{background:var(--sidebar-bg);border-right:1px solid var(--border);display:flex;flex-direction:column;inset:0 auto 0 0;position:fixed;transition:background-color .2s,border-color .2s,transform .22s var(--ease);width:232px;z-index:120}.brand{gap:10px;height:64px;padding:0 20px}.brand,.brand-mark{align-items:center;display:flex}.brand-mark{background:linear-gradient(140deg,#5c7cfa,#3b5bdb 55%,#6741d9);border-radius:10px;box-shadow:0 4px 12px #3b5bdb59;color:#fff;height:34px;justify-content:center;width:34px}.brand-name{color:var(--text-primary);font-size:18px;font-weight:700;letter-spacing:-.3px}.nav-close{display:none}.nav{display:flex;flex:1 1;flex-direction:column;gap:2px;padding:12px}.nav-section{color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.7px;padding:8px 12px 6px;text-transform:uppercase}.nav-link{align-items:center;border-radius:10px;color:var(--text-secondary);display:flex;font-size:14px;font-weight:500;gap:11px;height:40px;padding:0 12px;position:relative;transition:background-color .15s var(--ease),color .15s var(--ease)}.nav-link:hover{background:var(--surface-hover);color:var(--text-primary)}.nav-link.active{background:var(--accent-soft);color:var(--accent-text);font-weight:600}.nav-link.active:before{background:var(--accent);border-radius:0 3px 3px 0;bottom:10px;content:"";left:-12px;position:absolute;top:10px;width:3px}.imp-card{background:var(--warning-soft);border:1px solid color-mix(in srgb,var(--warning) 35%,#0000);border-radius:12px;display:flex;flex-direction:column;gap:3px;margin:0 12px 12px;padding:11px 12px}.imp-label{color:var(--warning-text);font-size:10px;font-weight:700;letter-spacing:.6px;text-transform:uppercase}.imp-name{color:var(--text-primary);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.imp-back{align-items:center;background:#f59f00;border-radius:8px;color:#1b1f24;display:flex;font-size:12px;font-weight:700;gap:6px;height:30px;justify-content:center;margin-top:6px}.imp-back:hover{background:#fab005}.sidebar-user{align-items:center;background:var(--surface-2);border:1px solid var(--border);border-radius:12px;display:flex;gap:10px;margin:0 12px 14px;padding:10px}.sidebar-user-meta{display:flex;flex:1 1;flex-direction:column;min-width:0}.sidebar-user-name{color:var(--text-primary);font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user-role{color:var(--accent-text);font-size:11px;font-weight:600}.app-main{display:flex;flex-direction:column;margin-left:232px;min-height:100vh;min-width:0}.app-content{flex:1 1;margin:0 auto;max-width:1480px;padding:26px 32px 40px;width:100%}.app-header{-webkit-backdrop-filter:saturate(160%) blur(10px);backdrop-filter:saturate(160%) blur(10px);background:var(--header-bg);border-bottom:1px solid var(--border);gap:14px;height:64px;padding:0 32px;position:sticky;top:0;transition:background-color .2s,border-color .2s;z-index:90}.app-header,.hdr-actions{align-items:center;display:flex}.hdr-actions{gap:8px;margin-left:auto}.hdr-btn{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:10px;color:var(--text-secondary);display:inline-flex;height:38px;justify-content:center;position:relative;transition:background-color .15s,color .15s,border-color .15s;width:38px}.hdr-btn:hover,.hdr-btn[aria-expanded=true]{background:var(--surface-hover);color:var(--text-primary)}.hdr-dot{background:var(--danger);border-radius:50%;box-shadow:0 0 0 2px var(--surface);height:8px;position:absolute;right:9px;top:8px;width:8px}.nav-toggle{display:none}.hdr-avatar{background:#0000;border-radius:50%;padding:0}.hdr-avatar .avatar{height:36px;width:36px}.hdr-avatar:hover .avatar,.hdr-avatar[aria-expanded=true] .avatar{box-shadow:0 0 0 3px var(--accent-soft)}.app-header .theme-switcher{height:38px}.app-header .theme-opt{height:30px;width:34px}.global-search{flex:0 1 460px;min-width:0;position:relative}.global-search input{background:var(--surface);border:1px solid var(--border);border-radius:10px;color:var(--text-primary);font-size:14px;height:38px;padding:0 40px 0 38px;transition:border-color .15s,box-shadow .15s,background-color .2s;width:100%}.global-search input::placeholder{color:var(--text-muted)}.global-search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.gs-icon{color:var(--text-muted);left:13px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.gs-footer kbd,.gs-kbd{background:var(--surface-2);border:solid var(--border);border-radius:5px;border-width:1px 1px 2px;color:var(--text-muted);font-family:inherit;font-size:11px;font-weight:600;line-height:18px;padding:0 6px}.gs-kbd{pointer-events:none;position:absolute;right:10px;top:50%;transform:translateY(-50%)}.gs-panel{animation:menuIn .14s var(--ease);background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-lg);left:0;max-height:420px;min-width:320px;overflow-y:auto;padding:6px;position:absolute;right:0;top:calc(100% + 8px);z-index:200}.gs-group{color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.5px;padding:8px 10px 4px;text-transform:uppercase}.gs-item{align-items:center;border-radius:9px;cursor:pointer;display:flex;gap:10px;padding:8px 10px}.gs-item.active{background:var(--accent-soft)}.gs-item-icon{align-items:center;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;color:var(--text-secondary);display:flex;flex-shrink:0;height:30px;justify-content:center;width:30px}.gs-item.active .gs-item-icon{background:var(--surface);border-color:#0000;color:var(--accent-text)}.gs-item-text{display:flex;flex-direction:column;min-width:0}.gs-item-title{color:var(--text-primary);font-size:14px;font-weight:600}.gs-item-sub,.gs-item-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gs-item-sub{font-size:12px}.gs-empty,.gs-item-sub{color:var(--text-muted)}.gs-empty{font-size:14px;padding:18px 12px;text-align:center}.gs-footer{border-top:1px solid var(--border);color:var(--text-muted);display:flex;font-size:12px;gap:14px;margin-top:4px;padding:8px 10px 4px}.gs-footer kbd{margin-right:3px}.hdr-pop{position:relative}.hdr-pop-panel{animation:menuIn .14s var(--ease);background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-lg);padding:6px;position:absolute;top:calc(100% + 8px);width:320px;z-index:200}.hdr-pop-panel.right{right:0}.hdr-pop-title{color:var(--text-primary);font-size:14px;font-weight:700;padding:10px 12px 8px}.notif-empty{align-items:center;color:var(--text-muted);display:flex;flex-direction:column;font-size:14px;gap:4px;padding:22px 12px 26px;text-align:center}.notif-empty span{color:var(--text-primary);font-weight:600}.notif-empty small{font-size:12px}.notif-list{list-style:none;max-height:340px;overflow-y:auto}.notif-item{border-radius:9px;display:flex;gap:10px;padding:9px 10px}.notif-item:hover{background:var(--surface-hover)}.notif-icon{align-items:center;background:var(--tone-soft);border-radius:9px;color:var(--tone-text);display:flex;flex-shrink:0;height:30px;justify-content:center;width:30px}.notif-text{color:var(--text-secondary);display:flex;flex-direction:column;font-size:13px;line-height:1.4}.notif-text strong{color:var(--text-primary);font-weight:600}.notif-text small{color:var(--text-muted);font-size:12px}.user-pop{width:100%}.user-pop-head{align-items:center;display:flex;gap:10px;padding:10px}.user-pop-meta{display:flex;flex-direction:column;min-width:0}.user-pop-meta strong{color:var(--text-primary);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-pop-meta small{color:var(--text-muted);font-size:12px}.menu-item.static{color:var(--text-muted);cursor:default}.menu-item.static:hover{background:#0000}.nav-backdrop{display:none}@media (max-width:1024px){.app-sidebar{transform:translateX(-100%);width:min(280px,85vw)}.app-sidebar.open{box-shadow:var(--shadow-lg);transform:none}.nav-backdrop{background:var(--overlay);display:block;inset:0;position:fixed;z-index:110}.nav-close{background:#0000;border-radius:8px;color:var(--text-muted);display:flex;margin-left:auto;padding:7px}.nav-close:hover{background:var(--surface-hover);color:var(--text-primary)}.app-main{margin-left:0}.nav-toggle{display:inline-flex;flex-shrink:0}.app-header{gap:10px;padding:0 20px}.app-content{padding:22px 20px 36px}}@media (max-width:640px){.app-header{gap:8px;height:58px;padding:0 12px}.gs-kbd{display:none}.global-search input{padding-right:12px}.global-search input::placeholder{color:#0000}.global-search{flex:1 1 auto}.gs-panel{left:10px;min-width:0;position:fixed;right:10px;top:64px}.hdr-actions{gap:6px}.app-header .theme-opt{width:30px}.hdr-pop-panel{left:10px;position:fixed;right:10px;top:64px;width:auto}.app-content{padding:18px max(14px,env(safe-area-inset-right)) 30px max(14px,env(safe-area-inset-left))}}.fb-overlay{align-items:center;animation:fb-fade .15s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:var(--overlay);display:flex;inset:0;justify-content:center;padding:16px;position:fixed;z-index:3000}.fb-dialog{animation:fb-pop .18s ease;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-lg);max-width:420px;width:100%}.fb-dialog-header{align-items:center;display:flex;gap:12px;justify-content:space-between;padding:18px 20px 6px}.fb-dialog-header h3{align-items:center;color:var(--text-primary);display:flex;font-size:16px;font-weight:700;gap:8px;margin:0}.fb-title-warn{color:var(--warning-text);flex-shrink:0}.fb-dialog{max-width:460px}.fb-dialog-actions{flex-wrap:wrap}.fb-x{background:#0000;border-radius:7px;color:var(--text-muted);display:flex;flex-shrink:0;padding:5px}.fb-x:hover{background:var(--surface-hover);color:var(--text-primary)}.fb-dialog-body{color:var(--text-muted);font-size:14px;line-height:1.6;padding:6px 20px 4px;white-space:pre-line;word-break:break-word}.fb-dialog-actions{display:flex;gap:10px;justify-content:flex-end;padding:18px 20px 20px}.fb-btn{border-radius:8px;font-size:14px;font-weight:600;min-width:90px;padding:9px 18px;transition:background .15s,opacity .15s}.fb-btn.primary{background:var(--accent);color:#fff}.fb-btn.primary:hover{background:var(--accent-hover)}.fb-btn.danger{background:var(--danger);color:#fff}.fb-btn.danger:hover{background:color-mix(in srgb,var(--danger) 85%,#000)}.fb-btn.secondary{background:var(--surface);border:1px solid var(--border);color:var(--text-primary)}.fb-btn.secondary:hover{background:var(--surface-hover)}.fb-btn:focus-visible,.fb-x:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}@media (max-width:480px){.fb-dialog-actions{flex-direction:column-reverse}.fb-btn{width:100%}}.fb-toast-stack{align-items:center;display:flex;flex-direction:column;gap:10px;left:50%;pointer-events:none;position:fixed;top:50%;transform:translate(-50%,-50%);width:min(440px,calc(100vw - 32px));z-index:3100}.fb-toast{align-items:flex-start;animation:fb-pop .18s ease;background:var(--surface);border:1px solid var(--border);border-radius:11px;box-shadow:var(--shadow-lg);color:var(--text-primary);display:flex;font-size:14px;gap:10px;line-height:1.5;padding:13px 14px;pointer-events:auto;width:100%}.fb-toast.success{border-color:color-mix(in srgb,var(--success) 55%,#0000)}.fb-toast.error{border-color:color-mix(in srgb,var(--danger) 55%,#0000)}.fb-toast.warning{border-color:color-mix(in srgb,var(--warning) 55%,#0000)}.fb-toast.info{border-color:color-mix(in srgb,var(--accent) 55%,#0000)}.fb-toast-icon{display:flex;flex-shrink:0;margin-top:1px}.fb-toast.success .fb-toast-icon{color:var(--success-text)}.fb-toast.error .fb-toast-icon{color:var(--danger-text)}.fb-toast.warning .fb-toast-icon{color:var(--warning-text)}.fb-toast.info .fb-toast-icon{color:var(--accent-text)}.fb-toast-text{flex:1 1;white-space:pre-line;word-break:break-word}.fb-toast-close{background:#0000;border-radius:5px;color:var(--text-muted);display:flex;flex-shrink:0;padding:2px}.fb-toast-close:hover{background:var(--surface-hover);color:var(--text-primary)}@keyframes fb-fade{0%{opacity:0}to{opacity:1}}@keyframes fb-pop{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.devices-table{min-width:940px}.os-tile{align-items:center;background:var(--accent-soft);border-radius:11px;color:var(--accent-text);display:flex;flex-shrink:0;height:40px;justify-content:center;width:40px}.os-tile.os-macos{background:var(--surface-2);border:1px solid var(--border);color:var(--text-primary)}.os-tile.os-linux{background:var(--warning-soft);color:var(--warning-text)}.os-tile.os-other{background:var(--surface-2);border:1px solid var(--border);color:var(--text-secondary)}.os-icon.os-windows{color:#1c7ed6}[data-theme=dark] .os-icon.os-windows{color:#4dabf7}.os-icon.os-macos{color:var(--text-primary)}.os-icon.os-linux{color:#e8590c}.os-icon.os-other{color:var(--text-muted)}.os-tile .os-icon{color:inherit}.mono-num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}@media (max-width:1100px){.devices-table td,.devices-table th{padding-left:14px;padding-right:14px}}@media (max-width:760px){.devices-table{min-width:0}}.fm2-panel{background:#161b22;background:var(--bg-card,#161b22);border-left:1px solid #30363d;border-left:1px solid var(--border,#30363d);box-shadow:-6px 0 32px #00000080;color:#e6edf3;color:var(--text-primary,#e6edf3);display:flex;flex-direction:column;font-family:Segoe UI,system-ui,sans-serif;font-size:13px;height:100%;overflow:hidden;position:absolute;right:0;top:0;width:560px;z-index:200}.fm2-header{background:#0d1117;background:var(--bg-dark,#0d1117);border-bottom:1px solid #30363d;border-bottom:1px solid var(--border,#30363d);flex-shrink:0;gap:8px;padding:10px 12px}.fm2-header,.fm2-title{align-items:center;display:flex}.fm2-title{flex:1 1;font-size:13px;font-weight:700;gap:6px;letter-spacing:.3px}.fm2-title-icon{display:inline-flex;font-size:16px;line-height:0}.fm2-spin{animation:fm2-rotate 1s linear infinite;color:#1e88e5;color:var(--accent,#1e88e5);display:inline-block;font-size:14px;margin-left:4px}@keyframes fm2-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fm2-header-actions{align-items:center;display:flex;gap:6px}.fm2-btn{background:#21262d;background:var(--bg-hover,#21262d);border:1px solid #30363d;border:1px solid var(--border,#30363d);border-radius:6px;color:#e6edf3;color:var(--text-primary,#e6edf3);cursor:pointer;font-size:12px;font-weight:600;padding:5px 10px;transition:border-color .15s,background .15s;white-space:nowrap}.fm2-act-btn svg,.fm2-btn svg,.fm2-close svg,.fm2-grid-dl svg,.fm2-view-toggle svg{vertical-align:middle}.fm2-btn:hover{border-color:#1e88e5;border-color:var(--accent,#1e88e5)}.fm2-btn-accent{background:#1e88e5;background:var(--accent,#1e88e5);border-color:#0000;color:#fff}.fm2-btn-accent:hover{background:#1565c0;background:var(--accent-hover,#1565c0)}.fm2-view-toggle{align-items:center;background:#0000;border:1px solid #30363d;border:1px solid var(--border,#30363d);border-radius:6px;color:#8b949e;color:var(--text-muted,#8b949e);cursor:pointer;display:flex;font-size:15px;height:28px;justify-content:center;width:28px}.fm2-view-toggle:hover{border-color:#1e88e5;border-color:var(--accent,#1e88e5);color:var(--text-primary)}.fm2-close{background:#0000;border:none;border-radius:4px;color:#8b949e;color:var(--text-muted,#8b949e);cursor:pointer;font-size:16px;line-height:1;padding:4px 6px}.fm2-close:hover{background:#f851491a;color:#f85149;color:var(--danger,#f85149)}.fm2-breadcrumb{align-items:center;background:#0003;border-bottom:1px solid #30363d;border-bottom:1px solid var(--border,#30363d);display:flex;flex-shrink:0;font-size:12px;gap:2px;overflow-x:auto;padding:6px 12px;scrollbar-width:none;white-space:nowrap}.fm2-breadcrumb::-webkit-scrollbar{display:none}.fm2-bc-home{background:#0000;border:none;border-radius:4px;color:#1e88e5;color:var(--accent,#1e88e5);cursor:pointer;font-size:15px;line-height:1;padding:2px 4px}.fm2-bc-home:hover{background:#21262d;background:var(--bg-hover,#21262d)}.fm2-bc-sep{color:#8b949e;color:var(--text-muted,#8b949e);font-size:11px;margin:0 2px}.fm2-bc-btn{background:#0000;border:none;border-radius:3px;color:#1e88e5;color:var(--accent,#1e88e5);cursor:pointer;font-size:12px;padding:2px 4px}.fm2-bc-btn:hover{background:#21262d;background:var(--bg-hover,#21262d)}.fm2-bc-current{color:#e6edf3;color:var(--text-primary,#e6edf3);font-size:12px;font-weight:600;padding:2px 4px}.fm2-error{align-items:center;background:#f851491f;border-bottom:1px solid #f851494d;color:#f85149;display:flex;flex-shrink:0;font-size:12px;gap:8px;padding:6px 12px}.fm2-error-close{background:#0000;border:none;color:#f85149;cursor:pointer;font-size:13px;margin-left:auto;padding:2px 4px}.fm2-body{flex:1 1;overflow-x:hidden;overflow-y:auto;position:relative;scrollbar-color:#30363d #0000;scrollbar-color:var(--border,#30363d) #0000;scrollbar-width:thin}.fm2-body::-webkit-scrollbar{width:6px}.fm2-body::-webkit-scrollbar-thumb{background:#30363d;background:var(--border,#30363d);border-radius:3px}.fm2-loading{align-items:center;color:#8b949e;color:var(--text-muted,#8b949e);display:flex;flex-direction:column;gap:12px;height:100%;justify-content:center}.fm2-spinner{animation:fm2-rotate .7s linear infinite;border:3px solid #30363d;border-top-color:#1e88e5;border:3px solid var(--border,#30363d);border-radius:50%;border-top-color:var(--accent,#1e88e5);height:28px;width:28px}.fm2-empty{color:#8b949e;color:var(--text-muted,#8b949e);padding:50px 20px;text-align:center}.fm2-empty-title{color:var(--text-primary);font-size:16px;font-weight:700;margin-bottom:8px}.fm2-empty p{font-size:13px}.fm2-drag-over{outline:2px dashed #1e88e5;outline:2px dashed var(--accent,#1e88e5);outline-offset:-4px}.fm2-drop-overlay{align-items:center;background:#1e88e51f;display:flex;inset:0;justify-content:center;pointer-events:none;position:absolute;z-index:10}.fm2-drop-msg{background:#161b22;background:var(--bg-card,#161b22);border:2px dashed #1e88e5;border:2px dashed var(--accent,#1e88e5);border-radius:12px;color:#1e88e5;color:var(--accent,#1e88e5);font-size:16px;font-weight:700;line-height:1.6;padding:24px 36px;text-align:center}.fm2-drop-msg code{color:#8b949e;color:var(--text-muted,#8b949e);font-size:12px}.fm2-table{border-collapse:collapse;table-layout:fixed;width:100%}.fm2-table thead tr{background:#0d1117;background:var(--bg-dark,#0d1117);position:sticky;top:0;z-index:2}.fm2-table thead th{border-bottom:1px solid #30363d;border-bottom:1px solid var(--border,#30363d);color:#8b949e;color:var(--text-muted,#8b949e);cursor:pointer;font-size:11px;font-weight:600;letter-spacing:.6px;padding:7px 10px;text-align:left;text-transform:uppercase;-webkit-user-select:none;user-select:none;white-space:nowrap}.fm2-table thead th:hover{color:var(--text-primary)}.fm2-sort-arrow{color:#1e88e5;color:var(--accent,#1e88e5);display:inline-flex;margin-left:3px;vertical-align:middle}.fm2-th-name{width:50%}.fm2-th-size{text-align:right;width:18%}.fm2-th-date{width:20%}.fm2-th-acts{width:12%}.fm2-row{border-bottom:1px solid #30363d80;cursor:default;transition:background .08s}.fm2-row:hover{background:#21262d;background:var(--bg-hover,#21262d)}.fm2-row.fm2-selected{background:#1e88e526}.fm2-row-directory,.fm2-row-drive,.fm2-row-shortcut{cursor:pointer}.fm2-row td{padding:6px 10px;vertical-align:middle}.fm2-cell-name{max-width:0;overflow:hidden}.fm2-name-wrap{align-items:center;display:flex;gap:8px;min-width:0;overflow:hidden;width:100%}.fm2-file-icon{color:#1e88e5;color:var(--accent,#1e88e5);display:inline-flex;flex-shrink:0;font-size:16px;line-height:0}.fm2-file-name{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fm2-row-drive .fm2-file-name{color:#58a6ff;font-weight:700}.fm2-row-shortcut .fm2-file-name{color:var(--text-muted);font-style:italic}.fm2-cell-size{color:#8b949e;color:var(--text-muted,#8b949e);font-size:12px;text-align:right;white-space:nowrap}.fm2-drive-space{color:#2ea043;color:var(--success,#2ea043);font-weight:600}.fm2-cell-date{color:#8b949e;color:var(--text-muted,#8b949e);font-size:11px;white-space:nowrap}.fm2-cell-acts{text-align:right}.fm2-act-btn{background:#0000;border:1px solid #0000;border-radius:4px;color:#8b949e;color:var(--text-muted,#8b949e);cursor:pointer;font-size:13px;opacity:0;padding:2px 7px;transition:opacity .1s}.fm2-row:hover .fm2-act-btn{opacity:1}.fm2-dl:hover{background:#1e88e51a;border-color:#1e88e5;border-color:var(--accent,#1e88e5);color:#1e88e5;color:var(--accent,#1e88e5)}.fm2-open:hover{background:#2ea0431a;border-color:#2ea043;border-color:var(--success,#2ea043);color:#2ea043;color:var(--success,#2ea043)}.fm2-empty-row{color:var(--text-muted);padding:32px;text-align:center}.fm2-grid{grid-gap:4px;display:grid;gap:4px;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));padding:10px}.fm2-grid-item{align-items:center;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;padding:10px 6px 6px;position:relative;text-align:center;transition:background .1s}.fm2-grid-item:hover{background:#21262d;background:var(--bg-hover,#21262d)}.fm2-grid-item.fm2-selected{background:#1e88e526}.fm2-grid-icon{color:#1e88e5;color:var(--accent,#1e88e5);font-size:28px;line-height:0;margin-bottom:5px}.fm2-grid-label{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;font-size:11px;line-height:1.3;max-height:30px;overflow:hidden;text-overflow:ellipsis;word-break:break-word}.fm2-grid-dl{background:#1e88e5;background:var(--accent,#1e88e5);border:none;border-radius:3px;color:#fff;cursor:pointer;font-size:10px;opacity:0;padding:1px 4px;position:absolute;right:4px;top:4px;transition:opacity .1s}.fm2-grid-item:hover .fm2-grid-dl{opacity:1}.fm2-transfers{background:#0d1117;background:var(--bg-dark,#0d1117);border-top:1px solid #30363d;border-top:1px solid var(--border,#30363d);flex-shrink:0;max-height:180px;overflow-y:auto;scrollbar-width:thin}.fm2-transfers-title{align-items:center;color:#8b949e;color:var(--text-muted,#8b949e);display:flex;font-size:11px;font-weight:700;justify-content:space-between;letter-spacing:.6px;padding:6px 12px 4px;text-transform:uppercase}.fm2-clear-done{background:#0000;border:none;border-radius:3px;color:var(--text-muted);cursor:pointer;font-size:11px;padding:1px 6px}.fm2-clear-done:hover{color:var(--danger)}.fm2-xfer{background:#161b22;background:var(--bg-card,#161b22);border:1px solid #30363d;border:1px solid var(--border,#30363d);border-radius:6px;margin:4px 10px;padding:7px 10px;transition:border-color .2s}.fm2-xfer.done{border-color:#2ea04359}.fm2-xfer.error{border-color:#f8514959}.fm2-xfer-row{align-items:center;display:flex;gap:7px}.fm2-xfer-dir{font-size:12px}.fm2-xfer-name{flex:1 1;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fm2-xfer-size{color:var(--text-muted);font-size:11px}.fm2-xfer-pct{color:var(--accent);font-size:11px;font-weight:700;text-align:right;width:30px}.fm2-xfer-ok{color:#2ea043;color:var(--success,#2ea043);font-size:14px}.fm2-xfer-err{color:#f85149;color:var(--danger,#f85149);cursor:help;font-size:14px}.fm2-xfer-bar{background:#21262d;background:var(--bg-hover,#21262d);border-radius:2px;height:3px;margin-top:6px;overflow:hidden}.fm2-xfer-fill{background:#1e88e5;background:var(--accent,#1e88e5);border-radius:2px;height:100%;transition:width .2s}.fm2-xfer-path{color:var(--text-muted);font-family:monospace;font-size:10px;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fm2-xfer-errmsg{color:#f85149;color:var(--danger,#f85149)}.fm2-xfer.conflict{border-color:color-mix(in srgb,var(--warning) 50%,#0000)}.fm2-xfer.skipped{opacity:.7}.fm2-xfer-warn{font-size:14px}.fm2-xfer-warn,.fm2-xfer-warnmsg{color:var(--warning-text)}.fm2-statusbar{align-items:center;background:#0d1117;background:var(--bg-dark,#0d1117);border-top:1px solid #30363d;border-top:1px solid var(--border,#30363d);color:#8b949e;color:var(--text-muted,#8b949e);display:flex;flex-shrink:0;font-size:11px;gap:12px;overflow:hidden;padding:5px 12px}.fm2-statusbar span:first-child{flex:1 1;font-family:monospace;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fm2-status-upload{color:#1e88e5;color:var(--accent,#1e88e5);cursor:pointer;font-weight:600;white-space:nowrap}.fm2-status-upload:hover{text-decoration:underline}@media (max-width:600px){.fm2-panel{width:100%}.fm2-cell-date,.fm2-th-date{display:none}}.fm2-grid-hidden .fm2-grid-label,.fm2-row-hidden .fm2-file-name{font-style:italic;opacity:.55}.fm2-grid-hidden .fm2-grid-icon,.fm2-row-hidden .fm2-file-icon{opacity:.45}.fm2-searchbar{align-items:center;background:#0d1117;background:var(--bg-dark,#0d1117);border-bottom:1px solid #30363d;border-bottom:1px solid var(--border,#30363d);display:flex;gap:8px;padding:8px 12px}.fm2-search-input-wrap{align-items:center;display:flex;flex:1 1;position:relative}.fm2-search-icon{color:#8b949e;color:var(--text-muted,#8b949e);left:9px;pointer-events:none;position:absolute}.fm2-search-input{background:#161b22;background:var(--bg-card,#161b22);border:1px solid #30363d;border:1px solid var(--border,#30363d);border-radius:6px;color:#e6edf3;color:var(--text-primary,#e6edf3);font-size:13px;outline:none;padding:7px 30px;transition:border-color .15s;width:100%}.fm2-search-input::placeholder{color:#8b949e;color:var(--text-muted,#8b949e)}.fm2-search-input:focus{border-color:#1e88e5;border-color:var(--accent,#1e88e5)}.fm2-search-clear{align-items:center;background:#0000;border:none;border-radius:4px;color:#8b949e;color:var(--text-muted,#8b949e);cursor:pointer;display:flex;padding:2px;position:absolute;right:6px}.fm2-search-clear:hover{background:#21262d;background:var(--bg-hover,#21262d);color:#e6edf3;color:var(--text-primary,#e6edf3)}.fm2-search-btn{align-items:center;background:#1e88e5;background:var(--accent,#1e88e5);border:1px solid #0000;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:13px;font-weight:600;gap:5px;padding:7px 12px;transition:background .15s;white-space:nowrap}.fm2-search-btn:hover{background:#1565c0;background:var(--accent-hover,#1565c0)}.fm2-search-btn svg{vertical-align:middle}.fm2-search-info{align-items:center;background:#1e88e514;border-bottom:1px solid #30363d;border-bottom:1px solid var(--border,#30363d);color:#8b949e;color:var(--text-muted,#8b949e);display:flex;font-size:12px;gap:8px;justify-content:space-between;padding:6px 12px}.fm2-search-reset{background:#0000;border:none;border-radius:4px;color:#1e88e5;color:var(--accent,#1e88e5);cursor:pointer;font-size:12px;font-weight:600;padding:2px 6px}.fm2-search-reset:hover{background:#21262d;background:var(--bg-hover,#21262d)}.fm2-grid-empty{color:#8b949e;color:var(--text-muted,#8b949e);font-size:13px;grid-column:1/-1;padding:28px 12px;text-align:center}@media (max-width:600px){.fm2-header,.fm2-searchbar{flex-wrap:wrap}.fm2-search-btn{flex:1 1;justify-content:center}.fm2-act-btn{opacity:1}.fm2-th-size{width:26%}.fm2-th-name{width:58%}}.chat-panel{background:var(--bg-card);border:1px solid var(--border);border-bottom:none;border-left:none;border-radius:0 12px 0 0;bottom:0;box-shadow:4px -4px 30px #0006;display:flex;flex-direction:column;height:60vh;left:0;max-height:500px;position:absolute;width:320px;z-index:200}.chat-header{align-items:center;border-bottom:1px solid var(--border);display:flex;flex-shrink:0;justify-content:space-between;padding:12px 14px}.chat-title{font-size:14px;font-weight:700}.chat-close{background:#0000;border:none;color:var(--text-muted);font-size:14px;padding:4px}.chat-close:hover{color:var(--danger)}.chat-messages{display:flex;flex:1 1;flex-direction:column;gap:10px;overflow-y:auto;padding:12px}.chat-empty{color:var(--text-muted);font-size:13px;line-height:1.8;margin-top:30px;text-align:center}.chat-msg{display:flex}.chat-msg.host{justify-content:flex-end}.chat-msg.client{justify-content:flex-start}.msg-bubble{border-radius:12px;font-size:13px;line-height:1.5;max-width:80%;padding:8px 12px}.chat-msg.host .msg-bubble{background:var(--accent);border-bottom-right-radius:3px;color:#fff}.chat-msg.client .msg-bubble{background:var(--bg-hover);border-bottom-left-radius:3px;color:var(--text-primary)}.msg-text{word-break:break-word}.msg-meta{align-items:center;display:flex;gap:6px;margin-top:4px}.msg-from{font-size:10px;font-weight:700;opacity:.7}.msg-time{font-size:10px;opacity:.6}.chat-input-row{align-items:flex-end;border-top:1px solid var(--border);display:flex;flex-shrink:0;gap:8px;padding:10px 12px}.chat-input{background:var(--bg-dark);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);flex:1 1;font-family:inherit;font-size:13px;line-height:1.5;padding:8px 12px;resize:none;transition:border-color .2s}.chat-input:focus{border-color:var(--accent);outline:none}.chat-input::placeholder{color:#4a5568}.chat-send{align-items:center;background:var(--accent);border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:16px;height:38px;padding:8px 14px;transition:background .2s}.chat-send:hover:not(:disabled){background:var(--accent-hover)}.chat-send:disabled{background:var(--bg-hover);color:var(--text-muted);cursor:not-allowed}@media (max-width:600px){.chat-panel{border-radius:14px 14px 0 0;border-right:none;height:70vh;max-height:none;width:100%}.chat-input{font-size:16px}}.viewer-wrapper{background:#000;overflow:hidden}.viewer-loading,.viewer-wrapper{display:flex;flex-direction:column;height:100vh;width:100vw}.viewer-loading{align-items:center;background:var(--bg-dark);color:var(--text-primary);gap:12px;justify-content:center;padding:0 16px;text-align:center}.viewer-loading h3{color:var(--text-primary);font-size:20px;font-weight:700}.viewer-loading p{color:var(--text-muted);font-size:14px}.disc-icon-wrap{align-items:center;background:#f851491a;border:1px solid #f8514940;border-radius:20px;color:#f85149;display:flex;height:80px;justify-content:center;margin-bottom:8px;width:80px}.disc-buttons{display:flex;gap:12px;margin-top:8px}.btn-reconnect{background:var(--accent);border-radius:8px;color:#fff;font-size:14px;font-weight:600;padding:10px 26px}.btn-reconnect:hover{background:var(--accent-hover)}.btn-back{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);font-size:14px;font-weight:600;padding:10px 22px}.btn-back:hover{border-color:var(--accent)}.tb-toggle-float{align-items:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0d1117d9;border:1px solid #ffffff1a;border-radius:8px;color:var(--text-muted);display:flex;height:32px;justify-content:center;position:fixed;right:12px;top:10px;transition:color .15s,background .15s;width:32px;z-index:300}.tb-toggle-float:hover{background:#1e88e54d;color:#e6edf3}.viewer-toolbar{align-items:center;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0d1117f5;border-bottom:1px solid #ffffff14;display:flex;flex-shrink:0;height:46px;justify-content:space-between;padding:0 12px 0 14px;z-index:200}.tb-center,.tb-left,.tb-right{align-items:center;display:flex;gap:8px}.tb-disconnect{align-items:center;background:#f851491f;border:1px solid #f8514959;border-radius:7px;color:#f85149;display:flex;font-size:12px;font-weight:600;gap:6px;padding:5px 12px;transition:background .15s}.tb-disconnect:hover{background:#f8514938}.tb-device{align-items:center;display:flex;gap:6px}.tb-dot{background:#3fb950;border-radius:50%;box-shadow:0 0 6px #3fb950;height:7px;width:7px}.tb-name{color:var(--text-muted);font-family:monospace;font-size:12px}.tb-stat{align-items:center;background:#ffffff0a;border:1px solid #ffffff14;border-radius:6px;display:flex;flex-direction:column;padding:2px 10px}.tb-stat span{color:var(--text-muted);font-size:8px;letter-spacing:.5px;text-transform:uppercase}.tb-stat strong{color:#58a6ff;font-family:monospace;font-size:12px}.tb-viewers{background:#1e88e526;border:1px solid #1e88e54d;border-radius:20px;color:#58a6ff;font-size:11px;font-weight:700;gap:5px;padding:3px 10px}.tb-screen-modes,.tb-viewers{align-items:center;display:flex}.tb-screen-modes{background:#ffffff0a;border:1px solid #ffffff14;border-radius:7px;gap:2px;padding:3px}.tb-mode-btn{align-items:center;background:#0000;border-radius:5px;color:var(--text-muted);display:flex;height:26px;justify-content:center;transition:background .15s,color .15s;width:26px}.tb-mode-btn:hover{background:#ffffff14;color:#e6edf3}.tb-mode-btn.active{background:#1e88e540;color:#58a6ff}.tb-btn{align-items:center;background:#ffffff0a;border:1px solid #ffffff14;border-radius:6px;color:var(--text-muted);display:flex;justify-content:center;min-width:32px;padding:7px 9px;position:relative;transition:color .15s,border-color .15s,background .15s}.tb-btn:hover{background:#1e88e51a;border-color:#1e88e580;color:#e6edf3}.tb-btn.tb-active{background:#1e88e526;border-color:#1e88e580;color:#58a6ff}.tb-badge{align-items:center;background:#f85149;border-radius:7px;color:#fff;display:flex;font-size:9px;font-weight:700;height:14px;justify-content:center;line-height:1;min-width:14px;padding:0 3px;position:absolute;right:-4px;top:-4px}.tb-recording{background:#dc323233!important;color:#ff6b6b!important}.tb-monitor-select{background:#ffffff0f;border:1px solid #ffffff1a;border-radius:5px;color:#e6edf3;cursor:pointer;font-size:11px;padding:4px 6px}.canvas-container{align-items:center;background:#000;display:flex;flex:1 1;justify-content:center;overflow:hidden;position:relative}.canvas-container.scroll-mode{overflow:auto}.screen-blocked{align-items:center;background:#0d1117eb;color:#e6edf3;display:flex;flex-direction:column;gap:10px;inset:0;justify-content:center;padding:24px;pointer-events:none;position:absolute;text-align:center}.screen-blocked svg{color:#8b949e}.screen-blocked h3{font-size:19px;font-weight:700;margin:4px 0 0}.screen-blocked p{color:#b5bdc8;font-size:14px;line-height:1.5;margin:0;max-width:460px}.screen-blocked-sub{color:#8b949e!important;font-size:13px!important}.remote-canvas{display:block;image-rendering:auto;touch-action:none;-webkit-user-select:none;user-select:none;will-change:contents}.remote-canvas.screen-fit{height:auto;max-height:calc(100vh - 46px);max-width:100%;width:auto}.viewer-wrapper:not(:has(.viewer-toolbar)) .remote-canvas.screen-fit{max-height:100vh}.remote-canvas.screen-actual{height:auto!important;max-height:none;max-width:none;width:auto!important}.canvas-container.container-actual{align-items:flex-start;justify-content:flex-start}.remote-canvas.screen-fill{height:calc(100vh - 46px);max-height:none;max-width:none;width:100%}.recording-badge{animation:blink 1s step-start infinite;background:#dc3232e6;border-radius:12px;color:#fff;font-size:11px;font-weight:700;left:50%;padding:4px 12px;pointer-events:none;position:absolute;top:12px;transform:translateX(-50%)}@keyframes blink{50%{opacity:.3}}@media (max-width:900px){.viewer-toolbar{gap:10px;overflow-x:auto;overflow-y:hidden;padding:0 52px 0 10px;scrollbar-width:none}.viewer-toolbar::-webkit-scrollbar{display:none}.tb-center,.tb-left,.tb-right{flex-shrink:0}.tb-name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media (max-width:600px){.tb-center .tb-stat{display:none}.tb-disconnect{padding:6px 9px}.tb-btn{min-width:36px;padding:8px}.remote-canvas.screen-fit{max-width:100%}.disc-buttons{flex-direction:column;width:min(260px,90vw)}.viewer-loading{padding:16px}}.secure-panel{background:#161b22;border:1px solid #30363d;border-radius:10px;box-shadow:0 8px 28px #00000080;color:#e6edf3;overflow:hidden;position:absolute;right:16px;top:16px;width:300px;z-index:40}.secure-panel-head{align-items:center;background:#1e88e5;color:#fff;display:flex;font-size:13px;font-weight:600;gap:8px;padding:10px 12px}.secure-panel-head .secure-close{background:#0000;border:none;color:#fff;cursor:pointer;display:flex;margin-left:auto;padding:2px}.secure-note{color:#8b949e;font-size:11.5px;line-height:1.4;margin:0;padding:10px 12px}.secure-note.secure-err{color:#f0a0a0}.secure-fields{padding:4px 12px 14px}.secure-field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.secure-field span{color:#8b949e;font-size:11px;letter-spacing:.04em;text-transform:uppercase}.secure-field input{background:#0d1117;border:1px solid #30363d;border-radius:6px;color:#e6edf3;font-family:Consolas,monospace;font-size:14px;padding:8px 10px}.secure-field input:focus{border-color:#1e88e5;outline:none}.connection-overlay{align-items:center;background:#0d1117d1;color:#e6edf3;display:flex;flex-direction:column;gap:10px;inset:0;justify-content:center;padding:24px;position:absolute;text-align:center;z-index:150}.connection-overlay svg{color:#f0883e}.connection-overlay h3{font-size:19px;font-weight:700;margin:4px 0 0}.connection-overlay p{color:#b5bdc8;font-size:14px;line-height:1.5;margin:0;max-width:480px}.input-blocked{align-items:flex-start;background:#f0883ef2;border-radius:8px;color:#1b1300;display:flex;font-size:13px;font-weight:500;gap:8px;left:50%;line-height:1.4;max-width:min(640px,90%);padding:8px 14px;pointer-events:none;position:absolute;top:12px;transform:translateX(-50%);z-index:120}.input-blocked svg{flex-shrink:0;margin-top:2px}.tb-dot.tb-dot-off{background:#f0883e;box-shadow:0 0 6px #f0883e}.users-table{min-width:1000px}.users-table .ident-primary{align-items:center;display:inline-flex;gap:6px}@media (max-width:1100px){.users-table td,.users-table th{padding-left:14px;padding-right:14px}}@media (max-width:760px){.users-table{min-width:0}}