:root{--font-sans: "Inter", system-ui, -apple-system, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, monospace;--bg: #0c0e14;--surface: #141820;--surface-2: #1a1f2b;--surface-elevated: #222836;--border: #2a3142;--border-subtle: #232938;--text: #eef0f6;--text-muted: #8b93a8;--text-subtle: #5c6478;--accent: #6c5ce7;--accent-hover: #7d6ef0;--accent-muted: rgba(108, 92, 231, .15);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--shadow: 0 4px 24px rgba(0, 0, 0, .28);--transition-fast: .15s ease;--transition-medium: .22s ease;font-family:var(--font-sans);line-height:1.5;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0}.app-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;padding:.85rem 1.5rem;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.app-header h1{margin:0;font-size:1.125rem;font-weight:700;letter-spacing:-.02em;color:var(--text)}.app-brand{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap}.subtitle{color:var(--text-muted);font-size:.8125rem}main{padding:1.5rem;max-width:1400px;margin:0 auto}.overview-section h2{margin:0 0 .5rem;font-size:1.5rem;font-weight:700;letter-spacing:-.02em}.overview-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.overview-toolbar-text{min-width:0}.status-legend{display:flex;flex-wrap:wrap;gap:.4rem}.legend-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .55rem;border-radius:999px;font-size:.72rem;font-weight:500;color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border-subtle)}.legend-chip-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.legend-chip--stable .legend-chip-dot{background:#4ade80;box-shadow:0 0 6px #4ade8073}.legend-chip--scheduled .legend-chip-dot{background:#60b0f0;box-shadow:0 0 6px #60b0f073}.legend-chip--pending .legend-chip-dot{background:#f0d060;box-shadow:0 0 6px #f0d06073}.legend-chip--cancelled .legend-chip-dot{background:#ffb366}.legend-chip--failed .legend-chip-dot{background:#f06060}.btn-secondary{display:inline-flex;align-items:center;gap:.4rem;background:var(--surface-2);color:var(--text);border:1px solid var(--border);padding:.5rem .95rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.875rem;font-weight:500;white-space:nowrap;transition:background var(--transition-fast),border-color var(--transition-fast),transform var(--transition-fast)}.btn-secondary:hover:not(:disabled){background:var(--surface-elevated);border-color:var(--accent)}.btn-secondary:active:not(:disabled){transform:scale(.98)}.btn-secondary:disabled{opacity:.55;cursor:wait}.matrix-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow-x:auto;box-shadow:var(--shadow)}.matrix-table{width:100%;border-collapse:collapse;font-size:.875rem;table-layout:fixed}col.project-col{width:16rem;min-width:16rem}col.region-col{width:11rem;min-width:11rem}.matrix-table th,.matrix-table td{border-bottom:1px solid #2a2f3e;padding:.65rem .75rem;text-align:left;vertical-align:middle}.matrix-table th:first-child,.matrix-table td.project-name-cell{position:sticky;left:0;z-index:1;border-right:1px solid #353b4d;width:16rem;max-width:16rem;vertical-align:middle}.matrix-table th:first-child{z-index:2}.matrix-table tbody tr:last-child td{border-bottom:none}.matrix-table th{background:#1c2030;color:#9aa0b4;font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.matrix-table th.region-col{text-align:center}.matrix-table td.matrix-data-cell{text-align:center;vertical-align:middle;padding:.5rem .35rem;overflow:hidden}.matrix-table td.matrix-data-cell>.cell,.matrix-table td.matrix-data-cell>a.cell-link{width:100%;max-width:100%}.matrix-table td.matrix-data-cell>.cell.cell-empty{display:inline-flex}.matrix-table tr.child-row:hover td,.matrix-table tr.parent-row:hover td{background:color-mix(in srgb,var(--surface-elevated) 85%,transparent)}.matrix-table tr.parent-row--expandable:hover td.project-name-cell{background:color-mix(in srgb,var(--accent-muted) 60%,var(--surface-2))}.matrix-table tr.parent-row td{background:var(--surface-2);border-bottom:1px solid var(--border)}.matrix-table tr.parent-row--expanded td{border-bottom-color:var(--border-subtle)}.matrix-table tr.child-row{animation:rowReveal var(--transition-medium) ease-out}@keyframes rowReveal{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}.matrix-table tr.child-row-first td{border-top:1px solid #353b4d}.matrix-table tr.parent-row td:first-child{font-weight:600}.matrix-table tr.parent-row td.project-name-cell{box-shadow:4px 0 12px -8px #00000080;padding:.35rem .5rem}.matrix-table tr.child-row td{border-bottom:1px solid #2e3444}.matrix-table tr.child-row-even td{background:#151820}.matrix-table tr.child-row-odd td{background:#181c26}.matrix-table tr.child-row td.project-name-cell{padding-left:1.25rem;box-shadow:4px 0 10px -6px #0000004d}.role-label{display:inline-block;font-family:ui-monospace,Cascadia Code,SF Mono,Menlo,monospace;font-size:.75rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:#d8dcef;background:#ffffff0f;border:1px solid rgba(255,255,255,.1);border-radius:4px;padding:.25rem .55rem;min-width:2.5rem;text-align:center}.project-label{font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.project-label--static{display:block;padding:.35rem .25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.project-name-cell{overflow:hidden}.project-row-trigger{display:flex;flex-direction:column;align-items:stretch;gap:.2rem;width:100%;min-width:0;min-height:2.75rem;padding:.45rem .6rem;margin:0;border:none;border-radius:var(--radius-sm);background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background var(--transition-fast),box-shadow var(--transition-fast)}.project-row-main{display:flex;align-items:center;gap:.45rem;min-width:0;width:100%}.project-row-trigger:hover{background:var(--accent-muted)}.project-row-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.row-chevron{flex-shrink:0;color:var(--text-muted);transition:transform var(--transition-medium),color var(--transition-fast)}.row-chevron--expanded{transform:rotate(90deg);color:var(--accent-hover)}.project-row-trigger:hover .row-chevron{color:var(--text)}.target-count{padding-left:1.35rem;font-size:.68rem;font-weight:500;color:var(--text-subtle);line-height:1.2}.project-name-inner{display:flex;align-items:center;gap:.35rem;min-width:0;max-width:100%;padding:.35rem .5rem;overflow:hidden}.cell{border-radius:8px;padding:.28rem;display:flex;flex-direction:column;align-items:center;text-align:center;width:100%;max-width:100%;margin:0 auto;box-sizing:border-box}.cell-transition,.cell-stable-single{padding:.3rem;border:1px solid rgba(255,255,255,.12);width:100%;box-sizing:border-box}a.cell-link{display:block;color:inherit;text-decoration:none;border-radius:6px}a.cell-link:hover .cell-version-box,a.cell-link:focus-visible .cell-version-box{outline:1px solid rgba(91,75,220,.55);outline-offset:1px}a.cell-link:hover .cell-transition-flow,a.cell-link:focus-visible .cell-transition-flow{filter:brightness(1.08)}.cell-transition-flow{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:stretch;gap:.2rem;width:100%;max-width:100%}.cell-version-box{border:1px solid rgba(255,255,255,.18);border-radius:5px;padding:.28rem .35rem;background:#0003;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.1rem;min-width:0;max-width:100%}.cell-version-box--unknown{opacity:.65;border-style:dotted}.cell-version-box--target{border-style:dashed;opacity:.95}.cell-version-box--solo{min-width:0;max-width:100%;border:1px solid rgba(255,255,255,.18);border-radius:5px;padding:.35rem .45rem;background:#00000026}.cell-version-box-value{font-weight:600;font-size:.7rem;line-height:1.2;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cell-version-box-date{font-size:.58rem;opacity:.85;line-height:1.15;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}.cell-transition-arrow{display:flex;align-items:center;font-size:.85rem;font-weight:700;line-height:1;padding:0;flex-shrink:0;opacity:.9}.cell-empty{color:#5a6076;padding:.5rem 1rem}.cell-version{line-height:1.3;font-weight:600;font-size:.8125rem;padding:.35rem .5rem}.row-toggle-spacer{display:inline-block;width:1rem;flex-shrink:0}.empty-state{padding:2.5rem 1.5rem;text-align:center;color:var(--text-muted);background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius-lg)}.matrix-skeleton .skeleton-toolbar{padding:1rem 1.25rem;display:flex;flex-direction:column;gap:.5rem;border-bottom:1px solid var(--border)}.skeleton-line{height:.75rem;border-radius:4px;background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface-elevated) 50%,var(--surface-2) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}.skeleton-line--title{width:8rem;height:1.25rem}.skeleton-line--short{width:14rem}.skeleton-line--header{width:3rem;margin:0 auto}.skeleton-line--project{width:7rem}.skeleton-cell{height:2rem;max-width:5rem;margin:0 auto;border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface-elevated) 50%,var(--surface-2) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.cell-stable{background:linear-gradient(180deg,#1e4d38,#1a3d2e);color:#7dffb0;border:1px solid rgba(110,231,160,.2)}.cell-pending{background:linear-gradient(180deg,#4d4520,#3d3a1a);color:#ffe08a;border:1px solid rgba(240,208,96,.2)}.cell-scheduled{background:linear-gradient(180deg,#1e3a52,#1a2d3d);color:#7ec8ff;border:1px solid rgba(96,176,240,.25)}.cell-failed{background:linear-gradient(180deg,#4d2020,#3d1a1a);color:#ff8a8a;border:1px solid rgba(240,96,96,.2)}.cell-cancelled{background:linear-gradient(180deg,#4d3520,#3d2a1a);color:#ffb366;border:1px solid rgba(255,160,80,.25)}.loading,.error{color:#9aa0b4}.error{color:#f06060}.login-card{max-width:360px;margin:4rem auto;padding:2rem;background:#171a23;border:1px solid #2a2f3e;border-radius:8px}.login-card label{display:block;margin-bottom:1rem;color:#9aa0b4;font-size:.875rem}.login-card input{display:block;width:100%;margin-top:.25rem;padding:.5rem;background:#0f1117;border:1px solid #2a2f3e;border-radius:4px;color:#e7e9f2}.login-card button,.admin-form button,.user-bar button,nav button{background:var(--accent);color:#fff;border:none;padding:.5rem 1rem;border-radius:var(--radius-sm);cursor:pointer;font-weight:500;transition:background var(--transition-fast)}.login-card button:hover,.admin-form button:hover,.user-bar button:hover{background:var(--accent-hover)}.login-divider{text-align:center;margin:1.25rem 0;color:#6b7280;font-size:.875rem}.github-login-btn{display:block;text-align:center;padding:.6rem 1rem;background:#24292f;color:#fff;border:1px solid #444;border-radius:4px;text-decoration:none;font-weight:500}.github-login-btn:hover{background:#32383f}.admin-settings{max-width:none}.admin-settings label{display:block;margin-bottom:0;font-size:.8rem;font-weight:500;color:var(--text-muted)}.admin-settings input{display:block;width:100%;margin-top:.35rem;padding:.5rem .65rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text)}.admin-settings .button-row{display:flex;gap:.75rem;margin-top:.5rem;flex-wrap:wrap}.success{color:#6ee7a0}.btn-danger{background:#8b2e2e!important;color:#fff!important;border:none;border-radius:var(--radius-sm);font-size:.75rem;padding:.35rem .65rem!important;margin-left:0}.nav-tabs{display:flex;gap:.2rem;padding:.25rem;background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md)}.nav-tabs button{background:transparent;color:var(--text-muted);border:none;margin:0;padding:.45rem .9rem;border-radius:var(--radius-sm);font-size:.875rem;font-weight:500;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast)}.nav-tabs button:hover{color:var(--text);background:#ffffff0a}.nav-tabs button.active{background:var(--surface-elevated);color:var(--text);box-shadow:0 1px 4px #0003}.user-bar{display:flex;align-items:center;gap:1rem;font-size:.875rem;color:#9aa0b4}.admin-page h2{margin:0 0 .35rem;font-size:1.5rem;font-weight:700;letter-spacing:-.02em}.admin-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap}.admin-page-header-text{min-width:0}.admin-page-hint{margin:0;font-size:.85rem;color:var(--text-muted);line-height:1.45;max-width:42rem}.admin-page-actions{flex-shrink:0}.admin-section-title{margin:0 0 .85rem;font-size:1rem;font-weight:600;color:var(--text)}.admin-section-label{margin:0 0 .35rem;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.admin-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.15rem 1.25rem;margin-bottom:1.25rem;box-shadow:var(--shadow)}.admin-card--loading{padding:2rem;text-align:center}.admin-card-title{margin:0 0 1rem;font-size:1.05rem;font-weight:600}.admin-banner{padding:.65rem .9rem;border-radius:var(--radius-sm);margin-bottom:1rem;font-size:.875rem;line-height:1.45}.admin-banner--info{background:var(--accent-muted);border:1px solid rgba(108,92,231,.35);color:var(--text)}.admin-banner--success{background:#4ade801a;border:1px solid rgba(74,222,128,.3);color:#9ef0b8}.admin-banner--error{background:#f060601a;border:1px solid rgba(240,96,96,.35);color:#ffb0b0}.btn-primary{display:inline-flex;align-items:center;gap:.4rem;background:var(--accent);color:#fff;border:none;padding:.5rem 1rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.875rem;font-weight:500;transition:background var(--transition-fast)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-primary:disabled{opacity:.55;cursor:wait}.btn-sm{padding:.35rem .7rem!important;font-size:.78rem!important}.badge{display:inline-flex;align-items:center;padding:.15rem .45rem;border-radius:999px;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.badge-warning{background:#f0d06026;color:#ffe08a;border:1px solid rgba(240,208,96,.35)}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.85rem}.project-card{display:flex;flex-direction:column;gap:.55rem;padding:1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.project-card:hover{border-color:color-mix(in srgb,var(--accent) 40%,var(--border))}.project-card--active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-muted)}.project-card--disabled{opacity:.72}.project-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem}.project-card-title h4{margin:0;font-size:.95rem;font-weight:600;line-height:1.3}.project-card-slug{display:inline-block;margin-top:.15rem;font-size:.72rem;font-weight:600;color:var(--text-subtle);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em}.project-card-repo{display:block;font-size:.75rem;color:#a99bff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-card-stats{font-size:.78rem;color:var(--text-muted)}.project-card-stat-sep{margin:0 .25rem;opacity:.5}.project-card-actions{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.25rem}.admin-form{background:transparent;border:none;padding:0;border-radius:0;margin-bottom:0;box-shadow:none}.admin-form-section{margin-bottom:1.25rem}.admin-settings-page .admin-settings-form{max-width:36rem}.settings-group{padding-bottom:1.25rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border-subtle)}.settings-group:last-of-type{border-bottom:none;margin-bottom:0;padding-bottom:0}.preset-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.scan-section{margin-bottom:1.25rem;padding-bottom:1.25rem;border-bottom:1px solid var(--border-subtle)}.scan-preview{margin-top:.75rem;padding:.75rem .9rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.85rem}.scan-warnings{margin:.5rem 0 0;padding-left:1.25rem;color:#ffe08a;font-size:.8rem}.scan-action-label{display:flex;flex-direction:column;justify-content:flex-end}.scan-action-spacer{display:block;font-size:.875rem;visibility:hidden}.admin-form select{display:block;width:100%;margin-top:.35rem;padding:.5rem .65rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:.875rem}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1rem}.admin-form label{display:block;font-size:.8rem;font-weight:500;color:var(--text-muted)}.admin-form input{display:block;width:100%;margin-top:.35rem;padding:.5rem .65rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:.875rem;transition:border-color var(--transition-fast)}.admin-form input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-muted)}code{color:#a99bff;font-family:var(--font-mono);font-size:.85em}.project-editor .admin-section-label{margin-top:.5rem}.section-header{display:flex;align-items:center;gap:.5rem;margin:1rem 0 .75rem;flex-wrap:wrap}.section-header .admin-section-label{margin:0;flex:1;min-width:8rem}.config-table{width:100%;border-collapse:collapse;font-size:.8125rem;margin-bottom:.75rem;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.config-table th,.config-table td{border-bottom:1px solid var(--border-subtle);padding:.5rem .6rem;text-align:left}.config-table tr:last-child td{border-bottom:none}.config-table th{background:var(--surface-2);color:var(--text-muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}.config-table input[type=text],.config-table input:not([type=checkbox]){width:100%;padding:.35rem .5rem;background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:.8125rem}.checkbox-label{display:flex!important;align-items:center;gap:.5rem;padding-top:1.5rem}.form-actions{display:flex;gap:.65rem;margin-top:1rem;flex-wrap:wrap}.field-hint{display:block;margin-top:.3rem;font-size:.75rem;color:var(--text-subtle);line-height:1.35}.btn-danger{background:#8b2e2e!important;color:#fff!important;border:none;border-radius:var(--radius-sm);cursor:pointer;font-weight:500;transition:background var(--transition-fast)}.btn-danger:hover{background:#a33a3a!important}.btn-danger.btn-sm{margin-left:0!important}.lang-switch select{background:#2a2f3e;color:#e7e9f2;border:1px solid #3a4050;border-radius:4px;padding:.25rem .5rem;font-size:.75rem;cursor:pointer}[title]{cursor:help}button[title]{cursor:pointer}
