:root{--bg:#f4f5f7;--surface:#fff;--surface-2:#f1f2f4;--border:#dcdfe4;--text:#1c2026;--muted:#626a76;--accent:#1f5fae;--accent-hover:#184d8f;--accent-soft:#e6eef8;--on-accent:#fff;--ok:#17693f;--ok-soft:#e2f1e8;--warn:#7d5200;--warn-soft:#f8edd2;--danger:#b3261e;--danger-soft:#f9e4e2;--info-soft:#e6eef8;--info:#1f5fae;--sidebar:#1d2129;--sidebar-text:#b9bfc9;--sidebar-active:#2c323d;--radius:6px;--shadow:none;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#111317;--surface:#191c21;--surface-2:#22262d;--border:#2e333c;--text:#e4e7eb;--muted:#969eaa;--accent:#6ea5e6;--accent-hover:#8ab7ee;--accent-soft:#1c2b3f;--on-accent:#0f1216;--ok:#5cc48d;--ok-soft:#15301f;--warn:#e3b55a;--warn-soft:#362b10;--danger:#f08a82;--danger-soft:#3b1b19;--info-soft:#1c2b3f;--info:#8ab7ee;--sidebar:#0c0e11;--shadow:none;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,sans-serif}h1{margin:0;font-size:1.35rem;font-weight:600}h2,.h2{margin:0 0 12px;font-size:1rem;font-weight:600}h2.spaced{margin-top:22px}p{margin:0 0 12px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.btn:hover,.nav-item:hover,.tabs a:hover{text-decoration:none}code{background:var(--surface-2);overflow-wrap:anywhere;border-radius:4px;padding:1px 5px;font:.86em ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.muted{color:var(--muted)}.center{text-align:center;justify-content:center}.nowrap{white-space:nowrap}.icon{flex:none}.splash{height:100%;color:var(--muted);place-items:center;display:grid}.shell{grid-template-columns:232px 1fr;min-height:100%;display:grid}.sidebar{background:var(--sidebar);color:var(--sidebar-text);flex-direction:column;height:100vh;padding:14px 10px;display:flex;position:sticky;top:0;overflow-y:auto}.main{width:100%;min-width:0;max-width:1320px;padding:26px clamp(16px,3vw,36px) 48px}.topbar{display:none}.brand{align-items:center;gap:10px;padding:4px 10px 14px;display:flex}.brand-mark{background:var(--accent);border-radius:5px;flex:none;width:22px;height:22px}.sidebar .brand-mark{background:#4d8fdc}.brand-name{color:#fff;font-size:1.02rem;font-weight:600}.auth-card .brand-name{color:var(--text);font-size:1.25rem}.nav{flex-direction:column;flex:1;gap:2px;display:flex}.nav-title{text-transform:uppercase;letter-spacing:.08em;color:#7b8391;padding:16px 10px 5px;font-size:.72rem}.nav-item{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:10px;width:100%;padding:7px 10px;text-decoration:none;display:flex}.nav-item:hover{color:#fff;background:#ffffff0f}.nav-item.active{background:var(--sidebar-active);color:#fff}.nav-item .tag{margin-left:auto}.sidebar-foot{border-top:1px solid #ffffff14;justify-content:space-between;align-items:center;gap:8px;padding:10px 4px 0 10px;display:flex}.sidebar-foot .icon-btn:hover{color:#fff;background:#ffffff14}.who{flex-direction:column;min-width:0;line-height:1.25;display:flex}.who strong{color:#fff;text-overflow:ellipsis;font-weight:600;overflow:hidden}.who small{color:#7b8391}.tag{color:#9cc3f0;background:#6ea5e62e;border-radius:4px;padding:2px 7px;font-size:.68rem;font-weight:600}.card .tag{background:var(--accent-soft);color:var(--accent)}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.page-head p{margin:4px 0 0}.page-head.embedded{align-items:center;margin-bottom:14px}.page-head.embedded p{margin:0}.tabs{border-bottom:1px solid var(--border);gap:2px;margin:-6px 0 20px;display:flex;overflow-x:auto}.tabs a{color:var(--muted);white-space:nowrap;border-bottom:2px solid #0000;align-items:center;gap:7px;margin-bottom:-1px;padding:9px 14px;font-weight:500;text-decoration:none;display:inline-flex}.tabs a:hover{color:var(--text)}.tabs a.active{color:var(--accent);border-bottom-color:var(--accent)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:14px;padding:16px 18px}.card.narrow{max-width:520px}.card.empty{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:44px 22px;display:flex}.grid{gap:14px;display:grid}.grid.stats{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.grid.two{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));align-items:start}.grid .card{margin-bottom:0}.grid{margin-bottom:14px}.stat{flex-direction:column;gap:2px;display:flex}.stat-label{color:var(--muted);font-size:.84rem}.stat-value{font-size:1.5rem;font-weight:600}.stat-value.ok{color:var(--ok)}.stat-value.danger{color:var(--danger)}.stat-hint{color:var(--muted);font-size:.84rem}.meter{margin-bottom:14px}.meter-head{justify-content:space-between;gap:12px;margin-bottom:6px;font-size:.88rem;display:flex}.meter-track{background:var(--surface-2);border-radius:4px;height:6px;overflow:hidden}.meter-fill{background:var(--accent);border-radius:4px;height:100%;transition:width .4s}.meter-fill.danger{background:var(--danger)}.kv{grid-template-columns:minmax(120px,auto) 1fr;gap:8px 18px;margin:0;font-size:.92rem;display:grid}.kv dt{color:var(--muted)}.kv dd{min-width:0;margin:0}.module-list{margin:0;padding:0;list-style:none}.module-list li{border-top:1px solid var(--border);justify-content:space-between;align-items:center;padding:8px 0;font-size:.92rem;display:flex}.module-list li:first-child{border-top:0}.table-wrap{margin:0 -18px -6px;padding:0 18px;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.92rem}th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:7px 12px 7px 0;font-size:.8rem;font-weight:600}td{border-bottom:1px solid var(--border);vertical-align:top;padding:9px 12px 9px 0}tr:last-child td{border-bottom:0}td .muted{font-size:.86rem}.row-actions{text-align:right;white-space:nowrap}.row-actions .btn{margin-left:6px}.deploy-error{-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;margin-top:4px;display:-webkit-box;overflow:hidden}.availability{margin-top:6px}.badge{background:var(--surface-2);color:var(--muted);white-space:nowrap;border-radius:4px;padding:2px 7px;font-size:.78rem;font-weight:600;display:inline-block}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.btn{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:5px;justify-content:center;align-items:center;gap:7px;padding:7px 13px;font-weight:500;text-decoration:none;display:inline-flex}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.6;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn.danger{background:var(--danger);border-color:var(--danger);color:var(--on-accent)}.btn.ghost{color:var(--muted);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--surface-2);color:var(--text)}.btn.block{width:100%}.btn.small{border-radius:4px;padding:4px 9px;font-size:.86rem}.btn.danger-text{color:var(--danger)}.icon-btn{color:inherit;cursor:pointer;background:0 0;border:0;border-radius:5px;padding:6px;display:inline-flex}.icon-btn:hover{background:var(--surface-2)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.form{flex-direction:column;gap:14px;display:flex}.row{grid-template-columns:1fr 1fr;gap:14px;display:grid}.field{flex-direction:column;gap:5px;min-width:0;display:flex}.field>span{font-size:.88rem;font-weight:500}.field em{color:var(--muted);font-style:normal;font-weight:400}.field small,.check small{color:var(--muted);font-size:.82rem}.field-error,.field small.field-error{color:var(--danger);font-size:.84rem}input:not([type=checkbox]):not([type=radio]),select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:5px;width:100%;min-width:0;padding:7px 10px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}input::placeholder{color:var(--muted);opacity:.7}.inline-select{width:auto;padding:5px 8px;font-size:.9rem}.check{align-items:flex-start;gap:9px;font-size:.92rem;display:flex}.check input{accent-color:var(--accent);margin-top:4px}.segmented{background:var(--surface-2);border-radius:6px;grid-template-columns:1fr 1fr;gap:3px;padding:3px;display:grid}.segmented label{text-align:center;cursor:pointer;color:var(--muted);border-radius:4px;padding:6px 10px;font-size:.9rem}.segmented label.on{background:var(--surface);color:var(--text);border:1px solid var(--border);font-weight:500}.segmented input{opacity:0;pointer-events:none;position:absolute}.actions{justify-content:flex-end;gap:8px;margin-top:6px;display:flex}.alert{background:var(--info-soft);color:var(--info);overflow-wrap:anywhere;border-left:3px solid;border-radius:5px;margin-bottom:16px;padding:9px 12px;font-size:.92rem}.form .alert{margin-bottom:0}.alert.error{background:var(--danger-soft);color:var(--danger)}.alert.success{background:var(--ok-soft);color:var(--ok)}.alert.warn{background:var(--warn-soft);color:var(--warn)}.auth-page{place-items:center;min-height:100%;padding:24px 16px;display:grid}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:14px;width:100%;max-width:400px;padding:28px 26px;display:flex}.auth-card .brand{padding:0}.auth-card p{margin:0}.modal-backdrop{z-index:50;background:#080a128c;place-items:start center;padding:6vh 16px 24px;display:grid;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--surface);border:1px solid var(--border);border-radius:8px;width:100%;max-width:560px;padding:20px 22px 22px;box-shadow:0 12px 40px #00000040}.modal.wide{max-width:780px}.modal-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.modal-head h2{margin:0;font-size:1.1rem}.code{background:var(--surface-2);border-radius:5px;margin:0;padding:14px 16px;font:.84rem/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow-x:auto}textarea{resize:vertical;line-height:1.45}.wrap{overflow-wrap:anywhere}.gap-left{margin-left:8px}.spaced-top{margin-top:10px}.spaced-left{margin-left:8px}.card-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.card-head h2{margin:0}.actions.start{justify-content:flex-start}.actions.center{justify-content:center;margin-top:14px}.head-actions{flex-wrap:wrap;gap:8px;display:flex}.h2-link{margin-left:10px;font-size:.84rem;font-weight:400}.auth-card.wide{max-width:480px}.module-list a{color:inherit;text-decoration:none}.module-list a:hover{color:var(--accent)}.code-input{letter-spacing:.18em;text-align:center;font:1.15rem ui-monospace,SFMono-Regular,Menlo,Consolas,monospace!important}.qr{justify-content:center;display:flex}.qr img{border:1px solid var(--border);image-rendering:pixelated;background:#fff;border-radius:6px;padding:10px}.recovery-codes{background:var(--surface-2);text-align:center;border-radius:5px;grid-template-columns:repeat(2,1fr);gap:8px;margin:0;padding:14px;list-style:none;display:grid}.recovery-codes code{letter-spacing:.06em;background:0 0;font-size:.95rem}details.options{border:1px solid var(--border);border-radius:5px;padding:0 14px}details.options>summary{cursor:pointer;padding:11px 0;font-size:.92rem;font-weight:500}details.options[open]{padding-bottom:14px}details.options[open]>summary{margin-bottom:6px}details.options>*+*{margin-top:14px}.filters{flex-wrap:wrap;align-items:flex-end;gap:14px;margin-bottom:18px;display:flex}.filters .field{flex:200px;max-width:300px}.crumbs{overflow-wrap:anywhere;margin-bottom:14px;font-size:.92rem}.crumb,.file-name{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0}.crumb:hover,button.file-name:hover{text-decoration:underline}.file-name{text-align:left;overflow-wrap:anywhere;align-items:center;gap:8px;display:inline-flex}.file-name.plain{color:var(--text);cursor:default}.file-name .icon{color:var(--muted)}.files-table td:nth-child(2){width:50%}.files-table .check-cell{width:34px;padding-right:0}.files-table .check-cell input{vertical-align:middle;width:16px;height:16px;accent-color:var(--accent);cursor:pointer;margin:0}.files-table tr.selected td{background:var(--accent-soft)}.selection-bar{background:var(--accent-soft);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;padding:8px 12px;font-size:.92rem;display:flex}.selection-bar>span{margin-right:auto;font-weight:600}.drop-zone.over{outline:2px dashed var(--accent);outline-offset:4px}.editor{tab-size:2;white-space:pre;min-height:52vh;font:.86rem/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.logs{color:#d7dbe8;background:#14171c;border-radius:5px;height:300px;padding:12px 14px;font:.8rem/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow-y:auto}.logs .muted{color:#7d859d}.log-line{white-space:pre-wrap;overflow-wrap:anywhere;gap:10px;display:flex}.log-line.err{color:#ff9aa6}.log-line.panel{color:#9cc3f0}.log-time{color:#6f7690;flex:none}.logs.tall{height:380px}.env-list{margin:0 0 12px;padding:0;list-style:none}.env-list li{flex-wrap:wrap;align-items:center;gap:12px;padding:9px 0;display:flex}.env-list li+li{border-top:1px solid var(--border)}.env-list .row-actions{margin-left:auto}.steps{margin:0 0 14px;padding-left:20px;line-height:1.7}.command{border:1px solid var(--border);border-radius:5px;flex-direction:column;gap:12px;margin-bottom:4px;padding:14px;display:flex}.command-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.terminal-card{padding:0;overflow:hidden}.term-host{background:#14171c;height:min(68vh,720px);padding:12px 6px 12px 14px}.term-host .xterm{height:100%}.term-host .xterm-viewport,.term-host .xterm-scrollable-element{background-color:#14171c!important}.terminal-idle{text-align:center;flex-direction:column;align-items:center;gap:12px;padding:36px 22px;display:flex}.terminal-idle p{max-width:520px;color:var(--muted)}.terminal-closed{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;font-size:.92rem;display:flex}.terminal-bar{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px;font-size:.92rem;display:flex}.list-table td{vertical-align:middle}.list-table td .muted{display:block}button.link{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0}button.link:hover{text-decoration:underline}button.link:disabled{cursor:default}.toggle{border:1px solid var(--border);border-radius:5px;display:inline-flex;overflow:hidden}.toggle button{font:inherit;background:var(--surface);color:var(--muted);cursor:pointer;border:0;padding:4px 11px;font-size:.86rem}.toggle button+button{border-left:1px solid var(--border)}.toggle button.active{background:var(--surface-2);color:var(--text);font-weight:500}.grid-wrap{border:1px solid var(--border);border-radius:5px;max-height:62vh;margin:0;padding:0;overflow:auto}.data-grid{font:.82rem/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.data-grid th{background:var(--surface-2);text-transform:none;letter-spacing:0;color:var(--text);border-right:1px solid var(--border);padding:6px 10px;font-size:.8rem;position:sticky;top:0}.data-grid td{border-right:1px solid var(--border);white-space:pre;text-overflow:ellipsis;max-width:420px;padding:5px 10px;overflow:hidden}.data-grid tr:hover td{background:var(--surface-2)}.cell-null{color:var(--muted);font-style:italic}.pager{justify-content:flex-end;align-items:center;gap:8px;margin-top:12px;display:flex}.pager .muted{margin-right:auto}.sql-editor{tab-size:2;margin-bottom:10px;font:.86rem/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.actions.start{flex-wrap:wrap;align-items:center}@media (width<=860px){.shell{grid-template-columns:1fr}.topbar{background:var(--sidebar);color:#fff;z-index:30;align-items:center;gap:10px;padding:10px 14px;display:flex;position:sticky;top:0}.topbar .icon-btn:hover{background:#ffffff1a}.sidebar{z-index:40;width:264px;transition:transform .2s;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.sidebar.open{transform:none}.scrim{z-index:35;background:#080a1280;position:fixed;inset:0}.main{padding-top:22px}.row{grid-template-columns:1fr}.row-actions{text-align:left;white-space:normal}.row-actions .btn{margin:0 6px 6px 0}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.input-suffix{align-items:stretch;display:flex}.input-suffix input{border-top-right-radius:0;border-bottom-right-radius:0;flex:1;min-width:0}.input-suffix>span{border:1px solid var(--border);border-radius:0 var(--radius) var(--radius) 0;background:var(--surface-2,var(--bg));color:var(--muted);white-space:nowrap;border-left:0;align-items:center;padding:0 10px;display:flex}.trap-field{width:1px;height:1px;position:absolute;top:auto;left:-10000px;overflow:hidden}
