:root{--bg:#0a0a0a;--bg-elevated:#111111;--bg-hover:#1a1a1a;--bg-input:#0a0a0a;--border:#262626;--border-strong:#333333;--text:#ededed;--text-muted:#8a8a8a;--text-faint:#5c5c5c;--accent:#ffffff;--accent-fg:#0a0a0a;--accent-hover:#d4d4d4;--link:#3291ff;--link-rgb:50,145,255;--shadow:rgba(0,0,0,0.35);--shadow-strong:rgba(0,0,0,0.45);--callout-bg:rgba(255,255,255,0.02);--radius:8px;--radius-sm:6px;--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--font-mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;--status-progress-bg:rgba(234,179,8,0.14);--status-progress-fg:#f2c94c;--status-running-bg:rgba(45,212,128,0.14);--status-running-fg:#4ade80;--status-failed-bg:rgba(248,113,113,0.14);--status-failed-fg:#f87171;--status-idle-bg:rgba(255,255,255,0.06);--status-idle-fg:#9a9a9a;--skeleton-base:#161616;--skeleton-shine:#232323}[data-theme=light]{--bg:#ffffff;--bg-elevated:#f7f7f7;--bg-hover:#efefef;--bg-input:#ffffff;--border:#e2e2e2;--border-strong:#cccccc;--text:#171717;--text-muted:#5c5c5c;--text-faint:#9a9a9a;--accent:#171717;--accent-fg:#ffffff;--accent-hover:#333333;--link:#0b6bcb;--link-rgb:11,107,203;--shadow:rgba(0,0,0,0.12);--shadow-strong:rgba(0,0,0,0.18);--callout-bg:rgba(0,0,0,0.03);--status-progress-bg:rgba(234,179,8,0.12);--status-progress-fg:#92620a;--status-running-bg:rgba(22,163,74,0.12);--status-running-fg:#15803d;--status-failed-bg:rgba(220,38,38,0.1);--status-failed-fg:#b91c1c;--status-idle-bg:rgba(0,0,0,0.05);--status-idle-fg:#57534e;--skeleton-base:#ececec;--skeleton-shine:#f8f8f8}*{box-sizing:border-box}body,html{height:100%}body{margin:0;font-family:var(--font-sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}a{color:var(--link)}code{font-family:var(--font-mono);font-size:.9em}h1,h2,h3{font-weight:600;letter-spacing:-.01em;margin:0 0 .25rem}h1{font-size:1.5rem}h2{font-size:1.05rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-top:2.5rem;margin-bottom:1rem}.app-shell{display:flex;align-items:stretch;min-height:100%}.sidebar{position:-webkit-sticky;position:sticky;top:0;align-self:flex-start;display:flex;flex-direction:column;gap:1.5rem;width:220px;flex-shrink:0;height:100vh;padding:1.25rem 1rem;border-right:1px solid var(--border);background:var(--bg)}.brand{gap:.6rem;font-weight:600;font-size:.95rem;color:var(--text);text-decoration:none;padding:0 .4rem}.brand,.brand-mark{display:flex;align-items:center}.brand-mark{justify-content:center;width:24px;height:24px;border-radius:6px;background:var(--accent);color:var(--accent-fg);font-size:.75rem;font-weight:700;flex-shrink:0}.sidebar-nav{display:flex;flex-direction:column;gap:.15rem}.sidebar-nav-item{display:block;padding:.5rem .6rem;border-radius:var(--radius-sm);color:var(--text-muted);font-size:.88rem;font-weight:500;text-decoration:none}.sidebar-nav-item:hover{color:var(--text);background:var(--bg-hover)}.main-column{display:flex;flex-direction:column;flex:1 1;min-width:0}.mobile-nav-toggle{display:none;align-items:center;justify-content:center;width:2.2rem;height:2.2rem;padding:0;flex-shrink:0;background:transparent;border-color:var(--border-strong)}.mobile-nav-toggle-icon,.mobile-nav-toggle-icon:after,.mobile-nav-toggle-icon:before{content:"";display:block;width:1.1rem;height:2px;background:var(--text);border-radius:1px}.mobile-nav-toggle-icon{position:relative}.mobile-nav-toggle-icon:before{position:absolute;top:-.35rem;left:0}.mobile-nav-toggle-icon:after{position:absolute;top:.35rem;left:0}.sidebar-backdrop{display:none}@media (max-width:860px){.mobile-nav-toggle{display:inline-flex}.sidebar{position:fixed;inset:0 auto 0 0;z-index:50;transform:translateX(-100%);transition:transform .2s ease}:root[data-nav-open] .sidebar{transform:translateX(0)}.sidebar-backdrop{display:block;position:fixed;inset:0;z-index:45;background:rgba(0,0,0,.5)}}.content-topbar{position:-webkit-sticky;position:sticky;top:0;z-index:10;justify-content:space-between;padding:0 1.5rem;height:56px;border-bottom:1px solid var(--border);background:var(--bg)}.content-topbar,.content-topbar-right{display:flex;align-items:center;gap:1rem}.content-topbar-right{margin-left:auto}.user-pill{display:flex;align-items:center;gap:.75rem;margin:0}.global-search{position:relative;width:260px}.global-search input{width:100%;padding:.4rem .6rem;font-size:.85rem}.global-search-results{position:absolute;top:calc(100% + .4rem);right:0;width:320px;max-height:60vh;overflow-y:auto;padding:.6rem;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-elevated);box-shadow:0 8px 24px var(--shadow);z-index:20}.global-search-group+.global-search-group{margin-top:.6rem;padding-top:.6rem;border-top:1px solid var(--border)}.global-search-group-label{margin:0 0 .3rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint)}.global-search-result{display:block;padding:.35rem .3rem;border-radius:var(--radius-sm);color:var(--text);font-size:.85rem;text-decoration:none}.global-search-result:hover{background:var(--bg-hover)}.add-new-menu{position:relative}.add-new-menu-results{position:absolute;top:calc(100% + .4rem);right:0;width:240px;padding:.4rem;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-elevated);box-shadow:0 8px 24px var(--shadow);z-index:20}.add-new-menu-item{display:flex;flex-direction:column;gap:.1rem;padding:.5rem .6rem;border-radius:var(--radius-sm);text-decoration:none}.add-new-menu-item:hover{background:var(--bg-hover)}.add-new-menu-item-label{color:var(--text);font-size:.85rem;font-weight:600}.add-new-menu-item-description{color:var(--text-faint);font-size:.76rem}.command-palette-overlay{position:fixed;inset:0;z-index:40;display:flex;align-items:flex-start;justify-content:center;padding-top:12vh;background:rgba(0,0,0,.5)}.command-palette-panel{width:min(560px,calc(100vw - 2rem));max-height:70vh;display:flex;flex-direction:column;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-elevated);box-shadow:0 16px 48px var(--shadow-strong);overflow:hidden}.command-palette-input{width:100%;padding:.9rem 1rem;border:none;border-bottom:1px solid var(--border);border-radius:0;background:transparent;font-size:1rem;color:var(--text)}.command-palette-input:focus{outline:none}.command-palette-results{overflow-y:auto;padding:.5rem}.command-palette-item{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;width:100%;padding:.55rem .75rem;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text);font-size:.9rem;text-align:left;cursor:pointer}.command-palette-item.active{background:var(--bg-hover)}.command-palette-item-sublabel{flex-shrink:0;color:var(--text-faint);font-size:.78rem}.shortcuts-overlay{position:fixed;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.5)}.shortcuts-panel{width:min(360px,calc(100vw - 2rem));padding:1.25rem 1.5rem;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-elevated);box-shadow:0 16px 48px var(--shadow-strong)}.shortcuts-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.shortcuts-list{display:grid;grid-template-columns:auto 1fr;grid-gap:.6rem 1rem;gap:.6rem 1rem;margin:0}.shortcuts-list dt{display:flex;gap:.3rem;font-weight:500}.shortcuts-list dd{margin:0;color:var(--text-muted);font-size:.88rem;align-self:center}kbd{display:inline-flex;align-items:center;justify-content:center;min-width:1.5rem;padding:.15rem .4rem;border:solid var(--border-strong);border-width:1px 1px 2px;border-radius:var(--radius-sm);background:var(--bg-input);font-family:var(--font-mono);font-size:.78rem}.btn-danger{background:transparent;color:var(--status-failed-fg);border-color:var(--status-failed-fg)}.btn-danger:hover{background:var(--status-failed-bg)}.env-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem 0;border-bottom:1px solid var(--border);font-size:.85rem}.env-row:last-of-type{border-bottom:none}.env-row form{margin:0}.user-email{font-size:.85rem;color:var(--text-muted)}.site-main{max-width:900px;margin:0 auto;padding:2.5rem 1.5rem 4rem}.btn,button{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.45rem .9rem;border:1px solid transparent;border-radius:var(--radius-sm);font-size:.85rem;font-weight:500;font-family:inherit;cursor:pointer;transition:background-color .12s ease,border-color .12s ease}button{background:var(--accent);color:var(--accent-fg)}button:hover{background:var(--accent-hover)}.btn-secondary{background:transparent;color:var(--text);border-color:var(--border-strong)}.btn-secondary:hover{background:var(--bg-hover)}.field{display:flex;flex-direction:column;font-size:.8rem;color:var(--text-muted);gap:.35rem}input,select,textarea{padding:.5rem .6rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--text);font-size:.9rem;font-family:inherit}textarea{font-family:var(--font-mono);font-size:.82rem;resize:vertical}input::placeholder,textarea::placeholder{color:var(--text-faint)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--link);box-shadow:0 0 0 3px rgba(var(--link-rgb),.15)}a:focus-visible,button:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--link-rgb),.4);border-radius:var(--radius-sm)}.field-checkbox{flex-direction:row;align-items:center;gap:.5rem;cursor:pointer}.field-checkbox input[type=checkbox]{width:1rem;height:1rem;padding:0;accent-color:var(--link);flex-shrink:0}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:.9rem;gap:.9rem;align-items:flex-end}.form-grid .btn-row{display:flex;align-items:flex-end}.panel{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.5rem;margin-bottom:1.5rem}.panel-title{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;margin-bottom:1rem}.callout,.panel-title{color:var(--text-muted)}.callout{margin-top:.9rem;padding:.75rem .9rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--callout-bg);font-size:.8rem;line-height:1.5}.overview-grid{display:grid;grid-template-columns:minmax(220px,320px) 1fr;grid-gap:1.5rem;gap:1.5rem;align-items:start;margin-bottom:1.5rem}.overview-side{display:flex;flex-direction:column;gap:1.5rem}.overview-side .panel{margin-bottom:0}.overview-main{min-width:0}.overview-list{display:flex;flex-direction:column;gap:.65rem;margin:0;padding:0;list-style:none;font-size:.85rem}.overview-list li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.3rem}.overview-list a{font-weight:600;text-decoration:none}.overview-list a:hover{text-decoration:underline}.project-search-row{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.project-search-input{flex:1 1;margin-bottom:0}.view-toggle{display:flex;flex-shrink:0;gap:.25rem}.view-toggle-btn{padding:.45rem .75rem}.view-toggle-btn.active{background:var(--bg-hover);color:var(--text);border-color:var(--border-strong)}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:1rem;gap:1rem;margin-bottom:1.5rem}.project-card{display:flex;flex-direction:column;gap:.5rem;padding:1.1rem 1.25rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);text-decoration:none;transition:background-color .12s ease}.project-card:hover{background:var(--bg-hover)}.project-card-footer,.project-card-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.project-card-footer{margin-top:.25rem}@media (max-width:860px){.overview-grid{grid-template-columns:1fr}}.project-list{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:1.5rem}.project-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.25rem;background:var(--bg-elevated);text-decoration:none;transition:background-color .12s ease}.project-row+.project-row{border-top:1px solid var(--border)}.project-row-selected,.project-row:hover{background:var(--bg-hover)}.project-row-selected{box-shadow:inset 3px 0 0 0 var(--link)}.project-row-main{display:flex;flex-direction:column;gap:.3rem;min-width:0}.project-name{color:var(--text);font-weight:600;font-size:.95rem;text-decoration:none}.project-name:hover{text-decoration:underline}.project-repo{font-family:var(--font-mono);font-size:.78rem;color:var(--text-muted)}.project-row-meta{display:flex;align-items:center;gap:.6rem;flex-shrink:0}.project-url{font-size:.82rem;color:var(--text-muted);text-decoration:none;white-space:nowrap}.project-url:hover{color:var(--link)}.pill{display:inline-flex;align-items:center;background:var(--status-idle-bg);color:var(--status-idle-fg);white-space:nowrap}.pill,.status{padding:.15rem .55rem;border-radius:999px;font-size:.72rem;font-weight:600}.status{display:inline-block}.status-building,.status-pending,.status-queued,.status-tearing_down,.status-tearing_down_requested{background:var(--status-progress-bg);color:var(--status-progress-fg)}.status-running,.status-succeeded{background:var(--status-running-bg);color:var(--status-running-fg)}.status-failed{background:var(--status-failed-bg);color:var(--status-failed-fg)}.status-canceled,.status-destroyed,.status-torn_down{background:var(--status-idle-bg);color:var(--status-idle-fg)}.status-creating,.status-destroy_requested,.status-requested,.status-stop_requested{background:var(--status-progress-bg);color:var(--status-progress-fg)}.status-stopped{background:var(--status-idle-bg);color:var(--status-idle-fg)}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:collapse;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}td,th{text-align:left;padding:.65rem 1rem;border-bottom:1px solid var(--border);font-size:.85rem}thead th{background:var(--bg-elevated);color:var(--text-muted);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:var(--bg-hover)}tbody{background:var(--bg-elevated)}.muted{font-size:.85rem}.eyebrow-link,.muted{color:var(--text-muted)}.eyebrow-link{display:inline-flex;align-items:center;gap:.3rem;font-size:.82rem;text-decoration:none;margin-bottom:1rem}.eyebrow-link:hover{color:var(--text)}.empty-state{border:1px dashed var(--border-strong);border-radius:var(--radius);padding:2rem;text-align:center;color:var(--text-muted);font-size:.9rem;margin-bottom:1.5rem}.log-viewer{background:#000000;border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;max-height:32rem;overflow-y:auto;font-family:var(--font-mono);font-size:.82rem;line-height:1.55;white-space:pre-wrap;word-break:break-all}.log-viewer-line{color:#d4d4d4}.ansi-bold{font-weight:700}.ansi-fg-black{color:#6b7280}.ansi-fg-red{color:#f87171}.ansi-fg-green{color:#4ade80}.ansi-fg-yellow{color:#f2c94c}.ansi-fg-blue{color:#60a5fa}.ansi-fg-magenta{color:#c084fc}.ansi-fg-cyan{color:#22d3ee}.ansi-fg-white{color:#e5e5e5}.ansi-fg-bright-black{color:#9ca3af}.ansi-fg-bright-red{color:#fca5a5}.ansi-fg-bright-green{color:#86efac}.ansi-fg-bright-yellow{color:#fde68a}.ansi-fg-bright-blue{color:#93c5fd}.ansi-fg-bright-magenta{color:#e9d5ff}.ansi-fg-bright-cyan{color:#67e8f9}.ansi-fg-bright-white{color:#ffffff}.log-viewer-line.log-viewer-line-error{color:var(--status-failed-fg)}.log-viewer-line.log-viewer-line-failure{color:var(--status-failed-fg);background:var(--status-failed-bg);border-left:3px solid var(--status-failed-fg);margin-left:-.75rem;padding-left:calc(.75rem - 3px)}.log-viewer-empty{color:var(--text-faint);font-style:italic}.build-step-stepper{display:flex;align-items:center;margin-bottom:1rem}.build-step{display:flex;align-items:center;color:var(--text-faint);font-size:.8rem}.build-step-dot{width:.6rem;height:.6rem;border-radius:50%;background:var(--border-strong);flex-shrink:0}.build-step-label{margin:0 .6rem 0 .4rem;white-space:nowrap}.build-step-connector{width:2rem;height:1px;background:var(--border-strong);margin-right:.2rem}.build-step-done .build-step-dot{background:var(--status-running-fg)}.build-step-done .build-step-label{color:var(--text)}.build-step-done .build-step-connector{background:var(--status-running-fg)}.build-step-active .build-step-dot{background:var(--status-progress-fg);box-shadow:0 0 0 3px var(--status-progress-bg)}.build-step-active .build-step-label{color:var(--text);font-weight:600}.build-step-failed .build-step-dot{background:var(--status-failed-fg)}.build-step-failed .build-step-label{color:var(--status-failed-fg);font-weight:600}.log-viewer-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:.6rem;gap:.75rem}.log-viewer-toolbar .muted{font-family:var(--font-mono)}.env-row-form{display:flex;align-items:center;gap:.35rem}.bulk-user-actions-form{margin-top:.75rem;display:flex;gap:.5rem}.toast-container{position:fixed;bottom:1.25rem;right:1.25rem;z-index:1000;display:flex;flex-direction:column;gap:.5rem;max-width:24rem}.toast{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem 1rem;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--bg-elevated);box-shadow:0 8px 24px var(--shadow);font-size:.88rem;line-height:1.4;animation:toast-in .15s ease-out}.toast span{flex:1 1}.toast-success{border-left:3px solid var(--status-running-fg)}.toast-error{border-left:3px solid var(--status-failed-fg)}.toast-dismiss{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:1.1rem;line-height:1;padding:0}.toast-dismiss:hover{color:var(--text)}@keyframes toast-in{0%{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.toast{animation:none}.sidebar{transition:none}.skeleton{animation:none}}.skeleton{background:linear-gradient(90deg,var(--skeleton-base) 25%,var(--skeleton-shine) 37%,var(--skeleton-base) 63%);background-size:400% 100%;animation:skeleton-shimmer 1.4s ease infinite;border-radius:var(--radius)}@keyframes skeleton-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.skeleton-line{height:.85rem;margin:.5rem 0}.skeleton-title{height:1.75rem;width:12rem;margin-bottom:.75rem}.skeleton-panel{height:6rem;margin-top:1.25rem}.skeleton-table{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.skeleton-row{display:flex;gap:1.5rem;padding:.65rem 1rem;border-bottom:1px solid var(--border)}.skeleton-row:last-child{border-bottom:none}.skeleton-row .skeleton-line{flex:1 1;margin:0}