*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f1117;--surface:#1a1d27;--border:#2a2d3e;--accent:#4f8ef7;--accent-dim:#2a4a8a;--green:#3ecf8e;--red:#f75f5f;--yellow:#f7c948;--text:#e2e4ef;--text-muted:#7880a0;--radius:10px;font-family:Inter,Segoe UI,system-ui,sans-serif}body{background:var(--bg);color:var(--text);min-height:100vh}.app{flex-direction:row;align-items:stretch;height:100vh;display:flex;overflow:hidden}.app-main{flex-direction:column;flex:1;gap:20px;min-width:0;padding:24px 16px;display:flex;overflow:hidden}h1{letter-spacing:.02em;color:var(--text);font-size:1.4rem;font-weight:600}h2{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:12px;font-size:.85rem;font-weight:600}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.status-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;display:grid}.status-item{flex-direction:column;gap:4px;display:flex}.status-item--clickable{color:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;padding:6px 8px;transition:border-color .15s,background .15s}.status-item--clickable:hover{border-color:var(--accent);background:#4f8ef714}.status-label{color:var(--text-muted);font-size:.75rem}.status-value{align-items:center;gap:6px;font-size:.9rem;font-weight:500;display:flex}.dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.heading-with-status{align-items:center;gap:8px;display:flex}.dot.green{background:var(--green);box-shadow:0 0 6px var(--green)}.dot.red{background:var(--red);box-shadow:0 0 6px var(--red)}.dot.yellow{background:var(--yellow)}.mouse-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.mouse-item{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:10px 14px;font-size:.82rem}.mouse-item .key{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-size:.72rem}.mouse-item .val{margin-top:2px;font-size:.95rem;font-weight:600}.val.active{color:var(--green)}.controls-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px;display:grid}.dpad-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.cmd-btn{background:var(--bg);border:1px solid var(--border);color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border-radius:6px;flex-direction:column;align-items:center;gap:3px;padding:10px 6px;font-size:.8rem;transition:background .15s,border-color .15s;display:flex}.cmd-btn:hover{background:var(--accent-dim);border-color:var(--accent)}.cmd-btn:active,.cmd-btn--active{background:var(--accent);color:#fff;border-color:var(--accent)}.cmd-btn .key-label{font-family:monospace;font-size:1rem;font-weight:700}.cmd-btn kbd{opacity:.55;letter-spacing:0;border:1px solid;border-radius:3px;margin-top:1px;padding:1px 4px;font-family:monospace;font-size:.68rem;line-height:1;display:inline-block}.cmd-btn--active kbd,.cmd-btn:active kbd{opacity:.85}.resolution-selector{gap:8px;margin-bottom:12px;display:flex}.res-btn{background:var(--bg);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;letter-spacing:.05em;border-radius:6px;padding:6px 14px;font-size:.78rem;font-weight:600;transition:background .15s,border-color .15s,color .15s}.res-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.res-btn.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}.res-btn:disabled{opacity:.5;cursor:default}.video-coords{border:1px solid var(--border);background:var(--bg);color:var(--text-muted);border-radius:8px;align-items:center;gap:14px;margin:0 0 10px;padding:10px 12px;font-size:.88rem;display:flex}.video-coords-label{color:var(--text);font-weight:600}.mouse-settings{flex-direction:column;gap:12px;display:flex}.mouse-setting-row{grid-template-columns:130px 1fr 60px;align-items:center;gap:12px;display:grid}.mouse-setting-label{color:var(--text);font-size:.88rem;font-weight:500}.mouse-setting-slider{width:100%;accent-color:var(--accent,#4e9df5);cursor:pointer}.mouse-setting-value{color:var(--text-muted);text-align:right;white-space:nowrap;font-size:.88rem;font-weight:600}.video-card{flex-direction:column;flex:1;min-height:0;display:flex}.video-card .video-container{aspect-ratio:unset;flex:1}.video-container{border-radius:var(--radius);aspect-ratio:4/3;touch-action:none;background:#000;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.video-container img{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%}.video-placeholder{color:var(--text-muted);text-align:center;padding:20px;font-size:.9rem}.video-overlay{color:var(--text-muted);text-align:center;pointer-events:none;background:#000000a6;justify-content:center;align-items:center;font-size:.9rem;display:flex;position:absolute;inset:0}.header{justify-content:space-between;align-items:center;display:flex}.header-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.refresh-btn,.drawer-trigger-btn{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:5px;padding:6px 12px;font-size:.78rem;transition:border-color .15s,color .15s;display:inline-flex}.refresh-btn:hover,.drawer-trigger-btn:hover{border-color:var(--accent);color:var(--accent)}.drawer-trigger-btn--active{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.account-menu{position:relative}.account-dropdown{background:var(--surface);border:1px solid var(--border);z-index:200;border-radius:8px;flex-direction:column;min-width:160px;display:flex;position:absolute;top:calc(100% + 6px);right:0;overflow:hidden;box-shadow:0 6px 20px #00000059}.account-dropdown-item{color:var(--text-muted);cursor:pointer;text-align:left;white-space:nowrap;background:0 0;border:none;align-items:center;gap:8px;padding:10px 16px;font-size:.82rem;transition:background .12s,color .12s;display:flex}.account-dropdown-item:hover{background:var(--accent-dim);color:var(--accent)}.account-dropdown-item+.account-dropdown-item{border-top:1px solid var(--border)}.account-dropdown-item--danger:hover{color:var(--red,#e05252);background:#dc3c3c1f}.drawer-panel{background:var(--surface);border:none;flex-direction:column;flex-shrink:0;width:0;transition:width .28s cubic-bezier(.4,0,.2,1);display:flex;overflow:hidden}.drawer-panel--left{border-right:1px solid var(--border);border-radius:0}.drawer-panel--right{border-left:1px solid var(--border);border-radius:0}.drawer-panel--open{width:min(340px,35vw)}.drawer-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;min-width:min(340px,35vw);padding:16px 20px 12px;display:flex}.drawer-header h2{margin-bottom:0}.drawer-close{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:.75rem;transition:border-color .15s,color .15s;display:flex}.drawer-close:hover{border-color:var(--accent);color:var(--accent)}.drawer-body{scrollbar-width:thin;flex-direction:column;flex:1;gap:20px;min-width:min(340px,35vw);padding:20px;display:flex;overflow:hidden auto}.video-hint{color:var(--text-muted);text-align:center;cursor:pointer;z-index:2;background:#000000b3;padding:10px 16px;font-size:.8rem;transition:background .2s,color .2s;position:absolute;bottom:0;left:0;right:0}.video-hint:hover{color:var(--text);background:#4f8ef766}.video-hint.active{color:var(--green);cursor:default;pointer-events:none;background:#3ecf8e26}.video-hint--locked{cursor:default;opacity:.45;pointer-events:none}.video-hint--btn-mode{color:var(--yellow);background:#f7c9481f}.video-hint--btn-mode:hover{color:var(--yellow);background:#f7c94838}.video-container.pointer-locked{box-shadow:0 0 0 2px var(--green), 0 0 12px #3ecf8e4d}.video-container.controls-btn-mode{box-shadow:0 0 0 2px var(--yellow), 0 0 12px #f7c94840}.video-container.video-pan-mode{cursor:grab}.video-container.video-pan-mode:active{cursor:grabbing}.video-pan-hint{color:var(--text-muted);margin:8px 0 0;font-size:.78rem}.reset-view-btn{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;width:100%;padding:8px 14px;font-size:.78rem;transition:border-color .15s,color .15s}.reset-view-btn:hover{border-color:var(--accent);color:var(--accent)}.debug-header{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;display:flex}.debug-header:hover h2,.debug-header:hover .debug-toggle{color:var(--accent)}.debug-toggle{color:var(--text-muted);font-size:.75rem;transition:color .15s}.debug-tabs{gap:4px;margin:12px 0 8px;display:flex}.debug-tab{background:var(--bg);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;text-transform:uppercase;letter-spacing:.06em;border-radius:4px;padding:4px 14px;font-size:.72rem;font-weight:600;transition:background .15s,border-color .15s,color .15s}.debug-tab.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}.debug-tab:hover:not(.active){border-color:var(--accent);color:var(--text)}.debug-content{scrollbar-width:thin;max-height:320px;font-family:Consolas,Monaco,Courier New,monospace;font-size:.78rem;overflow-y:auto}.debug-stats{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:0;display:grid}.debug-stat-row{border-bottom:1px solid var(--border);justify-content:space-between;gap:8px;padding:4px 8px;display:flex}.debug-stat-row:nth-child(2n){background:#ffffff05}.debug-key{color:var(--text-muted);white-space:nowrap}.debug-val{color:var(--text);font-weight:600}.debug-log-list{flex-direction:column;gap:1px;display:flex}.debug-log-entry{color:var(--text);border-bottom:1px solid #2a2d3e66;grid-template-columns:72px 54px 1fr;align-items:baseline;gap:8px;padding:3px 4px;display:grid}.debug-log-entry--api{grid-template-columns:72px 40px 34px 1fr}.debug-log-entry.level-error{color:var(--red)}.debug-log-entry.level-warning{color:var(--yellow)}.debug-log-entry.level-debug{color:var(--text-muted)}.log-ts{color:var(--text-muted);font-size:.7rem}.log-level{text-transform:uppercase;letter-spacing:.03em;font-size:.7rem;font-weight:700}.log-status{font-size:.7rem;font-weight:700}.log-msg{word-break:break-word;line-height:1.4}.log-duration{color:var(--text-muted)}.debug-empty{color:var(--text-muted);text-align:center;padding:16px 0;font-style:italic}.esp-log-entry{grid-template-columns:64px 60px 54px 60px 1fr}.esp-cat-badge{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);white-space:nowrap;background:#ffffff0f;border-radius:3px;align-self:center;padding:1px 4px;font-size:.65rem;font-weight:700}.esp-log-list{max-height:320px;overflow-y:auto}.severity-debug{color:var(--text-muted)}.severity-info{color:var(--text)}.severity-warn{color:var(--yellow)}.severity-error{color:var(--red)}.severity-fatal{color:var(--red);font-weight:700}.esp-state-flags{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:6px;margin-bottom:6px;padding:8px 0 10px;display:flex}.esp-flag{text-transform:uppercase;letter-spacing:.05em;border-radius:4px;padding:2px 8px;font-size:.68rem;font-weight:700}.flag-warn{color:var(--yellow);background:#f7c94826;border:1px solid #f7c9484d}.flag-error{color:var(--red);background:#f75f5f26;border:1px solid #f75f5f4d}.flag-info{color:var(--accent);background:#4f8ef726;border:1px solid #4f8ef74d}.esp-status-flags{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.esp-flag--sm{padding:1px 5px;font-size:.6rem}.esp-pending-badge{color:var(--accent);background:#4f8ef733;border-radius:10px;margin-left:6px;padding:1px 7px;font-size:.65rem;font-weight:700}.camera-settings-hint{color:var(--text-muted);margin:0 0 10px;font-size:.78rem}.camera-settings-error{color:#e05a5a;margin:0 0 10px;font-size:.82rem}.camera-settings-loading{color:var(--text-muted);margin:0;font-size:.85rem}.camera-setting-toggle{cursor:pointer;width:18px;height:18px;accent-color:var(--accent)}.camera-settings-source{color:var(--text-muted);text-align:right;margin:10px 0 0;font-size:.72rem}.mouse-setting-row.camera-ctrl-disabled{opacity:.38;pointer-events:none}.camera-reset-row{justify-content:flex-end;margin-top:14px;display:flex}.camera-reset-btn{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;padding:5px 12px;font-size:.8rem;transition:border-color .15s,color .15s}.camera-reset-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.camera-reset-btn:disabled{cursor:not-allowed;opacity:.5}.accordion{margin-top:8px}.accordion-summary{cursor:pointer;color:var(--text-muted);-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:6px 0;font-size:.82rem;font-weight:600;list-style:none;display:flex}.accordion-summary::-webkit-details-marker{display:none}.accordion-summary:before{content:"▶";color:var(--text-muted);font-size:.6rem;transition:transform .2s}details[open]>.accordion-summary:before{transform:rotate(90deg)}.accordion-body{padding-top:8px}.controls-enable-row{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:6px;padding:12px 16px;display:flex}.controls-enable-label{cursor:pointer;color:var(--text);-webkit-user-select:none;user-select:none;align-items:center;gap:10px;font-size:.88rem;font-weight:600;display:flex}.toggle-switch{flex-shrink:0;align-items:center;width:36px;height:20px;display:inline-flex;position:relative}.toggle-switch-input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.toggle-switch-track{background:var(--border);cursor:pointer;border:1px solid #ffffff14;border-radius:10px;width:36px;height:20px;transition:background .2s,border-color .2s,box-shadow .2s;display:block;position:relative}.toggle-switch-track:after{content:"";background:var(--text-muted);border-radius:50%;width:14px;height:14px;transition:transform .2s cubic-bezier(.4,0,.2,1),background .2s,box-shadow .2s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0006}.toggle-switch--on .toggle-switch-track{background:var(--green);border-color:var(--green);box-shadow:0 0 6px #3ecf8e59}.toggle-switch--on .toggle-switch-track:after{background:#fff;transform:translate(16px)}.controls-enable-label:hover .toggle-switch-track{border-color:var(--text-muted)}.controls-enable-label:hover .toggle-switch--on .toggle-switch-track{border-color:var(--green);box-shadow:0 0 8px #3ecf8e80}.controls-enable-hint{color:var(--text-muted);padding-left:26px;font-size:.75rem;line-height:1.4}.controls-enable-hint--warning{color:var(--red);padding-left:0}.controls-enable-label--blocked{opacity:.5;cursor:not-allowed}.toggle-switch--disabled .toggle-switch-input,.toggle-switch--disabled .toggle-switch-track{cursor:not-allowed}.controls-enable-sublabel{color:var(--text-muted);margin-left:2px;font-size:.72rem;font-weight:400}.cmd-btn:disabled{opacity:.3;cursor:not-allowed;pointer-events:none}.drawer-panel--top{flex-shrink:unset;border-bottom:1px solid var(--border);border-radius:0 0 var(--radius) var(--radius);z-index:200;border-top:none;border-left:none;border-right:none;width:100%;height:0;max-height:min(340px,45vh);transition:height .28s cubic-bezier(.4,0,.2,1);position:fixed;inset:0 0 auto}.drawer-panel--top.drawer-panel--open{width:100%;height:min(340px,45vh)}.drawer-panel--top .drawer-header,.drawer-panel--top .drawer-body{min-width:0}.drawer-panel--top .drawer-body{flex-flow:wrap;align-content:flex-start;gap:16px}.drawer-panel--top .drawer-body>*{flex:280px;min-width:0}.drawer-resize-handle{cursor:ns-resize;touch-action:none;background:0 0;flex-shrink:0;justify-content:center;align-items:center;width:100%;height:10px;display:flex}.drawer-resize-handle:before{content:"";background:var(--border);border-radius:2px;width:36px;height:3px;transition:background .15s,width .15s}.drawer-resize-handle:hover:before{background:var(--accent);width:52px}.drawer-panel--bottom{flex-shrink:unset;border-top:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;z-index:200;border-left:none;border-right:none;width:100%;height:0;max-height:min(520px,65vh);transition:height .28s cubic-bezier(.4,0,.2,1);position:fixed;inset:auto 0 0}.drawer-panel--bottom.drawer-panel--open{width:100%;height:min(520px,65vh)}.drawer-panel--bottom .drawer-header,.drawer-panel--bottom .drawer-body{min-width:0}.drawer-panel--bottom .drawer-body{flex-flow:wrap;align-content:flex-start;gap:16px}.drawer-panel--bottom .drawer-body>*{flex:280px;min-width:0}.drawer-backdrop{z-index:199;background:#00000073;animation:.2s backdropFadeIn;position:fixed;inset:0}.wifi-modal-shell{z-index:260;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.wifi-modal-backdrop{background:#0009;position:absolute;inset:0}.wifi-modal-panel{background:var(--surface);border:1px solid var(--border);border-radius:14px;flex-direction:column;width:min(900px,100%);max-height:min(82vh,860px);display:flex;position:relative;overflow:hidden;box-shadow:0 24px 80px #00000073}.wifi-modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:18px 22px 14px;display:flex}.wifi-modal-header h2{margin-bottom:0}.wifi-modal-content{flex-direction:column;gap:16px;padding:20px 22px 22px;display:flex;overflow-y:auto}.wifi-modal-toolbar,.wifi-selected-actions{flex-wrap:wrap;gap:8px;display:flex}.wifi-action-btn{background:var(--bg);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:6px;padding:8px 12px;font-size:.82rem;transition:border-color .15s,color .15s,background .15s}.wifi-action-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.wifi-action-btn:disabled{opacity:.5;cursor:not-allowed}.wifi-action-btn--primary{border-color:var(--accent);color:var(--accent);background:#4f8ef71f}.wifi-action-btn--danger:hover:not(:disabled){border-color:var(--red);color:var(--red)}.wifi-summary-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}.wifi-summary-card,.wifi-selected-card{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:14px}.wifi-summary-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px;font-size:.72rem;display:block}.wifi-summary-meta,.wifi-selected-meta,.wifi-modal-hint,.wifi-empty{color:var(--text-muted);font-size:.82rem}.wifi-error-banner{color:var(--red);background:#f75f5f14;border:1px solid #f75f5f80;border-radius:8px;padding:10px 12px}.wifi-network-list{flex-direction:column;gap:8px;display:flex}.wifi-network-item{align-items:stretch;gap:8px;display:flex}.wifi-network-row{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;text-align:left;border-radius:10px;flex:1;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.wifi-network-row.active{border-color:var(--accent);background:#4f8ef714}.wifi-network-main{flex-direction:column;gap:4px;min-width:0;display:flex}.wifi-network-name{font-weight:600}.wifi-network-meta{color:var(--text-muted);font-size:.78rem}.wifi-network-badges{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.wifi-badge{color:var(--green);background:#3ecf8e1f;border-radius:999px;padding:3px 8px;font-size:.72rem;font-weight:700}.wifi-badge--target{color:var(--accent);background:#4f8ef71f}.wifi-badge--saved{color:var(--text-muted);background:#ffffff14}.wifi-network-forget-btn{flex-shrink:0;align-self:center}.wifi-selected-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.wifi-password-field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.wifi-password-field input{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:9px 10px}@keyframes backdropFadeIn{0%{opacity:0}to{opacity:1}}.wifi-network-details{margin-top:2px}.wifi-detail-grid{grid-template-columns:max-content 1fr;gap:6px 16px;font-size:.82rem;display:grid}.wifi-detail-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;padding-top:1px;font-size:.78rem}.wifi-detail-value{color:var(--text);word-break:break-all;font-family:monospace;font-size:.85rem}#drawer-debug .drawer-body{flex-flow:column;gap:12px}#drawer-debug .drawer-body>*{flex:unset;min-width:0}.debug-status-strip{background:var(--bg);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 12px;display:flex}.debug-status-item{background:var(--surface);border:1px solid var(--border);white-space:nowrap;border-radius:5px;align-items:center;gap:5px;padding:3px 9px;font-family:Consolas,Monaco,Courier New,monospace;font-size:.78rem;display:flex}.debug-status-item .ds-key{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.7rem}.debug-status-item .ds-val{color:var(--text);font-weight:600}.debug-status-item .ds-val--active{color:var(--green)}.debug-status-separator{background:var(--border);flex-shrink:0;width:1px;height:16px}.debug-panel--inline{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.debug-panel--inline .debug-tabs{margin-top:0}.debug-panel--inline .debug-content{flex:1;max-height:none;overflow-y:auto}.log-ts--wall{color:var(--text-muted);opacity:.75;font-size:.67rem}.log-filters{border-bottom:1px solid var(--border);flex-direction:column;gap:6px;margin-bottom:4px;padding:8px 0;display:flex}.log-filter-input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:5px;outline:none;padding:4px 8px;font-family:inherit;font-size:.78rem;transition:border-color .15s}.log-filter-input:focus{border-color:var(--accent)}.log-filter-sevs{flex-wrap:wrap;gap:4px;display:flex}.log-filter-btn{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;letter-spacing:.04em;text-transform:uppercase;background:#ffffff0a;border-radius:4px;padding:2px 6px;font-family:inherit;font-size:.65rem;font-weight:700;transition:background .15s,border-color .15s,color .15s}.log-filter-btn:hover{border-color:var(--text-muted);color:var(--text)}.log-filter-btn.active{border-color:var(--accent);color:var(--accent);background:#4f8ef726}.log-filter-btn--warn.active,.log-filter-btn--warning.active{border-color:var(--yellow);color:var(--yellow);background:#f7c94826}.log-filter-btn--error.active{border-color:var(--red);color:var(--red);background:#f75f5f26}.log-filter-btn--fatal.active,.log-filter-btn--critical.active{border-color:var(--red);color:var(--red);background:#f75f5f33;font-weight:900}.log-filter-btn--debug.active{border-color:var(--text-muted);color:var(--text-muted);background:#7880a026}.debug-stats-layout{flex-direction:column;gap:10px;display:flex}.debug-host-cards{grid-template-columns:1fr 1fr;gap:8px;display:grid}.host-card{background:var(--bg);border:1px solid var(--border);border-radius:7px;flex-direction:column;gap:4px;padding:10px 14px;transition:border-color .2s;display:flex}.host-card--warn{background:#f7c9480a;border-color:#f7c94880}.host-card--crit{background:#f75f5f0f;border-color:#f75f5f99}.host-card-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-size:.68rem;font-weight:700}.host-card-val{color:var(--text);font-family:Consolas,Monaco,monospace;font-size:1.1rem;font-weight:700}.host-card--warn .host-card-val{color:var(--yellow)}.host-card--crit .host-card-val{color:var(--red)}.debug-stat-row.stat-warn .debug-key,.debug-stat-row.stat-warn .debug-val{color:var(--yellow)}.debug-charts{flex-direction:column;gap:12px;padding-top:4px;display:flex}.chart-range-selector{gap:4px;margin-bottom:4px;display:flex}.chart-range-btn{background:var(--bg);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;text-transform:uppercase;letter-spacing:.05em;border-radius:4px;padding:3px 10px;font-size:.68rem;font-weight:600;transition:background .15s,border-color .15s,color .15s}.chart-range-btn.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}.chart-range-btn:hover:not(.active){border-color:var(--accent);color:var(--text)}.chart-block{flex-direction:column;gap:4px;display:flex}.chart-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:.68rem;font-weight:700}.mini-chart-empty{color:var(--text-muted);border:1px dashed var(--border);background:#ffffff05;border-radius:5px;justify-content:center;align-items:center;font-size:.75rem;font-style:italic;display:flex}.app-main{transition:padding-bottom .28s cubic-bezier(.4,0,.2,1)}#drawer-controls.drawer-panel--bottom.drawer-panel--open{height:calc(55vh - 110px);max-height:calc(55vh - 110px)}#drawer-controls .drawer-body{flex-flow:column}#drawer-controls .drawer-body>*{flex:unset;min-width:0}@media (width<=639px){.btn-label{display:none}.refresh-btn,.drawer-trigger-btn{padding:6px 8px}.app-main{gap:6px;padding:6px}.card{padding:10px}.video-card{padding:4px}h2{margin-bottom:6px}.video-hint,.header h1,.cmd-btn kbd{display:none}h1{white-space:nowrap;font-size:1rem}.drawer-header{min-width:0;padding:8px 12px}.drawer-header h2{letter-spacing:.05em;font-size:.75rem}.drawer-close{width:26px;height:26px;font-size:.7rem}.controls-enable-row{gap:4px;padding:8px 10px}.controls-enable-label{gap:8px;font-size:.82rem}#drawer-controls .card>h2{display:none}#drawer-controls .dpad-grid{gap:5px}#drawer-controls .cmd-btn{gap:2px;padding:7px 4px;font-size:.75rem}#drawer-controls .cmd-btn svg{width:16px;height:16px}.drawer-panel--left,.drawer-panel--right{z-index:200;height:100%;position:fixed;top:0;bottom:0}.drawer-panel--left{left:0}.drawer-panel--right{right:0}.drawer-panel--left.drawer-panel--open,.drawer-panel--right.drawer-panel--open{width:min(300px,85vw)}}.auth-screen{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:1rem;width:min(380px,90vw);padding:2rem 2.5rem;display:flex}.auth-title{color:var(--text);text-align:center;margin-bottom:.25rem;font-size:1.1rem;font-weight:600}.auth-checking{color:var(--text-muted);text-align:center;font-size:.9rem}.auth-form{flex-direction:column;gap:.75rem;display:flex}.auth-label{color:var(--text-muted);font-size:.82rem;font-weight:500}.auth-input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;outline:none;padding:.5rem .75rem;font-size:.95rem;transition:border-color .15s}.auth-input:focus{border-color:var(--accent)}.auth-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;margin-top:.25rem;padding:.55rem 1rem;font-size:.9rem;font-weight:600;transition:opacity .15s}.auth-btn:disabled{opacity:.5;cursor:not-allowed}.auth-error{color:var(--red);font-size:.82rem}.auth-banner{border-radius:6px;padding:.6rem .9rem;font-size:.84rem;line-height:1.4}.auth-banner--warning{background:color-mix(in srgb, var(--yellow) 15%, transparent);border:1px solid color-mix(in srgb, var(--yellow) 40%, transparent);color:var(--yellow)}.auth-log-entry{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.auth-outcome-badge{letter-spacing:.03em;text-transform:uppercase;border-radius:4px;flex-shrink:0;padding:.1rem .45rem;font-size:.72rem;font-weight:700;display:inline-block}.auth-outcome-badge--success{background:color-mix(in srgb, var(--green) 18%, transparent);color:var(--green);border:1px solid color-mix(in srgb, var(--green) 35%, transparent)}.auth-outcome-badge--failure{background:color-mix(in srgb, var(--red) 18%, transparent);color:var(--red);border:1px solid color-mix(in srgb, var(--red) 35%, transparent)}.auth-log-ip{font-family:var(--font-mono,monospace);color:var(--text-muted);flex-shrink:0;font-size:.8rem}.auth-log-username{font-family:var(--font-mono,monospace);color:var(--text);flex-shrink:0;font-size:.82rem;font-weight:600}.auth-log-role{background:color-mix(in srgb, var(--accent) 18%, transparent);color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 35%, transparent);border-radius:4px;flex-shrink:0;padding:.1rem .4rem;font-size:.75rem}.auth-log-reason{color:var(--text-muted);font-size:.78rem;font-style:italic}.session-ended-banner{z-index:9999;background:color-mix(in srgb, var(--yellow) 15%, var(--surface));border:1px solid color-mix(in srgb, var(--yellow) 40%, transparent);color:var(--yellow);pointer-events:none;white-space:nowrap;border-radius:8px;padding:.65rem 1.25rem;font-size:.85rem;position:fixed;top:1rem;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0006}.modal-overlay{z-index:320;background:#000000a6;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;width:min(480px,100%);max-height:90vh;padding:28px 28px 24px;position:relative;overflow-y:auto;box-shadow:0 24px 80px #00000080}.modal-card--wide{width:min(820px,100%)}.modal-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:1.1rem;line-height:1;position:absolute;top:14px;right:14px}.modal-close:hover{color:var(--text);background:var(--border)}.admin-panel{flex-direction:column;gap:20px;display:flex}.admin-panel h2{color:var(--text);margin-bottom:4px;font-size:1.1rem;font-weight:600}.admin-panel-section{flex-direction:column;gap:10px;display:flex}.admin-section-title{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);font-size:.78rem;font-weight:600}.admin-user-row{background:var(--bg);border:1px solid var(--border);border-radius:8px;align-items:center;gap:8px;padding:10px 12px;display:flex}.admin-user-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.admin-user-role{background:var(--accent-dim);color:var(--accent);border-radius:99px;flex-shrink:0;padding:2px 8px;font-size:.75rem;font-weight:600}.admin-user-actions{flex-shrink:0;gap:6px;display:flex}.admin-btn{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:6px;padding:4px 10px;font-size:.78rem;transition:background .15s}.admin-btn:hover{background:var(--border)}.admin-btn--danger{color:var(--red);border-color:var(--red)}.admin-btn--danger:hover{background:#f75f5f1f}.admin-create-form{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.admin-create-form input,.admin-create-form select{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:7px;flex:1;min-width:120px;padding:8px 10px;font-size:.88rem}.admin-create-form input:focus,.admin-create-form select:focus{border-color:var(--accent);outline:none}.admin-error{color:var(--red);padding:6px 0;font-size:.84rem}.admin-panel__title{margin-bottom:4px;font-size:1.1rem;font-weight:600}.admin-panel__error{color:var(--red);background:#f75f5f14;border:1px solid #f75f5f4d;border-radius:7px;padding:8px 12px;font-size:.84rem}.admin-panel__loading,.admin-panel__empty{color:var(--text-muted);padding:8px 0;font-size:.88rem}.admin-panel__create-form{background:var(--bg);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:10px;padding:14px 16px;display:flex}.admin-panel__create-form h3{color:var(--text-muted);margin-bottom:2px;font-size:.85rem;font-weight:600}.admin-panel__form-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.admin-panel__input,.admin-panel__select{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:7px;flex:1;min-width:110px;padding:8px 10px;font-size:.88rem}.admin-panel__input:focus,.admin-panel__select:focus{border-color:var(--accent);outline:none}.admin-panel__table{border-collapse:collapse;width:100%;font-size:.88rem}.admin-panel__table th{text-align:left;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);padding:8px 10px;font-size:.76rem;font-weight:600}.admin-panel__table td{vertical-align:middle;border-bottom:1px solid #2a2d3e80;padding:9px 10px}.admin-panel__row--self td{background:#4f8ef70f}.admin-panel__actions{flex-wrap:wrap;gap:6px;display:flex}.admin-panel__btn{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:6px;padding:5px 12px;font-size:.8rem;transition:background .15s}.admin-panel__btn:hover:not(:disabled){background:var(--border)}.admin-panel__btn:disabled{opacity:.5;cursor:default}.admin-panel__btn--primary{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}.admin-panel__btn--primary:hover:not(:disabled){background:var(--accent);color:#fff}.admin-panel__btn--small{padding:4px 9px;font-size:.75rem}.admin-panel__btn--danger{color:var(--red);border-color:var(--red)}.admin-panel__btn--danger:hover:not(:disabled){background:#f75f5f1f}.admin-panel__btn--warning{color:var(--yellow);border-color:var(--yellow)}.admin-panel__btn--warning:hover:not(:disabled){background:#f7c9481a}.admin-panel__dialog{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:10px;padding:14px 16px;display:flex}.admin-panel__dialog-msg{color:var(--text);margin:0;font-size:.88rem}.admin-panel__dialog-form{flex-direction:column;gap:8px;display:flex}.admin-panel__dialog-actions{flex-wrap:wrap;gap:8px;display:flex}.modal-title{margin-bottom:10px;font-size:1.05rem;font-weight:600}.modal-text{color:var(--text-muted);margin-bottom:10px;font-size:.88rem;line-height:1.5}.modal-actions{flex-direction:column;gap:8px;margin-top:8px;display:flex}.modal-qr{background:#fff;border-radius:10px;justify-content:center;margin-bottom:8px;padding:14px;display:flex}.modal-recovery-codes{grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px;display:grid}.modal-recovery-code{font-family:var(--font-mono,monospace);background:var(--bg);border:1px solid var(--border);text-align:center;color:var(--text);border-radius:6px;padding:5px 10px;font-size:.82rem}.trusted-devices-table{margin-top:8px}.trusted-devices-name{color:var(--text);font-weight:600}.trusted-devices-date{color:var(--text-muted);white-space:nowrap;font-size:.82rem}.trusted-devices-error{color:var(--red);background:#f75f5f14;border:1px solid #f75f5f80;border-radius:8px;margin-bottom:10px;padding:10px 12px;font-size:.84rem}.totp-modal h2{margin-bottom:12px;font-size:1.05rem;font-weight:600}.totp-modal-body{flex-direction:column;gap:14px;display:flex}.totp-qr-wrap{background:#fff;border-radius:10px;justify-content:center;padding:12px;display:flex}.totp-secret-text{font-family:var(--font-mono,monospace);background:var(--bg);border:1px solid var(--border);word-break:break-all;color:var(--text-muted);border-radius:7px;padding:8px 12px;font-size:.82rem}.totp-recovery-list{grid-template-columns:1fr 1fr;gap:6px;padding:0;list-style:none;display:grid}.totp-recovery-list li{font-family:var(--font-mono,monospace);background:var(--bg);border:1px solid var(--border);text-align:center;color:var(--text);border-radius:6px;padding:5px 10px;font-size:.82rem}.totp-modal-actions{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.totp-warning{color:var(--yellow);background:#f7c9480f;border:1px solid #f7c9484d;border-radius:7px;padding:8px 12px;font-size:.83rem}
