:root{--bg-page:#000;--bg-card:#111;--bg-input:#080808;--bg-hover:#1c1c1c;--bg-muted:#2c2c2c;--border:#3a3a3a;--border-strong:#505050;--text-1:#f1f5f9;--text-2:#e2e8f0;--text-3:#cbd5e1;--text-4:#94a3b8;--text-5:#64748b;--text-6:#3a3a3a;--navbar-bg:linear-gradient(90deg,#000,#2a2a2a 60%,#111);--navbar-border:#3a3a3a;--app-bg:#000;--shadow:#0009;--shadow-sm:#0006;--input-bg-raw:#000c;--input-bg-focus:#0a0a0a;--scrollbar-track:#00000080;--scrollbar-thumb:#2a2a2a;--scrollbar-hover:#3a3a3a;--error-bg:#7f1d1d;--error-border:#991b1b;--error-text:#fca5a5}[data-theme=light]{--bg-page:#f1f5f9;--bg-card:#fff;--bg-input:#f8fafc;--bg-hover:#e2e8f0;--bg-muted:#cbd5e1;--border:#cbd5e1;--text-1:#0f172a;--text-2:#1e293b;--text-3:#334155;--text-4:#475569;--text-5:#94a3b8;--text-6:#cbd5e1;--navbar-bg:#fffffff2;--navbar-border:#cbd5e1b3;--app-bg:linear-gradient(135deg,#f1f5f9,#e8eef7 50%,#f1f5f9);--shadow:#0000001a;--shadow-sm:#0000000f;--input-bg-raw:#f8fafce6;--input-bg-focus:#fff;--scrollbar-track:#f1f5f9cc;--scrollbar-thumb:#cbd5e1;--scrollbar-hover:#94a3b8;--error-bg:#fee2e2;--error-border:#fca5a5;--error-text:#991b1b}:root .agent-fs-panel,:root .agent-net-panel,:root .cdrom-panel,:root .confirm-modal,:root .detail-card,:root .logs-panel,:root .vm-card{box-shadow:0 0 0 1px #505050,0 2px 8px #00000080;box-shadow:0 0 0 1px var(--border-strong),0 2px 8px #00000080}[data-theme=light] .agent-fs-panel,[data-theme=light] .agent-net-panel,[data-theme=light] .cdrom-panel,[data-theme=light] .confirm-modal,[data-theme=light] .detail-card,[data-theme=light] .logs-panel,[data-theme=light] .vm-card{box-shadow:none}*{box-sizing:border-box;margin:0;padding:0}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#000;background:var(--app-bg);color:#e2e8f0;color:var(--text-2);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;min-height:100vh;transition:background .3s,color .3s}code{font-family:Fira Code,source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}button{border:none;border-radius:.5rem;cursor:pointer;font-size:.875rem;font-weight:600;letter-spacing:.3px;padding:.75rem 1.25rem;transition:all .3s cubic-bezier(.4,0,.2,1)}button:hover{box-shadow:0 8px 24px #0006;box-shadow:0 8px 24px var(--shadow-sm);transform:translateY(-2px)}button:active{transform:translateY(0)}input,select,textarea{background-color:#000c;background-color:var(--input-bg-raw);border:2px solid #3a3a3a;border:2px solid var(--border);border-radius:.5rem;color:#e2e8f0;color:var(--text-2);font-family:inherit;font-size:.875rem;padding:.75rem 1rem;transition:all .3s ease}input:focus,select:focus,textarea:focus{background-color:#0a0a0a;background-color:var(--input-bg-focus);border-color:#3b82f6;box-shadow:0 0 0 4px #3b82f626;outline:none}input::placeholder{color:#64748b;color:var(--text-5)}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:#00000080;background:var(--scrollbar-track)}::-webkit-scrollbar-thumb{background:#2a2a2a;background:var(--scrollbar-thumb);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#3a3a3a;background:var(--scrollbar-hover)}.app{background:var(--app-bg);transition:background .3s}.app,.loading{display:flex;flex-direction:column;min-height:100vh}.loading{align-items:center;color:var(--text-4);font-size:1.5rem;gap:2rem;justify-content:center}.loading:before{animation:spin 1s linear infinite;border:3px solid #3b82f61a;border-radius:50%;border-top-color:#3b82f6;content:"";height:60px;width:60px}@keyframes spin{to{transform:rotate(1turn)}}.navbar{animation:slideInDown .6s ease-out;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:var(--navbar-bg);border-bottom:1px solid var(--navbar-border);box-shadow:0 4px 20px var(--shadow);padding:1.25rem 0;position:-webkit-sticky;position:sticky;top:0;transition:background .3s,border-color .3s;z-index:100}.navbar-container{gap:2rem;justify-content:space-between;margin:0 auto;max-width:1400px;padding:0 2rem}.navbar-container,.navbar-logo{align-items:center;display:flex}.navbar-logo{background:none;border:none;cursor:pointer;padding:0;transition:opacity .2s ease,transform .2s ease}.navbar-logo:hover{opacity:.85;transform:scale(1.03)}.vm-stats{gap:.5rem;margin-left:1.25rem}.vm-stat-btn,.vm-stats{align-items:center;display:flex}.vm-stat-btn{background:var(--bg-hover);border:1px solid var(--border);border-radius:.5rem;color:var(--text-3);cursor:pointer;font-size:.8rem;font-weight:700;gap:.4rem;padding:.4rem .85rem;transition:all .2s;white-space:nowrap}.vm-stat-dot{border-radius:50%;flex-shrink:0;height:8px;width:8px}.vm-stat-btn.online .vm-stat-dot{background:#22c55e;box-shadow:0 0 6px #22c55e88}.vm-stat-btn.offline .vm-stat-dot{background:#94a3b8}.vm-stat-btn.online{border-color:#22c55e40}.vm-stat-btn.offline{border-color:var(--border)}.vm-stat-btn.online:hover{background:#22c55e1a;border-color:#22c55e66;color:#22c55e}.vm-stat-btn.offline:hover{background:var(--bg-muted);color:var(--text-1)}.vm-stat-btn.offline.has-offline{background:#ef444414;border-color:#ef444459;color:#f87171}.vm-stat-btn.offline.has-offline:hover{background:#ef444426;border-color:#ef44448c}.vm-stat-btn.offline.has-offline .vm-stat-dot{animation:pulse-red 1.4s ease-in-out infinite;background:#ef4444;box-shadow:0 0 6px #ef444488}@keyframes pulse-red{0%,to{box-shadow:0 0 4px #ef444488;opacity:1}50%{box-shadow:0 0 10px #ef4444cc;opacity:.4}}.home-btn{color:var(--text-2)}.home-btn,.logs-nav-btn{align-items:center;background:var(--bg-hover);border:1px solid var(--border);border-radius:.5rem;cursor:pointer;display:flex;font-size:.875rem;font-weight:600;gap:.4rem;padding:.5rem 1rem;transition:all .2s;white-space:nowrap}.logs-nav-btn{color:var(--text-3)}.logs-nav-btn:hover{background:#3b82f61f;border-color:#3b82f666;color:var(--text-1)}.logs-nav-btn.active{background:#3b82f626;border-color:#3b82f680;color:#60a5fa}.home-btn:hover{background:#3b82f61f;border-color:#3b82f666;color:var(--text-1)}.navbar-user{align-items:center;display:flex;gap:1rem;margin-left:auto}.user-menu-wrap{position:relative}.user-info-btn{align-items:center;background:#3b82f614;border:1px solid #3b82f640;border-radius:.5rem;color:var(--text-3);cursor:pointer;display:flex;font-size:.875rem;font-weight:600;gap:.45rem;padding:.6rem 1rem;transition:all .2s;white-space:nowrap}.user-info-btn.open,.user-info-btn:hover{background:#3b82f629;border-color:#3b82f673;color:var(--text-1)}.user-menu-chevron{font-size:.6rem;margin-left:.1rem;opacity:.6}.user-dropdown{animation:fadeInDown .15s ease-out;background:var(--bg-card);border:1px solid var(--border);border-radius:.625rem;box-shadow:0 12px 40px var(--shadow);overflow:hidden;position:absolute;right:0;top:calc(100% + .5rem);width:290px;z-index:200}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.user-dropdown-header{align-items:center;background:var(--bg-hover);display:flex;gap:.75rem;padding:.85rem 1rem}.user-dropdown-icon{font-size:1.4rem;line-height:1}.user-dropdown-name{color:var(--text-1);font-family:Courier New,monospace;font-size:.85rem;font-weight:700}.user-dropdown-alias{color:var(--text-5);font-size:.72rem;margin-top:.1rem}.user-dropdown-divider{background:var(--border);height:1px}.user-dropdown-section{display:flex;flex-direction:column;gap:.6rem;padding:.85rem 1rem}.user-dropdown-section-title{color:var(--text-5);font-size:.72rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase}.user-dropdown-loading{color:var(--text-5);font-size:.8rem}.user-2fa-status-row{align-items:center;display:flex;gap:.6rem}.user-2fa-off{color:var(--text-5);font-size:.78rem}.user-2fa-date{color:var(--text-5);font-size:.72rem}.user-2fa-btns{display:flex;gap:.5rem}.user-2fa-setup-btn{background:#3b82f61a;border:1px solid #3b82f659;border-radius:.375rem;box-shadow:none;color:#60a5fa;cursor:pointer;font-size:.78rem;font-weight:600;padding:.3rem .75rem;transition:all .15s;white-space:nowrap}.user-2fa-setup-btn:hover:not(:disabled){background:#3b82f633;border-color:#3b82f699;box-shadow:none;transform:none}.user-2fa-setup-btn:disabled{cursor:not-allowed;opacity:.4}.user-2fa-disable-btn{background:#ef444414;border:1px solid #ef44444d;border-radius:.375rem;box-shadow:none;color:#f87171;cursor:pointer;font-size:.78rem;font-weight:600;padding:.3rem .75rem;transition:all .15s;white-space:nowrap}.user-2fa-disable-btn:hover:not(:disabled){background:#ef44442e;border-color:#ef44448c;box-shadow:none;transform:none}.user-2fa-disable-btn:disabled{cursor:not-allowed;opacity:.4}.user-2fa-setup{display:flex;flex-direction:column;gap:.5rem}.user-2fa-qr{align-self:center;border:1px solid var(--border);border-radius:.375rem;image-rendering:pixelated;max-width:200px;width:100%}.user-2fa-steps{display:flex;flex-direction:column;gap:.3rem}.user-2fa-step{color:var(--text-3);font-size:.78rem;line-height:1.4}.user-2fa-manual{background:var(--bg-input);border:1px solid var(--border);border-radius:.3rem;color:var(--text-1);font-family:Courier New,monospace;font-size:.72rem;font-weight:700;letter-spacing:.05em;margin:.1rem 0 .3rem;padding:.25rem .5rem;word-break:break-all}.user-2fa-confirm-row{display:flex;gap:.4rem;margin-top:.1rem}.user-2fa-input{background:var(--bg-input);border:1px solid var(--border);border-radius:.375rem;box-sizing:border-box;color:var(--text-1);flex:1 1;font-size:1rem;font-weight:700;letter-spacing:.3em;outline:none;padding:.35rem .25rem;text-align:center;transition:border-color .2s}.user-2fa-input:focus{border-color:#3b82f6}.user-2fa-input:disabled{opacity:.5}.user-2fa-input::placeholder{color:var(--text-5);letter-spacing:.1em}.user-2fa-confirm-btn{background:#1d4ed8;border:none;border-radius:.375rem;box-shadow:none;color:#fff;cursor:pointer;font-size:.78rem;font-weight:700;padding:.35rem .75rem;transition:background .15s;white-space:nowrap}.user-2fa-confirm-btn:hover:not(:disabled){background:#2563eb;box-shadow:none;transform:none}.user-2fa-confirm-btn:disabled{cursor:not-allowed;opacity:.4}.user-2fa-cancel{align-self:flex-start;background:none;border:1px solid var(--border);border-radius:.375rem;box-shadow:none;color:var(--text-5);cursor:pointer;font-size:.75rem;padding:.25rem .6rem;transition:all .15s}.user-2fa-cancel:hover:not(:disabled){border-color:var(--text-4);box-shadow:none;color:var(--text-2);transform:none}.user-2fa-cancel:disabled{opacity:.4}.user-2fa-msg{font-size:.75rem;font-weight:600;padding:.1rem 0}.user-2fa-msg-success{color:#4ade80}.user-2fa-msg-error{color:#f87171}.theme-toggle{align-items:center;background:var(--bg-hover);border:1px solid var(--border);border-radius:.5rem;color:var(--text-3);cursor:pointer;display:flex;font-size:1rem;font-weight:500;gap:.4rem;padding:.5rem .75rem;transition:all .2s;white-space:nowrap}.theme-toggle:hover{background:var(--bg-muted);color:var(--text-1)}.session-timer{font-feature-settings:"tnum";align-items:center;background:var(--bg-hover);border:1px solid var(--border);border-radius:.5rem;color:var(--text-3);display:flex;font-size:.875rem;font-variant-numeric:tabular-nums;font-weight:600;gap:.3rem;letter-spacing:.02em;padding:.6rem 1rem;transition:background .3s,color .3s,border-color .3s;-webkit-user-select:none;user-select:none;white-space:nowrap}.session-timer.session-warn{background:#78350f26;border-color:#78350f;color:#fbbf24}.session-timer.session-danger{animation:session-pulse 1s ease-in-out infinite;background:#7f1d1d33;border-color:#7f1d1d;color:#f87171}@keyframes session-pulse{0%,to{opacity:1}50%{opacity:.65}}.session-renew-btn{background:none;border:none;color:inherit;cursor:pointer;font-size:1rem;line-height:1;opacity:.75;padding:0 .2rem;transition:opacity .15s,transform .15s}.session-renew-btn:hover{opacity:1;transform:rotate(30deg)}.user-pw-toggle{align-items:center;background:none;border:none;color:var(--text-3);cursor:pointer;display:flex;font-size:.82rem;font-weight:600;justify-content:space-between;padding:.3rem 0;text-align:left;transition:color .15s;width:100%}.user-pw-toggle.open,.user-pw-toggle:hover{color:var(--text-1)}.user-pw-form{display:flex;flex-direction:column;gap:.45rem;margin-top:.5rem}.user-pw-input{background:var(--bg-input);border:1px solid var(--border);border-radius:.375rem;box-sizing:border-box;color:var(--text-2);font-size:.82rem;outline:none;padding:.45rem .75rem;transition:border-color .2s;width:100%}.user-pw-input:focus{border-color:#3b82f6}.user-pw-input::placeholder{color:var(--text-6)}.user-pw-input:disabled{opacity:.5}.user-pw-actions{display:flex;gap:.4rem;margin-top:.1rem}.user-pw-cancel{background:none;border:1px solid var(--border);border-radius:.375rem;box-shadow:none;color:var(--text-5);cursor:pointer;flex:1 1;font-size:.8rem;padding:.4rem .75rem;transition:all .15s}.user-pw-cancel:hover:not(:disabled){border-color:var(--text-4);box-shadow:none;color:var(--text-2);transform:none}.user-pw-cancel:disabled{cursor:not-allowed;opacity:.4}.user-pw-confirm{background:#1d4ed8;border:none;border-radius:.375rem;box-shadow:none;color:#fff;cursor:pointer;flex:2 1;font-size:.8rem;font-weight:600;padding:.4rem .75rem;transition:background .15s}.user-pw-confirm:hover:not(:disabled){background:#2563eb;box-shadow:none;transform:none}.user-pw-confirm:disabled{cursor:not-allowed;opacity:.4}.user-pw-msg{font-size:.78rem;font-weight:600;padding:.15rem 0}.user-pw-msg-success{color:#4ade80}.user-pw-msg-error{color:#f87171}.logout-btn{background:linear-gradient(135deg,#ef4444,#f87171);border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-size:.875rem;font-weight:600;padding:.6rem 1.25rem;transition:all .3s;white-space:nowrap}.logout-btn:hover{background:linear-gradient(135deg,#dc2626,#ef4444);box-shadow:0 4px 15px #ef44444d;transform:translateY(-2px)}.logout-btn:active{transform:translateY(0)}.container{margin:0 auto;max-width:1400px;padding:2rem;width:100%}.page{flex:1 1;min-height:calc(100vh - 70px)}.login-page{align-items:center;background:var(--app-bg);display:flex;justify-content:center;min-height:100vh;padding:1rem}.login-card{background-color:var(--bg-card);border:1px solid var(--border);border-radius:.75rem;box-shadow:0 20px 40px var(--shadow);max-width:360px;padding:2.5rem 2rem;transition:background .3s,border-color .3s;width:100%}.login-logo{align-items:center;display:flex;gap:1rem;justify-content:center;margin-bottom:1.75rem}.login-brand{display:flex;flex-direction:column;line-height:1}.login-brand-exp{color:#3b82f6;font-size:2rem;font-weight:800;letter-spacing:-1px}.login-brand-data{color:var(--text-4);font-size:1rem;font-weight:300;letter-spacing:3px;text-transform:uppercase}.error-message{margin-bottom:1rem;padding:.75rem 1rem}.login-form{display:flex;flex-direction:column;gap:.75rem}.form-input{background-color:var(--bg-input);border:1px solid var(--border);border-radius:.375rem;box-sizing:border-box;color:var(--text-1);font-size:.9rem;padding:.75rem;transition:border-color .2s,background .3s;width:100%}.form-input::placeholder{color:var(--text-5)}.form-input:focus{border-color:#3b82f6;outline:none}.form-input:disabled{cursor:not-allowed;opacity:.6}.password-input-wrapper{align-items:center;display:flex;position:relative}.password-input-wrapper .form-input{padding-right:2.75rem}.toggle-password{background:none;border:none;box-shadow:none;color:var(--text-5);cursor:pointer;font-size:1rem;line-height:1;padding:0;position:absolute;right:.75rem}.toggle-password:hover{box-shadow:none;color:var(--text-3);transform:none}.login-btn{background-color:#3b82f6;border:none;border-radius:.375rem;color:#fff;cursor:pointer;font-size:.95rem;font-weight:600;margin-top:.25rem;padding:.75rem;transition:background-color .2s}.login-btn:hover:not(:disabled){background-color:#2563eb}.login-btn:disabled{background-color:var(--bg-hover);box-shadow:none;color:var(--text-5);cursor:not-allowed;transform:none}.totp-header{align-items:flex-start;background:#3b82f60f;border:1px solid #3b82f633;border-radius:.5rem;display:flex;gap:.75rem;padding:.75rem}.totp-icon{font-size:1.5rem;line-height:1;margin-top:.1rem}.totp-title{color:var(--text-1);font-size:.9rem;font-weight:700;margin-bottom:.2rem}.totp-subtitle{color:var(--text-4);font-size:.78rem;line-height:1.4}.totp-input{font-family:Courier New,monospace;font-size:1.6rem;font-weight:700;letter-spacing:.35em;padding:.75rem .5rem;text-align:center}.totp-back-btn{background:none;border:1px solid var(--border);border-radius:.375rem;box-shadow:none;color:var(--text-4);cursor:pointer;font-size:.85rem;padding:.55rem;text-align:center;transition:all .2s}.totp-back-btn:hover:not(:disabled){background:var(--bg-hover);border-color:var(--text-4);box-shadow:none;color:var(--text-1);transform:none}.totp-back-btn:disabled{cursor:not-allowed;opacity:.4}.tag-badge{align-items:center;border-radius:9999px;display:inline-flex;font-size:.72rem;font-weight:600;gap:.25rem;letter-spacing:.02em;padding:.18rem .55rem;white-space:nowrap}.tag-badge-sm{font-size:.65rem;padding:.12rem .4rem}.tag-remove-btn{background:none;border:none;box-shadow:none;color:inherit;cursor:pointer;font-size:.6rem;line-height:1;margin-left:.1rem;opacity:.6;padding:0;transform:none;transition:opacity .15s}.tag-remove-btn:hover{box-shadow:none;opacity:1;transform:none}.page-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem}.page-header h1{color:var(--text-1);font-size:2rem;margin:0}.refresh-btn{padding:.75rem 1.5rem}.refresh-btn:hover:not(:disabled){background-color:#2563eb}.refresh-btn:disabled{background-color:var(--bg-muted);cursor:not-allowed}.error-message{font-size:.875rem}.loading-spinner{align-items:center;color:var(--text-4);display:flex;font-size:1.125rem;justify-content:center;min-height:200px}.empty-state{color:var(--text-4);padding:3rem;text-align:center}.search-filter-row{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem}.search-filter-row .search-bar{flex:1 1;margin-bottom:0;min-width:200px}.status-filters{display:flex;flex-shrink:0;gap:.4rem}.status-filter-btn{align-items:center;background:var(--bg-hover);border:1px solid var(--border);border-radius:2rem;color:var(--text-4);cursor:pointer;display:flex;font-size:.8rem;font-weight:600;gap:.35rem;padding:.35rem .9rem;transition:all .2s;white-space:nowrap}.status-filter-btn.active,.status-filter-btn:hover{background:var(--bg-muted);color:var(--text-1)}.status-filter-btn.active{border-color:var(--text-4)}.sf-dot{background:var(--text-5);border-radius:50%;flex-shrink:0;height:7px;width:7px}.status-filter-btn.online .sf-dot{background:#22c55e;box-shadow:0 0 5px #22c55e88}.status-filter-btn.offline .sf-dot{background:#94a3b8}.status-filter-btn.online.active{background:#22c55e14;border-color:#22c55e80;color:#22c55e}.status-filter-btn.offline.active{border-color:#94a3b880}.search-bar{align-items:center;display:flex;margin-bottom:1.5rem;position:relative}.search-input{background-color:var(--bg-card);border:1px solid var(--border);border-radius:.375rem;box-sizing:border-box;color:var(--text-2);font-size:.9rem;outline:none;padding:.625rem 2.5rem .625rem 1rem;transition:border-color .2s,background .3s;width:100%}.search-input::placeholder{color:var(--text-6)}.search-input:focus{border-color:#3b82f6}.search-clear{background:none;border:none;box-shadow:none;color:var(--text-5);cursor:pointer;font-size:.875rem;line-height:1;padding:.25rem;position:absolute;right:.625rem;transition:color .2s}.search-clear:hover{box-shadow:none;color:var(--text-2);transform:none}.vms-grid{gap:.5rem}.vm-item,.vms-grid{display:flex;flex-direction:column}.vm-card{align-items:center;background-color:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;color:inherit;cursor:pointer;display:flex;flex-direction:row;gap:1.5rem;padding:.875rem 1.25rem;text-decoration:none;transition:all .2s ease}.vm-card:hover{border-color:#3b82f6;box-shadow:0 4px 12px #3b82f61a;transform:translateX(2px)}.vm-card.status-running{border-left:4px solid #22c55e}.vm-card.status-stopped{border-left:4px solid #ef4444;opacity:.85}.vm-header{flex-shrink:0;gap:.75rem;min-width:220px}.vm-header,.vm-header h3{align-items:center;display:flex}.vm-header h3{color:var(--text-1);font-size:1rem;gap:.35rem;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vm-os-icon{flex-shrink:0;font-size:.95rem;line-height:1}.status-badge{font-size:.75rem;padding:.25rem .75rem}.status-badge.status-running{background-color:#dcfce7;color:#166534}.status-badge.status-stopped{background-color:#fee2e2;color:#991b1b}.status-badge.status-unknown{background-color:var(--bg-hover);color:var(--text-4)}.vm-info{align-items:center;display:flex;flex:1 1;flex-direction:row;flex-wrap:wrap;gap:.5rem}.info-chip{color:var(--text-4);font-size:.8rem;white-space:nowrap}.info-chip strong{color:var(--text-2);font-weight:600}.info-sep{color:var(--text-6);font-size:.75rem;-webkit-user-select:none;user-select:none}.usage-bar-chip{align-items:center;display:inline-flex;gap:.3rem;white-space:nowrap}.usage-bar-label{color:var(--text-4);font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.usage-bar-track{border-radius:9999px;flex-shrink:0;height:7px;overflow:hidden;transition:background-color .4s,box-shadow .4s;width:68px}.usage-bar-fill{border-radius:9999px;height:100%;transition:width .4s ease,background-color .4s ease,box-shadow .4s ease}.usage-bar-pct{font-size:.75rem;font-weight:600;min-width:36px}.vm-actions{display:flex;flex-shrink:0;gap:.5rem;margin-left:auto}.hist-btn{background-color:var(--bg-hover);border:1px solid var(--border);border-radius:.375rem;box-shadow:none;color:var(--text-4);cursor:pointer;font-size:.875rem;line-height:1;padding:.4rem .6rem;transition:all .2s}.hist-btn:hover{background-color:var(--bg-muted);box-shadow:none;color:var(--text-1);transform:none}.hist-btn.active{background-color:#1d4ed8;border-color:#1d4ed8;color:#fff}.vm-log-panel{background-color:var(--bg-input);border:1px solid var(--border);border-radius:0 0 .5rem .5rem;border-top:none;max-height:220px;overflow-y:auto}.vm-log-empty{color:var(--text-5);font-size:.8rem;padding:.75rem 1rem;text-align:center}.vm-log-row{grid-gap:.5rem;align-items:center;border-bottom:1px solid var(--border);display:grid;font-size:.78rem;gap:.5rem;grid-template-columns:150px 90px 80px 1fr;padding:.4rem 1rem}.vm-log-row:last-child{border-bottom:none}.vm-log-row.log-result-success{background-color:#22c55e0a}.vm-log-row.log-result-error{background-color:#ef44440a}.vm-log-time{color:var(--text-5);white-space:nowrap}.vm-log-action{border-radius:.2rem;font-size:.65rem;font-weight:700;padding:.1rem .35rem;text-align:center;text-transform:uppercase;white-space:nowrap}.vm-log-user{color:var(--text-4);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vm-log-msg{color:var(--text-3)}.action-link{background-color:#3b82f6;border-radius:.375rem;color:#fff;font-size:.875rem;font-weight:600;padding:.5rem 1rem;text-align:center;text-decoration:none;transition:background-color .3s}.action-link:hover{background-color:#2563eb}.vms-pagination-row{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem;justify-content:space-between;margin-top:1.25rem}.vms-pagination-info{color:var(--text-5);font-size:.78rem}.vms-pagesize-select{background:var(--bg-card);border:1px solid var(--border);border-radius:.375rem;color:var(--text-2);cursor:pointer;font-size:.8rem;outline:none;padding:.4rem .6rem;transition:border-color .2s}.vms-pagesize-select:focus{border-color:#3b82f6}.metrics-container{background-color:var(--bg-input);border-radius:.75rem;margin-bottom:2rem;padding:2rem;transition:background .3s}.metrics-header{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:2rem}.metrics-header h2{color:var(--text-1);font-size:1.5rem;margin:0}.metrics-controls{align-items:center;display:flex;flex-wrap:wrap;gap:1rem}.auto-refresh-toggle{align-items:center;color:var(--text-3);cursor:pointer;display:flex;font-size:.875rem;gap:.5rem;-webkit-user-select:none;user-select:none}.auto-refresh-toggle input{cursor:pointer}.timeframe-select{background:var(--bg-input);border:1px solid var(--border);border-radius:.375rem;color:var(--text-2);cursor:pointer;font-size:.875rem;padding:.4rem .75rem;transition:border-color .2s}.timeframe-select:focus{border-color:#3b82f6;outline:none}.rrd-loading{color:var(--text-4);font-size:.75rem;margin-bottom:.5rem;opacity:.7;text-align:right}.rrd-error{background:var(--error-bg);border:1px solid var(--error-border);border-radius:.5rem;color:var(--error-text);font-size:.875rem;margin-bottom:1rem;padding:.75rem 1rem}.metrics-refresh-btn{align-items:center;background-color:#3b82f6;border:none;border-radius:.375rem;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-flex;font-size:.875rem;font-weight:600;gap:.35rem;height:2.125rem;padding:0 1rem;transition:background-color .2s;white-space:nowrap}.metrics-refresh-btn:hover{background-color:#2563eb}.metrics-side-btn{align-items:center;background-color:var(--bg-hover);border:1px solid var(--border);border-radius:.375rem;box-sizing:border-box;color:var(--text-2);cursor:pointer;display:inline-flex;font-size:.875rem;font-weight:600;gap:.35rem;height:2.125rem;padding:0 .9rem;transition:all .2s;white-space:nowrap}.metrics-side-btn:hover:not(:disabled){background-color:var(--bg-muted);color:var(--text-1)}.metrics-side-btn.active{background-color:#1d4ed8;border-color:#1d4ed8;color:#fff}.metrics-side-btn:disabled{cursor:not-allowed;opacity:.5}.metrics-cards{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(4,1fr);margin-bottom:1rem}.metrics-cards-io{grid-template-columns:repeat(4,1fr);margin-bottom:2rem}.metric-card{background-color:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;display:flex;flex-direction:column;gap:.5rem;padding:1.5rem;transition:background .3s,border-color .3s}.metric-label{color:var(--text-4);font-size:.75rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.metric-value{color:var(--text-1);font-size:1.5rem;font-weight:700}.metric-value.status{font-size:1rem}.metric-cores,.metric-details{color:var(--text-3);font-size:.75rem}.metric-value.metric-io{color:var(--text-2);font-family:Courier New,monospace;font-size:1rem}.charts-grid{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));margin-bottom:2rem}.chart-container{background-color:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;padding:1.5rem;transition:background .3s,border-color .3s}.chart-container h3{color:var(--text-3);font-size:1rem;font-weight:600;letter-spacing:.05em;margin:0 0 1rem;text-transform:uppercase}.metrics-error,.metrics-loading{background-color:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;color:var(--text-3);font-size:1rem;padding:2rem;text-align:center}.metrics-error{background-color:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.charts-bottom-row{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:1fr 1fr 1fr;margin-bottom:2rem}.metrics-info{background-color:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;padding:1.5rem;transition:background .3s,border-color .3s}.metrics-info h3{color:var(--text-3);font-size:1rem;font-weight:600;letter-spacing:.05em;margin:0 0 1.5rem;text-transform:uppercase}.info-grid{grid-gap:.5rem;display:grid;gap:.5rem;grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}.info-item{background-color:var(--bg-input);border-left:3px solid #3b82f6;border-radius:.375rem;display:flex;flex-direction:column;gap:.25rem;padding:.5rem .75rem;transition:background .3s}.info-label{color:var(--text-4);font-size:.65rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.info-value{color:var(--text-1);font-family:Courier New,monospace;font-size:.875rem;font-weight:600}@media (max-width:768px){.metrics-header{align-items:flex-start;flex-direction:column}.charts-grid{grid-template-columns:1fr}.metrics-cards,.metrics-cards-io{grid-template-columns:repeat(2,1fr)}.charts-bottom-row,.info-grid{grid-template-columns:1fr}.metric-value.metric-io{font-size:.875rem}}.agent-os-inline{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.35rem}.detail-os-icon{flex-shrink:0;font-size:1.1rem;line-height:1}.agent-missing-inline{align-items:center;display:flex;gap:.35rem;margin-top:.35rem}.vm-tags-section{display:flex;flex-direction:column;gap:.3rem;margin-top:.5rem}.vm-tags-list{align-items:center;display:flex;flex-wrap:wrap;gap:.35rem}.tag-add-inline{align-items:center;display:inline-flex;gap:.2rem}.tag-add-input{background:var(--bg-input);border:1px solid var(--border);border-radius:9999px;color:var(--text-2);font-size:.72rem;outline:none;padding:.18rem .6rem;transition:border-color .2s,width .2s;width:110px}.tag-add-input:focus{border-color:#3b82f6;width:150px}.tag-add-input::placeholder{color:var(--text-6)}.tag-add-btn{align-items:center;background:var(--bg-hover);border:1px solid var(--border);border-radius:9999px;box-shadow:none;color:var(--text-3);cursor:pointer;display:inline-flex;font-size:1rem;height:1.4rem;justify-content:center;line-height:1;padding:0;transform:none;transition:background .15s,color .15s;width:1.4rem}.tag-add-btn:hover:not(:disabled){background:#3b82f6;border-color:#3b82f6;box-shadow:none;color:#fff;transform:none}.tag-add-btn:disabled{cursor:not-allowed;opacity:.4}.tag-msg{font-size:.72rem;font-weight:600}.tag-msg-success{color:#4ade80}.tag-msg-error{color:#f87171}.agent-configos-badge{align-items:center;background:var(--bg-hover);border:1px solid var(--border);border-radius:.375rem;color:var(--text-3);display:inline-flex;font-size:.78rem;font-weight:700;gap:.3rem;letter-spacing:.03em;padding:.15rem .55rem}.agent-missing-icon{font-size:.85rem}.agent-missing-text{color:var(--text-5);font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.agent-os-icon{font-size:1rem}.agent-os-name{color:var(--text-1);font-size:.875rem;font-weight:700}.agent-os-kernel{color:var(--text-4);font-family:Courier New,monospace;font-size:.8rem}.agent-os-label{color:var(--text-5);font-family:inherit;font-weight:600}.agent-os-machine{background:var(--bg-input);border:1px solid var(--border);border-radius:.25rem;color:var(--text-5);font-family:Courier New,monospace;font-size:.75rem;padding:.1rem .4rem}.agent-fs-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;margin-bottom:.6rem;overflow:hidden}.agent-fs-title{background:var(--bg-input);border-bottom:1px solid var(--border);color:var(--text-4);font-size:.75rem;font-weight:700;letter-spacing:.05em;padding:.5rem 1rem;text-transform:uppercase}.agent-fs-list{display:flex;flex-direction:column;gap:.4rem;padding:.5rem 1rem}.agent-fs-row{grid-gap:.75rem;align-items:center;display:grid;gap:.75rem;grid-template-columns:130px 50px 1fr 40px 130px}.agent-fs-mount{color:var(--text-2);font-family:Courier New,monospace;font-size:.82rem;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-fs-type{background:var(--bg-input);border:1px solid var(--border);border-radius:.25rem;color:var(--text-5);font-family:Courier New,monospace;font-size:.72rem;padding:.1rem .35rem;text-align:center}.agent-fs-bar-wrap{background:var(--bg-input);border:1px solid var(--border);border-radius:4px;height:8px;overflow:hidden}.agent-fs-bar-fill{background:#3b82f6;border-radius:4px;height:100%;transition:width .4s ease}.agent-fs-bar-fill.warn{background:#f59e0b}.agent-fs-bar-fill.danger{background:#ef4444}.agent-fs-pct{color:var(--text-3);font-size:.78rem;font-weight:700}.agent-fs-pct,.agent-fs-size{text-align:right;white-space:nowrap}.agent-fs-size{color:var(--text-4);font-family:Courier New,monospace;font-size:.75rem}.agent-net-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;margin-bottom:1.25rem;overflow:hidden}.agent-net-title{background:var(--bg-input);border-bottom:1px solid var(--border);color:var(--text-4);font-size:.75rem;font-weight:700;letter-spacing:.05em;padding:.5rem 1rem;text-transform:uppercase}.agent-net-list{display:flex;flex-wrap:wrap;gap:0}.agent-net-iface{align-items:center;border-right:1px solid var(--border);display:flex;flex-shrink:0;gap:1.25rem;padding:.5rem 1rem}.agent-net-iface:last-child{border-right:none}.agent-net-iface-name{align-items:center;display:flex;gap:.25rem;white-space:nowrap}.agent-net-name{color:var(--text-2);font-family:Courier New,monospace;font-size:.85rem;font-weight:700}.agent-net-sep{color:var(--text-5);font-size:.8rem}.agent-net-mac{color:var(--text-4);font-family:Courier New,monospace;font-size:.78rem}.agent-net-mac-label{font-size:.7rem;font-weight:400;opacity:.7}.agent-net-addrs,.agent-net-ip-line{align-items:center;display:flex}.agent-net-ip-line{flex-wrap:wrap;gap:.5rem}.agent-net-ip{border-radius:.25rem;font-family:Courier New,monospace;font-size:.8rem;font-weight:600;padding:.15rem .5rem;white-space:nowrap}.agent-net-ip-label{font-size:.72rem;font-weight:400;margin-right:.15rem;opacity:.75}.agent-net-ip-ipv4{background:#3b82f61a;border:1px solid #3b82f633;color:#60a5fa}.agent-net-ip-ipv6{background:#8b5cf61a;border:1px solid #8b5cf633;color:#a78bfa;font-size:.75rem}.agent-net-noip{color:var(--text-5);font-size:.75rem;font-style:italic}.detail-header{align-items:flex-start;display:flex;flex-direction:column;gap:.75rem;margin-bottom:2rem}.detail-header-left{gap:1rem;min-width:0}.detail-header-left,.detail-header-title{align-items:center;display:flex;flex-wrap:wrap}.detail-header-title{color:var(--text-1);font-size:1.5rem;gap:.75rem;margin:0}.rename-edit-btn{background:none;border:none;box-shadow:none;cursor:pointer;font-size:.85rem;line-height:1;opacity:.35;padding:.1rem .3rem;transition:opacity .2s}.rename-edit-btn:hover{box-shadow:none;opacity:.9;transform:none}.rename-inline{align-items:center;display:flex;flex-wrap:wrap;gap:.4rem}.rename-input{background:var(--bg-input);border:2px solid #3b82f6;border-radius:.375rem;box-shadow:0 0 0 3px #3b82f626;color:var(--text-1);font-size:1.25rem;font-weight:700;height:auto;max-width:320px;min-width:180px;outline:none;padding:.2rem .6rem}.rename-confirm-btn{background:#22c55e;border:none;border-radius:.375rem;color:#fff;cursor:pointer;font-size:1rem;font-weight:700;line-height:1;padding:.25rem .7rem;transition:background .2s}.rename-confirm-btn:hover:not(:disabled){background:#16a34a}.rename-confirm-btn:disabled{cursor:not-allowed;opacity:.5}.rename-cancel-btn{background:var(--bg-hover);border:1px solid var(--border);border-radius:.375rem;color:var(--text-3);cursor:pointer;font-size:.9rem;line-height:1;padding:.25rem .6rem;transition:background .2s}.rename-cancel-btn:hover{background:var(--bg-muted)}.rename-error{align-self:center;color:#f87171;font-size:.78rem;font-weight:600}.detail-header-actions{align-items:stretch;display:flex;flex-shrink:0;flex-wrap:wrap;gap:.5rem}.back-link{background-color:var(--bg-muted);color:var(--text-2)}.back-link:hover{background-color:var(--bg-hover)}.error-box{border:1px solid var(--error-border);border-radius:.75rem;padding:2rem;text-align:center}.error-box,.error-message{background-color:var(--error-bg);color:var(--error-text)}.error-message{border:1px solid var(--error-border)}.action-message,.error-message{border-radius:.375rem;margin-bottom:1.5rem;padding:1rem}.action-message{font-weight:600}.action-message.success{background-color:#dcfce7;border:1px solid #86efac;color:#166534}.action-message.error{background-color:#fee2e2;border:1px solid #fca5a5;color:#991b1b}.detail-card{background-color:var(--bg-card);border:1px solid var(--border);border-radius:.75rem;padding:2rem}.action-btn.refresh{background-color:#3b82f6;color:#fff}.action-btn.refresh:hover:not(:disabled){background-color:#2563eb}.action-btn.console-paste{background-color:#0f766e;color:#fff}.action-btn.console-paste:hover:not(:disabled){background-color:#0d9488}.action-btn.console-cad{background-color:#7c3aed;color:#fff}.action-btn.console-cad:hover:not(:disabled){background-color:#6d28d9}.action-btn.console-close{background-color:#dc2626;color:#fff}.action-btn.console-close:hover:not(:disabled){background-color:#b91c1c}.cdrom-panel{background-color:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;margin-bottom:1rem;overflow:hidden;transition:background .3s,border-color .3s}.cdrom-panel-header{align-items:center;background-color:var(--bg-input);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:.5rem 1rem}.cdrom-close-btn{background:none;border:none;border-radius:.25rem;color:var(--text-4);cursor:pointer;font-size:1rem;line-height:1;padding:.2rem .4rem;transition:color .2s,background .2s}.cdrom-close-btn:hover{background:var(--bg-hover);color:var(--text-1)}.cdrom-drive-row{border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:.5rem;padding:.75rem 1rem}.cdrom-drive-row:last-of-type{border-bottom:none}.cdrom-drive-label{align-items:center;display:flex;gap:.75rem}.cdrom-key{background-color:var(--bg-hover);border-radius:.25rem;color:var(--text-4);font-size:.7rem;font-weight:700;letter-spacing:.05em;padding:.125rem .4rem;white-space:nowrap}.cdrom-header{align-items:center;display:flex;gap:1rem}.cdrom-title{color:var(--text-4);font-size:.8rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}.cdrom-current{color:var(--text-2);font-size:.875rem;font-style:normal}.cdrom-current em{color:var(--text-5);font-style:italic}.cdrom-controls{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem}.cdrom-select{background-color:var(--bg-input);border:1px solid var(--border);border-radius:.375rem;color:var(--text-2);cursor:pointer;flex:1 1;font-size:.875rem;min-width:200px;padding:.5rem .75rem;transition:background .3s,border-color .3s}.cdrom-select:focus{border-color:#3b82f6;outline:none}.cdrom-select:disabled{cursor:not-allowed;opacity:.5}.action-btn.cdrom-toggle{background-color:var(--bg-hover);color:var(--text-2)}.action-btn.cdrom-toggle:hover:not(:disabled){background-color:var(--bg-muted)}.action-btn.cdrom-toggle.active{background-color:#0e7490;color:#fff}.action-btn.cdrom-insert{background-color:#0ea5e9;color:#fff;white-space:nowrap}.action-btn.cdrom-insert:hover:not(:disabled){background-color:#0284c7}.action-btn.cdrom-eject{background-color:var(--bg-muted);color:var(--text-2);white-space:nowrap}.action-btn.cdrom-eject:hover:not(:disabled){background-color:var(--bg-hover)}.cdrom-msg{border-radius:.375rem;font-size:.8rem;padding:.4rem .75rem}.cdrom-msg.success{background-color:#dcfce7;border:1px solid #86efac;color:#166534}.cdrom-msg.error{background-color:#fee2e2;border:1px solid #fca5a5;color:#991b1b}.vnc-panel{background:#000;border:1px solid var(--border);border-radius:.5rem;margin-bottom:1.5rem;overflow:hidden}.vnc-display{height:80vh;min-height:600px;overflow:hidden;width:100%}.vnc-paste-bar{align-items:center;background-color:var(--bg-input);border-bottom:1px solid var(--border);display:flex;flex-direction:row;gap:.4rem;padding:.5rem .75rem}.vnc-paste-input{background-color:var(--bg-card);border:1px solid var(--border);border-radius:.375rem;box-sizing:border-box;color:var(--text-2);flex:1 1;font-family:Courier New,monospace;font-size:.875rem;height:2rem;min-width:0;padding:.375rem .75rem}.vnc-paste-input:focus{border-color:#3b82f6;outline:none}.vnc-paste-actions{align-items:center;display:flex;flex-shrink:0;gap:.4rem}.vnc-paste-btn{border:none;border-radius:.375rem;cursor:pointer;font-size:.78rem;font-weight:600;padding:.375rem .75rem;transition:background-color .2s;white-space:nowrap}.vnc-focus-bar{align-items:center;border-bottom:1px solid #1e2736;cursor:default;display:flex;font-size:.78rem;font-weight:500;gap:.5rem;padding:.3rem .75rem;transition:background-color .2s,color .2s;-webkit-user-select:none;user-select:none}.vnc-focus-bar.focused{background-color:#052e16;color:#86efac}.vnc-focus-bar.unfocused{background-color:#431407;color:#fdba74;cursor:pointer}.vnc-focus-bar.unfocused:hover{background-color:#7c2d12}.vnc-focus-dot{border-radius:50%;display:inline-block;flex-shrink:0;height:8px;width:8px}.vnc-focus-dot.focused{background-color:#22c55e;box-shadow:0 0 4px #22c55e}.vnc-focus-dot.unfocused{background-color:#f97316}.vnc-paste-btn.caps{background-color:#374151;color:#d1d5db}.vnc-paste-btn.caps:hover{background-color:#4b5563}.vnc-paste-btn.primary{background-color:#7c3aed;color:#fff}.vnc-paste-btn.primary:hover:not(:disabled){background-color:#6d28d9}.vnc-paste-btn.send{background-color:#0d9488;color:#fff}.vnc-paste-btn.send:hover:not(:disabled){background-color:#0f766e}.vnc-paste-btn.send-win{background-color:#2563eb;color:#fff}.vnc-paste-btn.send-win:hover:not(:disabled){background-color:#1d4ed8}.vnc-paste-btn.keystroke{background-color:var(--bg-muted);color:var(--text-2)}.vnc-paste-btn.keystroke:hover:not(:disabled){background-color:var(--bg-hover)}.vnc-paste-btn:disabled{cursor:not-allowed;opacity:.4}.vnc-paste-btn.cancel{background-color:var(--bg-hover);color:var(--text-4);padding:.375rem .6rem}.vnc-paste-btn.cancel:hover{background-color:var(--bg-muted);color:var(--text-2)}.vnc-reconnecting{align-items:center;background-color:#1e3a5f;border-bottom:1px solid #2563eb;color:#93c5fd;display:flex;font-size:.875rem;gap:.6rem;padding:.5rem 1rem}.vnc-reconnecting-spinner{animation:vnc-spin 1.2s linear infinite;display:inline-block;font-size:1rem}@keyframes vnc-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.vnc-connecting{background-color:#78350f;border-bottom:1px solid #92400e;color:#fcd34d}.vnc-connecting,.vnc-error{font-size:.875rem;padding:.5rem 1rem}.vnc-error{background-color:#7f1d1d;border-bottom:1px solid #991b1b;color:#fca5a5}.status-badge{border-radius:9999px;font-size:.875rem;font-weight:600;letter-spacing:.05em;padding:.5rem 1rem;text-transform:uppercase;white-space:nowrap}.status-badge.running{background-color:#dcfce7;color:#166534}.status-badge.stopped{background-color:#fee2e2;color:#991b1b}.status-badge.unknown{background-color:var(--bg-hover);color:var(--text-4)}.detail-grid{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.detail-section{display:flex;flex-direction:column;gap:1rem}.detail-section h2{color:var(--text-3);font-size:.875rem;letter-spacing:.05em;margin:0;text-transform:uppercase}.info-grid{display:flex;flex-direction:column;gap:.75rem}.info-row{align-items:center;background-color:var(--bg-input);border:1px solid var(--border);border-radius:.375rem;display:flex;justify-content:space-between;padding:.75rem;transition:background .3s}.info-row .label{color:var(--text-4);font-size:.875rem;letter-spacing:.05em;text-transform:uppercase}.info-row .value{color:var(--text-2);flex:1 1;font-weight:600;margin-left:1rem;text-align:right}.actions-grid{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.action-btn{align-items:center;border:none;border-radius:.375rem;box-sizing:border-box;cursor:pointer;display:inline-flex;flex-shrink:0;font-size:.875rem;font-weight:600;gap:.4rem;height:2.375rem;justify-content:center;line-height:1;padding:0 1rem;text-align:center;text-decoration:none;transition:all .3s;white-space:nowrap}.action-btn.start{background-color:#22c55e;color:#fff}.action-btn.start:hover:not(:disabled){background-color:#16a34a}.action-btn.stop{background-color:#ef4444;color:#fff}.action-btn.stop:hover:not(:disabled){background-color:#dc2626}.action-btn.reboot{background-color:#f59e0b;color:#fff}.action-btn.reboot:hover:not(:disabled){background-color:#d97706}.action-btn.shutdown{background-color:#8b5cf6;color:#fff}.action-btn.shutdown:hover:not(:disabled){background-color:#7c3aed}.action-btn.console{background-color:#3b82f6;color:#fff}.action-btn.console:hover:not(:disabled){background-color:#2563eb}.action-btn.hardstop{background-color:#dc2626;color:#fff}.action-btn.hardstop:hover:not(:disabled){background-color:#b91c1c}.action-btn.hardreset{background-color:#b45309;color:#fff}.action-btn.hardreset:hover:not(:disabled){background-color:#92400e}.action-btn:disabled{background-color:var(--bg-muted);cursor:not-allowed;opacity:.7}.confirm-overlay{align-items:center;background:#000000a6;display:flex;inset:0;justify-content:center;position:fixed;z-index:1000}.confirm-modal{background:var(--bg-card);border:1px solid var(--border);border-radius:.75rem;box-shadow:0 20px 60px var(--shadow);display:flex;flex-direction:column;gap:.75rem;max-width:420px;padding:2rem;width:90%}.confirm-title{color:var(--text-1);font-size:1.125rem;margin:0}.confirm-desc{color:var(--text-4);line-height:1.5}.confirm-desc,.confirm-vm{font-size:.875rem;margin:0}.confirm-vm{color:var(--text-3)}.confirm-vm strong{color:var(--text-1)}.confirm-actions{display:flex;gap:.75rem;margin-top:.5rem}.confirm-btn{border:none;border-radius:.375rem;cursor:pointer;flex:1 1;font-size:.875rem;font-weight:600;padding:.625rem 1rem;transition:all .2s}.confirm-btn.cancel{background-color:var(--bg-hover);color:var(--text-2)}.confirm-btn.cancel:hover{background-color:var(--bg-muted)}.action-btn.logs-toggle{background-color:var(--bg-hover);color:var(--text-2)}.action-btn.logs-toggle:hover:not(:disabled){background-color:var(--bg-muted)}.action-btn.logs-toggle.active{background-color:#1d4ed8;color:#fff}.logs-panel{background-color:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;margin-bottom:1rem;overflow:hidden;transition:background .3s,border-color .3s}.logs-header{align-items:center;background-color:var(--bg-input);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:.625rem 1rem}.logs-header-actions{align-items:center;display:flex;gap:.4rem}.logs-close-btn{background:none;border:none;border-radius:.25rem;color:var(--text-4);cursor:pointer;font-size:1rem;line-height:1;padding:.2rem .4rem;transition:color .2s,background .2s}.logs-close-btn:hover{background:var(--bg-hover);color:var(--text-1)}.logs-title{color:var(--text-4);font-size:.8rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.logs-refresh-btn{background:none;border:1px solid var(--border);border-radius:.25rem;box-shadow:none;color:var(--text-4);cursor:pointer;font-size:.875rem;padding:.125rem .5rem;transition:color .2s}.logs-refresh-btn:hover:not(:disabled){box-shadow:none;color:var(--text-1);transform:none}.logs-refresh-btn:disabled{cursor:not-allowed;opacity:.4}.logs-empty{color:var(--text-5);font-size:.875rem;padding:1rem;text-align:center}.logs-list{max-height:280px;overflow-y:auto}.log-entry{grid-gap:.5rem;align-items:center;border-bottom:1px solid var(--border);display:grid;font-size:.8rem;gap:.5rem;grid-template-columns:160px 100px 1fr 1fr;padding:.5rem 1rem}.log-entry:last-child{border-bottom:none}.log-entry.log-success{background-color:#22c55e0d}.log-entry.log-error{background-color:#ef44440d}.log-time{color:var(--text-5);white-space:nowrap}.log-action{border-radius:.25rem;font-size:.7rem;font-weight:700;padding:.125rem .4rem;text-align:center;text-transform:uppercase;white-space:nowrap}.log-action-start{background-color:#14532d;color:#86efac}.log-action-hard-stop{background-color:#7f1d1d;color:#fca5a5}.log-action-shutdown{background-color:#581c87;color:#d8b4fe}.log-action-reboot{background-color:#78350f;color:#fcd34d}.log-action-hard-reset{background-color:#7c2d12;color:#fdba74}.log-action-cdrom{background-color:#164e63;color:#7dd3fc}.log-action-tags{background-color:#1e3a5f;color:#93c5fd}.log-action-rename{background-color:#1a2e1a;color:#86efac}.log-action-boot-order{background-color:#3b2a0e;color:#fde68a}.log-action-console{background-color:#1e1b4b;color:#a5b4fc}.log-user{color:var(--text-4);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.log-msg{color:var(--text-3)}.action-btn.backups-toggle{background-color:var(--bg-hover);color:var(--text-2)}.action-btn.backups-toggle:hover:not(:disabled){background-color:var(--bg-muted)}.action-btn.backups-toggle.active{background-color:#0f766e;color:#fff}.backup-entry{grid-gap:.5rem;align-items:center;border-bottom:1px solid var(--border);display:grid;font-size:.8rem;gap:.5rem;grid-template-columns:155px 1fr 60px 70px 24px 24px;padding:.5rem 1rem}.backup-entry:last-child{border-bottom:none}.backup-date{color:var(--text-5);white-space:nowrap}.backup-storage{color:#7dd3fc;font-size:.75rem;font-weight:600}.backup-format{color:var(--text-4);font-size:.7rem;text-transform:uppercase}.backup-size{color:var(--text-2);font-weight:600;text-align:right}.backup-notes,.backup-protected{font-size:.8rem;text-align:center}.backup-notes{cursor:default}.action-btn.boot-toggle{background-color:var(--bg-hover);color:var(--text-2)}.action-btn.boot-toggle:hover{background-color:var(--bg-muted)}.action-btn.boot-toggle.active{background-color:#92400e;color:#fcd34d}.boot-panel{background-color:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;margin-bottom:1rem;overflow:hidden}.boot-panel-header{align-items:center;background-color:var(--bg-input);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:.5rem 1rem}.boot-panel-title{color:var(--text-4);font-size:.8rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.boot-header-actions{align-items:center;display:flex;gap:.5rem}.boot-save-btn{background-color:#3b82f6;border:none;border-radius:.375rem;color:#fff;cursor:pointer;font-size:.78rem;font-weight:600;padding:.25rem .75rem;transition:background .2s}.boot-save-btn:hover:not(:disabled){background-color:#2563eb}.boot-save-btn:disabled{cursor:not-allowed;opacity:.5}.boot-body{padding:.75rem 1rem}.boot-section-label{color:var(--text-5);font-size:.7rem;font-weight:700;letter-spacing:.05em;margin-bottom:.4rem;text-transform:uppercase}.boot-empty{color:var(--text-5);font-size:.82rem;font-style:italic;padding:.75rem 1rem}.boot-order-list{display:flex;flex-direction:column;gap:.3rem}.boot-order-item{align-items:center;background:var(--bg-hover);border:1px solid var(--border);border-radius:.375rem;display:flex;gap:.75rem;padding:.45rem .75rem}.boot-order-num{color:var(--text-5);font-size:.75rem;font-weight:700;min-width:18px;text-align:center}.boot-device-desc{color:var(--text-2);flex:1 1;font-family:Courier New,monospace;font-size:.85rem}.boot-device-desc.muted{color:var(--text-4)}.boot-order-arrows{display:flex;flex-shrink:0;gap:.25rem}.boot-arrow-btn{background:var(--bg-muted);border:1px solid var(--border);border-radius:.25rem;color:var(--text-3);cursor:pointer;font-size:.7rem;line-height:1;padding:.15rem .45rem;transition:background .15s}.boot-arrow-btn:hover:not(:disabled){background:var(--border);color:var(--text-1)}.boot-arrow-btn:disabled{cursor:not-allowed;opacity:.3}.boot-remove-btn{background:#ef44441a;border:1px solid #ef44444d;border-radius:.25rem;color:#f87171;cursor:pointer;font-size:.75rem;line-height:1;padding:.15rem .45rem;transition:background .15s}.boot-remove-btn:hover{background:#ef444433}.boot-available-list{display:flex;flex-direction:column;gap:.3rem}.boot-available-item{align-items:center;background:var(--bg-input);border:1px dashed var(--border);border-radius:.375rem;display:flex;gap:.75rem;justify-content:space-between;padding:.4rem .75rem}.boot-add-btn{background:#22c55e1a;border:1px solid #22c55e4d;border-radius:.25rem;color:#4ade80;cursor:pointer;flex-shrink:0;font-size:.75rem;font-weight:600;padding:.2rem .6rem;transition:background .15s;white-space:nowrap}.boot-add-btn:hover{background:#22c55e33}.boot-msg{border-radius:.375rem;font-size:.8rem;font-weight:600;margin-top:.6rem;padding:.4rem .75rem}.boot-msg.success{background:#dcfce7;border:1px solid #86efac;color:#166534}.boot-msg.error{background:#fee2e2;border:1px solid #fca5a5;color:#991b1b}.boot-reboot-notice{align-items:center;background:#f59e0b1a;border:1px solid #f59e0b66;border-radius:.375rem;display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.75rem;padding:.6rem .9rem}.boot-reboot-icon{flex-shrink:0;font-size:1rem}.boot-reboot-text{color:#fbbf24;flex:1 1;font-size:.82rem;font-weight:500;min-width:180px}.boot-reboot-btn{background:#f59e0b;border:none;border-radius:.375rem;color:#000;cursor:pointer;flex-shrink:0;font-size:.8rem;font-weight:700;padding:.3rem .85rem;transition:background .2s;white-space:nowrap}.boot-reboot-btn:hover{background:#d97706}.boot-reboot-dismiss{background:#0000;border:1px solid #f59e0b66;border-radius:.375rem;color:#92400e;cursor:pointer;flex-shrink:0;font-size:.78rem;padding:.3rem .7rem;transition:background .2s;white-space:nowrap}.boot-reboot-dismiss:hover{background:#f59e0b1a}.pending-task-banner{align-items:center;background:#fbbf2414;border:1px solid #fbbf2459;border-radius:.5rem;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:1rem;padding:.75rem 1rem}.pending-task-info{align-items:center;display:flex;flex:1 1;gap:.75rem;min-width:0}.pending-task-spinner{animation:spin 1.4s linear infinite;color:#fbbf24;display:inline-block;flex-shrink:0;font-size:1.1rem}.pending-task-title{color:#fbbf24;font-size:.85rem;font-weight:700}.pending-task-hint{color:var(--text-4);font-size:.75rem;line-height:1.4;margin-top:.15rem}.pending-task-cancel-btn{background:#ef44441a;border:1px solid #ef444466;border-radius:.375rem;box-shadow:none;color:#f87171;cursor:pointer;flex-shrink:0;font-size:.8rem;font-weight:700;padding:.4rem .9rem;transition:all .15s;white-space:nowrap}.pending-task-cancel-btn:hover:not(:disabled){background:#ef444433;border-color:#ef4444a6;box-shadow:none;transform:none}.pending-task-cancel-btn:disabled{cursor:not-allowed;opacity:.45}.console-page{min-height:100vh}.back-link{align-items:center;background-color:#475569;border-radius:.375rem;color:#e2e8f0;display:inline-flex;font-size:.875rem;font-weight:600;padding:.75rem 1rem;text-decoration:none;transition:all .3s;white-space:nowrap}.back-link:hover{background-color:#64748b;transform:translateY(-2px)}.back-link:active{transform:translateY(0)}.console-container{padding:2rem}.console-header{gap:1rem;justify-content:space-between;margin-bottom:2rem}.console-header,.console-header-actions{align-items:center;display:flex;flex-wrap:wrap}.console-header-actions{gap:.75rem}.console-header h1{color:#f1f5f9;font-size:1.5rem;margin:0}.refresh-btn{background-color:#3b82f6;border:none;border-radius:.375rem;color:#fff;cursor:pointer;font-weight:600;padding:.5rem 1rem;transition:background-color .3s}.refresh-btn:hover{background-color:#2563eb}.console-info{display:flex;flex-direction:column;gap:1rem}.console-card{background-color:#1e293b;border:1px solid #334155;border-radius:.75rem;padding:2rem}.info-section{border-bottom:1px solid #334155;display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem;padding-bottom:2rem}.info-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.info-section h3{font-size:1rem;letter-spacing:.05em;text-transform:uppercase}.info-section h3,.info-section p{color:#cbd5e1;font-size:.875rem;margin:0}.external-link{background-color:#3b82f6;border-radius:.375rem;color:#fff;display:inline-block;font-weight:600;margin-top:.5rem;padding:.5rem 1rem;text-decoration:none;transition:background-color .3s;width:-webkit-fit-content;width:fit-content}.external-link:hover{background-color:#2563eb}.console-details{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin-top:1rem}.detail-item{background-color:#0f172a;border:1px solid #334155;border-radius:.375rem;display:flex;flex-direction:column;gap:.5rem;padding:1rem}.detail-item label{color:#94a3b8;font-size:.75rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.detail-value{align-items:center;display:flex;gap:.5rem}.detail-value code{background-color:#1e293b;border-radius:.25rem;color:#a1f000;flex:1 1;font-family:Courier New,monospace;font-size:.75rem;overflow-x:auto;padding:.5rem}.detail-value code.long-code{overflow-wrap:break-word;white-space:normal;word-break:break-all}.copy-btn{background-color:#475569;border:none;border-radius:.25rem;color:#e2e8f0;cursor:pointer;flex-shrink:0;font-size:.875rem;padding:.25rem .5rem;transition:background-color .3s}.copy-btn:hover{background-color:#64748b}.error-message{background-color:#7f1d1d;border:1px solid #991b1b;border-radius:.75rem;color:#fca5a5;margin:2rem 0;padding:2rem}.error-message p{margin:0}.client-list{display:flex;flex-direction:column;gap:1rem;list-style:none;margin:0;padding:0}.client-list li{background-color:#0f172a;border:1px solid #334155;border-radius:.375rem;padding:1rem}.client-list li strong{color:#cbd5e1;display:block;margin-bottom:.5rem}.client-list li code{background-color:#1e293b;border-radius:.25rem;color:#a1f000;display:block;font-family:Courier New,monospace;font-size:.75rem;margin-top:.5rem;overflow-x:auto;padding:.5rem}.tips-list{display:flex;flex-direction:column;gap:.75rem;list-style:none;margin:0;padding:0}.tips-list li{color:#cbd5e1;font-size:.875rem;padding-left:1.5rem;position:relative}.tips-list li:before{color:#22c55e;content:"✓";font-weight:700;left:0;position:absolute}.console-actions{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:2rem}.console-btn{background-color:#475569;border:none;border-radius:.375rem;color:#e2e8f0;cursor:pointer;font-size:.875rem;font-weight:600;padding:.75rem 1.5rem;transition:all .3s}.console-btn:hover{background-color:#64748b;transform:translateY(-2px)}.console-btn.primary{background-color:#10b981;color:#fff}.console-btn.primary:hover{background-color:#059669}.console-btn:active{transform:translateY(0)}.console-btn:disabled{cursor:not-allowed;opacity:.5;transform:none}.warning-message{background-color:#78350f;border:1px solid #92400e;border-radius:.375rem;color:#fcd34d;font-size:.875rem;margin-bottom:1.5rem;padding:.75rem 1rem}.ticket-note{color:#94a3b8;font-size:.8rem;font-style:italic;margin:0}.vnc-display-container{background:#000;border-radius:.5rem;height:70vh;margin-bottom:1.5rem;min-height:500px;overflow:hidden;width:100%}.console-btn.secondary{background-color:#7c3aed;color:#fff}.console-btn.secondary:hover{background-color:#6d28d9}.console-btn.danger{background-color:#dc2626;color:#fff}.console-btn.danger:hover{background-color:#b91c1c}.maintenance-page{align-items:center;background:var(--app-bg);display:flex;justify-content:center;min-height:100vh;padding:2rem}.maintenance-card{align-items:center;animation:fadeIn .5s ease;background:var(--bg-card);border:1px solid var(--border);border-radius:1rem;box-shadow:0 0 0 1px var(--border-strong),0 8px 40px #00000080;display:flex;flex-direction:column;gap:1.25rem;max-width:480px;padding:3rem 2.5rem;text-align:center;width:100%}.maintenance-logo{margin-bottom:.25rem;opacity:.7}.maintenance-icon{filter:grayscale(.3);font-size:3.5rem;line-height:1}.maintenance-title{color:var(--text-1);font-size:1.5rem;font-weight:700;margin:0}.maintenance-message{color:var(--text-4);font-size:.925rem;line-height:1.6;margin:0;max-width:380px}.maintenance-status{align-items:center;background:var(--bg-hover);border:1px solid var(--border);border-radius:9999px;color:var(--text-5);display:flex;font-size:.8rem;font-weight:600;gap:.5rem;letter-spacing:.05em;padding:.4rem 1rem;text-transform:uppercase}.maintenance-dot{animation:pulse-yellow 1.4s ease-in-out infinite;background:#f59e0b;border-radius:50%;box-shadow:0 0 6px #f59e0b88;flex-shrink:0;height:8px;width:8px}@keyframes pulse-yellow{0%,to{box-shadow:0 0 4px #f59e0b88;opacity:1}50%{box-shadow:0 0 10px #f59e0bcc;opacity:.4}}.maintenance-retry-btn{background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-size:.9rem;font-weight:600;margin-top:.5rem;padding:.65rem 2rem;transition:all .2s}.maintenance-retry-btn:hover{box-shadow:0 4px 16px #3b82f659;transform:translateY(-2px)}.logs-main-header{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;margin-bottom:1.25rem}.logs-main-header h1{color:var(--text-1);font-size:1.75rem;margin:0}.logs-tabs{background:var(--bg-hover);border:1px solid var(--border);border-radius:.5rem;display:flex;gap:.35rem;padding:.25rem}.logs-tab{background:none;border:none;border-radius:.375rem;color:var(--text-4);cursor:pointer;font-size:.82rem;font-weight:600;padding:.4rem .9rem;transition:all .15s;white-space:nowrap}.logs-tab:hover{background:var(--bg-muted);color:var(--text-1)}.logs-tab.active{background:var(--bg-card);box-shadow:0 1px 3px #00000040;color:var(--text-1)}.logs-page-header{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;margin-bottom:1.25rem}.logs-page-title-row{align-items:baseline;display:flex;gap:.75rem}.logs-page-count{color:var(--text-5);font-size:.8rem;font-weight:500}.logs-page-refresh{background:var(--bg-hover);border:1px solid var(--border);border-radius:.375rem;color:var(--text-2);cursor:pointer;font-size:.875rem;font-weight:600;padding:.5rem 1.1rem;transition:all .2s;white-space:nowrap}.logs-page-refresh:hover:not(:disabled){background:var(--bg-muted);color:var(--text-1)}.logs-page-refresh:disabled{cursor:not-allowed;opacity:.55}.log-users-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;margin-bottom:1rem;overflow:hidden}.log-users-toggle{align-items:center;background:none;border:none;color:var(--text-3);cursor:pointer;display:flex;font-size:.85rem;font-weight:600;gap:.5rem;justify-content:space-between;padding:.7rem 1rem;text-align:left;transition:background .15s,color .15s;width:100%}.log-users-toggle:hover{background:var(--bg-hover);color:var(--text-1)}.log-users-toggle.open{border-bottom:1px solid var(--border);color:var(--text-1)}.log-users-chevron{font-size:.7rem;opacity:.6}.log-users-body{gap:.5rem;padding:.75rem 1rem .85rem}.log-users-body,.log-users-list{display:flex;flex-direction:column}.log-users-list{gap:.3rem}.log-user-row{align-items:center;background:var(--bg-hover);border:1px solid var(--border);border-radius:.375rem;display:flex;gap:.75rem;justify-content:space-between;padding:.4rem .65rem}.log-user-root{opacity:.7}.log-user-name{color:var(--text-2);font-family:Courier New,monospace;font-size:.82rem;font-weight:600}.log-user-badge{background:var(--bg-muted);border:1px solid var(--border);border-radius:9999px;color:var(--text-5);font-size:.68rem;padding:.1rem .5rem;white-space:nowrap}.log-user-remove{background:#ef444414;border:1px solid #ef44444d;border-radius:.3rem;box-shadow:none;color:#f87171;cursor:pointer;font-size:.75rem;font-weight:600;padding:.2rem .6rem;transition:all .15s;white-space:nowrap}.log-user-remove:hover:not(:disabled){background:#ef44442e;border-color:#ef44448c;box-shadow:none;transform:none}.log-user-remove:disabled{cursor:not-allowed;opacity:.4}.log-users-empty{color:var(--text-5);font-size:.8rem;padding:.25rem 0}.log-users-add{display:flex;gap:.5rem;margin-top:.25rem}.log-users-input{background:var(--bg-input);border:1px solid var(--border);border-radius:.375rem;color:var(--text-2);flex:1 1;font-family:Courier New,monospace;font-size:.82rem;outline:none;padding:.45rem .75rem;transition:border-color .2s}.log-users-input:focus{border-color:#3b82f6}.log-users-input::placeholder{color:var(--text-6);font-family:inherit}.log-users-add-btn{background:#1d4ed8;border:none;border-radius:.375rem;color:#fff;cursor:pointer;font-size:.82rem;font-weight:600;padding:.45rem 1rem;transition:background .15s;white-space:nowrap}.log-users-add-btn:hover:not(:disabled){background:#2563eb}.log-users-add-btn:disabled{cursor:not-allowed;opacity:.45}.log-users-msg{font-size:.78rem;font-weight:600;padding:.2rem 0}.log-users-msg-success{color:#4ade80}.log-users-msg-error{color:#f87171}.lockout-refresh-btn{align-self:flex-start;background:var(--bg-hover);border:1px solid var(--border);border-radius:.375rem;color:var(--text-3);cursor:pointer;font-size:.78rem;font-weight:600;margin-bottom:.25rem;padding:.3rem .75rem;transition:all .15s}.lockout-refresh-btn:hover:not(:disabled){background:var(--bg-muted);color:var(--text-1)}.lockout-refresh-btn:disabled{cursor:not-allowed;opacity:.5}.lockout-row{flex-wrap:wrap;gap:.5rem}.lockout-row.lockout-blocked{background:#ef44440d;border-color:#ef444459}.lockout-info{align-items:center;display:flex;flex:1 1;flex-wrap:wrap;gap:.5rem;min-width:0}.lockout-ip{background:var(--bg-input);border:1px solid var(--border);border-radius:.25rem;color:var(--text-2);font-family:Courier New,monospace;font-size:.82rem;font-weight:700;padding:.05rem .45rem}.lockout-attempts{color:var(--text-5);font-size:.75rem}.lockout-badge{background:#ef44441a;border:1px solid #ef44444d;border-radius:9999px;color:#f87171;font-size:.72rem;font-weight:700;padding:.1rem .55rem;white-space:nowrap}.lockout-unblock-btn{background:#3b82f614!important;border-color:#3b82f64d!important;color:#60a5fa!important}.lockout-unblock-btn:hover:not(:disabled){background:#3b82f62e!important;border-color:#3b82f68c!important}.totp-user-info{display:flex;flex:1 1;flex-direction:column;gap:.1rem;min-width:0}.totp-setup-date{color:var(--text-5);font-size:.7rem}.totp-user-actions{align-items:center;display:flex;flex-shrink:0;gap:.45rem}.totp-status-badge{border-radius:9999px;font-size:.68rem;font-weight:700;padding:.12rem .55rem;white-space:nowrap}.totp-badge-enabled{background:#22c55e1f;border:1px solid #22c55e4d;color:#4ade80}.totp-badge-pending{background:#fbbf241f;border:1px solid #fbbf244d;color:#fbbf24}.totp-view-qr-btn{background:#3b82f61a;border:1px solid #3b82f659;border-radius:.3rem;box-shadow:none;color:#60a5fa;cursor:pointer;font-size:.75rem;font-weight:600;padding:.2rem .6rem;transition:all .15s;white-space:nowrap}.totp-view-qr-btn:hover:not(:disabled){background:#3b82f633;border-color:#3b82f699;box-shadow:none;transform:none}.totp-view-qr-btn:disabled{cursor:not-allowed;opacity:.4}.totp-setup-card{background:var(--bg-hover);border:1px solid #3b82f64d;border-radius:.5rem;overflow:hidden}.totp-setup-card-header{background:#3b82f612;border-bottom:1px solid #3b82f633;color:var(--text-2);font-size:.82rem;font-weight:600;padding:.55rem .9rem}.totp-setup-body{align-items:flex-start;display:flex;gap:1.25rem;padding:.85rem .9rem}.totp-qr-img{border:1px solid var(--border);border-radius:.375rem;flex-shrink:0;height:140px;image-rendering:pixelated;width:140px}.totp-setup-text{display:flex;flex:1 1;flex-direction:column;gap:.3rem}.totp-setup-step{color:var(--text-3);font-size:.8rem;line-height:1.4}.totp-manual-code{background:var(--bg-input);border:1px solid var(--border);border-radius:.3rem;color:var(--text-1);font-family:Courier New,monospace;font-size:.8rem;font-weight:700;letter-spacing:.1em;margin:.1rem 0 .35rem;padding:.3rem .6rem;word-break:break-all}.totp-confirm-row{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.15rem}.totp-confirm-input{font-size:1rem!important;font-weight:700!important;letter-spacing:.3em!important;max-width:120px!important;text-align:center!important}.totp-cancel-btn{background:none;border:1px solid var(--border);border-radius:.375rem;box-shadow:none;color:var(--text-5);cursor:pointer;font-size:.8rem;padding:.45rem .85rem;transition:all .15s;white-space:nowrap}.totp-cancel-btn:hover:not(:disabled){border-color:var(--text-4);box-shadow:none;color:var(--text-2);transform:none}.totp-cancel-btn:disabled{cursor:not-allowed;opacity:.4}.logs-filter-row{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1.25rem}.logs-search-wrap{flex:1 1;min-width:220px;position:relative}.logs-search-input{background:var(--bg-card);border:1px solid var(--border);border-radius:.375rem;box-sizing:border-box;color:var(--text-2);font-size:.875rem;outline:none;padding:.55rem 2.25rem .55rem .9rem;transition:border-color .2s;width:100%}.logs-search-input:focus{border-color:#3b82f6}.logs-search-input::placeholder{color:var(--text-6)}.logs-search-clear{background:none;border:none;box-shadow:none;color:var(--text-5);cursor:pointer;font-size:.8rem;line-height:1;padding:.2rem;position:absolute;right:.6rem;top:50%;transform:translateY(-50%);transition:color .15s}.logs-search-clear:hover{box-shadow:none;color:var(--text-2);transform:translateY(-50%)}.logs-filter-select{background:var(--bg-card);border:1px solid var(--border);border-radius:.375rem;color:var(--text-2);cursor:pointer;font-size:.8rem;outline:none;padding:.55rem .8rem;transition:border-color .2s;white-space:nowrap}.logs-filter-select:focus{border-color:#3b82f6}.logs-result-filters{display:flex;gap:.35rem}.logs-result-btn{background:var(--bg-hover);border:1px solid var(--border);border-radius:2rem;color:var(--text-4);cursor:pointer;font-size:.78rem;font-weight:600;padding:.35rem .85rem;transition:all .2s;white-space:nowrap}.logs-result-btn.active,.logs-result-btn:hover{background:var(--bg-muted);color:var(--text-1)}.logs-result-btn.active{border-color:var(--text-4)}.logs-result-btn.success.active{background:#22c55e14;border-color:#22c55e;color:#22c55e}.logs-result-btn.error.active{background:#ef444414;border-color:#ef4444;color:#f87171}.logs-clear-all{background:none;border:1px solid var(--border);border-radius:.375rem;color:var(--text-5);cursor:pointer;font-size:.78rem;padding:.35rem .8rem;transition:all .2s;white-space:nowrap}.logs-clear-all:hover{border-color:var(--text-4);color:var(--text-2)}.logs-table-wrap{background:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;overflow:hidden}.logs-table-header{grid-gap:.5rem;background:var(--bg-hover);border-bottom:1px solid var(--border);color:var(--text-5);display:grid;font-size:.72rem;font-weight:700;gap:.5rem;grid-template-columns:155px 170px 110px 120px 100px 1fr;letter-spacing:.06em;padding:.55rem 1rem;text-transform:uppercase}.logs-table-row{grid-gap:.5rem;align-items:center;border-bottom:1px solid var(--border);display:grid;font-size:.8rem;gap:.5rem;grid-template-columns:155px 170px 110px 120px 100px 1fr;padding:.5rem 1rem;transition:background .15s}.logs-table-row:last-child{border-bottom:none}.logs-table-row:hover{background:var(--bg-hover)}.logs-table-row.result-error{background:#ef444408}.logs-table-row.result-error:hover{background:#ef444412}.lc-date{color:var(--text-5);font-size:.76rem;white-space:nowrap}.lc-vm{display:flex;flex-direction:column;gap:.1rem;overflow:hidden}.lc-vm-name{color:var(--text-1);font-size:.82rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lc-vm-id{color:var(--text-5);font-size:.7rem}.log-action-badge{border-radius:.25rem;display:inline-block;font-size:.68rem;font-weight:700;letter-spacing:.04em;padding:.15rem .45rem;text-transform:uppercase;white-space:nowrap}.log-action-badge.log-action-start{background:#14532d;color:#86efac}.log-action-badge.log-action-hard-stop{background:#7f1d1d;color:#fca5a5}.log-action-badge.log-action-shutdown{background:#581c87;color:#d8b4fe}.log-action-badge.log-action-reboot{background:#78350f;color:#fcd34d}.log-action-badge.log-action-hard-reset{background:#7c2d12;color:#fdba74}.log-action-badge.log-action-cdrom{background:#164e63;color:#7dd3fc}.log-action-badge.log-action-tags{background:#1e3a5f;color:#93c5fd}.log-action-badge.log-action-rename{background:#1a2e1a;color:#86efac}.log-action-badge.log-action-boot-order{background:#3b2a0e;color:#fde68a}.log-action-badge.log-action-console{background:#1e1b4b;color:#a5b4fc}.lc-user{color:var(--text-3);font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result-badge{border-radius:9999px;display:inline-block;font-size:.72rem;font-weight:700;padding:.15rem .5rem;white-space:nowrap}.result-badge.result-success{background:#22c55e1f;border:1px solid #22c55e4d;color:#4ade80}.result-badge.result-error{background:#ef44441f;border:1px solid #ef44444d;color:#f87171}.lc-msg{color:var(--text-4);font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lc-ip code{background:var(--bg-hover);border:1px solid var(--border);border-radius:.25rem;color:var(--text-3);font-family:Courier New,monospace;font-size:.78rem;padding:.05rem .4rem}.login-table-header{background:var(--bg-hover);color:var(--text-5);font-size:.72rem;font-weight:700;letter-spacing:.06em;padding:.55rem 1rem;text-transform:uppercase}.login-table-header,.login-table-row{grid-gap:.5rem;border-bottom:1px solid var(--border);display:grid;gap:.5rem;grid-template-columns:155px 140px 180px 145px 1fr}.login-table-row{align-items:center;font-size:.8rem;padding:.5rem 1rem;transition:background .15s}.login-table-row:last-child{border-bottom:none}.login-table-row:hover{background:var(--bg-hover)}.login-table-row.login-result-failure{background:#ef444408}.login-table-row.login-result-failure:hover{background:#ef444412}.login-table-row.login-result-blocked{background:#fb923c0a}.login-table-row.login-result-blocked:hover{background:#fb923c17}.login-result-badge{border-radius:9999px;display:inline-block;font-size:.72rem;font-weight:700;padding:.15rem .5rem;white-space:nowrap}.login-result-badge.login-result-success{background:#22c55e1f;border:1px solid #22c55e4d;color:#4ade80}.login-result-badge.login-result-failure{background:#ef44441f;border:1px solid #ef44444d;color:#f87171}.login-result-badge.login-result-blocked{background:#fb923c1f;border:1px solid #fb923c59;color:#fb923c}.login-result-badge.login-result-pending_2fa{background:#fbbf241f;border:1px solid #fbbf244d;color:#fbbf24}.logs-result-btn.blocked.active{background:#fb923c14;border-color:#fb923c;color:#fb923c}.logs-pagination-row{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem;justify-content:space-between;margin-top:1rem}.logs-pagination-info{color:var(--text-5);font-size:.78rem}.pagination{gap:.25rem}.pagination,.pg-btn{align-items:center;display:flex}.pg-btn{background:var(--bg-hover);border:1px solid var(--border);border-radius:.375rem;color:var(--text-3);cursor:pointer;font-size:.8rem;font-weight:600;height:2rem;justify-content:center;min-width:2rem;padding:0 .4rem;transition:all .15s}.pg-btn:hover:not(:disabled):not(.pg-active){background:var(--bg-muted);border-color:var(--text-4);color:var(--text-1)}.pg-btn.pg-active{background:#2563eb;border-color:#2563eb;color:#fff;cursor:default}.pg-btn:disabled{cursor:not-allowed;opacity:.3}.pg-arrow{font-size:1.1rem;line-height:1}.pg-ellipsis{color:var(--text-5);font-size:.85rem;padding:0 .2rem;-webkit-user-select:none;user-select:none}.logs-pagesize-wrap{margin-left:auto}.fw-main-header{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;margin-bottom:1.25rem}.fw-main-header h1{color:var(--text-1);font-size:1.75rem;margin:0}.fw-msg{border-radius:.375rem;font-size:.82rem;font-weight:600;margin-bottom:1rem;padding:.6rem 1rem}.fw-msg-success{background:#22c55e1a;border:1px solid #22c55e4d;color:#4ade80}.fw-msg-error{background:#ef44441a;border:1px solid #ef44444d;color:#f87171}.fw-status-banner{align-items:center;background:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:1rem;padding:.85rem 1.25rem}.fw-status-banner.fw-enabled{background:#22c55e0a;border-color:#22c55e59}.fw-status-banner.fw-disabled{background:#ef444408;border-color:#ef444440}.fw-status-left{align-items:center;display:flex;gap:.6rem}.fw-status-dot{background:#ef4444;border-radius:50%;flex-shrink:0;height:10px;width:10px}.fw-status-dot.active{background:#22c55e;box-shadow:0 0 6px #22c55e80}.fw-status-label{color:var(--text-1);font-size:1rem;font-weight:700}.fw-status-right{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem}.fw-policy-wrap{align-items:center;display:flex;gap:.5rem}.fw-policy-label{color:var(--text-4);font-size:.8rem;white-space:nowrap}.fw-apply-btn{background:#1d4ed8;border:none;border-radius:.375rem;color:#fff;cursor:pointer;font-size:.82rem;font-weight:600;padding:.5rem 1rem;transition:background .15s;white-space:nowrap}.fw-apply-btn:hover:not(:disabled){background:#2563eb}.fw-apply-btn:disabled{cursor:not-allowed;opacity:.45}.fw-toggle-btn{border:none;border-radius:.375rem;cursor:pointer;font-size:.82rem;font-weight:600;padding:.5rem 1rem;transition:all .15s;white-space:nowrap}.fw-btn-success{background:#22c55e26;border:1px solid #22c55e59;color:#4ade80}.fw-btn-success:hover:not(:disabled){background:#22c55e40}.fw-btn-danger{background:#ef44441a;border:1px solid #ef44444d;color:#f87171}.fw-btn-danger:hover:not(:disabled){background:#ef444433}.fw-toggle-btn:disabled{cursor:not-allowed;opacity:.45}.fw-safety-info{color:var(--text-5);font-size:.78rem;line-height:1.4;margin-bottom:.5rem}.fw-safety-rule{background:var(--bg-input);border:1px solid var(--border);border-radius:.25rem;color:var(--text-3);font-family:Courier New,monospace;font-size:.75rem;padding:.1rem .5rem;white-space:nowrap}.fw-add-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:.5rem;margin-bottom:1rem;padding:.85rem 1rem}.fw-add-title{color:var(--text-2);font-size:.85rem;font-weight:700;margin-bottom:.75rem}.fw-add-form{align-items:flex-end;display:flex;flex-wrap:wrap;gap:.6rem}.fw-add-field{display:flex;flex-direction:column;gap:.25rem}.fw-add-field label{color:var(--text-5);font-size:.7rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.fw-add-field-comment{flex:1 1;min-width:150px}.fw-add-field-btn{justify-content:flex-end}.fw-add-input{background:var(--bg-input);border:1px solid var(--border);border-radius:.375rem;color:var(--text-2);font-size:.82rem;min-width:90px;outline:none;padding:.5rem .7rem;transition:border-color .2s}.fw-add-input:focus{border-color:#3b82f6}.fw-add-input::placeholder{color:var(--text-6)}.fw-add-input:disabled{cursor:not-allowed;opacity:.4}.fw-add-btn{background:#1d4ed8;border:none;border-radius:.375rem;color:#fff;cursor:pointer;font-size:.82rem;font-weight:600;padding:.5rem 1.1rem;transition:background .15s;white-space:nowrap}.fw-add-btn:hover:not(:disabled){background:#2563eb}.fw-add-btn:disabled{cursor:not-allowed;opacity:.45}.fw-table-header{background:var(--bg-hover);color:var(--text-5);font-size:.72rem;font-weight:700;letter-spacing:.06em;padding:.55rem 1rem;text-transform:uppercase}.fw-table-header,.fw-table-row{grid-gap:.5rem;border-bottom:1px solid var(--border);display:grid;gap:.5rem;grid-template-columns:70px 90px 80px 80px 130px 130px 80px 1fr 90px}.fw-table-row{align-items:center;font-size:.8rem;padding:.5rem 1rem;transition:background .15s}.fw-table-row:last-child{border-bottom:none}.fw-table-row:hover{background:var(--bg-hover)}.fw-row-disabled{opacity:.45}.fw-cell-status{text-align:center}.fw-status-toggle{align-items:center;background:var(--bg-hover);border:1px solid var(--border);border-radius:.3rem;color:var(--text-5);cursor:pointer;display:inline-flex;font-size:.75rem;font-weight:700;height:28px;justify-content:center;transition:all .15s;width:28px}.fw-status-toggle.on{background:#22c55e26;border-color:#22c55e66;color:#4ade80}.fw-status-toggle:hover{border-color:var(--text-4)}.fw-cell-dir,.fw-cell-proto{color:var(--text-3);font-size:.78rem}.fw-cell-proto{font-weight:600}.fw-cell-addr code,.fw-cell-port code{background:var(--bg-hover);border:1px solid var(--border);border-radius:.25rem;color:var(--text-3);font-family:Courier New,monospace;font-size:.76rem;padding:.05rem .4rem}.fw-action-badge{border-radius:.25rem;display:inline-block;font-size:.68rem;font-weight:700;letter-spacing:.04em;padding:.15rem .45rem;text-transform:uppercase;white-space:nowrap}.fw-action-badge.fw-action-accept{background:#22c55e1f;border:1px solid #22c55e4d;color:#4ade80}.fw-action-badge.fw-action-drop{background:#ef44441f;border:1px solid #ef44444d;color:#f87171}.fw-action-badge.fw-action-reject{background:#fb923c1f;border:1px solid #fb923c59;color:#fb923c}.fw-cell-comment{color:var(--text-4);font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fw-cell-actions{text-align:center}.fw-delete-btn{align-items:center;background:#ef444414;border:1px solid #ef44444d;border-radius:.3rem;color:#f87171;cursor:pointer;display:inline-flex;font-size:.78rem;font-weight:700;height:28px;justify-content:center;transition:all .15s;width:28px}.fw-delete-btn:hover{background:#ef44442e;border-color:#ef44448c}@media (max-width:900px){.fw-table-header,.fw-table-row{font-size:.72rem;gap:.3rem;grid-template-columns:60px 80px 70px 70px 100px 100px 70px 1fr 70px;padding:.4rem .6rem}.fw-status-right{justify-content:flex-end;width:100%}}
/*# sourceMappingURL=main.b87b089c.css.map*/