:root{color:#17201b;font-synthesis:none;text-rendering:optimizelegibility;background:#f4f6f1;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:linear-gradient(#ffffffd1,#f4f6f1f0),#f4f6f1;min-width:320px;margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.54}.app-shell{width:min(1480px,100% - 32px);min-height:100vh;margin:0 auto;padding:24px 0 32px}.auth-shell{place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{background:#fff;border:1px solid #dfe6e1;border-radius:8px;gap:14px;width:min(100%,420px);padding:22px;display:grid;box-shadow:0 18px 38px #1a2d241a}.auth-card h1{color:#14221b;margin:0;font-size:28px}.auth-card p{color:#536259;margin:0;font-size:13px;line-height:1.45}.auth-card label{color:#536259;gap:6px;font-size:12px;font-weight:800;display:grid}.auth-card input{color:#17221c;background:#fbfcfb;border:1px solid #d7e0da;border-radius:8px;outline:none;min-height:42px;padding:0 10px}.auth-card input:focus{border-color:#2f6f9f;box-shadow:0 0 0 3px #2f6f9f24}.auth-dev-note{background:#f7faf8;border:1px solid #d7e0da;border-radius:8px;gap:5px;padding:9px 10px;display:grid}.auth-dev-note span{color:#536259;text-transform:uppercase;font-size:11px;font-weight:800}.auth-dev-note code{color:#17221c;text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.topbar{justify-content:space-between;align-items:center;gap:16px;min-height:72px;padding:8px 0 20px;display:flex}.eyebrow{color:#5f6d64;letter-spacing:0;text-transform:uppercase;margin-bottom:4px;font-size:12px;font-weight:700;display:block}h1,h2{letter-spacing:0;margin:0}h1{color:#0f1b16;font-size:30px;line-height:1.12}h2{color:#16231c;font-size:17px;line-height:1.2}.topbar-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.icon-button,.primary-action,.secondary-action{white-space:nowrap;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:38px;display:inline-flex}.icon-button{color:#203229;background:#fff;border-color:#dce3de;width:40px;padding:0}.icon-button:hover,.secondary-action:hover{border-color:#9fb2a8}.primary-action{color:#fff;background:#1d5f46;border-color:#1d5f46;padding:0 13px;font-weight:700}.primary-action:hover{background:#174c39}.secondary-action{color:#1f3e32;background:#fff;border-color:#d7e0da;padding:0 12px;font-weight:700}.metrics-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px;display:grid}.metric{background:#fff;border:1px solid #dfe6e1;border-radius:8px;align-items:center;gap:12px;min-height:76px;padding:14px;display:flex;box-shadow:0 10px 24px #192b230f}.metric svg{color:#2f6f9f;flex:none}.metric span{color:#64736b;font-size:12px;display:block}.metric strong{color:#14221b;font-size:24px;line-height:1.1;display:block}.error-banner{color:#7a231e;background:#fff0ed;border:1px solid #f2b7ad;border-radius:8px;align-items:center;gap:10px;min-height:44px;margin-bottom:16px;padding:10px 12px;font-weight:700;display:flex}.error-banner.compact{min-height:36px;margin-bottom:0;font-size:12px}.ops-dashboard{grid-template-columns:minmax(280px,.8fr) minmax(420px,1.2fr);gap:12px;margin-bottom:16px;display:grid}.ops-alert-panel,.ops-alert-list{background:#fff;border:1px solid #dfe6e1;border-radius:8px;min-width:0;padding:12px;box-shadow:0 10px 24px #192b230d}.ops-alert-panel{gap:10px;display:grid}.ops-panel-header{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.ops-panel-header strong{color:#17221c;font-size:14px;display:block}.ops-panel-header span{color:#66746c;font-size:12px;display:block}.ops-alert-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.ops-alert-stats>div{background:#f7faf8;border:1px solid #e1e8e3;border-radius:8px;gap:4px;min-width:0;padding:9px;display:grid}.ops-alert-stats span{color:#536259;text-transform:uppercase;font-size:10px;font-weight:900}.ops-alert-stats strong{color:#17221c;font-size:20px}.ops-alert-list{gap:8px;display:grid}.ops-alert-row{min-width:0;min-height:42px;color:inherit;text-align:left;background:#fbfcfb;border:1px solid #e3e9e5;border-radius:8px;grid-template-columns:auto minmax(180px,1fr) minmax(140px,.55fr);align-items:center;gap:10px;padding:8px;display:grid}.ops-alert-row:hover{border-color:#9fb2a8}.ops-alert-row div{min-width:0}.ops-alert-row strong,.ops-alert-row span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.ops-alert-row strong{color:#17221c;font-size:13px}.ops-alert-row span{color:#66746c;font-size:12px}.workspace-tabs{align-items:center;gap:8px;margin-bottom:16px;padding-bottom:2px;display:flex;overflow-x:auto}.workspace-tabs button{color:#1f3e32;white-space:nowrap;background:#fff;border:1px solid #d7e0da;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:38px;padding:0 12px;font-weight:800;display:inline-flex}.workspace-tabs button:hover{border-color:#9fb2a8}.workspace-tabs button.active{color:#fff;background:#1d5f46;border-color:#1d5f46}.workspace-grid{grid-template-columns:minmax(0,1fr);grid-auto-rows:minmax(0,auto);align-items:start;gap:16px;display:grid}.workspace-grid.jobs-workspace{grid-template-columns:minmax(330px,.85fr) minmax(440px,1.15fr)}.panel{background:#fff;border:1px solid #dfe6e1;border-radius:8px;min-width:0;padding:16px;box-shadow:0 12px 28px #1a2d2412}.invite-panel{grid-column:1/-1}.panel-header{justify-content:space-between;align-items:center;gap:12px;min-height:42px;margin-bottom:14px;display:flex}.panel-header span{color:#6b776f;font-size:12px}.panel-header-actions{justify-content:flex-end;align-items:center;gap:10px;display:flex}.tenant-list,.job-list,.step-list{flex-direction:column;gap:8px;margin:0;padding:0;display:flex}.tenant-ops-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px;display:grid}.tenant-ops-card{background:#f7faf8;border:1px solid #e1e8e3;border-radius:8px;gap:4px;min-width:0;padding:11px;display:grid}.tenant-ops-card.attention{background:#fff8ed;border-color:#edc987}.tenant-ops-card span,.tenant-ops-card small{color:#536259;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:800;overflow:hidden}.tenant-ops-card strong{color:#17221c;font-size:22px;line-height:1.1}.tenant-control-bar{grid-template-columns:minmax(260px,.85fr) minmax(360px,1.15fr);align-items:end;gap:10px;margin-bottom:12px;display:grid}.tenant-control-bar label{color:#536259;gap:6px;font-size:12px;font-weight:800;display:grid}.tenant-control-bar input{color:#17221c;background:#fbfcfb;border:1px solid #d7e0da;border-radius:8px;outline:none;min-height:38px;padding:0 10px}.tenant-filter-tabs{gap:6px;min-width:0;padding-bottom:1px;display:flex;overflow-x:auto}.tenant-filter-tabs button{color:#1f3e32;white-space:nowrap;background:#fff;border:1px solid #d7e0da;border-radius:8px;min-height:38px;padding:0 10px;font-size:12px;font-weight:800}.tenant-filter-tabs button.active{color:#fff;background:#1d5f46;border-color:#1d5f46}.tenant-row{background:#fff;border:1px solid #e3e9e5;border-radius:8px;grid-template-columns:minmax(220px,.8fr) minmax(360px,1.25fr) minmax(210px,.7fr);align-items:start;gap:12px;min-height:64px;padding:12px;display:grid}.tenant-row.attention{border-color:#edc987;box-shadow:inset 3px 0 #c8483d}.tenant-row.expanded{background:#fbfcfb}.tenant-card-header,.tenant-card-signal{gap:10px;min-width:0;display:grid}.tenant-state-stack{flex-wrap:wrap;gap:6px;min-width:0;display:flex}.tenant-facts{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;min-width:0;display:grid}.tenant-facts>div{background:#f7faf8;border:1px solid #e1e8e3;border-radius:8px;gap:3px;min-width:0;min-height:56px;padding:8px;display:grid}.tenant-facts span,.tenant-facts small,.tenant-card-signal span,.tenant-action-group>span{color:#536259;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:800;overflow:hidden}.tenant-facts strong{color:#17221c;text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.tenant-ok-note{color:#18583d;background:#e8f6ee;border:1px solid #bfe5cf;border-radius:999px;align-items:center;width:fit-content;min-height:24px;padding:0 8px;display:inline-flex}.tenant-expand-button{color:#1f3e32;background:#fff;border:1px solid #d7e0da;border-radius:8px;justify-content:center;align-items:center;gap:6px;width:fit-content;min-height:32px;padding:0 10px;font-size:12px;font-weight:800;display:inline-flex}.tenant-expand-button:hover{border-color:#9fb2a8}.tenant-expanded-area{grid-column:1/-1;gap:8px;min-width:0;display:grid}.tenant-action-dock{background:#f7faf8;border:1px solid #e1e8e3;border-radius:8px;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;min-width:0;padding:10px;display:grid}.tenant-action-group{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;min-width:0;display:grid}.tenant-action-group>span{text-transform:uppercase;grid-column:1/-1}.tenant-action-group .secondary-action{justify-content:flex-start;min-width:0;min-height:34px;padding:0 9px;font-size:12px}.tenant-main,.job-row div,.job-summary div,.step-content{min-width:0}.tenant-main strong,.job-row strong,.job-summary strong{color:#14221b;text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.tenant-main span,.tenant-meta span,.job-row span,.step-content span,.job-summary span{color:#69756d;text-overflow:ellipsis;white-space:nowrap;font-size:12px;display:block;overflow:hidden}.tenant-main .tenant-module-summary{color:#2f6f9f;font-weight:800}.tenant-alert-link{color:#84251f;background:#fff0ed;border:1px solid #f0b6ad;border-radius:999px;justify-content:center;align-items:center;gap:5px;width:fit-content;min-height:24px;padding:0 8px;font-size:12px;font-weight:800;display:inline-flex}.tenant-meta{grid-template-columns:112px minmax(64px,.45fr) minmax(96px,1fr) minmax(78px,.6fr);align-items:center;gap:8px;min-width:0;display:grid}.tenant-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.runtime-strip{border-top:1px solid #e6ece8;grid-column:1/-1;gap:8px;min-width:0;padding-top:8px;display:grid}.runtime-strip.pending{color:#6b776f;justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}.runtime-strip.pending span{font-weight:800}.runtime-strip.pending small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.runtime-strip-header{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.runtime-strip-header>span{color:#69756d;font-size:12px}.runtime-strip-header code,.setup-url code{color:#405047;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:11px;overflow:hidden}.runtime-links{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.runtime-link,.setup-url{color:#1f3e32;min-width:0;text-decoration:none}.runtime-link{background:#f7faf8;border:1px solid #e1e8e3;border-radius:8px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:6px;min-height:34px;padding:7px 8px;display:grid}.runtime-link:hover,.setup-url:hover{border-color:#9fb2a8}.runtime-link.muted{color:#69756d}.runtime-link span,.setup-url span{color:#536259;font-size:11px;font-weight:800}.runtime-link code{color:#17221c;text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.status-pill{white-space:nowrap;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:5px;width:fit-content;min-width:84px;min-height:26px;padding:0 8px;font-size:12px;font-weight:800;display:inline-flex}.status-pill.success{color:#18583d;background:#e8f6ee;border-color:#bfe5cf}.status-pill.danger{color:#84251f;background:#fff0ed;border-color:#f0b6ad}.status-pill.work{color:#225b7f;background:#eaf5fb;border-color:#bbdff0}.status-pill.pending{color:#75500d;background:#fff6df;border-color:#ead18a}.status-pill.muted{color:#5f6870;background:#f0f2f3;border-color:#d8dde0}.status-pill.work svg{animation:1s linear infinite spin}.tenant-form,.module-admin-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.module-admin-form+.module-admin-form{border-top:1px solid #e6ece8;margin-top:16px;padding-top:16px}.tenant-form label,.module-admin-form label{color:#536259;flex-direction:column;gap:6px;font-size:12px;font-weight:800;display:flex}.form-divider{color:#405047;grid-column:1/-1;align-items:center;gap:8px;min-height:30px;font-size:12px;font-weight:800;display:flex}.tenant-form input,.tenant-form select,.module-admin-form input,.module-admin-form select{color:#17221c;background:#fbfcfb;border:1px solid #d7e0da;border-radius:8px;outline:none;width:100%;min-height:40px;padding:0 10px}.tenant-form input:focus,.tenant-form select:focus,.module-admin-form input:focus,.module-admin-form select:focus{border-color:#2f6f9f;box-shadow:0 0 0 3px #2f6f9f24}.field-label,.plan-note span{color:#536259;font-size:12px}.field-label{font-weight:800}.plan-note,.module-picker{grid-column:1/-1}.plan-note{background:#f7faf8;border:1px solid #e1e8e3;border-radius:8px;gap:4px;min-height:44px;padding:10px;display:grid}.plan-note strong{color:#17221c;font-size:13px}.module-picker{gap:8px;display:grid}.module-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.module-option-group{grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-width:0;display:grid}.module-option-group-header{color:#536259;letter-spacing:0;text-transform:uppercase;grid-column:1/-1;padding:3px 0 1px;font-size:11px;font-weight:900}.module-admin-form .module-options,.module-admin-form .plan-note,.module-change-preview,.bulk-tenant-list{grid-column:1/-1}.module-change-preview{background:#fbfcfb;border:1px solid #dfe8e3;border-radius:8px;gap:10px;padding:12px;display:grid}.module-change-header,.module-change-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.module-change-header strong{color:#17221c;font-size:13px}.module-change-header>span,.module-change-meta{color:#5f6f66;font-size:12px;font-weight:700}.runtime-apply-impact{color:#314139;background:#f8fbf9;border:1px solid #d8e5dc;border-radius:8px;gap:9px;padding:10px;display:grid}.runtime-apply-impact.pending{background:#fffdf4;border-color:#ead18a}.runtime-apply-impact-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.runtime-apply-impact-header>div{align-items:center;gap:8px;min-width:0;display:flex}.runtime-apply-impact-header strong{color:#17221c;font-size:13px}.runtime-apply-impact-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 10px;display:grid}.runtime-apply-impact-list span{color:#536259;overflow-wrap:anywhere;min-width:0;font-size:12px;font-weight:700;line-height:1.35}.runtime-apply-timeouts{flex-wrap:wrap;gap:8px;display:flex}.runtime-apply-timeouts span{color:#536259;background:#eef5f1;border:1px solid #d7e4dc;border-radius:999px;padding:5px 7px;font-size:11px;font-weight:800}.runtime-apply-impact.pending .runtime-apply-timeouts span{background:#fff9dc;border-color:#ead18a}.runtime-apply-timeouts strong{color:#17221c}.module-change-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.module-change-grid>div{background:#f6f9f7;border:1px solid #e3ebe5;border-radius:8px;align-content:start;gap:6px;min-width:0;min-height:78px;padding:9px;display:grid}.module-change-grid>div>span{color:#536259;text-transform:uppercase;font-size:11px;font-weight:800}.module-change-tags{flex-wrap:wrap;gap:5px;display:flex}.module-change-tags span,.module-change-empty{color:#26342d;text-overflow:ellipsis;white-space:nowrap;background:#eaf2ed;border:1px solid #d5e2da;border-radius:999px;max-width:100%;padding:4px 7px;font-size:11px;font-weight:800;overflow:hidden}.module-change-empty{color:#66746c;background:0 0}.module-change-warnings,.module-change-events{color:#75500d;gap:5px;font-size:12px;font-weight:700;display:grid}.module-change-events{color:#536259}.module-change-events strong{color:#17221c;font-size:12px}.module-options .module-option{color:#17221c;background:#fbfcfb;border:1px solid #e1e8e3;border-radius:8px;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:9px;min-height:72px;padding:10px;display:grid}.module-options .module-option input{width:16px;min-height:16px;margin-top:2px;padding:0}.module-options .module-option span{gap:3px;min-width:0;display:grid}.module-options .module-option strong{color:#17221c;text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.module-options .module-option small{color:#66746c;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.module-options.compact{max-height:430px;padding-right:2px;overflow:auto}.split-actions{flex-wrap:wrap;grid-column:1/-1;justify-content:flex-end;align-items:center;gap:10px;display:flex}.danger-action{color:#7a231e}.danger-action:hover{border-color:#d28f86}.bulk-tenant-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:230px;padding-right:2px;display:grid;overflow:auto}.module-admin-form .bulk-tenant-option{color:#17221c;background:#fbfcfb;border:1px solid #e1e8e3;border-radius:8px;grid-template-columns:auto minmax(0,1fr);gap:9px;min-height:54px;padding:9px;display:grid}.bulk-tenant-option input{width:16px;min-height:16px;margin-top:2px;padding:0}.bulk-tenant-option span{gap:3px;min-width:0;display:grid}.bulk-tenant-option strong,.bulk-tenant-option small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.bulk-tenant-option strong{color:#17221c;font-size:13px}.bulk-tenant-option small{color:#66746c;font-size:12px;font-weight:600}.deployment-toolbar,.readiness-toolbar,.template-toolbar,.usage-toolbar,.deployment-log-toolbar{grid-template-columns:minmax(240px,1fr) auto;align-items:end;gap:12px;display:grid}.deployment-toolbar label,.readiness-toolbar label,.template-toolbar label,.usage-toolbar label,.deployment-log-toolbar label{color:#536259;gap:6px;font-size:12px;font-weight:800;display:grid}.deployment-toolbar select,.readiness-toolbar select,.template-toolbar select,.usage-toolbar select,.deployment-log-toolbar select{color:#17221c;background:#fbfcfb;border:1px solid #d7e0da;border-radius:8px;outline:none;width:100%;min-height:40px;padding:0 10px}.deployment-status-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:14px;display:grid}.deployment-status-grid>div,.deployment-service-list>div{background:#f7faf8;border:1px solid #e1e8e3;border-radius:8px;align-content:start;gap:6px;min-width:0;min-height:82px;padding:10px;display:grid}.deployment-status-grid span,.deployment-service-list span{color:#536259;text-transform:uppercase;font-size:11px;font-weight:800}.deployment-status-grid strong,.deployment-service-list strong{color:#17221c;text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.deployment-status-grid small,.deployment-service-list small{color:#66746c;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:11px;line-height:1.35;display:-webkit-box;overflow:hidden}.deployment-service-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px;display:grid}.deployment-log-panel{gap:10px;margin-top:14px;display:grid}.runtime-image-transfer-panel{background:#f7faf8;border:1px solid #e1e8e3;border-radius:8px;gap:12px;margin-top:14px;padding:12px;display:grid}.runtime-image-transfer-form{grid-template-columns:minmax(180px,1fr) minmax(140px,.5fr) minmax(160px,.7fr) auto auto;align-items:end;gap:10px;display:grid}.runtime-image-transfer-form label{color:#536259;gap:6px;min-width:0;font-size:12px;font-weight:800;display:grid}.runtime-image-transfer-form input:not([type=checkbox]){color:#17221c;background:#fff;border:1px solid #d7e0da;border-radius:8px;outline:none;width:100%;min-height:40px;padding:0 10px}.runtime-local-build-form{grid-template-columns:minmax(160px,.7fr) minmax(120px,.4fr) minmax(260px,1fr) auto}.runtime-component-checks{flex-wrap:wrap;align-items:end;gap:8px;display:flex}.runtime-component-checks .runtime-image-transfer-check{min-width:110px;margin:0}.runtime-image-transfer-check{background:#fff;border:1px solid #d7e0da;border-radius:8px;grid-template-columns:auto minmax(0,1fr);align-items:center;min-height:40px;padding:0 8px}.runtime-image-transfer-check input{width:16px;min-height:16px;padding:0}.runtime-image-transfer-log{gap:8px;display:grid}.runtime-image-transfer-log>div{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.runtime-image-transfer-log small{color:#66746c;font-size:12px}.backup-toolbar{grid-template-columns:minmax(260px,1fr) minmax(220px,auto) auto;align-items:end;gap:10px;margin-bottom:12px;display:grid}.backup-toolbar>label:not(.runtime-image-transfer-check){color:#536259;gap:6px;font-size:12px;font-weight:800;display:grid}.backup-toolbar select{color:#17221c;background:#fff;border:1px solid #d7e0da;border-radius:8px;outline:none;min-height:40px;padding:0 10px}.backup-image-toggle{margin:0}.backup-note{color:#5f4b19;background:#fff8ed;border:1px solid #edc987;border-radius:8px;align-items:flex-start;gap:8px;margin-bottom:12px;padding:10px 12px;font-size:13px;line-height:1.45;display:flex}.backup-list{gap:12px;display:grid}.backup-card{background:#f7faf8;border:1px solid #e1e8e3;border-radius:8px;gap:12px;padding:12px;display:grid}.backup-card-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.backup-card-header>div{gap:4px;min-width:0;display:grid}.backup-card-header span,.backup-summary-grid span,.backup-file-grid span{color:#536259;text-transform:uppercase;font-size:11px;font-weight:800}.backup-card-header span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.backup-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.backup-summary-grid>div,.backup-file-grid>div{background:#fff;border:1px solid #d7e0da;border-radius:8px;gap:4px;min-width:0;padding:9px 10px;display:grid}.backup-summary-grid strong{color:#17221c;text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.backup-file-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;display:grid}.backup-file-grid code{color:#17221c;overflow-wrap:anywhere;font-size:12px;line-height:1.35;overflow:hidden}.deployment-nginx-panel{background:#f7faf8;border:1px solid #e1e8e3;border-radius:8px;gap:10px;margin-top:12px;padding:12px;display:grid}.deployment-nginx-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.deployment-nginx-header>div{gap:5px;min-width:0;display:grid}.deployment-nginx-header span{color:#536259;text-transform:uppercase;font-size:11px;font-weight:800}.deployment-nginx-header code{color:#17221c;text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.deployment-runtime-section{gap:8px;min-width:0;display:grid}.deployment-section-label{color:#536259;text-transform:uppercase;font-size:11px;font-weight:800}.deployment-runtime-links{grid-template-columns:repeat(4,minmax(0,1fr))}.deployment-nginx-note{color:#66746c;font-size:12px;line-height:1.45}.deployment-nginx-domains{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.nginx-domain-pill{min-width:0;color:inherit;background:#fff;border:1px solid #d7e0da;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:5px;padding:9px 10px;text-decoration:none;display:grid}a.nginx-domain-pill:hover{border-color:#9fb2a8}.nginx-domain-pill span{color:#536259;text-transform:uppercase;grid-column:1/-1;font-size:11px;font-weight:800}.nginx-domain-pill code{color:#17221c;text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.deployment-nginx-panel pre{color:#d9e9df;background:#17221c;border-radius:8px;margin:0;padding:10px;font-size:12px;line-height:1.45;overflow:auto}.deployment-log-panel pre,.runtime-image-transfer-log pre{color:#d9e9df;white-space:pre-wrap;overflow-wrap:anywhere;background:#17221c;border-radius:8px;min-height:220px;max-height:420px;padding:12px;font-size:12px;line-height:1.45;overflow:auto}.readiness-summary{grid-template-columns:1.1fr 1fr .8fr 1.1fr;gap:10px;margin-top:14px;margin-bottom:12px;display:grid}.template-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:14px;margin-bottom:12px;display:grid}.readiness-summary>div,.template-summary>div{background:#f7faf8;border:1px solid #e1e8e3;border-radius:8px;align-content:start;gap:7px;min-width:0;min-height:86px;padding:10px;display:grid}.usage-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:14px;margin-bottom:12px;display:grid}.usage-metric-card{background:#f7faf8;border:1px solid #e1e8e3;border-radius:8px;align-content:start;gap:7px;min-width:0;min-height:112px;padding:10px;display:grid}.usage-metric-card span,.usage-section-header span{color:#536259;text-transform:uppercase;font-size:11px;font-weight:900}.usage-metric-card strong{color:#17221c;text-overflow:ellipsis;white-space:nowrap;font-size:22px;line-height:1.05;overflow:hidden}.usage-metric-card small,.usage-metric-card em{color:#66746c;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:11px;font-style:normal;line-height:1.35;display:-webkit-box;overflow:hidden}.usage-metric-card progress{accent-color:#1d5f46;border:0;border-radius:999px;width:100%;height:8px;overflow:hidden}.usage-grid{grid-template-columns:minmax(280px,.9fr) minmax(280px,1.1fr);gap:10px;margin-top:12px;display:grid}.usage-foundation-grid{grid-template-columns:minmax(320px,1.1fr) minmax(320px,.9fr);gap:10px;margin-top:12px;display:grid}.usage-quota-form,.usage-alert-panel,.usage-plan-quota-panel,.usage-report-panel{background:#fbfcfb;border:1px solid #e1e8e3;border-radius:8px;gap:10px;min-width:0;padding:12px;display:grid}.usage-section-header{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.usage-section-header strong{color:#17221c;font-size:14px}.usage-quota-form label{color:#536259;gap:6px;font-size:12px;font-weight:800;display:grid}.usage-quota-form input{color:#17221c;background:#fff;border:1px solid #d7e0da;border-radius:8px;outline:none;min-height:38px;padding:0 10px}.usage-alert-list,.usage-snapshot-list,.usage-report-list{gap:8px;margin-top:12px;display:grid}.usage-plan-quota-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.usage-plan-quota-card{background:#fff;border:1px solid #e1e8e3;border-radius:8px;gap:6px;min-width:0;padding:10px;display:grid}.usage-plan-quota-card.is-active{border-color:#0891b2;box-shadow:inset 0 0 0 1px #0891b229}.usage-plan-quota-card div{min-width:0}.usage-plan-quota-current{border-top:1px solid #e1e8e3;gap:3px;padding-top:7px;display:grid}.usage-plan-quota-current small:first-child{color:#0f6f86;font-weight:800}.usage-plan-quota-card strong,.usage-report-row strong{color:#17221c;text-overflow:ellipsis;white-space:nowrap;font-size:13px;display:block;overflow:hidden}.usage-plan-quota-card span,.usage-plan-quota-card small,.usage-report-row span{color:#66746c;text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:1.35;display:block;overflow:hidden}.usage-report-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.usage-report-summary>div{background:#fff;border:1px solid #e1e8e3;border-radius:8px;gap:5px;min-width:0;padding:10px;display:grid}.usage-report-summary span{color:#536259;text-transform:uppercase;font-size:10px;font-weight:900}.usage-report-summary strong{color:#17221c;text-overflow:ellipsis;white-space:nowrap;font-size:18px;overflow:hidden}.resource-worker-footer{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.resource-worker-footer span{color:#536259;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:700;overflow:hidden}.usage-alert{background:#fffaf0;border:1px solid #f1d7a8;border-radius:8px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;min-width:0;padding:10px;display:grid}.usage-alert div,.usage-snapshot div{min-width:0}.usage-alert strong,.usage-snapshot strong{color:#17221c;text-overflow:ellipsis;white-space:nowrap;font-size:13px;display:block;overflow:hidden}.usage-alert span,.usage-snapshot span{color:#66746c;text-overflow:ellipsis;white-space:nowrap;font-size:12px;display:block;overflow:hidden}.usage-tenant-list{gap:8px;margin-top:14px;display:grid}.usage-tenant-row{text-align:left;background:#fbfcfb;border:1px solid #e1e8e3;border-radius:8px;grid-template-columns:minmax(170px,1fr) minmax(94px,.45fr) minmax(94px,.45fr) minmax(110px,.55fr) auto;align-items:center;gap:10px;min-width:0;min-height:54px;padding:10px;display:grid}.usage-tenant-row.active{border-color:#1d5f46;box-shadow:inset 3px 0 #1d5f46}.usage-tenant-row>div{min-width:0}.usage-tenant-row strong{color:#17221c;text-overflow:ellipsis;white-space:nowrap;font-size:13px;display:block;overflow:hidden}.usage-tenant-row span{color:#66746c;text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.usage-snapshot{background:#fbfcfb;border:1px solid #e1e8e3;border-radius:8px;grid-template-columns:minmax(160px,1fr) minmax(94px,.5fr) minmax(94px,.5fr) minmax(92px,.45fr) auto;align-items:center;gap:10px;min-width:0;min-height:52px;padding:10px;display:grid}.usage-report-row{background:#fbfcfb;border:1px solid #e1e8e3;border-radius:8px;grid-template-columns:minmax(170px,1fr) minmax(94px,.45fr) minmax(94px,.45fr) minmax(110px,.55fr) auto;align-items:center;gap:10px;min-width:0;min-height:52px;padding:10px;display:grid}.readiness-summary span,.template-summary span,.readiness-check-header+span{color:#536259;font-size:12px;font-weight:800}.readiness-summary span,.template-summary span{text-transform:uppercase}.readiness-summary strong,.template-summary strong{color:#17221c;text-overflow:ellipsis;white-space:nowrap;font-size:23px;line-height:1.05;overflow:hidden}.readiness-summary small,.template-summary small,.readiness-check small{color:#66746c;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:11px;line-height:1.35;display:-webkit-box;overflow:hidden}.template-runtime-grid{grid-template-columns:1fr 1fr;gap:10px;margin-top:12px;display:grid}.template-runtime-grid>div{background:#fbfcfb;border:1px solid #e1e8e3;border-radius:8px;align-content:start;gap:8px;min-width:0;min-height:88px;padding:10px;display:grid}.template-runtime-grid>div>span{color:#536259;text-transform:uppercase;font-size:11px;font-weight:900}.template-pack-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px;display:grid}.template-pack-card{background:#f7faf8;border:1px solid #dfe8e3;border-radius:8px;gap:9px;min-width:0;padding:12px;display:grid}.template-pack-card>div:first-child{gap:3px;min-width:0;display:grid}.template-pack-card strong,.template-item strong{color:#17221c;text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.template-pack-card>div:first-child span,.template-item>div:first-child span{color:#66746c;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:800;overflow:hidden}.template-pack-card p,.template-item p{color:#526259;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:32px;margin:0;font-size:12px;font-weight:650;line-height:1.35;display:-webkit-box;overflow:hidden}.template-lists-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px;display:grid}.template-list-block{align-content:start;gap:8px;min-width:0;display:grid}.template-list-header{justify-content:space-between;align-items:center;gap:10px;min-height:32px;display:flex}.template-list-header strong{color:#17221c;font-size:13px}.template-list-header span{color:#536259;text-align:center;background:#eaf2ed;border-radius:999px;min-width:24px;padding:3px 7px;font-size:11px;font-weight:900}.template-item-list{gap:8px;max-height:420px;padding-right:2px;display:grid;overflow:auto}.template-item{background:#fbfcfb;border:1px solid #e1e8e3;border-radius:8px;gap:8px;min-width:0;min-height:112px;padding:10px;display:grid}.template-item>div:first-child{gap:2px;min-width:0;display:grid}.template-item-meta{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.template-item-meta span:not(.status-pill){color:#405047;background:#edf4f0;border:1px solid #d7e5dd;border-radius:999px;max-width:100%;padding:3px 6px}.readiness-check-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px;display:grid}.go-live-event{color:#405047;background:#f7faf8;border:1px solid #d5e2da;border-radius:8px;align-items:center;gap:10px;min-height:42px;margin-top:12px;padding:8px 10px;display:flex}.go-live-event span{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;font-weight:800;overflow:hidden}.readiness-check{background:#fbfcfb;border:1px solid #e1e8e3;border-radius:8px;gap:8px;min-width:0;min-height:104px;padding:11px;display:grid}.readiness-check.pass{border-color:#bfe5cf}.readiness-check.warning{background:#fffdf5;border-color:#ead18a}.readiness-check.fail{background:#fff8f6;border-color:#f0b6ad}.readiness-check-header{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.readiness-check-header strong{color:#17221c;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:14px;overflow:hidden}.image-grid{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.submit-action{grid-column:1/-1}.invite-token{grid-template-columns:110px minmax(0,1fr);align-items:center;gap:10px;min-height:38px;margin-top:8px;display:grid}.invite-token span{color:#69756d;font-size:12px;font-weight:800}.invite-token code{color:#17221c;text-overflow:ellipsis;white-space:nowrap;background:#f7faf8;border:1px solid #e1e8e3;border-radius:8px;padding:8px 10px;overflow:hidden}.setup-url{background:#f7faf8;border:1px solid #e1e8e3;border-radius:8px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;min-height:38px;margin-top:8px;padding:8px 10px;display:grid}.runtime-delivery{color:#405047;background:#f7faf8;border:1px solid #e1e8e3;border-radius:8px;align-items:center;gap:10px;min-height:38px;margin-top:8px;padding:8px 10px;display:flex}.runtime-delivery.failed{color:#7a231e;background:#fff0ed;border-color:#f2b7ad}.runtime-delivery span:last-child{min-width:0;font-size:12px}.jobs-panel,.details-panel{min-height:260px}.worker-notice{color:#604515;background:#fffdf4;border:1px solid #ead18a;border-radius:8px;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:9px;padding:10px;display:grid}.worker-notice div{gap:3px;min-width:0;display:grid}.worker-notice strong{color:#47310e;font-size:13px}.worker-notice span{color:#6d5721;font-size:12px;font-weight:700;line-height:1.35}.worker-notice.failed{color:#7a231e;background:#fff0ed;border-color:#f2b7ad}.worker-notice.failed strong{color:#67231e}.worker-notice.failed span{color:#7a231e}.worker-notice.ok{color:#1d5f46;background:#edf8f1;border-color:#b9dfc5}.worker-notice.ok strong,.worker-notice.ok span{color:#1d5f46}.job-row{text-align:left;background:#fbfcfb;border:1px solid #e3e9e5;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;width:100%;min-height:58px;padding:10px;display:flex}.job-row.selected{border-color:#2f6f9f;box-shadow:0 0 0 3px #2f6f9f1f}.job-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:16px;display:grid}.job-summary div{background:#f7faf8;border:1px solid #e1e8e3;border-radius:8px;min-height:62px;padding:10px}.job-live-strip{background:#f7faf8;border:1px solid #dce7e1;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;min-height:72px;padding:12px;display:flex}.job-live-strip div{gap:4px;min-width:0;display:grid}.job-live-strip span:first-child{color:#536259;text-transform:uppercase;font-size:11px;font-weight:800}.job-live-strip strong{color:#14221b;text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.job-live-strip small{color:#66746c;font-size:12px;font-weight:700}.job-stream-state{color:#536259;background:#fff;border:1px solid #d7e0da;border-radius:999px;justify-content:center;align-items:center;min-width:82px;min-height:28px;padding:0 10px;font-size:12px;font-weight:800;display:inline-flex}.job-stream-state.connected{color:#1d5f46;background:#edf8f1;border-color:#b9dfc5}.job-stream-state.error{color:#7a231e;background:#fff0ed;border-color:#f2b7ad}.job-progress{background:#e4ebe6;border-radius:999px;height:8px;margin:8px 0 12px;overflow:hidden}.job-progress div{border-radius:inherit;background:#2f6f9f;height:100%;transition:width .18s}.step-list{list-style:none}.step-row{grid-template-columns:14px minmax(0,1fr);gap:10px;min-height:62px;padding:8px 0;display:grid}.step-marker{background:#c2cac4;border-radius:999px;width:10px;height:10px;margin-top:8px}.step-marker[data-status=succeeded]{background:#2d8b61}.step-marker[data-status=failed]{background:#c8483d}.step-marker[data-status=running]{background:#2f6f9f}.step-marker[data-status=skipped]{background:#879098}.step-content{border-bottom:1px solid #e8ede9;padding-bottom:8px}.step-title{justify-content:space-between;align-items:center;gap:10px;margin-bottom:4px;display:flex}.step-title strong{color:#14221b;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.step-content small{color:#536259;text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:12px;font-weight:700;line-height:1.35;display:block;overflow:hidden}.step-content p,.empty-state{color:#7a231e;font-size:13px}.empty-state{color:#69756d;place-items:center;min-height:120px;display:grid}.empty-state.compact{min-height:64px}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=1100px){.workspace-grid,.workspace-grid.jobs-workspace,.ops-dashboard,.tenant-ops-grid,.tenant-control-bar,.tenant-row{grid-template-columns:1fr}.tenant-facts,.tenant-action-dock,.runtime-links{grid-template-columns:repeat(2,minmax(0,1fr))}.template-lists-grid{grid-template-columns:1fr}.usage-summary,.usage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.usage-foundation-grid,.usage-plan-quota-list,.usage-report-summary,.usage-report-row,.backup-summary-grid,.backup-file-grid{grid-template-columns:1fr}.runtime-image-transfer-form{grid-template-columns:1fr 1fr}}@media (width<=760px){.app-shell{width:min(100% - 20px,1480px);padding-top:14px}.topbar{flex-direction:column;align-items:flex-start}.metrics-grid,.ops-dashboard,.ops-alert-row,.tenant-ops-grid,.tenant-control-bar,.tenant-facts,.tenant-action-dock,.tenant-action-group,.tenant-form,.module-admin-form,.image-grid,.module-options,.module-change-grid,.runtime-apply-impact-list,.bulk-tenant-list,.deployment-toolbar,.backup-toolbar,.readiness-toolbar,.template-toolbar,.usage-toolbar,.deployment-log-toolbar,.runtime-image-transfer-form,.deployment-status-grid,.deployment-service-list,.deployment-nginx-domains,.readiness-summary,.template-summary,.usage-summary,.usage-grid,.usage-foundation-grid,.usage-plan-quota-list,.usage-report-summary,.template-runtime-grid,.template-pack-list,.template-lists-grid,.usage-tenant-row,.usage-snapshot,.usage-report-row,.backup-summary-grid,.backup-file-grid,.readiness-check-list,.job-summary,.tenant-row,.tenant-meta{grid-template-columns:1fr}.tenant-actions{justify-content:stretch}.job-live-strip{flex-direction:column;align-items:stretch}.tenant-actions .secondary-action{flex:180px}.tenant-action-group .secondary-action{width:100%}.runtime-links{grid-template-columns:1fr}.runtime-strip.pending{flex-direction:column;align-items:flex-start}.invite-token{grid-template-columns:1fr}.secondary-action,.primary-action.submit-action{width:100%}}
