:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#f4f7f8;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--bg:#0f1215;--surface:#171b20;--surface-2:#1e242b;--surface-3:#252d36;--border:#303945;--border-strong:#425061;--text:#f4f7f8;--muted:#a7b0bb;--subtle:#7f8a96;--accent:#2dd4bf;--accent-strong:#14b8a6;--accent-ink:#062522;--blue:#80aaff;--danger:#ff7a7a;--danger-bg:#ff7a7a1f;--success:#8ee59f;--warning:#f2c866;--shadow:0 18px 55px #00000057;background:#0f1215;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:linear-gradient(180deg, #1b2229e0, #0f1215 320px), var(--bg);min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible{outline-offset:2px;outline:2px solid #2dd4bfc7}.login-shell{place-items:center;min-height:100vh;padding:24px;display:grid}.login-panel,.loading-card{border:1px solid var(--border);width:min(420px,100%);box-shadow:var(--shadow);background:#171b20f0;border-radius:8px;padding:34px}.login-mark{background:var(--accent);width:52px;height:52px;color:var(--accent-ink);border-radius:8px;place-items:center;margin-bottom:24px;display:grid}.login-panel h1{margin:0 0 8px;font-size:28px;line-height:1.1}.login-panel p{color:var(--muted);margin:0 0 28px}.login-panel form{gap:16px;display:grid}label{color:#d2d8de;gap:8px;font-size:13px;font-weight:650;display:grid}input{border:1px solid var(--border);width:100%;color:var(--text);background:#101419;border-radius:8px;padding:13px 14px}input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #2dd4bf1f}.form-error,.notice{background:var(--danger-bg);color:#ffdada;border:1px solid #ff7a7a6b;border-radius:8px;padding:12px 14px;font-size:13px}.primary-button,.topbar-actions button,.detail-actions button,.detail-actions a,.log-header button,.modal-actions button{border:1px solid var(--border-strong);background:var(--surface-2);min-height:42px;color:var(--text);cursor:pointer;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:0 14px;text-decoration:none;transition:transform .14s,border-color .14s,background .14s,color .14s;display:inline-flex}.primary-button:hover,.topbar-actions button:hover,.detail-actions button:hover,.detail-actions a:hover,.log-header button:hover,.modal-actions button:hover{border-color:var(--accent);background:var(--surface-3);transform:translateY(-1px)}.primary-button:active,.topbar-actions button:active,.detail-actions button:active,.detail-actions a:active,.log-header button:active,.modal-actions button:active,.icon-button:active,.ghost-icon:active{transform:translateY(0)}.primary-button:disabled,.topbar-actions button:disabled,.detail-actions button:disabled,.log-header button:disabled,.modal-actions button:disabled{cursor:wait;opacity:.68;transform:none}.primary-button{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:760}.primary-button:hover{color:var(--accent-ink);background:#46e4d0}.app-shell{min-height:100vh}.workspace{width:min(1480px,100%);margin:0 auto;padding:26px}.topbar{justify-content:space-between;align-items:center;gap:18px;margin-bottom:22px;display:flex}.topbar h1{letter-spacing:0;margin:0;font-size:26px;line-height:1.1}.topbar p{color:var(--muted);margin:6px 0 0}.topbar-actions,.service-meta,.service-actions,.machine-actions,.modal-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.user-pill,.machine-chip,.status-pill{border:1px solid var(--border);color:#d0d7de;white-space:nowrap;background:#13181d;border-radius:8px;align-items:center;gap:6px;min-height:30px;padding:0 10px;font-size:12px;font-weight:700;display:inline-flex}.status-online{color:var(--success);background:#22743d29;border-color:#8ee59f6b}.status-offline,.status-error{color:#ffc1c1;background:var(--danger-bg);border-color:#ff7a7a6b}.status-unknown{color:var(--warning);background:#f2c8661f;border-color:#f2c8666b}.machine-strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:22px;display:grid}.machine-strip article{border:1px solid var(--border);background:#171b20e6;border-radius:8px;justify-content:space-between;align-items:center;gap:14px;min-height:76px;padding:14px;display:flex}.machine-strip span{color:var(--text);font-weight:760;display:block}.machine-strip small{color:var(--muted);overflow-wrap:anywhere;margin-top:5px;display:block}.dashboard-grid{grid-template-columns:minmax(0,1fr) minmax(320px,380px);align-items:start;gap:18px;display:grid}.section-title{justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px;display:flex}.section-title h2{margin:0;font-size:18px}.service-grid{grid-template-columns:repeat(2,minmax(280px,1fr));gap:14px;display:grid}.service-card{border:1px solid var(--border);cursor:pointer;background:linear-gradient(#1f252cfa,#161a1ffa);border-radius:8px;grid-template-rows:auto 1fr auto;gap:12px;min-height:184px;padding:14px;transition:border-color .16s,box-shadow .16s,transform .16s,background .16s;display:grid}.service-card:hover,.service-card.selected{border-color:#2dd4bf9e;transform:translateY(-1px);box-shadow:0 12px 35px #00000038}.service-card.selected{background:linear-gradient(#1f2f35fa,#161d23fa)}.service-art{align-items:center;height:54px;display:flex}.service-art img{object-fit:contain;width:48px;height:48px}.service-card h2,.detail-panel h2,.confirm-modal h2{margin:0;font-size:17px;line-height:1.2}.service-card p,.detail-copy,.confirm-modal p{color:var(--muted);margin:7px 0 0;font-size:14px;line-height:1.45}.service-actions{justify-content:space-between}.ghost-icon,.icon-button{border:1px solid var(--border);color:#cad2da;cursor:pointer;background:#14191f;border-radius:8px;place-items:center;width:38px;height:38px;text-decoration:none;transition:transform .14s,border-color .14s,background .14s,color .14s;display:inline-grid}.icon-button{width:36px;height:36px}.ghost-icon:hover,.icon-button:hover{border-color:var(--accent);background:var(--surface-2);color:var(--text);transform:translateY(-1px)}.icon-button.danger,.danger-soft{color:#ffc1c1}.icon-button.danger:hover,.danger-soft:hover{color:#ffe2e2;border-color:#ff7a7ab3}.detail-panel{border:1px solid var(--border);background:#14181df5;border-radius:8px;min-height:560px;padding:18px;position:sticky;top:24px}.detail-panel.empty{text-align:center;color:var(--muted);align-content:center;display:grid}.panel-head{justify-content:space-between;gap:16px;margin-bottom:12px;display:flex}.panel-kicker{color:var(--blue);margin-bottom:6px;font-size:12px;font-weight:760;display:block}.detail-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:18px 0;display:grid}.log-header{color:#edf2f5;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;font-weight:760;display:flex}.log-header div{align-items:center;gap:8px;display:flex}.logs{white-space:pre-wrap;border:1px solid var(--border);color:#d5dde3;background:#0b0e11;border-radius:8px;height:276px;padding:14px;font-size:12px;line-height:1.5;overflow:auto}.modal-backdrop{z-index:20;background:#0000009e;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.confirm-modal{border:1px solid var(--border-strong);background:var(--surface);width:min(430px,100%);box-shadow:var(--shadow);border-radius:8px;padding:24px}.danger-solid{font-weight:800;background:var(--danger)!important;border-color:var(--danger)!important;color:#2a1010!important}@media (width<=1180px){.dashboard-grid{grid-template-columns:1fr}.detail-panel{min-height:auto;position:static}}@media (width<=760px){.workspace{padding:18px 14px 24px}.topbar,.machine-strip article{flex-direction:column;align-items:flex-start}.topbar-actions{width:100%}.topbar-actions button,.topbar-actions .user-pill{flex:150px}.machine-strip,.service-grid{grid-template-columns:1fr}.machine-actions,.service-actions{justify-content:flex-start;width:100%}.service-card{min-height:168px}}@media (width<=440px){.login-panel,.loading-card{padding:24px}.detail-actions{grid-template-columns:1fr}.log-header{flex-direction:column;align-items:flex-start}.log-header button{width:100%}}
