:root{--bg-primary:#0a0a0a;--bg-secondary:#0f0f0f;--bg-card:#161616;--text-primary:#e5e5e5;--text-secondary:#a3a3a3;--accent:#22c55e;--accent-light:#4ade80;--accent-dim:#16a34a;--accent-subtle:#22c55e0f;--border:#262626;--error:#ef4444;--serif:"Lora", Georgia, serif;--sans:"Inter", -apple-system, sans-serif;--mono:"JetBrains Mono", monospace}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg-primary);color:var(--text-primary);font-family:var(--sans);line-height:1.6}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-light)}.chamfer{clip-path:polygon(0 0,calc(100% - 16px) 0,100% 16px,100% 100%,0 100%);border:none;position:relative}.chamfer:before{content:"";clip-path:polygon(0 0,calc(100% - 15px) 0,100% 15px,100% 100%,0 100%);background:var(--bg-card);z-index:0;position:absolute;inset:1px}.chamfer>*{z-index:1;position:relative}.debug-attestation-banner{width:100%;color:var(--text-primary);font-family:var(--mono);z-index:200;background:#ef444414;border-bottom:1px solid #ef444459;font-size:12px;line-height:1.5;position:relative}.debug-attestation-banner-inner{align-items:center;gap:12px;max-width:1200px;margin:0 auto;padding:10px 24px;display:flex}.debug-attestation-banner-tag{background:var(--error);color:#0a0a0a;letter-spacing:.08em;flex-shrink:0;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.debug-attestation-banner-text{color:var(--text-primary)}.debug-attestation-banner-link{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.debug-attestation-banner-link:hover{color:var(--accent-light)}.layout{flex-direction:column;min-height:100vh;display:flex}.topbar{border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:100;background:#0a0a0ad9;justify-content:space-between;align-items:center;padding:16px 32px;display:flex;position:sticky;top:0}.topbar-left{align-items:center;gap:12px;display:flex}.mark{background:var(--accent);clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,0 100%);width:28px;height:32px;font-family:var(--serif);color:#0a0a0a;justify-content:center;align-items:center;font-size:14px;font-weight:600;display:flex}.brand{font-family:var(--serif);letter-spacing:.03em;color:#fff;font-size:18px}.brand .en{color:var(--accent)}.topbar-nav{align-items:center;gap:24px;display:flex}.topbar-nav a{color:var(--text-secondary);font-family:var(--mono);font-size:13px;text-decoration:none;transition:color .2s}.topbar-nav a:hover,.topbar-nav a.active{color:var(--accent)}.logout-btn{border:1px solid var(--border);color:var(--text-secondary);font-family:var(--mono);cursor:pointer;background:0 0;padding:6px 16px;font-size:13px;transition:color .2s,border-color .2s}.logout-btn:hover{color:var(--text-primary);border-color:var(--text-secondary)}.main-content{flex:1;width:100%;max-width:960px;margin:0 auto;padding:40px 24px}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--border);text-align:center;width:100%;max-width:400px;padding:48px}.login-card:before{background:var(--bg-card)}.login-element{background:var(--accent);clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,0 100%);flex-direction:column;justify-content:center;align-items:center;width:80px;height:96px;margin:0 auto 32px;display:flex}.login-element .symbol{font-family:var(--serif);color:#0a0a0a;font-size:40px;font-weight:600}.login-element .name{font-family:var(--mono);letter-spacing:.08em;color:#0a0a0a;font-size:9px}.login-card h1{font-family:var(--serif);color:#fff;margin-bottom:8px;font-size:28px;font-weight:400}.login-subtitle{color:var(--text-secondary);font-family:var(--mono);margin-bottom:32px;font-size:13px}.login-buttons{flex-direction:column;gap:12px;display:flex}.oauth-btn{background:var(--bg-primary);border:1px solid var(--border);width:100%;color:var(--text-primary);font-family:var(--mono);cursor:pointer;padding:14px 24px;font-size:14px;transition:border-color .2s,color .2s}.oauth-btn:hover{border-color:var(--accent);color:#fff}.status-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.status-dot.pulse{animation:2s ease-in-out infinite pulse-glow}@keyframes pulse-glow{0%,to{opacity:1}50%{opacity:.4}}.list-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.list-header h2{font-family:var(--serif);font-size:28px;font-weight:400}.create-btn{background:var(--accent);color:#0a0a0a;font-family:var(--mono);clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,0 100%);padding:10px 20px;font-size:13px;font-weight:500;text-decoration:none;transition:background .2s}.create-btn:hover{background:var(--accent-light);color:#0a0a0a}.enclave-list{flex-direction:column;gap:8px;display:flex}.enclave-row{background:var(--border);color:var(--text-primary);align-items:center;gap:16px;padding:16px 20px;text-decoration:none;transition:background .15s;display:flex}.enclave-row:hover{color:var(--text-primary)}.enclave-row:hover:before{background:#1a1a1a}.enclave-name{font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:14px;overflow:hidden}.enclave-status{font-family:var(--mono);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:12px}.enclave-meta{font-family:var(--mono);color:var(--text-secondary);font-size:12px}.empty-state{background:var(--border);text-align:center;padding:48px}.empty-state p{color:var(--text-secondary);font-family:var(--mono);margin-bottom:16px;font-size:14px}.empty-state a{color:var(--accent);font-family:var(--mono);font-size:14px}.loading-text,.error-text{font-family:var(--mono);text-align:center;padding:48px;font-size:14px}.loading-text{color:var(--text-secondary)}.error-text{color:var(--error)}.page-title{font-family:var(--serif);margin-bottom:32px;font-size:28px;font-weight:400}.create-form{flex-direction:column;gap:24px;max-width:520px;display:flex}.form-group{flex-direction:column;gap:8px;display:flex}.form-group label{font-family:var(--mono);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:12px}.form-group .optional{text-transform:none;letter-spacing:0;font-size:11px}.form-group input,.form-group select{background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);font-family:var(--mono);outline:none;padding:12px 16px;font-size:14px;transition:border-color .2s}.form-group input::placeholder{color:var(--text-secondary)}.form-hint{font-family:var(--mono);color:var(--text-secondary);margin:0;font-size:12px}.form-hint code{background:var(--bg-card);border:1px solid var(--border);padding:1px 6px}.form-group input:focus,.form-group select:focus{border-color:var(--accent)}.form-group select{appearance:none;cursor:pointer}.instance-types{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.instance-option{background:var(--bg-card);border:1px solid var(--border);text-align:center;cursor:default;padding:16px}.instance-option.selected{border-color:var(--accent)}.instance-option.disabled{opacity:.4}.instance-name{font-family:var(--mono);margin-bottom:4px;font-size:14px;display:block}.instance-spec{font-family:var(--mono);color:var(--text-secondary);font-size:11px}.form-error{color:var(--error);font-family:var(--mono);font-size:13px}.submit-btn{background:var(--accent);color:#0a0a0a;font-family:var(--mono);cursor:pointer;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,0 100%);border:none;align-self:flex-start;padding:14px 32px;font-size:14px;font-weight:500;transition:background .2s}.submit-btn:hover:not(:disabled){background:var(--accent-light)}.submit-btn:disabled{opacity:.6;cursor:not-allowed}.detail-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:32px;display:flex}.detail-title-row{align-items:center;gap:12px;display:flex}.detail-title-row h2{font-family:var(--serif);font-size:28px;font-weight:400}.detail-status{font-family:var(--mono);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:12px}.detail-actions{flex-shrink:0;gap:8px;display:flex}.action-btn{font-family:var(--mono);cursor:pointer;border:1px solid var(--border);background:var(--bg-card);color:var(--text-primary);padding:8px 20px;font-size:13px;transition:border-color .2s}.action-btn:hover:not(:disabled){border-color:var(--text-secondary)}.action-btn:disabled{opacity:.5;cursor:not-allowed}.destroy-btn{color:var(--error);border-color:#ef44444d}.destroy-btn:hover:not(:disabled){border-color:var(--error)}.connection-card{background:var(--border);margin-bottom:16px;padding:20px}.detail-grid{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:24px;display:grid}.detail-card{background:var(--border);padding:20px}.detail-label{font-family:var(--mono);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px;font-size:11px}.detail-value{color:var(--text-primary);font-size:15px}.detail-value.mono{font-family:var(--mono);word-break:break-all;font-size:13px}.error-card{background:var(--border);margin-bottom:24px;padding:20px}.error-card:before{background:var(--bg-card)}.error-msg{color:var(--error)}.pcrs-section{margin-top:32px}.pcrs-section h3{font-family:var(--serif);margin-bottom:16px;font-size:20px;font-weight:400}.pcrs-list{flex-direction:column;gap:4px;display:flex}.pcr-row{background:var(--bg-card);border:1px solid var(--border);align-items:baseline;gap:16px;padding:12px 16px;display:flex}.pcr-key{font-family:var(--mono);color:var(--accent);flex-shrink:0;width:48px;font-size:13px}.pcr-value{font-family:var(--mono);color:var(--text-secondary);word-break:break-all;font-size:12px}.logs-section{margin-top:32px}.logs-section h3{font-family:var(--serif);margin-bottom:16px;font-size:20px;font-weight:400}.logs-toggle-btn{font-family:var(--mono);font-size:13px}.logs-actions{margin-bottom:16px}.log-group{margin-bottom:8px}.log-header{background:var(--border);width:100%;color:var(--text-primary);font-family:var(--mono);text-transform:uppercase;letter-spacing:.05em;cursor:pointer;text-align:left;border:none;align-items:center;gap:8px;padding:12px 16px;font-size:13px;display:flex}.log-header:hover{background:var(--bg-card)}.log-header-arrow{color:var(--text-secondary);font-size:10px}.log-live-indicator{color:#22c55e;text-transform:uppercase;letter-spacing:.08em;margin-left:auto;font-size:11px;animation:1.5s ease-in-out infinite live-pulse}@keyframes live-pulse{0%,to{opacity:1}50%{opacity:.4}}.log-block{background:var(--bg-card);border:1px solid var(--border);border-top:none;max-height:400px;padding:16px;overflow:auto scroll}.log-block pre{font-family:var(--mono);color:var(--text-secondary);white-space:pre-wrap;word-break:break-all;margin:0;font-size:12px;line-height:1.6}.log-empty{font-family:var(--mono);color:var(--text-secondary);margin:0;font-size:13px}.log-block-stream{padding:8px 0;display:block}.log-controls{background:var(--bg-card);border:1px solid var(--border);font-family:var(--mono);color:var(--text-secondary);border-top:none;border-bottom:none;align-items:center;gap:16px;padding:8px 16px;font-size:12px;display:flex}.log-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;display:inline-flex}.log-toggle input{cursor:pointer}.log-count{margin-right:auto}.log-clear-btn{font-family:var(--mono);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;text-transform:uppercase;letter-spacing:.05em;background:0 0;padding:4px 12px;font-size:12px}.log-clear-btn:hover{border-color:var(--text-secondary);color:var(--text-primary)}.log-line{font-family:var(--mono);white-space:pre-wrap;word-break:break-word;gap:8px;padding:1px 16px;font-size:12px;line-height:1.5;display:flex}.log-line-tag{text-transform:uppercase;letter-spacing:.05em;width:64px;color:var(--text-secondary);opacity:.7;flex-shrink:0;padding-top:1px;font-size:10px}.log-line-text{color:var(--text-secondary);flex:1}.log-line-stdout .log-line-tag{color:var(--accent)}.log-line-stdout .log-line-text{color:var(--text-primary)}.log-line-stderr .log-line-tag{color:#ef4444}.log-line-stderr .log-line-text{color:#f87171}.log-line-launcher .log-line-tag{color:#3b82f6}.log-line-launcher .log-line-text{color:var(--text-secondary)}.log-line-qemu .log-line-tag{color:#a855f7}.log-line-qemu .log-line-text{color:var(--text-secondary)}@media (width<=700px){.detail-header{flex-direction:column}.detail-grid{grid-template-columns:1fr}}.onboarding-page{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.onboarding-card{background:var(--border);width:100%;max-width:480px;padding:48px}.onboarding-card:before{background:var(--bg-card)}.onboarding-card h1{font-family:var(--serif);color:#fff;margin-bottom:8px;font-size:28px;font-weight:400}.onboarding-subtitle{color:var(--text-secondary);font-family:var(--mono);margin-bottom:32px;font-size:13px}.onboarding-form{flex-direction:column;gap:16px;display:flex}.onboarding-hint{color:var(--text-secondary);font-family:var(--mono);font-size:11px;line-height:1.6}.settings-page{align-items:flex-start;gap:32px;display:flex}.settings-nav{flex-shrink:0;width:200px}.settings-nav h2{font-family:var(--serif);color:#fff;margin-bottom:16px;font-size:24px;font-weight:400}.settings-nav nav{flex-direction:column;gap:4px;display:flex}.settings-nav a{color:var(--text-secondary);font-family:var(--mono);border-left:2px solid #0000;padding:8px 12px;font-size:13px;text-decoration:none;transition:color .2s,border-color .2s;display:block}.settings-nav a:hover{color:var(--text-primary)}.settings-nav a.active{color:var(--accent);border-left-color:var(--accent)}.settings-content{flex:1;min-width:0}.settings-header{margin-bottom:24px}.settings-header h3{font-family:var(--serif);color:#fff;margin-bottom:4px;font-size:22px;font-weight:400}.settings-subtitle{color:var(--text-secondary);font-family:var(--mono);font-size:13px}.settings-loading,.settings-empty{color:var(--text-secondary);font-family:var(--mono);padding:24px 0;font-size:13px}.settings-error{color:var(--error);font-family:var(--mono);margin-bottom:16px;font-size:13px}.sessions-list{flex-direction:column;gap:8px;display:flex}.session-row{background:var(--border);grid-template-columns:1fr auto auto;align-items:center;gap:16px;padding:16px 20px;display:grid}.session-row-main{flex-direction:column;gap:4px;min-width:0;display:flex}.session-kind{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--accent);font-size:11px}.session-label{font-family:var(--mono);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.session-row-meta{font-family:var(--mono);color:var(--text-secondary);text-align:right;flex-direction:column;gap:2px;font-size:11px;display:flex}.session-row-actions{justify-content:flex-end;align-items:center;min-width:96px;display:flex}.session-revoke{background:var(--bg-primary);border:1px solid var(--border);color:var(--text-secondary);font-family:var(--mono);cursor:pointer;padding:6px 14px;font-size:12px;transition:border-color .2s,color .2s}.session-revoke:hover:not(:disabled){border-color:var(--error);color:var(--error)}.session-revoke:disabled{opacity:.5;cursor:not-allowed}.session-current{font-family:var(--mono);color:var(--text-secondary);font-size:12px;font-style:italic}@media (width<=720px){.settings-page{flex-direction:column}.settings-nav{width:100%}.session-row{grid-template-columns:1fr}.session-row-meta{text-align:left;flex-flow:wrap;gap:12px}.session-row-actions{justify-content:flex-start}}.cli-approve-page{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.cli-approve-card{background:var(--border);width:100%;max-width:480px;padding:48px}.cli-approve-card:before{background:var(--bg-card)}.cli-approve-card h1{font-family:var(--serif);color:#fff;margin-bottom:8px;font-size:28px;font-weight:400}.cli-approve-subtitle{color:var(--text-secondary);font-family:var(--mono);margin-bottom:32px;font-size:13px}.cli-approve-form{flex-direction:column;gap:8px;margin-bottom:24px;display:flex}.cli-approve-form label{font-family:var(--mono);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:12px}.cli-approve-form input{background:var(--bg-primary);border:1px solid var(--border);color:var(--text-primary);font-family:var(--mono);padding:12px 16px;font-size:14px}.cli-approve-form input:focus{border-color:var(--accent);outline:none}.cli-approve-hint{font-family:var(--mono);color:var(--text-secondary);font-size:11px;line-height:1.6}.cli-approve-error{color:var(--error);font-family:var(--mono);margin-bottom:16px;font-size:13px}.cli-approve-buttons{justify-content:flex-end;gap:12px;display:flex}.cli-approve-approve,.cli-approve-deny{font-family:var(--mono);cursor:pointer;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,0 100%);padding:10px 20px;font-size:13px;font-weight:500;transition:background .2s,border-color .2s,color .2s}.cli-approve-approve{background:var(--accent);color:#0a0a0a;border:none}.cli-approve-approve:hover:not(:disabled){background:var(--accent-light)}.cli-approve-approve:disabled,.cli-approve-deny:disabled{opacity:.5;cursor:not-allowed}.cli-approve-deny{background:var(--bg-primary);border:1px solid var(--border);color:var(--text-secondary)}.cli-approve-deny:hover:not(:disabled){border-color:var(--text-secondary);color:var(--text-primary)}
