.btn{display:inline-flex;align-items:center;gap:var(--space-2);border:none;border-radius:var(--radius-md);font-family:var(--font-sans);font-weight:var(--weight-semibold);cursor:pointer;text-decoration:none;white-space:nowrap;transition:background var(--transition-fast),opacity var(--transition-fast),box-shadow var(--transition-fast)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.btn--sm{font-size:var(--text-sm);padding:5px 12px}.btn--md{font-size:var(--text-base);padding:10px 20px}.btn--primary{background:var(--color-primary);color:#fff}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn--secondary{background:var(--color-overlay);color:var(--color-text);border:1px solid var(--color-border)}.btn--secondary:hover:not(:disabled){background:var(--color-border)}.btn--danger{background:var(--color-danger-bg);color:#fff}.btn--danger:hover:not(:disabled){background:var(--color-danger)}.btn--ghost{background:none;border:1px solid var(--color-border);color:var(--color-text-muted)}.btn--ghost:hover:not(:disabled){background:var(--color-overlay);color:var(--color-text)}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--weight-semibold);border:1px solid transparent}.badge:before{content:"";width:6px;height:6px;border-radius:50%;flex-shrink:0;background:currentColor;opacity:.7}.badge--creating{background:var(--badge-creating-bg);color:var(--badge-creating-text);border-color:var(--badge-creating-border)}.badge--creating:before{animation:badge-pulse 1.2s ease-in-out infinite}.badge--running{background:var(--badge-running-bg);color:var(--badge-running-text);border-color:var(--badge-running-border)}.badge--failed{background:var(--badge-failed-bg);color:var(--badge-failed-text);border-color:var(--badge-failed-border)}.badge--deleted,.badge--repo_deleted{background:var(--badge-deleted-bg);color:var(--badge-deleted-text);border-color:var(--badge-deleted-border)}.badge--live{background:var(--badge-running-bg);color:var(--badge-running-text);border-color:var(--badge-running-border)}.badge--connecting,.badge--reconnecting{background:var(--badge-creating-bg);color:var(--badge-creating-text);border-color:var(--badge-creating-border)}.badge--connecting:before,.badge--reconnecting:before{animation:badge-pulse 1.2s ease-in-out infinite}.badge--error{background:var(--badge-failed-bg);color:var(--badge-failed-text);border-color:var(--badge-failed-border)}.badge--ended{background:var(--badge-deleted-bg);color:var(--badge-deleted-text);border-color:var(--badge-deleted-border)}@keyframes badge-pulse{0%,to{opacity:.7;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}}@media(prefers-reduced-motion:reduce){.badge--creating:before,.badge--connecting:before,.badge--reconnecting:before{animation:none}}.form-input{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text);box-sizing:border-box;transition:border-color var(--transition-fast)}.form-input:focus{outline:none;border-color:var(--color-accent)}.form-input--md{border-radius:var(--radius-md);padding:10px 14px;font-size:var(--text-base);font-family:var(--font-sans);width:100%}.form-input--sm{border-radius:var(--radius-sm);padding:5px 8px;font-size:var(--text-sm);font-family:var(--font-sans)}.form-input--mono{font-family:var(--font-mono)}.form-select{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:10px 36px 10px 14px;color:var(--color-text);font-size:var(--text-base);font-family:var(--font-sans);width:100%;box-sizing:border-box;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%238b949e' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;transition:border-color var(--transition-fast)}.form-select:focus{outline:none;border-color:var(--color-accent)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--color-backdrop);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:var(--space-4)}.modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;max-width:440px;box-shadow:var(--shadow-xl)}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-border)}.modal__title{font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text);margin:0}.modal__close{background:none;border:none;color:var(--color-text-muted);font-size:var(--text-sm);cursor:pointer;padding:4px 6px;border-radius:var(--radius-sm);line-height:1}.modal__close:hover{background:var(--color-overlay);color:var(--color-text)}.modal__body{padding:var(--space-6)}.modal__rows{display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-6)}.modal__row{display:flex;align-items:baseline;gap:var(--space-4)}.modal__label{font-size:var(--text-sm);color:var(--color-text-muted);width:68px;flex-shrink:0}.modal__value{font-size:var(--text-base);color:var(--color-text);word-break:break-all}.modal__value--mono{font-family:var(--font-mono);font-size:var(--text-sm)}.modal__warning{font-size:var(--text-sm);color:var(--color-text);margin-bottom:var(--space-6)}.modal__actions{display:flex;gap:var(--space-3)}@media(max-width:480px){.modal__header,.modal__body{padding:var(--space-4)}.modal__actions{flex-wrap:wrap}.modal__actions .btn{flex:1;justify-content:center}}.error-message{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--badge-failed-bg);border:1px solid var(--badge-failed-border);border-radius:var(--radius-md);color:var(--badge-failed-text);font-size:var(--text-sm);margin-top:var(--space-3)}.error-message__text{flex:1}.error-message__dismiss{background:none;border:none;color:inherit;cursor:pointer;opacity:.7;padding:0;line-height:1;flex-shrink:0}.error-message__dismiss:hover{opacity:1}.progress-stages{display:flex;gap:var(--space-4);align-items:center;padding:var(--space-2) 0}.progress-stage{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-muted)}.progress-stage__dot{width:8px;height:8px;border-radius:50%;background:var(--color-border);flex-shrink:0}.progress-stage--active{color:var(--color-warning)}.progress-stage--active .progress-stage__dot{background:var(--color-warning);animation:pulse 1.2s ease-in-out infinite}.progress-stage--done{color:var(--color-success)}.progress-stage--done .progress-stage__dot{background:var(--color-success)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.tabbar{display:flex;gap:var(--space-5);margin-bottom:var(--space-4);position:relative;box-shadow:inset 0 -1px 0 var(--color-border);overflow-x:auto}.tabbar__tab{display:flex;flex-direction:column;align-items:flex-start;flex-shrink:0;background:none;border:none;border-radius:0;color:var(--color-text-muted);cursor:pointer;padding:var(--space-2) var(--space-1) var(--space-3);text-align:left;transition:color var(--transition-base)}.tabbar__tab:hover:not(.tabbar__tab--active){color:var(--color-text);box-shadow:inset 0 -2px 0 var(--color-border)}.tabbar__tab:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px;border-radius:var(--radius-sm)}.tabbar__tab--active{color:var(--color-text)}.tabbar__indicator{position:absolute;left:0;bottom:0;height:2px;background:var(--color-accent);pointer-events:none}.tabbar__indicator--animated{transition:transform .4s cubic-bezier(.65,0,.35,1),width .4s cubic-bezier(.65,0,.35,1)}@media(prefers-reduced-motion:reduce){.tabbar__indicator--animated{transition:none}}.tabbar__label{font-size:var(--text-sm);font-weight:var(--weight-medium);line-height:1.2}.tabbar__desc{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:2px;line-height:1.2}.project-card{background:var(--color-surface);border:1px solid var(--color-border);border-left-width:3px;border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);transition:border-color var(--transition-slow),box-shadow var(--transition-base)}.project-card:hover{box-shadow:var(--shadow-md)}.project-card--flash{border-color:var(--color-success);box-shadow:var(--shadow-success)}.project-card[data-status=running]{border-left-color:var(--color-success)}.project-card[data-status=creating]{border-left-color:var(--color-warning)}.project-card[data-status=failed]{border-left-color:var(--color-danger)}.project-card[data-status=repo_deleted],.project-card[data-status=deleted]{border-left-color:var(--color-border)}.project-card__info{flex:1;min-width:0}.project-card__name{font-size:var(--text-base);font-weight:var(--weight-semibold);margin-bottom:var(--space-1);display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.project-card__meta{font-size:var(--text-sm);color:var(--color-text-muted);display:flex;gap:var(--space-3);flex-wrap:wrap}.project-card__meta a{color:var(--color-accent);text-decoration:none}.project-card__meta a:hover{text-decoration:underline}.project-card__branch{font-family:var(--font-mono);font-size:var(--text-xs);background:var(--color-overlay);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:1px 6px}.project-card__exit-code{font-size:var(--text-xs);font-family:var(--font-mono);color:var(--color-text-muted);background:var(--color-overlay);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:1px 6px}.project-card__actions{display:flex;gap:var(--space-2);flex-shrink:0}.project-card__extras--standalone,.history-panel{display:flex;flex-direction:column;gap:var(--space-2)}.repo-health{font-size:.75rem;font-weight:500;border-radius:4px;padding:1px 6px}.repo-health--warn{color:var(--color-warning, #b45309);background:var(--color-warning-bg, #fef3c7)}@media(prefers-color-scheme:dark){.repo-health--warn{color:#fcd34d;background:#b4530940}}@media(max-width:480px){.project-card{flex-direction:column;gap:var(--space-3);padding:var(--space-4)}.project-card__actions{width:100%}.env-row__copy{opacity:1}}.style-guide{max-width:860px;margin:0 auto;padding:var(--space-8) var(--space-6) 80px}.sg-header{margin-bottom:var(--space-10);border-bottom:1px solid var(--color-border);padding-bottom:var(--space-6)}.sg-header h1{font-size:var(--text-xl);font-weight:var(--weight-bold);margin-bottom:var(--space-2)}.sg-header p{color:var(--color-text-muted)}.sg-content{display:flex;flex-direction:column;gap:var(--space-10)}.sg-section__title{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:var(--space-4);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border-subtle)}.sg-section__body{display:flex;flex-direction:column;gap:var(--space-4)}.sg-row{display:flex;align-items:center;gap:var(--space-4)}.sg-row__label{font-size:var(--text-sm);color:var(--color-text-muted);width:100px;flex-shrink:0}.sg-row__content{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.sg-colors{display:flex;flex-wrap:wrap;gap:var(--space-4)}.sg-color-swatch{display:flex;flex-direction:column;gap:var(--space-1);width:120px}.sg-color-swatch__block{height:40px;border-radius:var(--radius-sm)}.sg-color-swatch__token{font-size:var(--text-2xs);font-family:var(--font-mono);color:var(--color-text-muted)}.sg-color-swatch__label{font-size:var(--text-xs);color:var(--color-text-muted)}.sg-type-stack{display:flex;flex-direction:column;gap:var(--space-4)}.sg-type-stack>div{display:flex;align-items:baseline;gap:var(--space-4)}.sg-type-label{font-size:var(--text-2xs);font-family:var(--font-mono);color:var(--color-text-muted);width:200px;flex-shrink:0}.login-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;gap:var(--space-5);text-align:center;padding:0 var(--space-6)}.login-screen__logo{width:48px;height:48px;border-radius:var(--radius-md);background:var(--gradient-brand);display:flex;align-items:center;justify-content:center;font-size:.9rem;font-weight:800;letter-spacing:-.02em;color:#fff;margin-bottom:var(--space-2);box-shadow:var(--shadow-brand)}.login-screen h1{font-size:var(--text-xl);font-weight:var(--weight-bold);letter-spacing:-.02em}.login-screen__tagline{color:var(--color-text-muted);font-size:var(--text-base);max-width:280px}.login-screen__hint{font-size:var(--text-sm);color:var(--color-text-muted)}.not-invited-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;gap:var(--space-4);text-align:center;padding:0 var(--space-6)}.not-invited-screen__logo{width:48px;height:48px;border-radius:var(--radius-md);background:var(--gradient-brand);display:flex;align-items:center;justify-content:center;font-size:.9rem;font-weight:800;letter-spacing:-.02em;color:#fff;margin-bottom:var(--space-2);box-shadow:var(--shadow-brand)}.not-invited-screen h1{font-size:var(--text-xl);font-weight:var(--weight-bold);letter-spacing:-.02em}.not-invited-screen p{color:var(--color-text-muted)}.not-invited-screen__divider{width:40px;height:1px;background:var(--color-border)}.not-invited-screen__hint{font-size:var(--text-sm)}.sidebar{width:220px;flex-shrink:0;background:var(--color-surface);border-right:1px solid var(--color-border-subtle);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;z-index:var(--z-sticky)}.sidebar__brand{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-5) var(--space-4);border-bottom:1px solid var(--color-border-subtle)}.sidebar__mark{font-size:.65rem;font-weight:800;letter-spacing:-.02em;width:28px;height:28px;border-radius:var(--radius-sm);background:var(--gradient-brand);color:#fff;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar__mark--sm{width:24px;height:24px;font-size:.6rem}.sidebar__name{font-weight:var(--weight-semibold);font-size:var(--text-sm);color:var(--color-text);white-space:nowrap}.sidebar__nav{flex:1;padding:var(--space-3) var(--space-2);display:flex;flex-direction:column;gap:2px}.sidebar__nav-item{display:flex;align-items:center;gap:var(--space-2);padding:7px var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-muted);background:none;border:none;cursor:pointer;width:100%;text-align:left;transition:background var(--transition-fast),color var(--transition-fast)}.sidebar__nav-item:hover{background:var(--color-overlay);color:var(--color-text)}.sidebar__nav-item--active{background:var(--color-overlay);color:var(--color-text);font-weight:var(--weight-semibold)}.sidebar__footer{padding:var(--space-3) var(--space-3);border-top:1px solid var(--color-border-subtle);display:flex;flex-direction:column;gap:var(--space-2)}.sidebar__user{display:flex;align-items:center;gap:var(--space-2);overflow:hidden}.sidebar__avatar{width:26px;height:26px;border-radius:50%;border:1px solid var(--color-border);flex-shrink:0}.sidebar__avatar-fallback{width:26px;height:26px;border-radius:50%;background:var(--color-overlay);border:1px solid var(--color-border);display:flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-muted);flex-shrink:0}.sidebar__username{font-size:var(--text-sm);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__footer-actions{display:flex;gap:var(--space-1)}.sidebar__icon-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);border:none;background:none;color:var(--color-text-muted);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.sidebar__icon-btn:hover{background:var(--color-overlay);color:var(--color-text)}.sidebar__icon-btn--danger:hover{background:#f851491a;color:var(--color-danger)}.sidebar-mobile-bar{display:none;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-border-subtle);position:sticky;top:0;z-index:var(--z-sticky)}.sidebar-mobile-toggle{margin-left:auto;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--color-text-muted);cursor:pointer;padding:4px;border-radius:var(--radius-sm)}.sidebar-mobile-toggle:hover{color:var(--color-text)}.sidebar-backdrop{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:var(--color-backdrop);z-index:49}@media(max-width:768px){.sidebar-mobile-bar{display:flex}.sidebar-backdrop{display:block}.sidebar{position:fixed;top:0;left:-220px;height:100vh;transition:left var(--transition-base);z-index:50;box-shadow:var(--shadow-xl)}.sidebar--open{left:0}}.report-issue__form{display:flex;flex-direction:column;gap:var(--space-4)}.report-issue__destination{margin:0;color:var(--color-text-muted);font-size:var(--text-sm)}.report-issue__field{display:flex;flex-direction:column;gap:var(--space-2);color:var(--color-text);font-size:var(--text-sm);font-weight:var(--weight-medium)}.report-issue__field textarea{min-height:72px;resize:vertical;font-weight:var(--weight-normal)}.report-issue__error{margin:0;color:var(--color-danger);font-size:var(--text-sm)}.report-issue__actions{justify-content:flex-end;margin-top:var(--space-2)}.report-issue__success p{margin-top:0;color:var(--color-text)}.report-issue__success a{color:var(--color-accent);overflow-wrap:anywhere}@media(max-width:480px){.report-issue__actions .btn{flex:1;justify-content:center}}.report-issue__diagnostics{display:flex;flex-direction:column;gap:var(--space-2)}.report-issue__toggle{display:flex;align-items:center;gap:var(--space-2);color:var(--color-text);font-size:var(--text-sm);font-weight:var(--weight-medium)}.report-issue__review summary{color:var(--color-text-muted);cursor:pointer;font-size:var(--text-sm)}.report-issue__review-note{margin:var(--space-2) 0;color:var(--color-text-muted);font-size:var(--text-xs)}.report-issue__events{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.report-issue__event{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs)}.report-issue__event--excluded .report-issue__event-label,.report-issue__event--excluded .report-issue__event-time{opacity:.5;text-decoration:line-through}.report-issue__event-label{flex:1;color:var(--color-text);overflow-wrap:anywhere}.report-issue__event-count{color:var(--color-text-muted)}.report-issue__event-time{color:var(--color-text-muted);white-space:nowrap}@media(max-width:480px){.report-issue__event{flex-wrap:wrap}}.app-layout{display:flex;min-height:100vh}.app-layout__content{flex:1;min-width:0;display:flex;flex-direction:column}.app-banner{display:flex;align-items:center;gap:var(--space-3);padding:6px var(--space-6);font-size:var(--text-sm);font-weight:var(--weight-normal);color:var(--color-text-muted);border-bottom:1px solid var(--color-border);background:var(--color-surface)}.app-banner--warn{background:var(--color-warn-surface);color:var(--color-warning);border-bottom-color:var(--color-warn-border);font-weight:var(--weight-semibold);justify-content:center}.app-banner--info{justify-content:space-between}.banner-btn{background:none;border:none;padding:0;cursor:pointer;color:var(--color-accent);font-size:var(--text-sm);font-weight:var(--weight-medium);white-space:nowrap;text-decoration:underline;text-underline-offset:2px}.banner-btn:hover{opacity:.8}.banner-btn--pill{border:1px solid currentColor;border-radius:var(--radius-sm);padding:3px 10px;text-decoration:none;font-size:var(--text-xs);font-weight:var(--weight-semibold)}.cmd-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--color-backdrop);z-index:var(--z-modal);display:flex;align-items:flex-start;justify-content:center;padding-top:15vh}.cmd-palette{width:100%;max-width:560px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);overflow:hidden;margin:0 var(--space-4)}.cmd-input-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border-subtle)}.cmd-search-icon{color:var(--color-text-muted);flex-shrink:0}.cmd-input{flex:1;background:none;border:none;outline:none;font-size:var(--text-base);color:var(--color-text);font-family:var(--font-sans)}.cmd-input::placeholder{color:var(--color-text-muted)}.cmd-esc-hint{background:var(--color-overlay);border:1px solid var(--color-border);border-radius:4px;font-family:var(--font-mono);font-size:var(--text-xs);padding:2px 6px;color:var(--color-text-muted);flex-shrink:0}.cmd-results{list-style:none;margin:0;padding:var(--space-2) 0;max-height:360px;overflow-y:auto}.cmd-result{display:flex;align-items:center;gap:var(--space-2);padding:9px var(--space-4);cursor:pointer;transition:background var(--transition-fast)}.cmd-result--selected{background:var(--color-overlay)}.cmd-result__label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cmd-result__sub{font-size:var(--text-xs);color:var(--color-text-muted);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cmd-result__tag{font-size:var(--text-2xs);font-weight:var(--weight-medium);color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:1px 6px;flex-shrink:0;text-transform:uppercase;letter-spacing:.04em}.cmd-empty{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted);font-size:var(--text-sm);margin:0}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-6)}.page-header__text{min-width:0}.page-header__title{font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-text);margin:0;line-height:1.3}.page-header__desc{font-size:var(--text-sm);color:var(--color-text-muted);margin:var(--space-1) 0 0;line-height:1.5}.page-header__actions{flex-shrink:0;display:flex;align-items:center;gap:var(--space-2)}.deploy-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);margin-bottom:var(--space-8)}.deploy-card__heading{font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-4)}.template-select-group{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.template-desc{font-size:var(--text-sm);color:var(--color-text-muted);margin:0;line-height:1.4}.repo-fields{display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-3)}.repo-picker{position:relative}.repo-picker__input-row{display:flex;align-items:center;position:relative}.repo-picker__input{flex:1}.repo-picker__clear{position:absolute;right:32px;background:none;border:none;color:var(--color-text-muted);cursor:pointer;font-size:var(--text-sm);padding:2px 4px;line-height:1}.repo-picker__clear:hover{color:var(--color-text)}.repo-picker__refresh{flex-shrink:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;margin-left:var(--space-2);background:none;border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;transition:color var(--transition-fast),border-color var(--transition-fast)}.repo-picker__refresh:hover{color:var(--color-text);border-color:var(--color-border)}.repo-picker__refresh:disabled{opacity:.4;cursor:default}@keyframes repo-spin{to{transform:rotate(360deg)}}.repo-picker__refresh-icon--spin{animation:repo-spin .7s linear infinite}.repo-picker__manual{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-1)}.repo-picker__manual-label{font-size:var(--text-xs);color:var(--color-text-muted);font-weight:var(--weight-medium)}.repo-picker__dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:var(--z-dropdown);max-height:240px;overflow-y:auto}.repo-picker__item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;padding:9px 14px;background:none;border:none;color:var(--color-text);font-size:var(--text-sm);font-family:var(--font-sans);text-align:left;cursor:pointer;border-bottom:1px solid var(--color-border-subtle)}.repo-picker__item:last-child{border-bottom:none}.repo-picker__item:hover{background:var(--color-overlay)}.repo-picker__item--muted{color:var(--color-text-muted);cursor:default}.repo-picker__item--muted:hover{background:none}.repo-picker__name{font-family:var(--font-mono);font-size:var(--text-xs)}.repo-picker__badge{font-size:var(--text-2xs);padding:1px 7px;border-radius:var(--radius-full);background:var(--color-overlay);color:var(--color-text-muted);border:1px solid var(--color-border);white-space:nowrap;flex-shrink:0}.repo-picker__warning{font-size:var(--text-sm);color:var(--color-warning);margin:0;padding:8px 12px;background:var(--color-warn-subtle-surface);border:1px solid var(--color-warn-subtle-border);border-radius:var(--radius-md)}.repo-picker__ok{font-size:var(--text-sm);color:var(--color-success);margin:0;padding:8px 12px;background:var(--color-ok-surface);border:1px solid var(--color-ok-border);border-radius:var(--radius-md)}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.repo-picker__skeleton{cursor:default;pointer-events:none}.repo-picker__skeleton:hover{background:none}.repo-picker__skeleton-name,.repo-picker__skeleton-badge{border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--color-overlay) 25%,var(--color-border) 50%,var(--color-overlay) 75%);background-size:800px 100%;animation:shimmer 1.4s infinite linear}.repo-picker__skeleton-name{height:12px;width:55%}.repo-picker__skeleton-badge{height:12px;width:14%}.deploy-form-row{display:flex;gap:var(--space-3);align-items:center;margin-top:var(--space-3)}.deploy-form-row__name{flex:1}.deploy-form-row__port{width:110px;flex-shrink:0}@media(max-width:480px){.deploy-form-row{flex-wrap:wrap}.deploy-form-row__name{width:100%;flex:none}.deploy-form-row__port{width:90px}.deploy-card{padding:var(--space-4)}}.projects-list{display:flex;flex-direction:column;gap:var(--space-3)}.empty{color:var(--color-text-muted);text-align:center;padding:48px 0}.projects-filter{margin-bottom:var(--space-3)}.empty-state{padding:var(--space-10) 0 var(--space-6);text-align:center}.empty-state__icon{width:56px;height:56px;border-radius:var(--radius-lg);background:var(--color-overlay);border:1px solid var(--color-border);display:inline-flex;align-items:center;justify-content:center;font-size:1.75rem;margin-bottom:var(--space-4)}.empty-state__headline{font-size:var(--text-xl);font-weight:var(--weight-bold);letter-spacing:-.02em;margin-bottom:var(--space-2)}.empty-state__body{font-size:var(--text-base);color:var(--color-text-muted);margin-bottom:var(--space-8);max-width:400px;margin-left:auto;margin-right:auto}.empty-state__cards{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);text-align:left}.onboard-card{border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-3);background:var(--color-surface);transition:border-color var(--transition-slow),box-shadow var(--transition-base),transform var(--transition-base)}.onboard-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-brand);transform:translateY(-1px)}.onboard-card__icon{width:36px;height:36px;border-radius:var(--radius-sm);background:var(--color-overlay);border:1px solid var(--color-border);display:flex;align-items:center;justify-content:center;font-size:1.1rem;line-height:1}.onboard-card__title{font-size:var(--text-base);font-weight:var(--weight-semibold);margin:0}.onboard-card__desc{font-size:var(--text-sm);color:var(--color-text-muted);margin:0;flex:1;line-height:1.6}@media(max-width:560px){.empty-state__cards{grid-template-columns:1fr}.empty-state__headline{font-size:var(--text-lg)}}.project-card--skeleton{pointer-events:none}@keyframes shimmer{0%{background-position:-600px 0}to{background-position:600px 0}}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--color-overlay) 25%,var(--color-border) 50%,var(--color-overlay) 75%);background-size:1200px 100%;animation:shimmer 1.4s infinite linear}.skeleton--name{height:16px;width:180px;margin-bottom:var(--space-2)}.skeleton--meta{height:12px;width:300px}.skeleton--btn{height:30px;width:68px;border-radius:var(--radius-md)}.toast{position:fixed;bottom:var(--space-6);right:var(--space-6);z-index:calc(var(--z-modal) + 10);padding:10px 16px;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-medium);box-shadow:var(--shadow-lg);animation:toast-in .15s ease;pointer-events:none}.toast--success{background:var(--color-ok-surface);border:1px solid var(--color-ok-border);color:var(--color-success)}.toast--info{background:var(--color-info-surface);border:1px solid var(--color-info-border);color:var(--color-accent)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.app-screen{display:flex;min-height:100vh}.app-content{flex:1;min-width:0;display:flex;flex-direction:column}.app-main{max-width:900px;width:100%;margin:var(--space-10) auto;padding:0 var(--space-6)}.app-topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-6)}.app-topbar__title{font-size:var(--text-lg);font-weight:var(--weight-semibold);margin:0}.shortcuts-hint{background:none;border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted);font-size:var(--text-xs);width:22px;height:22px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1}.shortcuts-hint:hover{border-color:var(--color-text-muted);color:var(--color-text)}.shortcuts-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.shortcuts-table td{padding:var(--space-2) var(--space-3);vertical-align:middle}.shortcuts-table td:first-child{width:80px}.shortcuts-table tr:not(:last-child) td{border-bottom:1px solid var(--color-border-subtle)}kbd{background:var(--color-overlay);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--text-xs);padding:2px 7px}@media(max-width:768px){.app-main{margin:var(--space-6) auto;padding:0 var(--space-4)}}.ps-root{min-height:100vh;display:flex;flex-direction:column;background:var(--color-bg)}.ps-header{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-8);border-bottom:1px solid var(--color-border-subtle);background:var(--color-surface);position:sticky;top:0;z-index:var(--z-sticky);flex-wrap:wrap}.ps-back{background:none;border:none;color:var(--color-text-muted);font-size:var(--text-sm);cursor:pointer;padding:0;white-space:nowrap;flex-shrink:0}.ps-back:hover{color:var(--color-text)}.ps-header__center{display:flex;align-items:center;gap:var(--space-2);flex:1;min-width:0;flex-wrap:wrap}.ps-header__name{font-size:var(--text-lg);font-weight:var(--weight-semibold);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ps-exit-code{font-size:var(--text-xs);font-family:var(--font-mono);color:var(--color-text-muted);background:var(--color-overlay);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:1px 6px}.ps-header__actions{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.ps-body{display:flex;flex:1;min-height:0;max-width:1012px;width:100%;margin:0 auto}.ps-sidebar{width:220px;flex-shrink:0;border-right:1px solid var(--color-border-subtle);padding:var(--space-6) 0 var(--space-10);position:sticky;top:57px;height:calc(100vh - 57px);overflow-y:auto}.ps-nav-group{padding:0 var(--space-3) var(--space-5)}.ps-nav-group+.ps-nav-group{border-top:1px solid var(--color-border-subtle);padding-top:var(--space-5);margin-top:var(--space-1)}.ps-nav-group__label{display:block;font-size:.7rem;font-weight:var(--weight-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);padding:0 var(--space-3) var(--space-2)}.ps-nav-item{display:flex;align-items:center;gap:var(--space-2);width:100%;background:none;border:none;border-left:2px solid transparent;border-radius:0 var(--radius-md) var(--radius-md) 0;color:var(--color-text-muted);font-size:var(--text-sm);font-family:var(--font-sans);padding:var(--space-2) var(--space-3);cursor:pointer;text-align:left;transition:color var(--transition-fast),background var(--transition-fast),border-color var(--transition-fast)}.ps-nav-item:hover{color:var(--color-text);background:var(--color-overlay)}.ps-nav-item--active{color:var(--color-text);background:var(--color-overlay);border-left-color:var(--color-accent);font-weight:var(--weight-medium)}.ps-content{flex:1;min-width:0;padding:var(--space-8) var(--space-8)}.ps-section{display:flex;flex-direction:column;gap:var(--space-4)}.ps-section__title{font-size:var(--text-sm);font-weight:var(--weight-semibold);margin:0}.ps-section__lead{font-size:var(--text-sm);color:var(--color-text-muted);margin:0}.ps-section--logs{height:calc(100vh - 120px);display:flex;flex-direction:column;gap:var(--space-2)}.ps-logs__status{flex-shrink:0}.ps-info-grid{border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);overflow:hidden}.ps-info-row{display:flex;align-items:baseline;gap:var(--space-4);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border-subtle)}.ps-info-row:last-child{border-bottom:none}.ps-info-label{font-size:var(--text-sm);color:var(--color-text-muted);width:90px;flex-shrink:0}.ps-info-value{font-size:var(--text-sm);flex:1;min-width:0}.ps-info-value a{color:var(--color-accent);text-decoration:none}.ps-info-value a:hover{text-decoration:underline}.ps-info-value--mono{font-family:var(--font-mono)}.ps-info-value--alias{font-size:var(--text-xs);margin-left:var(--space-1)}.ps-muted{color:var(--color-text-muted)}.ps-build-log{border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);overflow:hidden}.ps-build-log__header{font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-muted);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border-subtle);background:var(--color-overlay)}.ps-log-output{margin:0;background:var(--color-bg);padding:var(--space-3);font-size:var(--text-xs);font-family:var(--font-mono);color:var(--color-text-muted);max-height:300px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.ps-log-output--full{max-height:100%;flex:1;min-height:0;border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg)}.ps-progress{padding:var(--space-2) 0}.ps-alert{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm)}.ps-alert--warn{background:var(--color-warning-bg, #fef3c7);color:var(--color-warning, #b45309);border:1px solid var(--color-warning, #b45309)}@media(prefers-color-scheme:dark){.ps-alert--warn{background:#b4530933;color:#fcd34d;border-color:#fcd34d4d}}.ps-danger-zone{margin-top:var(--space-6);padding:var(--space-5);border:1px solid var(--color-danger, #dc2626);border-radius:var(--radius-lg);opacity:.7;transition:opacity var(--transition-base)}.ps-danger-zone:hover{opacity:1}.ps-danger-zone__title{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-danger, #dc2626);margin:0 0 var(--space-2)}.ps-danger-zone__body{font-size:var(--text-sm);color:var(--color-text-muted);margin:0 0 var(--space-3)}.ps-metrics{display:flex;flex-direction:column;gap:var(--space-5);max-width:480px}.ps-metric__header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--space-2)}.ps-metric__label{font-size:var(--text-sm);font-weight:var(--weight-medium)}.ps-metric__value{font-size:var(--text-sm);font-family:var(--font-mono);color:var(--color-text-muted)}.ps-metric__limit{color:var(--color-text-muted);opacity:.6}.ps-metric-bar{height:8px;background:var(--color-overlay);border-radius:99px;overflow:hidden;border:1px solid var(--color-border-subtle)}.ps-metric-bar__fill{height:100%;background:var(--color-success);border-radius:99px;transition:width .4s ease;min-width:2px}.ps-metric-bar__fill--warn{background:var(--color-warning, #f59e0b)}.ps-metric-bar__fill--danger{background:var(--color-danger, #dc2626)}.ps-metrics__note{font-size:var(--text-xs);color:var(--color-text-muted);margin:0}.ps-loading{max-width:820px;margin:var(--space-10) auto;padding:0 var(--space-6);display:flex;flex-direction:column;gap:var(--space-3)}.ps-skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--color-overlay) 25%,var(--color-border) 50%,var(--color-overlay) 75%);background-size:1200px 100%;animation:shimmer 1.4s infinite linear}.ps-skeleton--name{height:24px;width:240px}.ps-skeleton--meta{height:16px;width:380px}.ps-not-found{max-width:820px;margin:var(--space-10) auto;padding:0 var(--space-6);display:flex;flex-direction:column;gap:var(--space-3)}@media(max-width:680px){.ps-header{padding:var(--space-3) var(--space-4);gap:var(--space-2)}.ps-body{flex-direction:column}.ps-sidebar{width:100%;height:auto;position:static;border-right:none;border-bottom:1px solid var(--color-border-subtle);padding:var(--space-2) 0;display:flex;flex-direction:row;overflow-x:auto;gap:0}.ps-nav-group{display:flex;flex-direction:row;padding:0 var(--space-1);border-top:none!important;margin-top:0!important;padding-top:0!important;padding-bottom:0!important}.ps-nav-group__label{display:none}.ps-nav-item{white-space:nowrap;border-left:none;border-bottom:2px solid transparent;border-radius:0;padding:var(--space-2) var(--space-3)}.ps-nav-item--active{border-bottom-color:var(--color-accent);background:none}.ps-content{padding:var(--space-5) var(--space-4)}}.wh-status{font-size:var(--text-sm);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid}.wh-status--ok{color:var(--color-success);background:var(--color-ok-surface);border-color:var(--color-ok-border)}.wh-status--warn{color:var(--color-warning);background:var(--color-warn-subtle-surface);border-color:var(--color-warn-subtle-border)}.wh-connect{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.wh-error{font-size:var(--text-sm);color:var(--color-danger);margin:0}.wh-row{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);flex-wrap:wrap}.wh-row__label{font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-muted);min-width:90px;flex-shrink:0}.wh-row__value{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text);flex:1;word-break:break-all}.wh-row__value--secret{letter-spacing:.05em}.wh-manual-toggle{background:none;border:none;font-size:var(--text-sm);color:var(--color-text-muted);cursor:pointer;padding:0;text-align:left}.wh-manual-toggle:hover{color:var(--color-text)}.wh-manual{font-size:var(--text-sm);line-height:1.7;color:var(--color-text);padding-left:var(--space-5);margin:0}.wh-manual li{margin-bottom:var(--space-1)}.wh-manual code{font-family:var(--font-mono);font-size:var(--text-xs);background:var(--color-overlay);padding:1px 5px;border-radius:var(--radius-sm)}.build-settings-form{display:flex;flex-direction:column;gap:var(--space-5);max-width:560px}.build-settings-field{display:flex;flex-direction:column;gap:var(--space-1)}.build-settings-label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text)}.build-settings-hint{font-size:var(--text-xs);color:var(--color-text-muted);margin:0}.build-settings-actions{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.admin-screen{min-height:100vh;background:var(--color-bg)}.admin-main{max-width:900px;width:100%;margin:var(--space-10) auto;padding:0 var(--space-6)}.admin-users-table,.admin-invites-table{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);border-collapse:separate;border-spacing:0;overflow:hidden}.admin-user-row:last-child td,.admin-invite-row:last-child td{border-bottom:none}.admin-section h2{font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-text);margin:0 0 var(--space-5) 0}.admin-users-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.admin-users-table th{text-align:left;padding:var(--space-2) var(--space-3);font-weight:var(--weight-semibold);color:var(--color-text-muted);border-bottom:1px solid var(--color-border)}.admin-user-row td{padding:var(--space-3) var(--space-3);border-bottom:1px solid var(--color-border-subtle);vertical-align:middle}.admin-user-row--blocked{opacity:.6}.admin-user-row__login{display:flex;align-items:center;gap:var(--space-2)}.admin-user-row__link{display:flex;align-items:center;gap:var(--space-2);color:var(--color-text);text-decoration:none}.admin-user-row__link:hover{text-decoration:underline}.admin-user-row__avatar{width:24px;height:24px;border-radius:var(--radius-full);border:1px solid var(--color-border);flex-shrink:0}.admin-user-row__avatar--fallback{display:flex;align-items:center;justify-content:center;background:var(--color-overlay);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-text-muted)}.admin-user-row__you{font-size:var(--text-xs);color:var(--color-text-muted);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:1px 6px}.admin-user-row__actions{display:flex;gap:var(--space-2);justify-content:flex-end}.admin-users-table__empty{text-align:center;color:var(--color-text-muted);padding:var(--space-8) 0}.admin-role-badge{display:inline-block;padding:2px 10px;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-semibold);border:1px solid transparent}.admin-role-badge--admin{background:transparent;color:var(--color-accent);border-color:var(--color-border)}.admin-role-badge--member{background:transparent;color:var(--color-text-muted);border-color:transparent;padding-left:0;font-weight:400}.admin-role-badge--blocked{background:var(--badge-failed-bg);color:var(--badge-failed-text);border-color:var(--badge-failed-border)}.admin-users-toolbar{display:flex;gap:var(--space-3);margin-bottom:var(--space-4)}.admin-users-toolbar__search{flex:1;min-width:0}.admin-users-toolbar .form-select{flex:0 0 auto;width:auto;min-width:140px;padding-top:5px;padding-bottom:5px;font-size:var(--text-sm);border-radius:var(--radius-sm)}.admin-users-table__clear{background:none;border:none;padding:0;color:var(--color-accent);font:inherit;cursor:pointer}.admin-users-table__clear:hover{text-decoration:underline}.admin-row-menu__trigger{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:none;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer}.admin-row-menu__trigger:hover:not(:disabled),.admin-row-menu__trigger[aria-expanded=true]{background:var(--color-surface-raised);border-color:var(--color-border);color:var(--color-text)}.admin-row-menu__trigger:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.admin-row-menu__trigger:disabled{opacity:.5;cursor:default}.admin-row-menu__list{position:fixed;z-index:100;min-width:160px;padding:var(--space-1);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);display:flex;flex-direction:column}.admin-row-menu__item{text-align:left;background:none;border:none;border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);font:inherit;font-size:var(--text-sm);color:var(--color-text);cursor:pointer}.admin-row-menu__item:hover,.admin-row-menu__item:focus-visible{background:var(--color-surface);outline:none}.admin-row-menu__item--danger{color:var(--color-danger)}.admin-confirm__text{margin:0 0 var(--space-5) 0;color:var(--color-text-muted);font-size:var(--text-sm)}.admin-confirm__actions{display:flex;justify-content:flex-end;gap:var(--space-2)}.admin-invites-toolbar{margin-bottom:var(--space-4)}.admin-invite-created{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;background:var(--color-info-surface);border:1px solid var(--color-info-border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);font-size:var(--text-sm)}.admin-invite-created__label{color:var(--color-text-muted);white-space:nowrap}.admin-invite-created__url{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs);color:var(--color-text)}.admin-invite-created__dismiss{background:none;border:none;color:var(--color-text-muted);cursor:pointer;padding:0 var(--space-1);font-size:var(--text-sm);line-height:1;flex-shrink:0}.admin-invite-created__dismiss:hover{color:var(--color-text)}.admin-invites-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.admin-invites-table th{text-align:left;padding:var(--space-2) var(--space-3);font-weight:var(--weight-semibold);color:var(--color-text-muted);border-bottom:1px solid var(--color-border)}.admin-invite-row td{padding:var(--space-3) var(--space-3);border-bottom:1px solid var(--color-border-subtle);vertical-align:middle}.admin-invite-row__code{display:flex;align-items:center;gap:var(--space-2);font-family:var(--font-mono, monospace)}.admin-invite-row__copy{display:inline-flex;align-items:center;background:none;border:none;border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;padding:var(--space-1);line-height:1}.admin-invite-row__copy:hover{color:var(--color-text)}.admin-invite-row__date{color:var(--color-text-muted);white-space:nowrap}.admin-invite-row__used{color:var(--color-text-muted)}.admin-invite-row__actions{text-align:right}.admin-invite-status{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);text-transform:capitalize}.admin-invite-status__dot{width:8px;height:8px;border-radius:var(--radius-full);background:currentColor;flex-shrink:0}.admin-invite-status--unused{color:var(--color-success)}.admin-invite-status--used{color:var(--color-text-muted)}.admin-invite-status--expired{color:var(--color-warning)}.admin-status-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2);margin-bottom:var(--space-4)}.admin-status-updated{font-size:var(--text-xs);color:var(--color-text-muted)}.admin-status-refresh{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);cursor:pointer}.admin-status-refresh:hover:not(:disabled){background:var(--color-surface-raised);color:var(--color-text)}.admin-status-refresh:disabled{cursor:default}.admin-status-refresh--loading svg{animation:admin-status-spin 1s linear infinite}@keyframes admin-status-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.admin-status-refresh--loading svg{animation-duration:3s}}.admin-stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-3);margin-bottom:var(--space-5)}.admin-stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5)}.admin-stat-card__label{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-2)}.admin-stat-card__value{font-size:2rem;font-weight:var(--weight-semibold);color:var(--color-text);line-height:1;font-variant-numeric:tabular-nums}.admin-stat-card__sub{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-2)}.admin-health-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:var(--color-text-muted)}.admin-health-dot--ok{background:var(--color-success)}.admin-health-dot--warn{background:var(--color-warning)}.admin-health-dot--error{background:var(--color-danger)}.admin-health-dot--neutral{background:var(--color-text-muted);opacity:.5}.admin-status-alerts{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-5)}.admin-status-alert{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-semibold);border:1px solid transparent}.admin-status-alert--info{background:var(--color-info-surface);color:var(--color-accent);border-color:var(--color-info-border)}.admin-status-alert--warn{background:var(--color-warn-surface);color:var(--color-warning);border-color:var(--color-warn-border)}.admin-status-version{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-4)}.admin-status-version code{font-family:var(--font-mono, monospace)}.admin-create-invite{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-2) 0}.admin-create-invite__label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text)}.admin-create-invite__actions{display:flex;justify-content:flex-end;gap:var(--space-3)}.admin-skeleton-rows{display:flex;flex-direction:column;gap:var(--space-2)}.admin-skeleton-row{height:40px;border-radius:var(--radius-md)}.admin-skeleton-stat{height:88px;border-radius:var(--radius-lg)}.admin-empty{padding:var(--space-8) 0}.admin-empty .empty-state__headline{font-size:var(--text-lg)}.admin-empty .empty-state__body{margin-bottom:var(--space-5)}@media(prefers-reduced-motion:reduce){.admin-skeleton-row,.admin-skeleton-stat{animation:none}}.settings-screen{min-height:100vh;background:var(--color-bg);display:flex;flex-direction:column}.settings-main{flex:1;max-width:900px;width:100%;margin:var(--space-10) auto;padding:0 var(--space-6)}.settings-section{display:grid;grid-template-columns:220px 1fr;gap:var(--space-8);padding-bottom:var(--space-10);border-bottom:1px solid var(--color-border-subtle)}.settings-section+.settings-section{padding-top:var(--space-10)}.settings-section--last{border-bottom:none}.settings-section__heading{font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--color-text);margin:0 0 var(--space-1)}.settings-section__desc{font-size:var(--text-sm);color:var(--color-text-muted);margin:0;line-height:1.5}.settings-section__card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.settings-section__card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border-subtle)}.settings-section__card-title{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text)}.settings-section--last .settings-section__card{padding:var(--space-5)}.settings-empty{font-size:var(--text-sm);color:var(--color-text-muted);padding:var(--space-5) var(--space-5);text-align:center}.tokens-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.tokens-table th{text-align:left;font-weight:var(--weight-medium);color:var(--color-text-muted);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;padding:0 var(--space-5) var(--space-3);border-bottom:1px solid var(--color-border-subtle);padding-top:var(--space-4)}.tokens-table td{padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--color-border-subtle);vertical-align:middle}.tokens-table tr:last-child td{border-bottom:none}.tokens-table__name{font-weight:var(--weight-medium);color:var(--color-text)}.tokens-table__date{color:var(--color-text-muted);white-space:nowrap}.tokens-table__action{text-align:right;width:36px}.token-row-menu{position:relative;display:inline-flex}.token-row-menu__trigger{background:none;border:none;border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:4px;transition:background var(--transition-fast),color var(--transition-fast)}.token-row-menu__trigger:hover:not(:disabled){background:var(--color-overlay);color:var(--color-text)}.token-row-menu__trigger:disabled{opacity:.4;cursor:default}.token-row-menu__list{position:fixed;z-index:200;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:0 4px 16px #0000004d;min-width:140px;padding:var(--space-1) 0;outline:none}.token-row-menu__item{background:none;border:none;display:block;width:100%;text-align:left;padding:var(--space-2) var(--space-4);font-size:var(--text-sm);color:var(--color-text);cursor:pointer;border-radius:0}.token-row-menu__item:hover,.token-row-menu__item:focus{background:var(--color-overlay);outline:none}.token-row-menu__item--danger{color:var(--color-danger, #f87171)}.token-row-menu__item--danger:hover,.token-row-menu__item--danger:focus{background:var(--color-danger-subtle, rgba(248,113,113,.1))}.settings-account{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-5)}.settings-account__avatar{width:40px;height:40px;border-radius:50%;flex-shrink:0;object-fit:cover}.settings-account__avatar--fallback{display:inline-flex;align-items:center;justify-content:center;background:var(--color-overlay);color:var(--color-text-muted);font-size:var(--text-base);font-weight:var(--weight-semibold)}.settings-account__info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.settings-account__name{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text)}.settings-account__login{font-size:var(--text-xs);color:var(--color-text-muted);text-decoration:none}.settings-account__login:hover{color:var(--color-text);text-decoration:underline}.settings-account__role{font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text-muted);background:var(--color-overlay);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:2px 8px;text-transform:capitalize;flex-shrink:0}.token-reveal{margin-bottom:var(--space-4)}.token-reveal__warning{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-warning);margin:0 0 var(--space-3)}.token-reveal__box{display:flex;align-items:center;gap:var(--space-2);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4)}.token-reveal__value{flex:1;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text);word-break:break-all}.token-reveal__copy{flex-shrink:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);font-size:var(--text-xs);font-weight:var(--weight-medium);padding:4px 12px;cursor:pointer;transition:background var(--transition-fast);white-space:nowrap}.token-reveal__copy:hover{background:var(--color-overlay)}@media(max-width:768px){.settings-section{grid-template-columns:1fr;gap:var(--space-4);padding-bottom:var(--space-8)}.settings-section+.settings-section{padding-top:var(--space-8)}}@media(max-width:480px){.settings-main{padding:var(--space-4) var(--space-4)}.tokens-table__col--hide-mobile{display:none}}:root{--color-bg: #09090b;--color-surface: #111114;--color-overlay: #17171b;--color-border: #27272a;--color-border-subtle: #17171b;--color-text: #fafafa;--color-text-muted: #a1a1aa;--color-accent: #58a6ff;--color-success: #3fb950;--color-warning: #e3b341;--color-danger: #f85149;--color-primary: #238636;--color-primary-hover: #2ea043;--color-danger-bg: #da3633;--badge-creating-bg: #4a3000;--badge-creating-text: #e3b341;--badge-creating-border: #7a5200;--badge-running-bg: #0a3622;--badge-running-text: #3fb950;--badge-running-border: #1a5c2e;--badge-failed-bg: #3d0014;--badge-failed-text: #f85149;--badge-failed-border: #6d1020;--badge-deleted-bg: #17171b;--badge-deleted-text: #a1a1aa;--badge-deleted-border: #27272a;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 28px;--space-8: 32px;--space-10: 40px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-full: 20px;--font-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "SFMono-Regular", Consolas, monospace;--text-2xs: .65rem;--text-xs: .75rem;--text-sm: .8rem;--text-base: .95rem;--text-lg: 1.1rem;--text-xl: 2rem;--weight-normal: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--shadow-sm: 0 1px 3px rgba(1, 4, 9, .4);--shadow-md: 0 2px 8px rgba(1, 4, 9, .4);--shadow-lg: 0 4px 16px rgba(1, 4, 9, .5);--shadow-xl: 0 8px 32px rgba(1, 4, 9, .6);--shadow-success: 0 0 0 1px var(--color-success), 0 2px 12px rgba(63, 185, 80, .2);--transition-fast: .1s ease;--transition-base: .15s ease;--transition-slow: .3s ease;--z-sticky: 10;--z-dropdown: 50;--z-modal: 100;--z-banner: 200;--gradient-brand: linear-gradient(135deg, #238636 0%, #2ea043 100%);--shadow-brand: 0 0 0 1px rgba(35, 134, 54, .4), 0 4px 16px rgba(35, 134, 54, .25);--color-selected: #0d1f38;--color-warn-surface: #2d1a00;--color-warn-border: #4a3000;--color-info-surface: #0a2140;--color-info-border: #1a3a5c;--color-ok-surface: rgba(63, 185, 80, .08);--color-ok-border: rgba(63, 185, 80, .25);--color-warn-subtle-surface: rgba(227, 179, 65, .08);--color-warn-subtle-border: rgba(227, 179, 65, .25);--color-backdrop: rgba(1, 4, 9, .75);--color-code-variable: #79c0ff}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);min-height:100vh;-webkit-font-smoothing:antialiased}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}#loading-screen{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--color-text-muted);font-size:var(--text-base)}.webhook-panel{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.webhook-url{font-size:var(--text-xs);font-family:var(--font-mono);background:var(--color-bg);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:6px 10px;color:var(--color-text-muted);word-break:break-all;flex:1}.webhook-status{font-size:var(--text-xs);color:var(--color-text-muted);width:100%}.webhook-status--ok{color:var(--color-success)}.webhook-status--none{color:var(--color-warning)}.env-panel{display:flex;flex-direction:column;gap:var(--space-2)}.env-list{display:flex;flex-direction:column;gap:var(--space-1)}.env-empty{font-size:var(--text-sm);color:var(--color-text-muted)}.env-row{display:flex;align-items:center;gap:var(--space-2);background:var(--color-bg);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:5px 10px;font-size:var(--text-sm);font-family:var(--font-mono)}.env-row__key{color:var(--color-code-variable);flex-shrink:0}.env-row__val{color:var(--color-text-muted);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.env-row__copy{background:none;border:none;color:var(--color-text-muted);cursor:pointer;font-size:var(--text-xs);padding:0 4px;opacity:0;transition:opacity var(--transition-fast);flex-shrink:0}.env-row:hover .env-row__copy{opacity:1}.env-row__copy:hover{color:var(--color-text)}.env-row__del{flex-shrink:0}.env-form{display:flex;gap:var(--space-2);flex-wrap:wrap}.domain-dns-table{width:100%;border-collapse:collapse;font-size:var(--text-xs);font-family:var(--font-mono)}.domain-dns-table th{text-align:left;color:var(--color-text-muted);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:var(--weight-medium);padding:4px 8px 4px 0;border-bottom:1px solid var(--color-border-subtle)}.domain-dns-table td{padding:5px 8px 5px 0;color:var(--color-text-muted);border-bottom:1px solid var(--color-border-subtle);vertical-align:middle}.domain-dns-table tr:last-child td{border-bottom:none}.domain-dns-table code{color:var(--color-text)}.domain-verify-row{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.domain-verify-status{font-size:var(--text-sm)}.domain-verify-status--ok{color:var(--color-success)}.domain-verify-status--warn{color:var(--color-warning, #b45309)}.domain-verify-status code{font-family:var(--font-mono);font-size:var(--text-xs)}@media(prefers-color-scheme:dark){.domain-verify-status--warn{color:#fcd34d}}.build-log-panel{margin-top:var(--space-3);border-top:1px solid var(--color-border-subtle);padding-top:var(--space-3);width:100%}.build-log-panel summary{font-size:var(--text-sm);color:var(--color-text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.build-log-output{margin-top:var(--space-2);background:var(--color-bg);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:var(--space-3);font-size:var(--text-xs);font-family:var(--font-mono);color:var(--color-text-muted);max-height:200px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.history-panel{display:flex;flex-direction:column;gap:var(--space-2)}.history-row{display:flex;align-items:center;gap:var(--space-3);font-size:var(--text-xs);padding:5px 0;border-bottom:1px solid var(--color-border-subtle)}.history-row:last-child{border-bottom:none}.history-row__meta{display:flex;align-items:center;gap:var(--space-3);flex:1;flex-wrap:wrap}.history-row__sha{font-family:var(--font-mono);color:var(--color-accent);text-decoration:none;flex-shrink:0}.history-row__sha:not(.history-row__sha--plain):hover{text-decoration:underline}.history-row__sha--plain{color:var(--color-text-muted);cursor:default}.history-row__msg{color:var(--color-text-muted);font-size:var(--text-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px;flex:1}.history-row__trigger{color:var(--color-text-muted);font-size:var(--text-xs);flex-shrink:0}.history-row__date{color:var(--color-text-muted)}.history-row__duration{color:var(--color-text-muted);font-family:var(--font-mono);font-size:var(--text-xs);flex-shrink:0}.history-row__rollback{margin-left:auto;flex-shrink:0}
