html{background:#080b14}body{margin:0}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--font-sans:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"SFMono-Regular", Consolas, monospace;--color-bg:#090c14;--color-surface:#11151f;--color-surface-raised:#161b28;--color-border:#232a3d;--color-border-soft:#1a2032;--color-text:#eef1fb;--color-text-muted:#8b93ab;--color-text-faint:#5b6379;--color-accent:#6366f1;--color-accent-hover:#7c7ff5;--color-accent-soft:#6366f129;--color-success:#34d399;--color-success-bg:#34d39924;--color-danger:#f87171;--color-danger-bg:#f8717124;--color-warning:#fbbf24;--color-warning-bg:#fbbf2424;--color-neutral-bg:#8b93ab24;--radius-sm:8px;--radius-md:12px;--radius-lg:18px;--shadow-card:0 1px 2px #00000059, 0 12px 32px #00000047;--shadow-modal:0 30px 100px #0000008c;--sidebar-width:248px;--header-height:72px;font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);font-synthesis:none;text-rendering:optimizelegibility}*{box-sizing:border-box}body{background:var(--color-bg);min-width:320px;min-height:100vh;margin:0}button,input{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}h1,h2,h3,p{margin-top:0}code{font-family:var(--font-mono);font-size:.9em}.primary-button,.secondary-button,.container-actions button,.close-button,.danger-button{border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);background:var(--color-surface-raised);padding:10px 14px;font-size:.88rem;font-weight:600;transition:background .12s,border-color .12s}.primary-button{border-color:var(--color-accent);background:var(--color-accent);color:#fff}.primary-button:hover:not(:disabled){background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.secondary-button:hover:not(:disabled),.container-actions button:hover:not(:disabled),.close-button:hover:not(:disabled){background:var(--color-border-soft);border-color:var(--color-border)}.primary-button.compact,.secondary-button.compact,.danger-button.compact{padding:7px 11px;font-size:.8rem}.danger-button{color:var(--color-danger);background:var(--color-danger-bg);border-color:#5a2a30}.danger-button:hover:not(:disabled){background:#f8717138}.error-banner,.notice-banner,.warning-banner,.empty-state{border-radius:var(--radius-md);margin-top:20px;padding:16px 18px;font-size:.9rem}.error-banner{color:#ffb4ba;background:var(--color-danger-bg);border:1px solid #5a2a30}.notice-banner{color:#8eebbd;background:var(--color-success-bg);border:1px solid #1d5540}.warning-banner{color:#ffd98e;background:var(--color-warning-bg);border:1px solid #5c4a1a}.empty-state{border:1px solid var(--color-border-soft);background:var(--color-surface);color:var(--color-text-muted)}.notice-banner-row{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.notice-banner-dismiss{color:inherit;opacity:.7;background:0 0;border:none;flex-shrink:0;padding:2px 4px;font-size:.95rem;line-height:1}.notice-banner-dismiss:hover{opacity:1}.notice-banner-link{color:inherit;font-weight:600;text-decoration:underline}.inline-spinner{opacity:.85;vertical-align:middle;border:2px solid;border-top-color:#0000;border-radius:50%;flex:none;width:13px;height:13px;margin-right:6px;animation:.8s linear infinite deploy-spin;display:inline-block}.app-empty-state{justify-items:start;gap:8px;padding:28px;display:grid}.app-empty-state h3,.app-empty-state p{margin-bottom:0}.app-empty-state p{color:var(--color-text-muted)}.text-faint{color:var(--color-text-faint)}.app-shell{grid-template-columns:var(--sidebar-width) 1fr;grid-template-rows:var(--header-height) 1fr;grid-template-areas:"sidebar topbar""sidebar main";min-height:100vh;display:grid}.app-sidebar{border-right:1px solid var(--color-border-soft);background:var(--color-surface);grid-area:sidebar;height:100vh;position:sticky;top:0}.app-topbar{z-index:10;border-bottom:1px solid var(--color-border-soft);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#090c14d9;grid-area:topbar;position:sticky;top:0}.app-main{grid-area:main;min-width:0;padding:32px 40px 64px}.page{gap:32px;display:grid}.sidebar-inner{flex-direction:column;height:100%;padding:22px 16px;display:flex}.sidebar-brand{align-items:center;gap:12px;padding:8px 8px 24px;display:flex}.sidebar-mark{object-fit:contain;flex:none;width:38px;height:38px;display:block}.sidebar-brand-name,.sidebar-brand-sub{margin:0;line-height:1.25}.sidebar-brand-name{font-size:.92rem;font-weight:700}.sidebar-brand-sub{color:var(--color-text-faint);font-size:.78rem}.sidebar-nav{gap:2px;display:grid}.sidebar-nav-item{border-radius:var(--radius-sm);color:var(--color-text-muted);text-align:left;background:0 0;border:none;align-items:center;gap:12px;padding:10px 12px;font-size:.88rem;font-weight:600;display:flex}.sidebar-nav-item:hover:not(:disabled){background:var(--color-border-soft);color:var(--color-text)}.sidebar-nav-item.active{background:var(--color-accent-soft);color:#c7c9ff}.sidebar-nav-glyph{place-items:center;width:18px;font-size:.95rem;display:inline-grid}.header-inner{justify-content:space-between;align-items:center;gap:24px;height:100%;padding:0 40px;display:flex}.header-title-block h1{margin:0;font-size:1.3rem;font-weight:700}.header-subtitle{color:var(--color-text-faint);margin:2px 0 0;font-size:.82rem}.header-actions{align-items:center;gap:10px;display:flex}.signed-in-user{color:var(--color-text-muted);white-space:nowrap;font-size:.84rem}.signed-in-user strong{color:var(--color-text)}.section-heading{justify-content:space-between;align-items:center;gap:24px;margin-bottom:20px;display:flex}.eyebrow{color:#9498ff;letter-spacing:.14em;text-transform:uppercase;margin:0 0 6px;font-size:.72rem;font-weight:800}.section-description{color:var(--color-text-muted);max-width:560px;margin:6px 0 0;font-size:.86rem}.container-count{color:var(--color-text-muted);font-size:.85rem}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;display:grid}.platform-health-grid{grid-template-columns:minmax(220px,340px);margin-bottom:6px}.stat-card{border:1px solid var(--color-border-soft);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-card);gap:8px;padding:18px;display:grid}.stat-card-label{color:var(--color-text-faint);text-transform:uppercase;letter-spacing:.05em;font-size:.72rem;font-weight:700}.stat-card-value{font-size:1.5rem;font-weight:700}.stat-card-hint{color:var(--color-text-faint);font-size:.76rem}.stat-card.tone-positive .stat-card-value{color:var(--color-success)}.stat-card.tone-negative .stat-card-value{color:var(--color-danger)}.stat-card.tone-warning .stat-card-value{color:var(--color-warning)}.metrics-chart-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-bottom:14px;display:grid}.metric-chart-card{border:1px solid var(--color-border-soft);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-card);gap:4px;padding:18px 18px 4px;display:grid}.server-card{border:1px solid var(--color-border-soft);border-radius:var(--radius-md);background:var(--color-surface);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:20px 24px;padding:20px 22px;display:grid}.server-card div{flex-direction:column;gap:6px;display:flex}.server-card span{color:var(--color-text-faint);text-transform:uppercase;font-size:.74rem;font-weight:700}.container-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;display:grid}.container-card{border:1px solid var(--color-border-soft);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-card);flex-direction:column;gap:14px;padding:18px;display:flex}.container-card-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.container-card-header p{color:var(--color-text-muted);margin:4px 0 0;font-size:.84rem}.card-status{flex-direction:column;flex:none;align-items:flex-end;gap:5px;display:flex}.card-status-detail{color:var(--color-text-faint);text-align:right;white-space:nowrap;font-size:.72rem}.card-actions{margin-top:auto;padding-top:2px}.card-actions button,.card-actions .secondary-button,.card-actions .primary-button,.card-actions .danger-button{padding:7px 12px;font-size:.8rem}.title-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.title-row h3{overflow-wrap:anywhere;margin:0;font-size:1rem}.favorite-toggle{color:var(--color-text-faint);background:0 0;border:none;flex-shrink:0;padding:2px 4px;font-size:1.1rem;line-height:1}.favorite-toggle:hover,.favorite-toggle[aria-pressed=true]{color:var(--color-warning)}.favorite-toggle.compact{margin-right:4px;font-size:1rem}.container-details{gap:10px;margin:0;display:grid}.container-details div{grid-template-columns:80px minmax(0,1fr);align-items:start;gap:12px;display:grid}.container-details dt{color:var(--color-text-faint);text-transform:uppercase;font-size:.72rem;font-weight:700}.container-details dd{overflow-wrap:anywhere;color:var(--color-text);margin:0;font-size:.86rem}.container-actions{flex-wrap:wrap;gap:8px;display:flex}.protected-note{color:var(--color-text-faint);margin:0;font-size:.78rem}.status-pill,.type-badge,.status-badge,.routing-badge{text-transform:uppercase;letter-spacing:.02em;white-space:nowrap;border-radius:999px;padding:5px 10px;font-size:.68rem;font-weight:800;display:inline-block}.status-badge.compact{padding:3px 8px;font-size:.62rem}.status-pill.running,.status-badge.positive{color:var(--color-success);background:var(--color-success-bg)}.status-pill.stopped,.status-badge.negative{color:var(--color-danger);background:var(--color-danger-bg)}.type-badge.system,.status-badge.neutral{color:#aeb6ff;background:var(--color-accent-soft)}.type-badge.missing{color:var(--color-danger);background:var(--color-danger-bg)}.missing-app-card{border-color:var(--color-danger)}.status-badge.warning,.routing-badge{color:var(--color-warning);background:var(--color-warning-bg)}.status-badge.danger{color:var(--color-danger);background:var(--color-danger-bg)}.cron-command{font-family:var(--font-mono,monospace);overflow-wrap:anywhere;margin-top:2px;font-size:.78rem}.cron-row-actions{white-space:nowrap;justify-content:flex-end;gap:6px;display:flex}.cron-status-button{cursor:pointer;text-align:left;color:inherit;background:0 0;border:0;flex-direction:column;align-items:flex-start;gap:3px;padding:0;display:flex}.cron-stats{margin-bottom:18px}.cron-table{table-layout:fixed}.cron-table th,.cron-table td{vertical-align:top;overflow:hidden}.cron-table th:first-child,.cron-table td:first-child{width:34%}.cron-table th:nth-child(2),.cron-table td:nth-child(2){width:12%}.cron-table th:nth-child(3),.cron-table td:nth-child(3){width:14%}.cron-table th:nth-child(4),.cron-table td:nth-child(4){width:16%}.cron-table th:nth-child(5),.cron-table td:nth-child(5){width:8%}.cron-table th:nth-child(6),.cron-table td:nth-child(6){width:16%}.cron-name-cell{align-items:flex-start;gap:10px;min-width:0;display:flex}.cron-job-icon{border-radius:var(--radius-sm);background:var(--color-surface-raised);flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:1rem;display:inline-flex}.cron-name-meta{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.cron-job-name{overflow-wrap:anywhere}.cron-command-box{border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-bg);align-items:flex-start;gap:6px;padding:8px 10px;display:flex}.cron-command-box code{min-width:0;font-family:var(--font-mono,monospace);color:var(--color-text-muted);overflow-wrap:anywhere;white-space:pre-wrap;flex:1;font-size:.74rem;line-height:1.5}.cron-command-clamped{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.cron-command-tools{flex-direction:column;flex-shrink:0;gap:4px;display:flex}.cron-app-cell{align-items:center;gap:8px;min-width:0;display:flex}.cron-app-avatar{border-radius:var(--radius-sm);background:var(--color-accent-soft);width:24px;height:24px;color:var(--color-accent);flex-shrink:0;justify-content:center;align-items:center;font-size:.72rem;font-weight:700;display:inline-flex}.cron-app-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cron-schedule-cell{flex-direction:column;align-items:flex-start;gap:4px;display:flex}.cron-schedule-expr{border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-bg);max-width:100%;font-family:var(--font-mono,monospace);white-space:nowrap;text-overflow:ellipsis;padding:4px 8px;font-size:.76rem;display:inline-block;overflow:hidden}.cron-subtext{color:var(--color-text-faint);font-size:.74rem}.cron-toggle{border:1px solid var(--color-border);background:var(--color-surface-raised);cursor:pointer;border-radius:999px;flex-shrink:0;width:38px;height:21px;padding:0;transition:background .14s,border-color .14s;position:relative}.cron-toggle.on{background:var(--color-accent);border-color:var(--color-accent)}.cron-toggle-knob{background:#fff;border-radius:50%;width:15px;height:15px;transition:transform .14s;position:absolute;top:2px;left:2px}.cron-toggle.on .cron-toggle-knob{transform:translate(17px)}.cron-table-footer{margin:12px 2px 0;font-size:.82rem}.cron-presets{flex-wrap:wrap;gap:6px;margin:8px 0 4px;display:flex}.cron-preset{border:1px solid var(--color-border-soft);background:var(--color-surface-raised);color:var(--color-text-muted);cursor:pointer;border-radius:999px;padding:3px 10px;font-size:.76rem}.cron-preset:hover{border-color:var(--color-accent);color:var(--color-text)}.cron-preview-ok{color:var(--color-success)}.cron-preview-bad{color:var(--color-danger)}.cron-history{grid-template-columns:minmax(220px,300px) 1fr;align-items:start;gap:16px;display:grid}.cron-run-list{flex-direction:column;gap:4px;max-height:52vh;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.cron-run-item{width:100%;color:inherit;cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:.85rem;display:flex}.cron-run-item:hover{background:var(--color-surface-2,#ffffff0a)}.cron-run-item.active{border-color:var(--color-accent-soft,#7882ff66);background:var(--color-surface-2,#ffffff0f)}.cron-run-time{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.cron-run-output{min-width:0}@media (width<=640px){.cron-history{grid-template-columns:1fr}.cron-run-list{max-height:30vh}}.routing-badge{margin-left:8px}.routing-badge.internal-only{color:#aeb6ff;background:var(--color-accent-soft);margin-left:0}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#03050bd1;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.logs-modal,.form-modal,.confirm-modal{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface-raised);width:min(1000px,100%);max-height:82vh;box-shadow:var(--shadow-modal);flex-direction:column;display:flex;overflow:hidden}.form-modal{width:min(580px,100%)}.form-modal.wide{width:min(760px,100%)}.bulk-env-textarea{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;color:var(--color-text);background:var(--color-bg);font-family:var(--font-mono);resize:vertical;outline:none;padding:11px 12px;font-size:.85rem;line-height:1.5}.bulk-env-textarea:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.bulk-env-preview{gap:10px;display:grid}.bulk-env-preview .table-wrap{max-height:280px;overflow-y:auto}.bulk-env-preview thead th{background:var(--color-surface);z-index:1;position:sticky;top:0}.bulk-env-row-error{background:#ff636314}.confirm-modal{width:min(460px,100%);padding:24px;overflow:auto}.confirm-modal h2{margin-bottom:12px}.confirm-modal-message{color:var(--color-text-muted);line-height:1.6}.logs-modal header,.form-modal header{border-bottom:1px solid var(--color-border-soft);justify-content:space-between;align-items:center;gap:24px;padding:18px 22px;display:flex}.logs-inline{border-radius:var(--radius-md);width:100%;max-height:none}.logs-inline pre{max-height:60vh}.logs-modal pre{color:#cbd5ef;background:var(--color-bg);max-height:62vh;font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:22px;font-size:.82rem;line-height:1.6;overflow:auto}.logs-state{color:var(--color-text-muted);margin:0;padding:22px}.logs-state.logs-error{color:#ffbec3}.form-modal form{gap:18px;min-height:0;padding:22px;display:grid;overflow-y:auto}.form-modal label{gap:7px;display:grid}.form-modal label>span{font-size:.86rem;font-weight:700}.form-modal small{color:var(--color-text-faint);line-height:1.45}.form-modal input{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;color:var(--color-text);background:var(--color-bg);outline:none;padding:11px 12px}.form-modal input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.checkbox-field{align-items:center;gap:10px;flex-direction:row!important;display:flex!important}.checkbox-field input{accent-color:var(--color-accent);width:auto!important}.checkbox-field span{color:var(--color-text-muted);font-size:.85rem!important;font-weight:500!important}.radio-field{align-items:flex-start;gap:10px;flex-direction:row!important;display:flex!important}.radio-field input{accent-color:var(--color-accent);margin-top:3px;width:auto!important}.radio-field span{color:var(--color-text-muted);font-size:.85rem!important;font-weight:500!important}.wizard-fieldset{border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);gap:10px;padding:14px 16px;display:grid}.wizard-fieldset legend{padding:0 4px;font-size:.8rem;font-weight:700}.wizard-form-grid{gap:18px;display:grid}.dialog-description{color:var(--color-text-muted);margin:-4px 0 0;font-size:.85rem}.form-actions{justify-content:flex-end;gap:10px;padding-top:4px;display:flex}.table-wrap{border:1px solid var(--color-border-soft);border-radius:var(--radius-md);background:var(--color-surface);overflow-x:auto}.env-table{border-collapse:collapse;width:100%;font-size:.86rem}.env-table th,.env-table td{text-align:left;vertical-align:middle;border-bottom:1px solid var(--color-border-soft);padding:12px 16px}.env-table th{color:var(--color-text-faint);text-transform:uppercase;letter-spacing:.03em;font-size:.72rem;font-weight:700}.env-table tbody tr:last-child td{border-bottom:none}.env-table tbody tr:hover{background:var(--color-border-soft)}.env-key-cell{white-space:nowrap;align-items:center;gap:8px;display:flex}.env-value-cell code{overflow-wrap:anywhere}.env-actions-cell{white-space:nowrap;justify-content:flex-end;gap:8px;display:flex}.masked-value{letter-spacing:.2em;color:var(--color-text-muted)}.connection-preview{text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;max-width:42ch;color:var(--color-text-muted);display:inline-block;overflow:hidden}.stacked-cell{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.inline-field-actions{align-items:center;gap:12px;margin-top:6px;display:flex}.link-button{font:inherit;color:var(--color-accent,#4f46e5);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.link-button:disabled{opacity:.5;cursor:default}.connection-modal .field{gap:9px;display:grid}.connection-modal .field-label{font-size:.86rem;font-weight:700}.connection-kind-grid{flex-wrap:wrap;gap:8px;display:flex}.kind-chip{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text-muted);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:8px 14px;font-size:.83rem;font-weight:600;transition:border-color .15s,background .15s,color .15s;display:inline-flex}.kind-chip:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-text)}.kind-chip.active{border-color:var(--color-accent);background:var(--color-accent-soft);color:var(--color-text)}.kind-chip:disabled{opacity:.55;cursor:default}.kind-dot{background:var(--kind-color,#8a8f98);width:9px;height:9px;box-shadow:0 0 0 3px color-mix(in srgb, var(--kind-color,#8a8f98) 22%, transparent);border-radius:50%}.kind-chip[data-kind=mongodb]{--kind-color:#13aa52}.kind-chip[data-kind=postgres]{--kind-color:#4a90d9}.kind-chip[data-kind=mysql]{--kind-color:#e48e00}.kind-chip[data-kind=redis]{--kind-color:#d82c20}.kind-chip[data-kind=sqlite]{--kind-color:#0f80cc}.kind-chip[data-kind=other]{--kind-color:#8a8f98}.input-affix{align-items:center;display:flex;position:relative}.input-affix input{padding-right:74px}.input-affix .input-affix-btn{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;padding:5px 12px;font-size:.78rem;font-weight:600;transition:border-color .15s,color .15s;position:absolute;right:6px}.input-affix .input-affix-btn:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-text)}.input-affix .input-affix-btn:disabled{opacity:.5;cursor:default}.connection-modal input.mono{font-family:var(--font-mono);font-size:.84rem}.connection-share-card{border:1px solid var(--color-accent-soft);border-radius:var(--radius-md);background:color-mix(in srgb, var(--color-accent) 6%, transparent);gap:14px;padding:16px;display:grid}.connection-share-card .share-card-title{text-transform:uppercase;letter-spacing:.05em;color:var(--color-accent);margin:0;font-size:.8rem;font-weight:700}.connection-modal .form-actions{border-top:1px solid var(--color-border-soft);margin-top:2px;padding-top:8px}.connection-test-row{flex-wrap:wrap;align-items:flex-start;gap:12px;margin-top:2px;display:flex}.connection-test-result{flex:1;align-self:center;min-width:200px;font-size:.8rem;line-height:1.45}.connection-test-result.ok{color:var(--color-positive,#2ea043)}.connection-test-result.fail{color:var(--color-danger,#e5534b)}.env-source-badge{text-transform:uppercase;border-radius:999px;padding:3px 8px;font-size:.65rem;font-weight:700}.env-source-badge.global{color:#aeb6ff;background:var(--color-accent-soft)}.env-source-badge.app{color:#73dbff;background:#1980aa33}.env-source-badge.app-override{color:var(--color-warning);background:var(--color-warning-bg)}.tabs{border-bottom:1px solid var(--color-border-soft);gap:4px;display:flex}.tab{color:var(--color-text-muted);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;margin-right:24px;padding:10px 4px;font-size:.88rem;font-weight:600}.tab:hover:not(:disabled){color:var(--color-text)}.tab.active{color:var(--color-text);border-bottom-color:var(--color-accent)}.app-detail{gap:24px;display:grid}.app-detail-header{gap:16px;display:grid}.app-detail-title-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.app-detail-title-row h1{margin:0;font-size:1.8rem}.app-detail-grid{border:1px solid var(--color-border-soft);border-radius:var(--radius-md);background:var(--color-surface);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:18px;margin:0;padding:20px 22px;display:grid}.app-detail-grid div{gap:6px;display:grid}.app-detail-grid dt{color:var(--color-text-faint);text-transform:uppercase;font-size:.72rem;font-weight:700}.app-detail-grid dd{overflow-wrap:anywhere;color:var(--color-text);margin:0;font-size:.88rem}.domain-cell{flex-wrap:wrap;align-items:center;gap:10px;display:flex!important}.public-domain-link{color:var(--color-text);border-bottom:1px solid var(--color-border);text-decoration:none}.public-domain-link:hover,.public-domain-link:focus-visible{color:var(--color-accent);border-bottom-color:var(--color-accent)}.app-detail-actions{margin-top:0}.app-detail-tab-panel{gap:20px;display:grid}.env-scope-block{gap:12px;display:grid}.advanced-disclosure{border-top:1px solid var(--color-border-soft);margin-top:20px;padding-top:16px}.advanced-disclosure summary{cursor:pointer;color:var(--color-text-muted);font-size:.85rem;font-weight:700;list-style:none}.advanced-disclosure summary::-webkit-details-marker{display:none}.advanced-disclosure summary:before{content:"▸ "}.advanced-disclosure[open] summary:before{content:"▾ "}.advanced-disclosure>.env-scope-block{margin-top:16px}.env-scope-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.env-scope-heading h3{margin:0;font-size:.95rem}.env-scope-heading-actions{align-items:center;gap:10px;display:flex}.github-token-section{gap:16px;padding-top:4px;display:grid}.github-token-section label{gap:8px;display:grid}.github-token-section label>span{font-size:.86rem;font-weight:700}.github-token-section input{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;color:var(--color-text);background:var(--color-bg);outline:none;padding:11px 12px}.github-token-section input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.github-token-section input:disabled{opacity:.6;cursor:not-allowed}.github-token-section small{color:var(--color-text-faint);line-height:1.45;display:block}.auth-page{background:radial-gradient(circle at top left, #6366f138, transparent 34rem), radial-gradient(circle at bottom right, #34d3991a, transparent 30rem), var(--color-bg);place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{border:1px solid var(--color-border);border-radius:var(--radius-lg);width:min(440px,100%);box-shadow:var(--shadow-modal);background:#11151ff5;padding:32px}.auth-loading{text-align:center}.auth-brand{align-items:flex-start;gap:16px;display:flex}.auth-brand h1{margin-bottom:8px;font-size:1.7rem}.auth-brand p:last-child{color:var(--color-text-muted);margin-bottom:0;font-size:.9rem;line-height:1.6}.auth-mark{object-fit:contain;flex:none;width:46px;height:46px;display:block}.auth-form{gap:16px;margin-top:26px;display:grid}.auth-form label{gap:7px;display:grid}.auth-form label>span{color:var(--color-text-muted);font-size:.85rem;font-weight:600}.auth-form input{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;color:var(--color-text);background:var(--color-bg);outline:none;padding:12px 13px}.auth-form input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.auth-submit{width:100%;margin-top:2px;padding:12px 16px}.auth-note{color:var(--color-text-faint);text-align:center;margin:20px 0 0;font-size:.78rem}.repo-filter-row{flex-wrap:wrap;gap:10px;margin-bottom:16px;display:flex}.repo-filter-row input{border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);background:var(--color-bg);outline:none;flex:220px;padding:10px 12px}.repo-filter-row input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.apps-filter-row{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.apps-filter-search{border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);background:var(--color-bg);outline:none;flex:220px;padding:9px 12px}.apps-filter-search:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.apps-filter-chips{flex-wrap:wrap;gap:6px;display:flex}.apps-filter-chip{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);border-radius:999px;padding:5px 12px;font-size:.82rem;font-weight:600;transition:background .12s,color .12s,border-color .12s}.apps-filter-chip:hover:not(.active){color:var(--color-text)}.apps-filter-chip.active{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent)}.apps-filter-sort{border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);background:var(--color-bg);padding:8px 10px;font-size:.86rem}.repo-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;display:grid}.repo-card{border:1px solid var(--color-border-soft);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-card);flex-direction:column;gap:10px;padding:16px;display:flex}.repo-card-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.repo-card-title{color:var(--color-text);text-align:left;overflow-wrap:anywhere;background:0 0;border:none;padding:0;font-size:.95rem;font-weight:700}.repo-card-title:hover{color:var(--color-accent-hover);text-decoration:underline}.repo-card-badges{flex:none;gap:6px;display:flex}.repo-card-description{color:var(--color-text-muted);margin:0;font-size:.84rem}.repo-card-meta{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;display:grid}.repo-card-meta dt{color:var(--color-text-faint);text-transform:uppercase;font-size:.68rem;font-weight:700}.repo-card-meta dd{margin:2px 0 0;font-size:.84rem}.repo-select-row{cursor:pointer;width:100%;font:inherit;color:inherit;flex-direction:column;align-items:flex-start;gap:4px;display:flex}.repo-select-row.selected{border-color:var(--color-accent);background:var(--color-accent-soft)}.linked-apps-list{color:var(--color-text);gap:6px;margin:0;padding-left:20px;font-size:.88rem;display:grid}.form-actions-start{justify-content:flex-start}.logs-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.logs-toolbar-group{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.logs-toolbar-field{align-items:center;gap:8px;flex-direction:row!important;display:flex!important}.logs-toolbar-field span{color:var(--color-text-muted);font-size:.8rem;font-weight:600}.logs-toolbar-field .wizard-select{width:auto;padding:7px 10px}.logs-inline pre.logs-nowrap{white-space:pre;overflow-wrap:normal}.event-metadata{border-radius:var(--radius-sm);background:var(--color-bg);color:#cbd5ef;font-family:var(--font-mono);margin:0;padding:12px 14px;font-size:.78rem;line-height:1.5;overflow-x:auto}.wizard-modal{flex-direction:column;width:min(760px,100%);max-height:88vh;display:flex}.wizard-modal header{flex:none}.wizard-steps{border-bottom:1px solid var(--color-border-soft);flex-wrap:wrap;flex:none;gap:6px;padding:14px 22px;display:flex}.wizard-step-item{color:var(--color-text-faint);background:var(--color-surface);border:1px solid var(--color-border-soft);border-radius:999px;align-items:center;gap:6px;padding:5px 10px;font-size:.74rem;font-weight:700;display:flex}.wizard-step-index{background:var(--color-border-soft);width:18px;height:18px;color:var(--color-text-muted);border-radius:50%;place-items:center;font-size:.65rem;display:inline-grid}.wizard-step-item.active{color:var(--color-text);border-color:var(--color-accent);background:var(--color-accent-soft)}.wizard-step-item.active .wizard-step-index{background:var(--color-accent);color:#fff}.wizard-step-item.done .wizard-step-index{background:var(--color-success);color:#08211a}.wizard-body{flex:auto;align-content:start;gap:18px;padding:22px;display:grid;overflow-y:auto}.wizard-body label{gap:7px;display:grid}.wizard-body label>span{font-size:.86rem;font-weight:700}.wizard-body small{color:var(--color-text-faint);line-height:1.45}.wizard-body input{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;color:var(--color-text);background:var(--color-bg);outline:none;padding:11px 12px}.wizard-body input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.wizard-select{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;color:var(--color-text);background:var(--color-bg);outline:none;padding:11px 12px}.wizard-footer{border-top:1px solid var(--color-border-soft);flex:none;justify-content:space-between;gap:10px;padding:16px 22px;display:flex}.wizard-footer-right{gap:10px;display:flex}.wizard-row-list{gap:10px;display:grid}.wizard-row{border:1px solid var(--color-border-soft);border-radius:var(--radius-md);background:var(--color-surface);gap:10px;padding:14px;display:grid}.wizard-row-fields{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;display:grid}.wizard-row-fields label{gap:5px;display:grid}.wizard-row-fields label>span{color:var(--color-text-faint);text-transform:uppercase;font-size:.76rem;font-weight:700}.wizard-row-fields input{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;color:var(--color-text);background:var(--color-bg);outline:none;padding:9px 10px;font-size:.85rem}.wizard-row-toggles{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.wizard-row-actions{justify-content:flex-end;display:flex}.strategy-card{gap:4px}.strategy-card.selected{border-color:var(--color-accent);background:var(--color-accent-soft)}.strategy-card.disabled{opacity:.55}.wizard-review-grid{border:1px solid var(--color-border-soft);border-radius:var(--radius-md);background:var(--color-surface);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;margin:0;padding:16px 18px;display:grid}.wizard-review-grid dt{color:var(--color-text-faint);text-transform:uppercase;font-size:.72rem;font-weight:700}.wizard-review-grid dd{overflow-wrap:anywhere;margin:4px 0 0;font-size:.88rem}.inspection-card{gap:12px;display:grid}.wizard-file-list,.wizard-warning-list{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.wizard-file-list li{border-radius:var(--radius-sm);background:var(--color-bg);border:1px solid var(--color-border-soft);padding:4px 10px;font-size:.8rem}.wizard-warning-list{flex-direction:column}.wizard-warning-list li{border-radius:var(--radius-sm);color:var(--color-text);background:#d977061f;border:1px solid #d9770659;padding:8px 12px;font-size:.85rem}.brief-box{border:1px solid var(--color-border-soft);border-radius:var(--radius-md);background:var(--color-bg);position:relative;overflow:hidden}.brief-box pre{color:#cbd5ef;max-height:320px;font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:18px;font-size:.78rem;line-height:1.6;overflow:auto}.brief-box-actions{border-top:1px solid var(--color-border-soft);background:var(--color-surface);justify-content:flex-end;gap:8px;padding:10px 12px;display:flex}.wizard-success{justify-items:start;gap:16px;padding:8px 0;display:grid}.wizard-success-title{margin:0}.wizard-success-actions{padding-top:8px}.wizard-connect-instructions{border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);justify-items:start;gap:10px;padding:14px 16px;display:grid}.guided-password-row{gap:8px;display:flex}.guided-password-row input{flex:1}@media (width<=640px){.wizard-modal{max-height:94vh}.wizard-footer{flex-direction:column-reverse;align-items:stretch}.wizard-footer-right{justify-content:flex-end}}@media (width<=1080px){.container-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}}@media (width<=900px){.app-shell{grid-template-columns:1fr;grid-template-rows:auto var(--header-height) 1fr;grid-template-areas:"sidebar""topbar""main"}.app-sidebar{border-right:none;border-bottom:1px solid var(--color-border-soft);height:auto;position:static}.sidebar-inner{flex-direction:row;align-items:center;gap:16px;padding:12px 16px}.sidebar-brand{padding:0}.sidebar-nav{gap:4px;display:flex;overflow-x:auto}.sidebar-nav-item{white-space:nowrap}.server-card{grid-template-columns:1fr}}@media (width<=640px){.app-main{padding:20px 16px 48px}.header-inner{height:auto;min-height:var(--header-height);flex-wrap:wrap;gap:10px 16px;padding:0 16px}.app-topbar{position:static}.header-actions{flex-wrap:wrap;width:100%}.signed-in-user{width:100%}.container-grid{grid-template-columns:1fr}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.container-card-header{flex-direction:column}.auth-card{padding:24px}.auth-brand{flex-direction:column}}.inline-code{font-family:var(--font-mono);color:var(--color-text-muted);word-break:break-all;font-size:.82rem}.history-table td{vertical-align:middle}.history-row-current{background:var(--color-accent-soft)}.deployment-status-failed{color:var(--color-danger);font-weight:700}.icon-button{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:30px;height:30px;color:var(--color-text);background:var(--color-surface-raised);justify-content:center;align-items:center;font-size:1rem;line-height:1;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.icon-button:hover:not(:disabled){color:var(--color-accent);border-color:var(--color-accent);background:var(--color-border-soft)}.icon-button:disabled{opacity:.5}.console-output{height:60vh;overflow:auto}.console-output pre{max-height:none;margin:0}.console-live-detail{color:var(--color-text-muted);flex-wrap:wrap;gap:8px 16px;margin:10px 0 12px;font-size:.82rem;font-weight:600;display:flex}.console-status-dot{vertical-align:middle;background:currentColor;border-radius:50%;width:8px;height:8px;margin-right:2px;display:inline-block}.settings-page>.tabs{margin-bottom:8px}.settings-form{flex-direction:column;gap:14px;max-width:520px;margin-top:12px;display:flex}.settings-form label{flex-direction:column;gap:6px;display:flex}.settings-form label.checkbox-field{flex-direction:row;align-items:center;gap:10px}.settings-form label>span{font-size:.88rem;font-weight:600}.settings-form input:not([type=checkbox]),.settings-form select,.settings-file-input{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;color:var(--color-text);background:var(--color-bg);outline:none;padding:11px 12px;transition:border-color .12s}.settings-form input:not([type=checkbox]):focus,.settings-form select:focus{border-color:var(--color-accent)}.settings-form input:disabled,.settings-form select:disabled{opacity:.6}.settings-file-input{cursor:pointer;max-width:360px}.settings-file-input::file-selector-button{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-raised);color:var(--color-text);font:inherit;cursor:pointer;margin-right:12px;padding:6px 12px;font-weight:600}.inline-field{align-items:center;gap:8px;display:flex}.inline-field input{flex:1;min-width:0}.update-status{margin:0;font-weight:600}.update-status-available{color:var(--color-accent)}.update-status-current{color:var(--color-success)}.update-banner{border:1px solid var(--color-accent);border-radius:var(--radius-md);background:var(--color-accent-soft);color:var(--color-text);align-items:center;gap:12px;margin-bottom:20px;padding:12px 16px;display:flex}.update-banner-dot{background:var(--color-accent);border-radius:50%;flex-shrink:0;width:9px;height:9px}.update-banner-text{font-weight:600}.update-banner-reload{border:1px solid var(--color-accent);border-radius:var(--radius-sm);color:#fff;background:var(--color-accent);margin-left:auto;padding:7px 14px;font-size:.86rem;font-weight:600;transition:background .12s}.update-banner-reload:hover{background:var(--color-accent-hover)}.update-banner-dismiss{color:var(--color-text-muted);background:0 0;border:none;padding:4px;font-size:.95rem;line-height:1}.update-banner-dismiss:hover{color:var(--color-text)}.section-heading-actions{align-items:center;gap:10px;display:flex}.view-toggle{border:1px solid var(--color-border);border-radius:var(--radius-sm);display:inline-flex;overflow:hidden}.view-toggle button{background:var(--color-surface);color:var(--color-text-muted);border:none;padding:7px 12px;font-size:.84rem;font-weight:600;transition:background .12s,color .12s}.view-toggle button+button{border-left:1px solid var(--color-border)}.view-toggle button:hover:not(.active){color:var(--color-text)}.view-toggle button.active{background:var(--color-accent-soft);color:var(--color-accent)}.apps-table{table-layout:fixed}.apps-table th,.apps-table td{padding:10px 12px;overflow:hidden}.apps-table td{vertical-align:middle}.apps-table th:first-child,.apps-table td:first-child{width:7%}.apps-table th:nth-child(2),.apps-table td:nth-child(2){width:18%}.apps-table th:nth-child(3),.apps-table td:nth-child(3){width:11%}.apps-table th:nth-child(4),.apps-table td:nth-child(4){width:14%}.apps-table th:nth-child(5),.apps-table td:nth-child(5){width:7%}.apps-table th:nth-child(6),.apps-table td:nth-child(6){width:12%}.apps-table th:nth-child(7),.apps-table td:nth-child(7),.apps-table th:nth-child(8),.apps-table td:nth-child(8){width:16%}.apps-table-selection-cell{align-items:center;gap:6px;display:flex}.apps-table tbody tr.apps-table-selected-row td{background:var(--color-accent-soft)}.apps-table-selection-cell input,.apps-table thead input,.container-card .title-row>input{width:16px;height:16px;accent-color:var(--color-accent);flex:none;margin:0}.apps-bulk-actions{border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);background:var(--color-surface-raised);justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;padding:10px 12px;display:flex}.apps-bulk-action-buttons{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.container-card.selected{border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent)}@media (width<=760px){.apps-bulk-actions{flex-direction:column;align-items:flex-start}.apps-bulk-action-buttons{justify-content:flex-start}}.apps-table-app-name,.apps-table-image-cell code,.apps-table-id-row,.apps-table-last-deployed>span,.apps-table-subtext{white-space:nowrap;text-overflow:ellipsis;max-width:100%;display:block;overflow:hidden}.apps-table-app-subtitle{white-space:nowrap;overflow:hidden}.apps-table-app-subtitle>.status-badge{flex-shrink:0}.apps-table-image-cell code{word-break:normal;overflow-wrap:normal}.apps-table td .table-link{white-space:nowrap;text-overflow:ellipsis;vertical-align:bottom;max-width:100%;display:inline-block;overflow:hidden}.apps-table-actions{flex-wrap:nowrap;justify-content:flex-end;gap:4px;display:flex}.apps-table-actions>.primary-button.compact,.apps-table-actions>.secondary-button.compact{white-space:nowrap;padding:6px 9px}.table-name-button{color:var(--color-accent);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-weight:600}.table-name-button:hover{text-decoration:underline}.apps-table-app-button{text-align:left;width:100%;color:inherit;font-weight:inherit}.apps-table-app-button:hover{text-decoration:none}.apps-table-app-button:hover .apps-table-app-name{text-decoration:underline}.apps-table-app-cell{align-items:center;gap:10px;display:flex}.apps-table-app-icon{background:var(--color-surface-raised);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:1.1rem;display:inline-flex}.apps-table-app-meta{flex-direction:column;gap:2px;min-width:0;display:flex}.apps-table-app-name{color:var(--color-accent);overflow-wrap:anywhere;font-weight:600}.apps-table-app-subtitle{color:var(--color-text-faint);align-items:center;gap:6px;font-size:.78rem;display:flex}.apps-table-subtext{color:var(--color-text-faint);margin-top:2px;font-size:.76rem;display:block}.apps-table-status-cell,.apps-table-image-cell,.apps-table-last-deployed{flex-direction:column;display:flex}.apps-table-id-row{font-family:var(--font-mono);align-items:center;gap:6px;display:flex}.copy-button{color:var(--color-text-faint);background:0 0;border:none;padding:0 2px;font-size:.85rem;line-height:1}.copy-button:hover{color:var(--color-accent)}.icon-button.compact{width:26px;height:26px;font-size:.9rem}.icon-button.danger:hover:not(:disabled){color:var(--color-danger);border-color:var(--color-danger)}.apps-filter-count{white-space:nowrap;margin-left:auto;font-size:.85rem}.apps-filter-pill-row{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.apps-filter-chip-count{background:var(--color-border-soft);color:var(--color-text-muted);border-radius:999px;margin-left:5px;padding:0 6px;font-size:.72rem;font-weight:700;display:inline-block}.apps-filter-chip.active .apps-filter-chip-count{background:var(--color-accent);color:#fff}.apps-filter-clear{color:var(--color-accent);background:0 0;border:none;margin-left:auto;font-size:.84rem;font-weight:600}.apps-filter-clear:hover{text-decoration:underline}.table-link{color:var(--color-accent)}.app-detail-resources{border-top:1px solid var(--color-border-soft);margin-top:24px;padding-top:20px}.host-pressure-banner{border:1px solid var(--color-warning);border-radius:var(--radius-md);background:var(--color-warning-bg);color:var(--color-text);align-items:center;gap:12px;margin-bottom:20px;padding:12px 16px;font-size:.9rem;display:flex}.host-pressure-banner.over{border-color:var(--color-danger);background:var(--color-danger-bg)}.host-pressure-dot{background:var(--color-warning);border-radius:50%;flex-shrink:0;width:9px;height:9px}.host-pressure-banner.over .host-pressure-dot{background:var(--color-danger)}.attention-panel{flex-direction:column;gap:8px;margin-bottom:20px;display:flex}.attention-empty{border:1px solid var(--color-border-soft);border-radius:var(--radius-md);background:var(--color-success-bg);color:var(--color-text);align-items:center;gap:10px;padding:12px 16px;font-size:.9rem;display:flex}.attention-item{border:1px solid var(--color-border-soft);border-radius:var(--radius-md);background:var(--color-surface);align-items:center;gap:12px;padding:12px 16px;display:flex}.attention-item-dot{background:var(--color-warning);border-radius:50%;flex-shrink:0;width:9px;height:9px}.attention-item.severity-critical .attention-item-dot{background:var(--color-danger)}.attention-item-message{color:var(--color-text);flex:1;font-size:.9rem}.attention-item-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.attention-item-action{flex-shrink:0}.attention-more{color:var(--color-text-faint);padding:4px 16px;font-size:.82rem}.template-gallery{flex-direction:column;max-height:86vh;display:flex}.template-gallery .dialog-description{margin:0;padding:16px 22px 0}.template-gallery-body{flex:1;min-height:0;padding:8px 22px 22px;overflow-y:auto}.template-category{margin-top:20px}.template-category:first-child{margin-top:8px}.template-category h3{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin:0 0 12px;font-size:.78rem}.template-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;display:grid}.template-card{text-align:left;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);align-items:center;gap:14px;min-height:78px;padding:14px;transition:border-color .12s,background .12s,transform .12s;display:flex;position:relative}.template-card:hover{border-color:var(--color-accent);background:var(--color-surface-raised);transform:translateY(-1px)}.template-installed-badge{text-transform:uppercase;letter-spacing:.04em;color:var(--color-success);background:var(--color-success-bg);border:1px solid var(--color-success);border-radius:999px;padding:2px 8px;font-size:.68rem;font-weight:700;position:absolute;top:-8px;right:10px}.template-installed-banner,.template-warning-banner{border-radius:var(--radius-md);border:1px solid var(--color-success);background:var(--color-success-bg);color:var(--color-text);justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:10px 14px;font-size:.88rem;display:flex}.template-warning-banner{border-color:var(--color-warning);background:var(--color-warning-bg)}.template-icon{border-radius:var(--radius-sm);background:var(--color-surface-raised);border:1px solid var(--color-border-soft);flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;font-size:1.35rem;line-height:1;display:inline-flex}.template-card:hover .template-icon{border-color:var(--color-accent)}.template-icon-image{border-radius:var(--radius-sm);object-fit:contain;flex-shrink:0;width:42px;height:42px}.template-icon-image.large{border-radius:var(--radius-md);width:60px;height:60px}.template-original-badge{text-transform:uppercase;letter-spacing:.05em;color:var(--color-accent);background:var(--color-surface-raised);border:1px solid var(--color-accent);border-radius:999px;align-self:flex-start;margin:1px 0 2px;padding:1px 7px;font-size:.63rem;font-weight:700;display:inline-block}.template-detail-category .template-original-badge{vertical-align:middle;margin-left:8px}.template-service-list code{font-weight:600}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.deploy-overlay{z-index:900;pointer-events:none;flex-direction:column;gap:10px;width:min(340px,100vw - 40px);max-height:calc(100vh - 40px);display:flex;position:fixed;bottom:20px;right:20px;overflow-y:auto}.deploy-overlay-card{pointer-events:auto;border-radius:var(--radius-md);border:1px solid var(--color-border-soft);background:var(--color-surface-raised);padding:12px 14px;font-size:.85rem;box-shadow:0 8px 24px #00000059}.deploy-overlay-card.failed{border-color:var(--color-danger)}.deploy-overlay-card.complete{border-color:var(--color-success)}.deploy-overlay-head{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:8px;display:flex}.deploy-overlay-title{flex-direction:column;min-width:0;display:flex}.deploy-overlay-source{text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;overflow:hidden}.deploy-overlay-dismiss{color:var(--color-text-muted);cursor:pointer;background:0 0;border:0;flex-shrink:0;padding:0 2px;font-size:1.1rem;line-height:1}.deploy-overlay-dismiss:hover{color:var(--color-text)}.deploy-overlay-bar{background:var(--color-surface);border:1px solid var(--color-border-soft);border-radius:999px;height:6px;overflow:hidden}.deploy-overlay-fill{background:var(--color-accent);height:100%;transition:width .4s ease-out;display:block}.deploy-overlay-fill.complete{background:var(--color-success)}.deploy-overlay-fill.failed{background:var(--color-danger)}.deploy-overlay-meta{justify-content:space-between;align-items:baseline;gap:8px;margin-top:6px;font-size:.78rem;display:flex}.deploy-overlay-percent{font-weight:600}.deploy-overlay-error{border-radius:var(--radius-sm);background:var(--color-danger-bg);color:var(--color-text);overflow-wrap:anywhere;max-height:8.5rem;margin:8px 0 0;padding:8px 10px;font-size:.78rem;overflow-y:auto}.deploy-overlay-note{margin:6px 0 0;font-size:.75rem}.deploy-overlay-actions{justify-content:flex-end;margin-top:8px;display:flex}@media (width<=640px){.deploy-overlay{width:auto;bottom:10px;left:10px;right:10px}}.deploy-inline{flex-direction:column;gap:4px;min-width:140px;display:flex}.deploy-inline-top{align-items:center;gap:6px;font-size:.78rem;display:flex}.deploy-inline-dot{background:var(--color-accent);border-radius:50%;width:8px;height:8px;animation:1.1s ease-in-out infinite deploy-pulse}.deploy-inline-label{font-weight:600}.deploy-inline-percent{font-variant-numeric:tabular-nums;color:var(--color-text-muted,inherit);margin-left:auto}.deploy-inline-bar{background:var(--color-surface);border:1px solid var(--color-border-soft);border-radius:999px;height:6px;position:relative;overflow:hidden}.deploy-inline-fill{background-color:var(--color-accent);background-image:linear-gradient(90deg,#fff0 0%,#ffffff47 50%,#fff0 100%);background-repeat:repeat;background-size:32px 100%;border-radius:999px;height:100%;transition:width .4s ease-out;animation:1s linear infinite deploy-stripes;display:block}.deploy-inline-stage{white-space:nowrap;text-overflow:ellipsis;font-size:.72rem;overflow:hidden}@keyframes deploy-pulse{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}@keyframes deploy-stripes{0%{background-position:0 0}to{background-position:32px 0}}.deploy-banner{border-radius:var(--radius-md,12px);border:1px solid var(--color-accent-soft,var(--color-border-soft));background:var(--color-accent-bg,var(--color-surface));margin:12px 0 4px;padding:14px 16px}.deploy-banner-head{align-items:center;gap:10px;display:flex}.deploy-banner-spinner{border:2px solid var(--color-border-soft);border-top-color:var(--color-accent);border-radius:50%;flex:none;width:16px;height:16px;animation:.8s linear infinite deploy-spin}.deploy-banner-heading{flex-direction:column;gap:2px;min-width:0;display:flex}.deploy-banner-source{text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;overflow:hidden}.deploy-banner-percent{font-variant-numeric:tabular-nums;margin-left:auto;font-weight:600}.deploy-banner-bar{background:var(--color-surface);border:1px solid var(--color-border-soft);border-radius:999px;height:8px;margin-top:10px;overflow:hidden}.deploy-banner-fill{background-color:var(--color-accent);background-image:linear-gradient(90deg,#fff0 0%,#ffffff47 50%,#fff0 100%);background-repeat:repeat;background-size:40px 100%;border-radius:999px;height:100%;transition:width .4s ease-out;animation:1s linear infinite deploy-stripes-lg;display:block}.deploy-banner-meta{flex-wrap:wrap;gap:12px;margin-top:8px;font-size:.8rem;display:flex}@keyframes deploy-spin{to{transform:rotate(360deg)}}@keyframes deploy-stripes-lg{0%{background-position:0 0}to{background-position:40px 0}}@media (prefers-reduced-motion:reduce){.deploy-inline-dot,.deploy-inline-fill,.deploy-banner-spinner,.deploy-banner-fill,.speedtest-running-dot,.speedtest-running-fill{animation:none}}.speedtest-running{border:1px solid var(--color-accent-soft,var(--color-border-soft));border-radius:var(--radius-md);background:var(--color-surface);margin:12px 0 4px;padding:12px 14px}.speedtest-running-head{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;font-size:.88rem;font-weight:600;display:flex}.speedtest-running-note{font-size:.8rem;font-weight:400}.speedtest-running-dot{background:var(--color-accent);border-radius:50%;flex-shrink:0;width:9px;height:9px;animation:1.4s ease-in-out infinite deploy-pulse}.speedtest-running-track{background:var(--color-surface-raised);border:1px solid var(--color-border-soft);border-radius:999px;height:8px;overflow:hidden}.speedtest-running-fill{background-color:var(--color-accent);background-image:linear-gradient(90deg,#fff0 0%,#ffffff47 50%,#fff0 100%);background-repeat:repeat;background-size:40px 100%;border-radius:999px;width:40%;height:100%;animation:1.6s ease-in-out infinite speedtest-sweep,1s linear infinite deploy-stripes-lg;display:block}@keyframes speedtest-sweep{0%{transform:translate(-100%)}to{transform:translate(250%)}}.install-progress-modal{max-width:560px}.install-progress-body{padding:4px 22px 18px}.install-progress-bar{background:var(--color-surface-raised);border:1px solid var(--color-border-soft);border-radius:999px;height:10px;overflow:hidden}.install-progress-fill{background:var(--color-accent);height:100%;transition:width .3s ease-out;display:block}.install-progress-fill.complete{background:var(--color-success)}.install-progress-fill.failed{background:var(--color-danger)}.install-progress-percent{margin:10px 0 4px;font-size:.9rem}.install-progress-services{flex-direction:column;gap:12px;margin:14px 0 0;padding:0;list-style:none;display:flex}.install-progress-services li{flex-direction:column;gap:4px;font-size:.85rem;display:flex}.install-progress-service-name{align-items:center;gap:8px;display:flex}.install-progress-service-bar{background:var(--color-surface-raised);border-radius:999px;height:4px;display:block;overflow:hidden}.install-progress-service-fill{background:var(--color-accent);height:100%;transition:width .3s ease-out;display:block}.install-progress-service-fill.failed{background:var(--color-danger)}.template-card-body{flex-direction:column;gap:3px;min-width:0;display:flex}.template-name{color:var(--color-text);font-weight:600}.template-desc{color:var(--color-text-muted);font-size:.82rem;line-height:1.35}.published-ports-heading{margin-top:24px}.published-port-line{margin-bottom:2px}.template-detail-body{flex:1;min-height:0;padding:20px 22px 8px;overflow-y:auto}.template-detail-hero{align-items:flex-start;gap:18px;display:flex}.template-icon.large{border-radius:var(--radius-md);width:60px;height:60px;font-size:2rem}.template-detail-category{text-transform:uppercase;letter-spacing:.06em;color:var(--color-accent);margin-bottom:8px;font-size:.72rem;display:inline-block}.template-detail-blurb{color:var(--color-text);margin:0;font-size:1.02rem;line-height:1.6}.template-highlights{gap:10px;margin:20px 0 0;padding:0;list-style:none;display:grid}.template-highlights li{color:var(--color-text);padding-left:28px;line-height:1.45;position:relative}.template-highlights li:before{content:"✓";background:var(--color-success-bg);width:18px;height:18px;color:var(--color-success);border-radius:999px;justify-content:center;align-items:center;font-size:.72rem;font-weight:700;display:inline-flex;position:absolute;top:0;left:0}.template-connect{border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-md);background:var(--color-accent-soft);flex-wrap:wrap;align-items:baseline;gap:6px 10px;margin-top:20px;padding:14px 16px;display:flex}.template-connect-label{color:var(--color-text-muted);font-size:.9rem}.template-connect code{color:var(--color-text);font-size:.95rem}.template-connect-note{color:var(--color-text-faint);flex-basis:100%;font-size:.78rem}.template-detail-specs{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:0;padding:14px;display:grid}.template-detail-specs div{min-width:0}.template-detail-specs dt{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:4px;font-size:.72rem}.template-detail-specs dd{color:var(--color-text);word-break:break-word;margin:0}.template-detail-section{margin-top:20px}.template-detail-section h4{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin:0 0 10px;font-size:.78rem}.template-detail-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.template-detail-list li{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.template-detail-envvalue{color:var(--color-text-muted);font-size:.82rem}.template-badge{text-transform:uppercase;letter-spacing:.04em;background:var(--color-warning-bg);color:var(--color-warning);border-radius:999px;padding:2px 7px;font-size:.68rem}.template-detail-actions{border-top:1px solid var(--color-border-soft);justify-content:space-between;gap:12px;padding:16px 22px 20px;display:flex}.template-gallery-page .template-category h3{align-items:center;gap:8px;display:flex}.template-category-count{background:var(--color-border-soft);color:var(--color-text-muted);border-radius:999px;padding:0 7px;font-size:.72rem;font-weight:700;display:inline-block}
