:root{--bg:#0b0f1a;--bg-2:#101627;--panel:rgba(26,34,51,0.75);--panel-solid:#1a2233;--border:#2a3550;--text:#e6ecf5;--muted:#8b98b0;--primary:#7c5cff;--primary-2:#4f8cff;--primary-hover:#6a4be6;--danger:#e5484d;--ok:#30a46c;--warn:#f5a623}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(900px 400px at 85% -10%,rgba(124,92,255,.16),transparent 60%),radial-gradient(700px 350px at 0 110%,rgba(79,140,255,.1),transparent 60%),linear-gradient(180deg,var(--bg) 0,var(--bg-2) 100%);background-attachment:fixed;color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:15px}.container{max-width:1100px;margin:0 auto;padding:28px 20px}h1{font-size:1.5rem}h2{font-size:1.2rem}h3{font-size:1.05rem;margin-top:0}.section-title{margin-top:28px}.nav{display:grid;grid-template-columns:1fr auto 1fr;grid-gap:16px;gap:16px;padding:12px 24px;background:rgba(16,22,39,.85);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;z-index:50}.brand,.nav{align-items:center}.brand{display:flex;gap:10px;text-decoration:none;color:var(--text);justify-self:start}.brand-logo{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;background:linear-gradient(135deg,var(--primary) 0,var(--primary-2) 100%);color:#fff;letter-spacing:.5px;box-shadow:0 4px 14px rgba(124,92,255,.35)}.brand-logo,.brand-text{font-weight:800;font-size:1rem}.brand-text{display:flex;flex-direction:column;line-height:1.05;letter-spacing:1px}.brand-text em{font-style:normal;font-weight:500;font-size:.7rem;letter-spacing:3px;color:var(--muted);text-transform:uppercase}.nav-title{justify-self:center;font-weight:700;letter-spacing:6px;font-size:1.02rem;background:linear-gradient(90deg,var(--primary-2),var(--primary));-webkit-background-clip:text;background-clip:text;color:transparent;white-space:nowrap}.nav-right{justify-self:end;display:flex;align-items:center;gap:14px}.nav-right a{color:var(--text);text-decoration:none;font-weight:500}.nav-right a:hover{color:var(--primary)}.user-chip{background:rgba(124,92,255,.12);border:1px solid rgba(124,92,255,.35);color:var(--text);border-radius:20px;padding:4px 14px;font-size:.85rem}.card{background:var(--panel);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--border);border-radius:14px;padding:20px;margin-bottom:16px;box-shadow:0 6px 24px rgba(0,0,0,.25)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));grid-gap:16px;gap:16px}.grid .card{margin-bottom:0;display:flex;flex-direction:column}.grid .card p{flex:1 1}.grid .card h3{margin-bottom:6px}.lab-card{transition:transform .15s,border-color .15s,box-shadow .15s}.lab-card:hover{transform:translateY(-3px);border-color:var(--primary);box-shadow:0 10px 30px rgba(124,92,255,.18)}.btn{background:#263149;color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 16px;font-size:.92rem;cursor:pointer;transition:border-color .12s,background .12s}.btn:hover:not(:disabled){border-color:var(--primary)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,var(--primary) 0,var(--primary-2) 100%);border-color:transparent;font-weight:600}.btn-primary:hover:not(:disabled){filter:brightness(1.1)}.btn-danger{background:transparent;border-color:var(--danger);color:var(--danger)}.btn-danger:hover:not(:disabled){background:var(--danger);color:#fff}.btn-sm{padding:4px 10px;font-size:.85rem}.btn-console{font-family:ui-monospace,monospace}.btn-console-active{border-color:var(--primary);background:rgba(124,92,255,.15)}input,select{background:rgba(11,15,26,.8);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:9px 12px;font-size:.95rem}input:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(124,92,255,.18)}form{display:flex;flex-direction:column;gap:12px}.login-box{max-width:380px;margin:90px auto}.login-box h1{text-align:center;letter-spacing:5px;font-size:1.15rem;background:linear-gradient(90deg,var(--primary-2),var(--primary));-webkit-background-clip:text;background-clip:text;color:transparent}.login-brand{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:4px}.error{color:var(--danger)}.muted{color:var(--muted);font-size:.9rem}.mono{font-family:ui-monospace,monospace;font-size:.85rem}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.row h2{margin:0;flex:1 1}.session-card{border-color:rgba(124,92,255,.55);box-shadow:0 8px 30px rgba(124,92,255,.12)}.consoles{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.console-panel{margin-top:16px}.console-panel.maximized{position:fixed;inset:0;z-index:100;margin:0;padding:10px 12px;background:#0b0f1a;display:flex;flex-direction:column}.console-panel.maximized .console-frame{flex:1 1;height:auto}.console-tabs{display:flex;gap:4px;flex-wrap:wrap;align-items:center}.console-tabs-spacer{flex:1 1}.console-tool-btn{background:rgba(11,15,26,.9);border:1px solid var(--border);border-radius:8px;color:var(--muted);font-size:.95rem;padding:5px 11px;cursor:pointer;margin-bottom:2px}.console-tool-btn:hover{border-color:var(--primary);color:var(--text)}.console-hint{margin:6px 2px 0;font-size:.8rem}.console-tab{display:flex;align-items:center;background:rgba(11,15,26,.9);border:1px solid var(--border);border-bottom:none;border-radius:10px 10px 0 0;overflow:hidden}.console-tab.active{border-color:var(--primary);background:#000}.console-tab-label{background:none;border:none;color:var(--muted);padding:8px 12px;cursor:pointer;font-family:ui-monospace,monospace;font-size:.85rem}.console-tab.active .console-tab-label{color:var(--text)}.console-tab-close{background:none;border:none;color:var(--muted);font-size:1rem;padding:0 10px 2px 2px;cursor:pointer}.console-tab-close:hover{color:var(--danger)}.console-frame{width:100%;height:68vh;border:1px solid var(--primary);border-radius:0 12px 12px 12px;background:#000;display:block}.console-frame.hidden{display:none}.console-btn-list{display:flex;flex-wrap:wrap;gap:6px}.badge{padding:3px 10px;border-radius:20px;font-size:.8rem;white-space:nowrap}.badge-running{background:rgba(48,164,108,.18);color:var(--ok)}.badge-starting{background:rgba(245,166,35,.15);color:var(--warn)}.badge-stopping{background:rgba(139,152,176,.15);color:var(--muted)}.badge-error{background:rgba(229,72,77,.15);color:var(--danger)}.tabs{display:flex;gap:6px;margin-bottom:18px;border-bottom:1px solid var(--border)}.tab{background:none;color:var(--muted);padding:10px 16px;cursor:pointer;font-size:.95rem;border:none;border-bottom:2px solid transparent}.tab.active{color:var(--text);border-bottom-color:var(--primary)}table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:hidden}td,th{text-align:left;padding:10px 14px;border-bottom:1px solid var(--border);vertical-align:middle}th{color:var(--muted);font-weight:500;font-size:.85rem}tr:last-child td{border-bottom:none}.actions{display:flex;gap:8px}.form-row{display:flex;gap:10px;flex-wrap:wrap}.form-row input,.form-row select{flex:1 1;min-width:160px}.meter{height:10px;background:rgba(11,15,26,.9);border-radius:6px;overflow:hidden;margin-top:8px}.meter-fill{height:100%;background:linear-gradient(90deg,var(--primary-2),var(--primary));transition:width .4s}