:root{--bg-primary: #0a0e1a;--bg-secondary: #111827;--bg-card: rgba(17, 24, 39, .7);--bg-card-hover: rgba(30, 41, 59, .8);--bg-glass: rgba(255, 255, 255, .04);--bg-glass-strong: rgba(255, 255, 255, .08);--border-color: rgba(255, 255, 255, .08);--border-hover: rgba(255, 255, 255, .15);--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-muted: #64748b;--color-success: #22c55e;--color-success-bg: rgba(34, 197, 94, .12);--color-success-border: rgba(34, 197, 94, .25);--color-warning: #f59e0b;--color-warning-bg: rgba(245, 158, 11, .12);--color-warning-border: rgba(245, 158, 11, .25);--color-error: #ef4444;--color-error-bg: rgba(239, 68, 68, .12);--color-error-border: rgba(239, 68, 68, .25);--color-neutral: #475569;--color-neutral-bg: rgba(71, 85, 105, .12);--color-neutral-border: rgba(71, 85, 105, .25);--color-accent: #6366f1;--color-accent-hover: #818cf8;--color-accent-bg: rgba(99, 102, 241, .12);--font-family: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-xs: .75rem;--font-sm: .8125rem;--font-base: .875rem;--font-lg: 1rem;--font-xl: 1.25rem;--font-2xl: 1.5rem;--font-3xl: 1.875rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .5);--shadow-glow: 0 0 20px rgba(99, 102, 241, .15);--transition-fast: .15s ease;--transition-base: .25s ease;--transition-slow: .4s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);background:var(--bg-primary);color:var(--text-primary);line-height:1.5;min-height:100vh}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 80% 50% at 50% -20%,rgba(99,102,241,.08),transparent),radial-gradient(ellipse 60% 40% at 80% 100%,rgba(34,197,94,.04),transparent);pointer-events:none;z-index:0}#root{position:relative;z-index:1;min-height:100vh}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:var(--space-4)}.login-card{width:100%;max-width:420px;background:var(--bg-card);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-color);border-radius:var(--radius-xl);padding:var(--space-10);box-shadow:var(--shadow-lg)}.login-card h1{font-size:var(--font-2xl);font-weight:700;text-align:center;margin-bottom:var(--space-1);background:linear-gradient(135deg,var(--text-primary),var(--color-accent-hover));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.login-card .subtitle{text-align:center;color:var(--text-muted);font-size:var(--font-sm);margin-bottom:var(--space-8)}.form-group{margin-bottom:var(--space-5)}.form-group label{display:block;font-size:var(--font-sm);font-weight:500;color:var(--text-secondary);margin-bottom:var(--space-2)}.form-group input,.form-group select{width:100%;padding:var(--space-3) var(--space-4);background:var(--bg-glass-strong);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-family);font-size:var(--font-base);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);outline:none}.form-group input:focus,.form-group select:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-bg)}.form-group input::placeholder{color:var(--text-muted)}.form-group select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%2394a3b8' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 6l3.5 4 3.5-4z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}.form-group select option{background:var(--bg-secondary);color:var(--text-primary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);font-family:var(--font-family);font-size:var(--font-base);font-weight:500;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);outline:none;text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,var(--color-accent),#8b5cf6);color:#fff;box-shadow:var(--shadow-sm),0 0 20px #6366f133}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:var(--shadow-md),0 0 30px #6366f14d}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-secondary{background:var(--bg-glass-strong);color:var(--text-primary);border:1px solid var(--border-color)}.btn-secondary:hover:not(:disabled){background:var(--bg-glass);border-color:var(--border-hover)}.btn-danger{background:var(--color-error-bg);color:var(--color-error);border:1px solid var(--color-error-border)}.btn-danger:hover:not(:disabled){background:#ef444433}.btn-icon{padding:var(--space-2);background:transparent;color:var(--text-secondary);border:1px solid transparent;border-radius:var(--radius-sm)}.btn-icon:hover:not(:disabled){background:var(--bg-glass-strong);color:var(--text-primary);border-color:var(--border-color)}.btn-full{width:100%}.login-error{background:var(--color-error-bg);border:1px solid var(--color-error-border);color:var(--color-error);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-sm);margin-bottom:var(--space-5)}.app-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-6);background:var(--bg-card);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid var(--border-color);position:sticky;top:0;z-index:100}.header-left{display:flex;align-items:center;gap:var(--space-4)}.header-left h1{font-size:var(--font-xl);font-weight:700;background:linear-gradient(135deg,var(--text-primary),var(--color-accent-hover));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.header-left .last-updated{font-size:var(--font-xs);color:var(--text-muted)}.header-right{display:flex;align-items:center;gap:var(--space-3)}.user-badge{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--bg-glass);border:1px solid var(--border-color);border-radius:var(--radius-sm);font-size:var(--font-xs);color:var(--text-secondary)}.user-badge .role-tag{padding:2px 6px;border-radius:4px;font-weight:600;font-size:.6875rem;text-transform:uppercase;letter-spacing:.05em}.role-tag.admin{background:var(--color-accent-bg);color:var(--color-accent-hover)}.role-tag.viewer{background:var(--color-neutral-bg);color:var(--text-muted)}.dashboard{padding:var(--space-6);max-width:1400px;margin:0 auto}.dashboard-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12);gap:var(--space-4);color:var(--text-muted);text-align:center}.dashboard-empty svg{opacity:.3}.version-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--bg-card);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border-color);border-radius:var(--radius-lg)}.version-table thead th{padding:var(--space-4) var(--space-5);text-align:left;font-size:var(--font-sm);font-weight:600;color:var(--text-secondary);background:var(--bg-glass-strong);border-bottom:1px solid var(--border-color);white-space:nowrap}.version-table thead th:first-child{min-width:200px}.version-table tbody tr{transition:background var(--transition-fast)}.version-table tbody tr:hover{background:var(--bg-glass)}.version-table tbody tr:not(:last-child) td{border-bottom:1px solid var(--border-color)}.version-table tbody td{padding:var(--space-4) var(--space-5);vertical-align:top}.env-cell{display:flex;flex-direction:column;gap:var(--space-1)}.env-cell .env-name{font-weight:600;font-size:var(--font-base);color:var(--text-primary)}.env-cell .env-namespace{font-size:var(--font-xs);color:var(--text-muted);font-family:SF Mono,Fira Code,monospace}.env-cell .env-inherits{font-size:var(--font-xs);color:var(--text-muted);display:flex;align-items:center;gap:var(--space-1)}.env-urls{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-top:var(--space-1)}.env-url-link{display:inline-flex;align-items:center;gap:3px;font-size:.6875rem;color:var(--color-accent-hover);text-decoration:none;padding:1px 6px;border-radius:4px;background:var(--color-accent-bg);border:1px solid transparent;transition:all var(--transition-fast)}.env-url-link:hover{border-color:var(--color-accent);background:#6366f133}.infra-pods{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-top:var(--space-1)}.infra-pod-badge{display:inline-flex;align-items:center;gap:3px;font-size:.6875rem;padding:1px 6px;border-radius:4px;cursor:default}.infra-pod-badge.ok{color:var(--color-success);background:var(--color-success-bg)}.infra-pod-badge.warn{color:var(--color-warning);background:var(--color-warning-bg)}.infra-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0}.infra-pod-badge.ok .infra-dot{background:var(--color-success)}.infra-pod-badge.warn .infra-dot{background:var(--color-warning)}.env-actions{display:flex;gap:var(--space-1);margin-top:var(--space-2);opacity:0;transition:opacity var(--transition-fast)}.version-table tbody tr:hover .env-actions{opacity:1}.version-cell{position:relative;display:flex;flex-direction:column;gap:var(--space-1);min-width:140px}.version-badge{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);font-size:var(--font-sm);font-weight:500;font-family:SF Mono,Fira Code,monospace;cursor:default;transition:all var(--transition-fast);position:relative}.version-badge.match{background:var(--color-success-bg);color:var(--color-success);border:1px solid var(--color-success-border)}.version-badge.mismatch{background:var(--color-warning-bg);color:var(--color-warning);border:1px solid var(--color-warning-border)}.version-badge.error{background:var(--color-error-bg);color:var(--color-error);border:1px solid var(--color-error-border)}.version-badge.neutral{background:var(--color-neutral-bg);color:var(--text-muted);border:1px solid var(--color-neutral-border)}.version-badge .status-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.version-badge.match .status-dot{background:var(--color-success);box-shadow:0 0 6px var(--color-success)}.version-badge.mismatch .status-dot{background:var(--color-warning);box-shadow:0 0 6px var(--color-warning)}.version-badge.error .status-dot{background:var(--color-error);box-shadow:0 0 6px var(--color-error);animation:pulse-dot 2s ease-in-out infinite}.version-badge.neutral .status-dot{background:var(--text-muted)}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.version-detail{font-size:var(--font-xs);color:var(--text-muted);padding-left:var(--space-3);display:flex;align-items:center;gap:var(--space-1)}.version-detail .label{color:var(--text-muted)}.version-detail .value{font-family:SF Mono,Fira Code,monospace}.version-detail .value.differs{color:var(--color-warning)}.tooltip-wrapper{position:relative;display:inline-flex}.tooltip{position:absolute;bottom:calc(100% + 8px);left:0;background:var(--bg-secondary);border:1px solid var(--border-hover);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:var(--font-xs);color:var(--text-secondary);pointer-events:none;opacity:0;transition:opacity var(--transition-fast);box-shadow:var(--shadow-lg);z-index:50;max-width:320px;white-space:normal;line-height:1.6}.tooltip:after{content:"";position:absolute;top:100%;left:20px;border:6px solid transparent;border-top-color:var(--border-hover)}.tooltip-wrapper:hover .tooltip{opacity:1}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:200;animation:fadeIn var(--transition-fast) ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{width:100%;max-width:500px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-xl);padding:var(--space-8);box-shadow:var(--shadow-lg);animation:slideUp var(--transition-base) ease}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal h2{font-size:var(--font-xl);font-weight:600;margin-bottom:var(--space-6)}.modal-actions{display:flex;gap:var(--space-3);justify-content:flex-end;margin-top:var(--space-6)}.users-section{padding:var(--space-6);max-width:800px;margin:0 auto}.users-section h2{font-size:var(--font-xl);font-weight:600;margin-bottom:var(--space-5)}.user-list{display:flex;flex-direction:column;gap:var(--space-3)}.user-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md)}.user-row .user-info{display:flex;align-items:center;gap:var(--space-3)}.user-row .user-email{font-weight:500}.loading-spinner{display:inline-flex;align-items:center;justify-content:center}.loading-spinner svg{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-page{display:flex;align-items:center;justify-content:center;min-height:100vh;color:var(--text-muted);gap:var(--space-3)}.tab-nav{display:flex;gap:var(--space-1);padding:var(--space-2) var(--space-6);background:var(--bg-glass);border-bottom:1px solid var(--border-color)}.tab-btn{padding:var(--space-2) var(--space-4);font-family:var(--font-family);font-size:var(--font-sm);font-weight:500;color:var(--text-muted);background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.tab-btn:hover{color:var(--text-secondary);background:var(--bg-glass)}.tab-btn.active{color:var(--color-accent-hover);background:var(--color-accent-bg)}@media(max-width:768px){.app-header{flex-direction:column;gap:var(--space-3);padding:var(--space-3)}.dashboard{padding:var(--space-3)}.version-table{display:block;overflow-x:auto}}
