:root{--base-1: #090b10;--base-2: #171b24;--base-3: #c6a15b;--base-4: #b78b3e;--base-5: #f4f1ea}:root{--color-background: color-mix(in srgb, var(--base-1) 92%, var(--base-5));--color-surface: color-mix(in srgb, var(--base-2) 94%, var(--base-5));--color-input: color-mix(in srgb, var(--base-1) 88%, var(--base-2));--color-foreground: var(--base-5);--color-foreground-muted: color-mix(in srgb, var(--base-5) 62%, var(--base-1));--color-primary: var(--base-4);--color-primary-hover: color-mix(in srgb, var(--base-4) 78%, var(--base-5));--color-accent: var(--base-3);--color-border: color-mix(in srgb, var(--base-5) 18%, var(--base-1));--color-bg: var(--color-background);--color-bg-card: var(--color-surface);--color-bg-input: var(--color-input);--color-text: var(--color-foreground);--color-text-muted: var(--color-foreground-muted);--color-success: color-mix(in srgb, #22c55e 80%, var(--base-5));--color-success-bg: color-mix(in srgb, var(--color-success) 12%, transparent);--color-error: color-mix(in srgb, #ef4444 80%, var(--base-5));--color-error-bg: color-mix(in srgb, var(--color-error) 12%, transparent);--sidebar-width: 280px;--header-height: 80px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background-color:var(--color-bg);color:var(--color-text);line-height:1.5}button,input{font:inherit}button{border:0;border-radius:.5rem;padding:.5rem 1rem;color:var(--color-foreground);background:var(--color-primary);cursor:pointer;font-weight:600;transition:all .2s ease}button:hover:not(:disabled){background:var(--color-primary-hover)}button:disabled{cursor:not-allowed;opacity:.5;filter:grayscale(1)}.btn-secondary{background:#334155;color:#f8fafc}.btn-secondary:hover{background:#475569}.btn-close{background:transparent;color:var(--color-text-muted);font-size:1.5rem;padding:0 .5rem}.btn-close:hover{color:var(--color-error);background:transparent}.btn-icon{background:#ffffff0d;border:1px solid var(--color-border);width:40px;height:40px;padding:0;display:flex;align-items:center;justify-content:center}.btn-icon:hover{background:#ffffff1a}.btn-refresh-icon{background:transparent;color:var(--color-text-muted);font-size:1.2rem;padding:.25rem;margin-left:.5rem}.btn-refresh-icon:hover{color:var(--color-primary)}input{width:100%;border:1px solid var(--color-border);border-radius:.5rem;padding:.75rem 1rem;color:var(--color-foreground);background:var(--color-bg-input)}input:focus{outline:2px solid var(--color-primary);border-color:transparent}.dashboard-layout{display:flex;min-height:100vh}.dashboard-page{flex:1;width:100%;margin:0;padding:2rem;transition:margin-right .3s ease}.dashboard-layout:has(.console-sidebar) .dashboard-page{margin-right:var(--sidebar-width)}.top-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid var(--color-border)}.brand h1{margin:0;font-size:1.5rem}.brand p{margin:0;color:var(--color-text-muted);font-size:.9rem}.brand{display:flex;align-items:center;gap:.85rem}.brand-mark img{width:46px;height:46px;object-fit:contain}.user-menu{display:flex;align-items:center;gap:.7rem;min-width:0;max-width:min(100%,320px);padding:.45rem .5rem .45rem .65rem;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:.8rem}.user-menu-avatar{display:grid;place-items:center;flex:0 0 2rem;width:2rem;height:2rem;border-radius:50%;color:var(--color-background);background:var(--color-accent);font-weight:700}.user-menu-details{display:flex;flex-direction:column;min-width:0;line-height:1.2}.user-menu-label{color:var(--color-text-muted);font-size:.68rem}.user-menu-details strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem}.user-menu-logout{flex:0 0 auto;padding:.45rem .7rem;font-size:.78rem}.summary-bar{display:flex;align-items:center;gap:.75rem;background:#ffffff08;padding:.75rem 1.25rem;border-radius:.75rem;margin-bottom:2rem;font-size:.9rem;color:var(--color-text-muted)}.separator{opacity:.3}.status-running{color:var(--color-success)}.status-console{color:var(--color-accent);font-weight:600}.update-info{margin-left:auto;display:flex;align-items:center}.controls-row{display:flex;gap:1rem;margin-bottom:2rem;flex-wrap:wrap}.search-box{flex:1;min-width:300px}.filter-group{display:flex;gap:.25rem;background:var(--color-bg-input);padding:.25rem;border-radius:.5rem;border:1px solid var(--color-border)}.filter-group button{background:transparent;color:var(--color-text-muted);font-size:.85rem;padding:.5rem 1rem}.filter-group button.active{background:var(--color-bg-card);color:#fff;box-shadow:0 2px 4px #0003}.vm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem}.vm-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:1rem;padding:1.5rem;display:flex;flex-direction:column;gap:1.25rem;transition:all .2s ease;position:relative}.vm-card:hover{transform:translateY(-2px);border-color:var(--color-primary);box-shadow:0 8px 24px #0003}.vm-card-active{border-left:4px solid var(--color-accent)}.vm-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.vm-card-title-group{flex:1;overflow:hidden}.vm-card-header h3{margin:0;font-size:1.1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vm-id{margin:0;color:var(--color-text-muted);font-size:.8rem;font-family:monospace}.btn-power{width:36px;height:36px;border-radius:.75rem;padding:0;display:flex;align-items:center;justify-content:center;background:var(--color-bg-input);border:1px solid var(--color-border);color:var(--color-text-muted);transition:all .2s ease;flex-shrink:0}.btn-power:hover:not(:disabled){border-color:var(--color-text);color:var(--color-text)}.btn-power-on{color:var(--color-success);border-color:#22c55e33}.btn-power-on:hover:not(:disabled){background:#22c55e1a;border-color:var(--color-success);color:var(--color-success)}.btn-power-off{color:var(--color-text-muted)}.btn-power-off:hover:not(:disabled){background:#ffffff0d}.btn-power.loading{cursor:wait;opacity:.7}.btn-power svg{width:20px;height:20px}.spinner-small{width:16px;height:16px;border:2px solid rgba(255,255,255,.2);border-top-color:currentColor;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.vm-status-group{display:flex;flex-direction:column;gap:.5rem}.status-indicator{display:flex;align-items:center;gap:.5rem;font-size:.85rem}.status-dot{width:8px;height:8px;border-radius:50%;background:#64748b}.status-dot-running{background:var(--color-success);box-shadow:0 0 8px var(--color-success)}.status-dot-stopped{background:#64748b}.status-dot-console{background:var(--color-accent);box-shadow:0 0 8px var(--color-accent)}.vm-card-actions{display:flex;gap:.5rem;margin-top:auto}.btn-primary{flex:1}.console-sidebar{position:fixed;right:0;top:0;bottom:0;width:var(--sidebar-width);background:var(--color-bg-card);border-left:1px solid var(--color-border);padding:2rem 1rem;overflow-y:auto;z-index:100}.console-sidebar h3{font-size:.75rem;color:var(--color-text-muted);letter-spacing:.1em;margin-bottom:1.5rem;padding-left:.5rem}.console-sidebar ul{list-style:none;padding:0;margin:0}.console-sidebar li{margin-bottom:.5rem;cursor:pointer;border-radius:.5rem;transition:all .2s}.console-sidebar li:hover{background:#ffffff0d}.console-sidebar li.active{background:#3b82f61a;border:1px solid var(--color-primary)}.sidebar-item{display:flex;align-items:center;gap:.75rem;padding:.75rem}.sidebar-text{display:flex;flex-direction:column}.sidebar-text .vm-name{font-size:.9rem;font-weight:500}.sidebar-text .vm-id{font-size:.7rem}#open-consoles-section{margin-top:4rem;padding-top:2rem;border-top:1px solid var(--color-border)}.badge{font-size:.8rem;background:var(--color-bg-input);padding:.2rem .6rem;border-radius:1rem;color:var(--color-text-muted);margin-left:.5rem;vertical-align:middle}.console-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(600px,1fr));gap:2rem}.console-panel{background:#000;border:1px solid var(--color-border);border-radius:.75rem;overflow:hidden;display:flex;flex-direction:column}.console-highlight{animation:highlight-pulse 2s ease-out;border-radius:.75rem}@keyframes highlight-pulse{0%{box-shadow:0 0 #3b82f6b3}70%{box-shadow:0 0 0 15px #3b82f600}to{box-shadow:0 0 #3b82f600}}.console-panel header{background:var(--color-bg-card);padding:1rem;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--color-border)}.console-info h2{margin:0;font-size:1rem}.console-info .status-indicator{margin-bottom:.25rem}.console-screen{width:100%;aspect-ratio:16 / 9;background:#000}.console-panel-minimized .console-screen{display:none}.console-panel-minimized{max-width:400px}.loading-state,.empty-state{text-align:center;padding:4rem 2rem;background:#ffffff05;border-radius:1rem;border:2px dashed var(--color-border);color:var(--color-text-muted)}.error-message{background:var(--color-error-bg);color:#fca5a5;padding:1rem;border-radius:.5rem;border:1px solid rgba(239,68,68,.2);margin-bottom:1rem}@media(max-width:1200px){.dashboard-layout:has(.console-sidebar) .dashboard-page{margin-right:0}.console-sidebar{position:fixed;inset:auto 0 0;width:100%;height:auto;max-height:40vh;border-left:0;border-top:1px solid var(--color-border);padding:1rem;display:flex;flex-direction:column}.console-sidebar ul{display:flex;overflow-x:auto;gap:1rem;padding-bottom:.5rem}.console-sidebar li{flex-shrink:0;min-width:200px;margin-bottom:0}.dashboard-page{padding-bottom:45vh}}@media(max-width:768px){.console-grid{grid-template-columns:1fr}.top-bar{flex-direction:column;align-items:flex-start;gap:1rem}.user-menu{width:100%;max-width:none}.user-menu-details{flex:1}.summary-bar{flex-wrap:wrap}.update-info{width:100%;margin-top:.5rem}}.popup-console-container{height:100vh;width:100vw;background:#000;display:flex;flex-direction:column}.popup-console-container .console-panel{flex:1;margin:0;border-radius:0;height:100%}.popup-console-container .console-screen{flex:1;height:calc(100% - 60px)}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1rem;background:radial-gradient(circle at center,var(--color-bg-card) 0%,var(--color-bg) 100%)}.login-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:1rem;padding:2.5rem;width:100%;max-width:400px;display:flex;flex-direction:column;gap:1.5rem;box-shadow:0 25px 50px -12px #00000080}.login-card h1{margin:0 0 .5rem;font-size:1.5rem;text-align:center;color:var(--color-text)}.login-brand{display:flex;align-items:center;gap:1rem}.login-brand img{width:58px;height:58px;object-fit:contain}.login-brand h1{text-align:left;margin:0}.login-brand p{margin:0;color:var(--color-text-muted);font-size:.85rem}.login-card label{display:flex;flex-direction:column;gap:.5rem;font-size:.9rem;color:var(--color-text-muted)}.login-card input{margin-top:.25rem}.login-card button{margin-top:1rem;padding:.875rem;font-size:1rem}.vnc-console-screen-div canvas{cursor:default!important}
