.auth-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.auth-card{background:#fff;border-radius:12px;box-shadow:0 10px 40px #0003;padding:40px;width:100%;max-width:450px}.auth-card h2{color:#333;margin-bottom:30px;text-align:center;font-size:24px}.auth-form{display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:8px}.form-group label{color:#555;font-size:14px;font-weight:500}.form-group input{padding:12px 16px;border:2px solid #e0e0e0;border-radius:8px;font-size:14px;transition:border-color .3s}.form-group input:disabled{background-color:#f5f5f5;cursor:not-allowed}.auth-button{padding:14px 24px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s;margin-top:10px}.auth-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #667eea66}.auth-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.auth-footer{margin-top:24px;text-align:center;color:#666;font-size:14px}.link-button{background:none;border:none;color:#667eea;cursor:pointer;font-size:14px;font-weight:600;text-decoration:underline;padding:0}.link-button:hover{color:#764ba2}.error-message{padding:12px 16px;background-color:#fee;border:1px solid #fcc;border-radius:8px;color:#c33;font-size:14px}.success-message{padding:12px 16px;background-color:#efe;border:1px solid #cfc;border-radius:8px;color:#3c3;font-size:14px}.deployment-type-selector{max-width:1400px;margin:0 auto;padding:2rem}.selector-header{text-align:center;margin-bottom:2rem}.selector-header h2{font-size:2rem;margin-bottom:.5rem;color:#333}.selector-header p{font-size:1rem;color:#666}.loading-message,.error-message{text-align:center;padding:3rem 2rem;font-size:1rem}.loading-message p{color:#667eea}.error-message p{color:#e53e3e}.deployment-types{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1.25rem}.type-card-compact{position:relative;background:#fff;border-radius:12px;padding:1.5rem 1rem;box-shadow:0 2px 8px #00000014;cursor:pointer;transition:all .25s ease;border:2px solid transparent;display:flex;flex-direction:column;align-items:center;text-align:center;min-height:200px}.dev-toggle-button{position:absolute;top:.5rem;left:.5rem;padding:.25rem .5rem;font-size:.65rem;font-weight:700;color:#fff;border:none;border-radius:4px;transition:all .2s ease;z-index:10}.dev-toggle-button:hover:not(:disabled){transform:scale(1.05);box-shadow:0 2px 4px #0003}.dev-badge{margin-left:.5rem;padding:.15rem .4rem;font-size:.6rem;font-weight:700;background-color:#ff9800;color:#fff;border-radius:3px;text-transform:uppercase;vertical-align:middle}.type-card-compact:hover{transform:translateY(-4px);box-shadow:0 6px 16px #0000001f;border-color:#667eea}.info-button{position:absolute;top:.75rem;right:.75rem;background:#667eea1a;border:none;border-radius:50%;width:32px;height:32px;font-size:1.2rem;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;z-index:10}.info-button:hover{background:#667eea33;transform:scale(1.1)}.type-icon-compact{font-size:3rem;margin-bottom:.75rem}.type-name-compact{font-size:1.125rem;font-weight:600;margin-bottom:.5rem;color:#333}.type-description-compact{font-size:.875rem;color:#666;margin-bottom:1rem;line-height:1.4;flex-grow:1}.type-resources-compact{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:center;margin-top:auto}.resource-badge{background:#f0f4ff;color:#667eea;padding:.35rem .75rem;border-radius:16px;font-size:.75rem;font-weight:600;white-space:nowrap}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:#fff;border-radius:16px;max-width:600px;width:100%;max-height:90vh;overflow-y:auto;position:relative;animation:slideUp .3s ease}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-close{position:absolute;top:1rem;right:1rem;background:transparent;border:none;font-size:2rem;color:#999;cursor:pointer;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s}.modal-close:hover{background:#f5f5f5;color:#333}.modal-header{text-align:center;padding:2rem 2rem 1.5rem;border-bottom:1px solid #e0e0e0}.modal-icon{font-size:4rem;margin-bottom:1rem}.modal-header h2{font-size:1.75rem;margin-bottom:.5rem;color:#333}.modal-description{font-size:1rem;color:#666;line-height:1.6}.modal-body{padding:1.5rem 2rem}.modal-section{margin-bottom:2rem}.modal-section:last-child{margin-bottom:0}.modal-section h3{font-size:1.125rem;font-weight:600;color:#667eea;margin-bottom:1rem;text-transform:uppercase;letter-spacing:.5px;font-size:.875rem}.feature-list{list-style:none;padding:0;margin:0}.feature-list li{padding:.625rem 0 .625rem 1.75rem;position:relative;font-size:.9375rem;color:#555;line-height:1.6}.feature-list li:before{content:"✓";position:absolute;left:0;color:#667eea;font-weight:700;font-size:1.125rem}.resource-grid-modal{display:grid;gap:.75rem}.resource-item-modal{display:flex;justify-content:space-between;padding:.75rem 1rem;background:#f8f9fa;border-radius:8px;font-size:.9375rem}.resource-label-modal{font-weight:600;color:#555}.resource-value-modal{color:#667eea;font-weight:600}.modal-footer{padding:1.5rem 2rem;border-top:1px solid #e0e0e0}.select-button-modal{width:100%;padding:1rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:1.0625rem;font-weight:600;cursor:pointer;transition:all .3s}.select-button-modal:hover{transform:translateY(-2px);box-shadow:0 6px 12px #667eea66}@media (max-width: 1024px){.deployment-types{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}@media (max-width: 768px){.deployment-types{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1rem}.type-card-compact{padding:1.25rem .875rem;min-height:180px}.type-icon-compact{font-size:2.5rem}.type-name-compact{font-size:1rem}.type-description-compact{font-size:.8125rem}.selector-header h2{font-size:1.5rem}.modal-content{max-width:95%}.modal-header{padding:1.5rem 1.5rem 1rem}.modal-body,.modal-footer{padding:1rem 1.5rem}}@media (max-width: 480px){.deployment-types{grid-template-columns:1fr 1fr}.type-card-compact{min-height:160px}}.user-management{padding:20px;max-width:1400px;margin:0 auto}.user-management-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.user-management-header h2{color:#333;font-size:28px;margin:0}.refresh-button{padding:10px 20px;background-color:#667eea;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:600;transition:background-color .2s}.refresh-button:hover{background-color:#5568d3}.users-table-container{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;overflow-x:auto;margin-bottom:24px}.users-table{width:100%;border-collapse:collapse}.users-table th,.users-table td{padding:16px;text-align:left;border-bottom:1px solid #e0e0e0}.users-table th{background-color:#f8f9fa;color:#555;font-weight:600;font-size:14px;text-transform:uppercase;letter-spacing:.5px}.users-table tbody tr:hover{background-color:#f8f9fa}.users-table tbody tr.inactive-user{opacity:.6;background-color:#fef5f5}.you-badge{display:inline-block;margin-left:8px;padding:2px 8px;background-color:#667eea;color:#fff;border-radius:12px;font-size:11px;font-weight:600}.rank-badge{display:inline-block;padding:4px 12px;border-radius:16px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.rank-badge.rank-10{background-color:#e3f2fd;color:#1976d2}.rank-badge.rank-20{background-color:#f3e5f5;color:#7b1fa2}.rank-badge.rank-30{background-color:#fff3e0;color:#e65100}.rank-badge.rank-40{background-color:#fce4ec;color:#c2185b}.rank-badge.rank-50{background-color:#e8f5e9;color:#2e7d32}.rank-badge.rank-100{background-color:#fff9c4;color:#f57f17;border:2px solid #fbc02d}.status-badge{display:inline-block;padding:4px 12px;border-radius:16px;font-size:12px;font-weight:600}.status-badge.active{background-color:#e8f5e9;color:#2e7d32}.status-badge.inactive{background-color:#ffebee;color:#c62828}.action-buttons{display:flex;gap:8px}.action-buttons button{padding:6px 12px;border:none;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.edit-button{background-color:#667eea;color:#fff}.edit-button:hover{background-color:#5568d3}.save-button{background-color:#4caf50;color:#fff}.save-button:hover{background-color:#45a049}.cancel-button{background-color:#999;color:#fff}.cancel-button:hover{background-color:#777}.delete-button{background-color:#f44336;color:#fff}.delete-button:hover{background-color:#da190b}.inline-input,.inline-select{padding:6px 10px;border:2px solid #667eea;border-radius:6px;font-size:14px;width:100%;max-width:200px}.inline-input:focus,.inline-select:focus{outline:none;border-color:#5568d3}.user-management-info{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;padding:24px}.user-management-info h3{color:#333;font-size:18px;margin-bottom:12px}.user-management-info ul{list-style-position:inside;color:#666;line-height:1.8}.user-management-info li{margin-bottom:8px}.loading{text-align:center;padding:40px;color:#666;font-size:18px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:2rem;text-align:center}.app-header h1{font-size:2rem;margin-bottom:.5rem}.app-header p{opacity:.9}.tabs{background:#fff;border-bottom:2px solid #e0e0e0}.tabs-container{display:flex;max-width:1400px;margin:0 auto;padding:0 2rem}.tabs button{flex:1;padding:1rem 2rem;border:none;background:none;cursor:pointer;font-size:1rem;transition:all .3s;border-bottom:3px solid transparent}.tabs button:hover{background:#f5f5f5}.tabs button.active{border-bottom-color:#667eea;font-weight:600}.app-main{flex:1;max-width:1400px;width:100%;margin:2rem auto;padding:0 2rem}.app-footer{background:#333;color:#fff;text-align:center;padding:1rem;font-size:.875rem}.deployment-list{max-width:1000px;margin:0 auto}.deployment-list h2{margin-bottom:1.5rem}.deployments{display:grid;gap:1.5rem}.deployment-card{background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 2px 4px #0000001a}.deployment-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #e0e0e0}.deployment-header h3{font-size:1.25rem}.status{padding:.25rem .75rem;border-radius:12px;font-size:.875rem;font-weight:600}.status.healthy{background:#d4edda;color:#155724}.status.deploying{background:#d1ecf1;color:#0c5460}.status.degraded{background:#fff3cd;color:#856404}.status.unhealthy{background:#f8d7da;color:#721c24}.deployment-info{margin-bottom:1rem}.info-row{display:flex;justify-content:space-between;padding:.5rem 0}.info-row a{color:#667eea;text-decoration:none}.info-row a:hover{text-decoration:underline}.pods{margin-top:1rem;padding-top:1rem;border-top:1px solid #e0e0e0}.pod-info{padding:.25rem 0;font-size:.875rem}.pod-status{font-size:1.25rem;margin-right:.5rem}.pod-status.ready{color:#28a745}.pod-status.not-ready{color:#dc3545}.deployment-actions{display:flex;gap:.5rem;margin-top:1rem}.deployment-actions button{padding:.5rem 1rem;border:1px solid #667eea;background:#fff;color:#667eea;border-radius:4px;cursor:pointer;font-size:.875rem;transition:all .3s}.deployment-actions button:hover{background:#667eea;color:#fff}.deployment-actions button.danger{border-color:#dc3545;color:#dc3545}.deployment-actions button.danger:hover{background:#dc3545;color:#fff}.deployment-actions button:disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.deployment-actions button.danger:disabled{background:#ffc7cf;border-color:#dc3545;color:#dc3545}.create-deployment h2{margin-bottom:1.5rem}form{background:#fff;border-radius:8px;padding:2rem;box-shadow:0 2px 4px #0000001a}.form-section{margin-bottom:2rem;padding-bottom:2rem;border-bottom:1px solid #e0e0e0}.form-section:last-of-type{border-bottom:none}.form-section h3{margin-bottom:1rem;color:#667eea}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:600}.form-group input[type=text],.form-group input[type=password],.form-group input[type=number]{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem}.form-group input:focus{outline:none;border-color:#667eea}.form-group small{display:block;margin-top:.25rem;color:#666;font-size:.875rem}.form-group.checkbox label{display:flex;align-items:center}.form-group.checkbox input{margin-right:.5rem;width:auto}.oauth-provider{background:#f9f9f9;padding:1rem;border-radius:4px;margin-bottom:1rem}.form-actions{margin-top:2rem}.form-actions button{padding:.75rem 2rem;background:#667eea;color:#fff;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:all .3s}.form-actions button:hover{background:#5568d3}.form-actions button:disabled{opacity:.5;cursor:not-allowed}.error-message{padding:1rem;background:#f8d7da;color:#721c24;border-radius:4px;margin-top:1rem}.loading,.error{text-align:center;padding:2rem}.modal{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#fff;border-radius:8px;max-width:800px;width:90%;max-height:80vh;display:flex;flex-direction:column}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid #e0e0e0}.modal-header button{padding:.5rem 1rem;background:#667eea;color:#fff;border:none;border-radius:4px;cursor:pointer}.logs{flex:1;padding:1rem;overflow:auto;background:#1e1e1e;color:#d4d4d4;font-family:Courier New,monospace;font-size:.875rem;line-height:1.5}.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.spinner{width:50px;height:50px;border:5px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-screen p{margin-top:20px;font-size:18px}.header-content{display:flex;justify-content:space-between;align-items:center;max-width:1400px;margin:0 auto}.user-info{display:flex;align-items:center;gap:16px}.user-details{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.user-email{font-size:14px;font-weight:600}.user-rank{font-size:12px;padding:2px 8px;border-radius:12px;font-weight:700;text-transform:uppercase}.user-rank.rank-10{background-color:#fff3}.user-rank.rank-20{background-color:#ffffff40}.user-rank.rank-30{background-color:#ffffff4d}.user-rank.rank-40{background-color:#ffffff59}.user-rank.rank-50{background-color:#9c27b0;color:#fff}.user-rank.rank-100{background-color:#fbc02d;color:#333}.logout-button{padding:8px 16px;background-color:#fff3;color:#fff;border:2px solid white;border-radius:6px;cursor:pointer;font-size:14px;font-weight:600;transition:all .2s}.logout-button:hover{background-color:#fff;color:#667eea}@media (max-width: 768px){.header-content{flex-direction:column;gap:16px}.user-info{width:100%;justify-content:center}}@keyframes slideIn{0%{transform:translate(400px);opacity:0}to{transform:translate(0);opacity:1}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-body{padding:1.5rem;overflow-y:auto;max-height:calc(80vh - 120px)}.config-section{margin-bottom:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid #e0e0e0}.config-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.config-section h3{margin-bottom:1rem;color:#333;font-size:1.1rem}.config-section h4{margin-top:1rem;margin-bottom:.5rem;color:#555;font-size:.95rem}.info-grid{display:grid;gap:.75rem}.info-item{display:flex;align-items:center;gap:.5rem}.info-item label{font-weight:600;color:#555;min-width:100px}.url-item{margin-bottom:.75rem}.url-item label{display:block;font-weight:600;color:#555;margin-bottom:.25rem}.url-row{display:flex;align-items:center;gap:.5rem}.url-row a{color:#667eea;text-decoration:none;word-break:break-all}.url-row a:hover{text-decoration:underline}.copy-button{padding:.25rem .75rem;background:#f0f0f0;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:.85rem;transition:all .2s;white-space:nowrap}.copy-button:hover{background:#e0e0e0}.close-button{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666;padding:.25rem .5rem;line-height:1}.close-button:hover{color:#333}.modal-footer{padding:1rem 1.5rem;border-top:1px solid #e0e0e0;display:flex;justify-content:flex-end;gap:.5rem;flex-wrap:wrap}.button{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;transition:all .2s}.button:disabled{opacity:.6;cursor:not-allowed}.button-primary{background:#667eea;color:#fff}.button-primary:hover:not(:disabled){background:#5568d3}.button-secondary{background:#6c757d;color:#fff}.button-secondary:hover:not(:disabled){background:#5a6268}.button-success{background:#28a745;color:#fff}.button-success:hover:not(:disabled){background:#218838}.button-warning{background:#ffc107;color:#212529}.button-warning:hover:not(:disabled){background:#e0a800}.button-danger{background:#dc3545;color:#fff}.button-danger:hover:not(:disabled){background:#c82333}
