:root{--bg-primary: #0a0a0a;--bg-secondary: #141414;--bg-tertiary: #1a1a1a;--border-color: #2a2a2a;--text-primary: #e5e5e5;--text-secondary: #a0a0a0;--text-muted: #666;--accent-blue: #3b82f6;--accent-blue-hover: #2563eb;--accent-green: #22c55e;--accent-yellow: #eab308;--accent-red: #ef4444}*{box-sizing:border-box;margin:0;padding:0}body{font-family:IBM Plex Sans,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.6;min-height:100vh}code,pre,.mono{font-family:IBM Plex Mono,monospace}.app{min-height:100vh;display:flex;flex-direction:column}.header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;border-bottom:1px solid var(--border-color);background:var(--bg-secondary)}.header h1{font-size:1.25rem;font-weight:600}.header-actions{display:flex;align-items:center;gap:1rem}.user-email{color:var(--text-secondary);font-size:.875rem}.btn{padding:.5rem 1rem;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s ease;border:none}.btn-primary{background:var(--accent-blue);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-blue-hover)}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color)}.btn-secondary:hover:not(:disabled){background:var(--border-color)}.btn:disabled{opacity:.5;cursor:not-allowed}.main-content{flex:1;padding:2rem;max-width:1200px;margin:0 auto;width:100%}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:200px;color:var(--text-secondary)}.spinner{width:32px;height:32px;border:3px solid var(--border-color);border-top-color:var(--accent-blue);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:1rem}@keyframes spin{to{transform:rotate(360deg)}}.error{background:#ef44441a;border:1px solid var(--accent-red);color:var(--accent-red);padding:1rem;border-radius:8px;margin-bottom:1rem}.dashboard-columns{display:grid;grid-template-columns:1fr 1fr;gap:2rem}.column-left,.column-right{min-width:0}.section-title{font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--text-secondary)}.services-grid{display:flex;flex-direction:column;gap:1rem}.service-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;padding:1.5rem}.service-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.service-name{font-size:1.125rem;font-weight:600}.service-type{font-size:.75rem;color:var(--text-muted);background:var(--bg-tertiary);padding:.25rem .5rem;border-radius:4px;text-transform:uppercase}.env-list{list-style:none;margin:0;padding:0}.env-item{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem 0;border-bottom:1px solid var(--border-color)}.env-item:last-child{border-bottom:none}.env-details{flex:1;min-width:0}.env-header{display:flex;align-items:center;gap:.625rem;flex-wrap:wrap}.env-label{font-size:.875rem;font-weight:500;color:var(--text-primary);min-width:70px}.env-version{font-family:IBM Plex Mono,monospace;font-size:.8125rem;background:var(--bg-tertiary);padding:.125rem .5rem;border-radius:4px;color:var(--text-primary)}.env-time{font-size:.75rem;color:var(--text-muted)}.env-sync{font-size:.8125rem;color:var(--accent-green);font-weight:500}.env-commit{font-size:.75rem;color:var(--text-secondary);margin-top:.375rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.verified-badge{font-size:.625rem;padding:.125rem .375rem;border-radius:3px;text-transform:uppercase;font-weight:500}.verified-ok{background:#22c55e26;color:var(--accent-green)}.verified-error{background:#ef444426;color:var(--accent-red)}.status-badge{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .75rem;border-radius:9999px;font-size:.75rem;font-weight:500}.status-passing{background:#22c55e1a;color:var(--accent-green)}.status-failing{background:#ef44441a;color:var(--accent-red)}.status-pending{background:#eab3081a;color:var(--accent-yellow)}.service-card-footer{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border-color)}.login-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem}.login-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;padding:2rem;width:100%;max-width:400px;text-align:center}.login-card h1{font-size:1.5rem;margin-bottom:.5rem}.login-card p{color:var(--text-secondary);margin-bottom:1.5rem}.login-card .btn{width:100%}.refresh-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding:.75rem 1rem;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color)}.last-updated{font-size:.875rem;color:var(--text-secondary)}.workflows-section{margin-top:2rem}.workflows-section h2{font-size:1.125rem;margin-bottom:1rem}.workflow-list{display:flex;flex-direction:column;gap:.5rem}.workflow-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px}.workflow-name{font-weight:500}.workflow-meta{display:flex;align-items:center;gap:1rem;color:var(--text-secondary);font-size:.875rem}.promotion-result-overlay{position:fixed;inset:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.promotion-result-modal{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;width:100%;max-width:500px;max-height:90vh;overflow:auto}.promotion-result-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--border-color)}.promotion-result-header h3{font-size:1.125rem;font-weight:600}.close-btn{background:none;border:none;color:var(--text-secondary);font-size:1.5rem;cursor:pointer;padding:0;line-height:1}.close-btn:hover{color:var(--text-primary)}.promotion-result-body{padding:1.5rem}.promotion-service,.promotion-image{margin-bottom:1rem;font-size:.875rem}.promotion-image code{background:var(--bg-tertiary);padding:.25rem .5rem;border-radius:4px;font-size:.8125rem}.promotion-error{background:#ef44441a;border:1px solid var(--accent-red);color:var(--accent-red);padding:.75rem;border-radius:6px;margin-bottom:1rem;font-size:.875rem}.promotion-steps{font-size:.875rem}.steps-list{list-style:none;margin-top:.75rem}.step{display:flex;align-items:flex-start;gap:.75rem;padding:.625rem 0;border-bottom:1px solid var(--border-color)}.step:last-child{border-bottom:none}.step-name{flex:1;color:var(--text-primary)}.step-succeeded .step-name{color:var(--accent-green)}.step-failed .step-name{color:var(--accent-red)}.step-message{display:block;font-size:.75rem;color:var(--text-muted);margin-top:.25rem;font-family:IBM Plex Mono,monospace;word-break:break-all}.step-duration{font-size:.75rem;color:var(--text-muted);font-family:IBM Plex Mono,monospace;white-space:nowrap}.promotion-result-footer{padding:1rem 1.5rem;border-top:1px solid var(--border-color);display:flex;justify-content:flex-end}.artifacts-list{display:flex;flex-direction:column;gap:.5rem}.artifacts-empty{color:var(--text-muted);font-size:.875rem;padding:1rem;text-align:center}.artifact-item{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;padding:.875rem 1rem}.artifact-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.375rem}.artifact-sha{font-family:IBM Plex Mono,monospace;font-size:.875rem;background:var(--bg-tertiary);padding:.125rem .5rem;border-radius:4px;color:var(--text-primary)}.artifact-time{font-size:.75rem;color:var(--text-muted)}.artifact-message{font-size:.8125rem;color:var(--text-secondary);margin-bottom:.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.artifact-services{display:flex;flex-wrap:wrap;gap:.375rem}.service-badge{font-size:.625rem;padding:.125rem .5rem;border-radius:3px;text-transform:uppercase;font-weight:500;background:var(--bg-tertiary);color:var(--text-secondary)}.service-badge.svc-api{background:#3b82f626;color:#60a5fa}.service-badge.svc-frontend{background:#22c55e26;color:#4ade80}.service-badge.svc-insights{background:#a855f726;color:#c084fc}.service-badge.svc-narrative{background:#fb923c26;color:#fb923c}
