*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0F0F14;--surface: #1A1A24;--surface-alt: #22222F;--surface-high: #2A2A38;--border: #2A2A3A;--border-subtle: rgba(255,255,255,.06);--border-em: rgba(255,255,255,.12);--text: #F8FAFC;--text-secondary:#94A3B8;--text-muted: #64748B;--text-hint: #3D3D50;--accent: #7C3AED;--accent-light: #A78BFA;--accent-glow: rgba(124, 58, 237, .3);--accent-bg: rgba(124, 58, 237, .12);--accent-hover: #6D28D9;--green: #10B981;--green-bg: rgba(16,185,129,.1);--green-text: #6EE7B7;--amber: #F59E0B;--amber-bg: rgba(245,158,11,.12);--amber-text: #FCD34D;--red: #EF4444;--red-bg: rgba(239,68,68,.1);--red-text: #FCA5A5;--blue: #6366F1;--blue-bg: rgba(99,102,241,.12);--blue-text: #A5B4FC;--mono: "JetBrains Mono", "Fira Code", "Cascadia Code", ui-monospace, monospace;--sans: "Inter", system-ui, -apple-system, sans-serif;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--sidebar-w: 260px;--topbar-h: 60px}html,body,#root{height:100%}body{font-family:var(--sans);background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-16px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes glowPulse{0%,to{box-shadow:0 0 20px var(--accent-glow)}50%{box-shadow:0 0 40px var(--accent-glow),0 0 60px #7c3aed26}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);position:relative;overflow:hidden}.login-page:before,.login-page:after{content:"";position:absolute;border-radius:50%;filter:blur(120px);pointer-events:none}.login-page:before{width:500px;height:500px;background:#7c3aed26;top:-120px;right:-80px;animation:float 8s ease-in-out infinite}.login-page:after{width:400px;height:400px;background:#6366f11a;bottom:-100px;left:-60px;animation:float 10s ease-in-out infinite reverse}.login-container{position:relative;z-index:2;width:100%;max-width:420px;padding:0 24px;animation:scaleIn .5s ease}.login-card{background:#1a1a24cc;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid var(--border);border-radius:var(--radius-xl);padding:40px 36px;box-shadow:0 24px 64px #0006,0 0 0 1px #ffffff0a inset}.login-brand{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:36px}.login-brand-icon{width:40px;height:40px;border-radius:var(--radius-md);background:linear-gradient(135deg,var(--accent),var(--accent-light));display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px var(--accent-glow)}.login-brand-icon svg{width:22px;height:22px;color:#fff}.login-brand-text{font-size:22px;font-weight:700;letter-spacing:-.5px;background:linear-gradient(135deg,var(--text),var(--text-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.login-title{font-size:20px;font-weight:600;text-align:center;margin-bottom:6px;letter-spacing:-.3px}.login-subtitle{font-size:13px;color:var(--text-muted);text-align:center;margin-bottom:28px}.auth-form{display:flex;flex-direction:column;gap:18px}.auth-field{display:flex;flex-direction:column;gap:6px}.auth-field label{font-size:12px;font-weight:500;color:var(--text-secondary);letter-spacing:.02em}.auth-field input{width:100%;padding:11px 14px;background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:var(--sans);font-size:14px;outline:none;transition:border-color .2s,box-shadow .2s}.auth-field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.auth-field input::placeholder{color:var(--text-hint);font-size:13px}.auth-submit{width:100%;padding:12px 20px;margin-top:4px;background:linear-gradient(135deg,var(--accent),var(--accent-hover));color:#fff;border:none;border-radius:var(--radius-sm);font-size:14px;font-weight:600;font-family:var(--sans);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:opacity .15s,transform .1s,box-shadow .2s;box-shadow:0 4px 16px var(--accent-glow)}.auth-submit:hover:not(:disabled){opacity:.92;box-shadow:0 6px 24px var(--accent-glow)}.auth-submit:active:not(:disabled){transform:scale(.98)}.auth-submit:disabled{opacity:.4;cursor:not-allowed}.auth-toggle{text-align:center;margin-top:20px;font-size:13px;color:var(--text-muted)}.auth-toggle button{background:none;border:none;color:var(--accent-light);font-size:13px;font-weight:500;cursor:pointer;font-family:var(--sans);transition:color .15s}.auth-toggle button:hover{color:var(--accent)}.auth-error{background:var(--red-bg);border:1px solid rgba(239,68,68,.2);color:var(--red-text);padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;animation:fadeIn .2s ease}.dashboard-layout{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);background:var(--surface);border-right:1px solid var(--border-subtle);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:20;animation:slideInLeft .4s ease}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:20px 22px;border-bottom:1px solid var(--border-subtle)}.sidebar-brand-icon{width:34px;height:34px;border-radius:var(--radius-sm);background:linear-gradient(135deg,var(--accent),var(--accent-light));display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 4px 12px var(--accent-glow)}.sidebar-brand-icon svg{width:18px;height:18px;color:#fff}.sidebar-brand-name{font-size:15px;font-weight:600;letter-spacing:-.3px}.sidebar-nav{flex:1;padding:12px 10px;display:flex;flex-direction:column;gap:2px}.nav-section-label{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);padding:16px 12px 8px}.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;color:var(--text-secondary);cursor:pointer;transition:all .15s;border:none;background:none;width:100%;text-align:left;font-family:var(--sans);position:relative}.nav-item:hover{background:var(--surface-alt);color:var(--text)}.nav-item.active{background:var(--accent-bg);color:var(--accent-light)}.nav-item.active:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;background:var(--accent)}.nav-item svg{width:18px;height:18px;flex-shrink:0;opacity:.7}.nav-item.active svg{opacity:1}.sidebar-footer{padding:16px 14px;border-top:1px solid var(--border-subtle);display:flex;align-items:center;gap:10px}.sidebar-avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--blue));display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;color:#fff;flex-shrink:0}.sidebar-user-info{flex:1;min-width:0}.sidebar-user-name{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user-role{font-size:11px;color:var(--text-muted)}.sidebar-logout{background:none;border:none;cursor:pointer;color:var(--text-muted);padding:6px;border-radius:var(--radius-sm);transition:color .15s,background .15s;display:flex;align-items:center}.sidebar-logout:hover{color:var(--red-text);background:var(--red-bg)}.sidebar-logout svg{width:16px;height:16px}.main-content{flex:1;margin-left:var(--sidebar-w);display:flex;flex-direction:column;min-height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 28px;height:var(--topbar-h);border-bottom:1px solid var(--border-subtle);background:#0f0f14cc;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);position:sticky;top:0;z-index:10}.topbar-left{display:flex;align-items:center;gap:16px}.topbar-title{font-size:16px;font-weight:600;letter-spacing:-.3px}.topbar-breadcrumb{font-size:12px;color:var(--text-muted);font-family:var(--mono)}.topbar-right{display:flex;align-items:center;gap:12px}.topbar-stat{font-size:12px;color:var(--text-muted);font-family:var(--mono);display:flex;align-items:center;gap:6px}.topbar-dot{width:7px;height:7px;border-radius:50%;background:var(--green);animation:pulse 2.4s ease-in-out infinite}.page-content{flex:1;padding:28px;animation:fadeIn .3s ease}.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:28px}.stat-card{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:20px;transition:border-color .2s,transform .2s;animation:fadeIn .4s ease backwards}.stat-card:nth-child(1){animation-delay:0ms}.stat-card:nth-child(2){animation-delay:60ms}.stat-card:nth-child(3){animation-delay:.12s}.stat-card:nth-child(4){animation-delay:.18s}.stat-card:hover{border-color:var(--border);transform:translateY(-2px)}.stat-label{font-size:12px;color:var(--text-muted);margin-bottom:8px;display:flex;align-items:center;gap:6px}.stat-label svg{width:14px;height:14px;opacity:.6}.stat-value{font-size:28px;font-weight:700;letter-spacing:-1px;line-height:1}.stat-value.accent{color:var(--accent-light)}.stat-value.green{color:var(--green-text)}.stat-value.amber{color:var(--amber-text)}.stat-value.red{color:var(--red-text)}.stat-change{font-size:11px;color:var(--text-muted);margin-top:6px;font-family:var(--mono)}.dashboard-grid{display:grid;grid-template-columns:420px 1fr;gap:24px}@media (max-width: 1100px){.dashboard-grid{grid-template-columns:1fr}}.section-card{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden}.section-card-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-subtle)}.section-card-title{font-size:14px;font-weight:600;letter-spacing:-.2px;display:flex;align-items:center;gap:8px}.section-card-title svg{width:16px;height:16px;color:var(--accent-light)}.section-card-badge{font-size:10px;padding:3px 10px;border-radius:99px;background:var(--accent-bg);color:var(--accent-light);font-weight:500;font-family:var(--mono)}.section-card-body{padding:20px}.deploy-form{display:flex;flex-direction:column;gap:16px}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:12px;font-weight:500;color:var(--text-secondary);letter-spacing:.02em}.label-hint{font-weight:400;color:var(--text-muted)}.field input,.field select{width:100%;padding:10px 14px;background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:var(--mono);font-size:13px;outline:none;transition:border-color .2s,box-shadow .2s;-moz-appearance:none;appearance:none;-webkit-appearance:none}.field select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%2364748B' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.field input:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.field input::placeholder{color:var(--text-hint);font-size:12px}.deploy-btn{width:100%;padding:11px 16px;background:linear-gradient(135deg,var(--accent),var(--accent-hover));color:#fff;border:none;border-radius:var(--radius-sm);font-size:13px;font-weight:600;font-family:var(--sans);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:opacity .15s,transform .1s,box-shadow .2s;box-shadow:0 4px 16px var(--accent-glow);margin-top:4px}.deploy-btn:hover:not(:disabled){opacity:.92;box-shadow:0 6px 20px var(--accent-glow)}.deploy-btn:active:not(:disabled){transform:scale(.98)}.deploy-btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}.spinner{width:13px;height:13px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .55s linear infinite;flex-shrink:0}.result-card{margin-top:16px;padding:14px 16px;background:var(--green-bg);border:1px solid rgba(16,185,129,.22);border-radius:var(--radius-md);display:flex;flex-direction:column;gap:10px;animation:fadeIn .2s ease}.result-row{display:flex;align-items:center;justify-content:space-between}.result-label{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.07em;color:var(--green-text);opacity:.7}.result-value{font-size:13px;font-family:var(--mono);color:var(--green-text);font-weight:500}.result-url{font-size:13px;font-family:var(--mono);color:var(--blue-text);text-decoration:none}.result-url:hover{text-decoration:underline}.terminal{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden}.terminal-bar{padding:10px 16px;border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between;background:#1a1a2499}.terminal-dots{display:flex;gap:6px}.dot{width:10px;height:10px;border-radius:50%;background:var(--surface-high)}.dot:nth-child(1){background:#ff5f56}.dot:nth-child(2){background:#ffbd2e}.dot:nth-child(3){background:#27c93f}.terminal-label{font-size:11px;color:var(--text-muted);font-family:var(--mono)}.terminal-clear{font-size:11px;font-family:var(--mono);color:var(--text-muted);background:none;border:none;cursor:pointer;padding:3px 8px;border-radius:var(--radius-sm);transition:color .12s,background .12s}.terminal-clear:hover{color:var(--red-text);background:var(--red-bg)}.terminal-body{padding:14px 16px;height:260px;overflow-y:auto;font-family:var(--mono);font-size:12px;line-height:1.75;scrollbar-width:thin;scrollbar-color:var(--surface-high) transparent}.no-channel-msg{height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-hint);font-size:12px;flex-direction:column;gap:8px}.no-channel-msg svg{width:28px;height:28px;opacity:.3}.log-line{display:flex;gap:12px}.log-prefix{color:var(--text-hint);-webkit-user-select:none;user-select:none;flex-shrink:0}.log-text.log-success{color:var(--green-text)}.log-text.log-error{color:var(--red-text)}.log-text.log-warn{color:var(--amber-text)}.log-text.log-info{color:var(--text);opacity:.65}.projects-table{width:100%}.projects-header{display:grid;grid-template-columns:2fr 1.5fr 100px 100px;gap:12px;padding:10px 20px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);border-bottom:1px solid var(--border-subtle)}.project-row{display:grid;grid-template-columns:2fr 1.5fr 100px 100px;gap:12px;padding:14px 20px;align-items:center;border-bottom:1px solid var(--border-subtle);transition:background .15s;cursor:default}.project-row:last-child{border-bottom:none}.project-row:hover{background:#ffffff05}.project-name{font-size:13px;font-weight:500;font-family:var(--mono);display:flex;align-items:center;gap:8px}.project-name-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.project-name-dot.live{background:var(--green)}.project-name-dot.building{background:var(--amber);animation:pulse 1.5s ease-in-out infinite}.project-name-dot.failed{background:var(--red)}.project-name-dot.pending{background:var(--text-muted)}.project-url{font-size:12px;font-family:var(--mono);color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-url a{color:var(--blue-text);text-decoration:none}.project-url a:hover{text-decoration:underline}.project-type-badge{font-size:11px;padding:3px 10px;border-radius:99px;font-weight:500;text-align:center;background:var(--surface-alt);color:var(--text-secondary);border:1px solid var(--border-subtle)}.project-status-badge{font-size:10px;padding:4px 10px;border-radius:99px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;text-align:center}.project-status-badge.live{background:var(--green-bg);color:var(--green-text);border:1px solid rgba(16,185,129,.2)}.project-status-badge.building{background:var(--amber-bg);color:var(--amber-text);border:1px solid rgba(245,158,11,.2)}.project-status-badge.failed{background:var(--red-bg);color:var(--red-text);border:1px solid rgba(239,68,68,.2)}.project-status-badge.pending{background:var(--surface-alt);color:var(--text-muted);border:1px solid var(--border-subtle)}.projects-empty{padding:40px 20px;text-align:center;color:var(--text-muted);font-size:13px}.projects-empty svg{width:36px;height:36px;opacity:.3;margin-bottom:12px}.history-section{flex-shrink:0}.history-empty{font-size:12px;color:var(--text-muted);font-family:var(--mono);padding:6px 0}.dep-list{display:flex;flex-direction:column}.dep-item{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--border-subtle);gap:12px}.dep-item:last-child{border-bottom:none}.dep-slug{font-size:13px;font-weight:500;font-family:var(--mono)}.dep-time{font-size:11px;color:var(--text-muted);margin-top:2px}.dep-item-right{display:flex;align-items:center;gap:10px;flex-shrink:0}.dep-url{font-size:11px;font-family:var(--mono);color:var(--blue-text);text-decoration:none;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dep-url:hover{text-decoration:underline}.dep-badge{font-size:10px;padding:3px 8px;border-radius:99px;font-weight:500;flex-shrink:0}.dep-badge--building{background:var(--amber-bg);color:var(--amber-text);border:1px solid rgba(245,158,11,.2)}.dep-badge--live{background:var(--green-bg);color:var(--green-text);border:1px solid rgba(16,185,129,.2)}.dep-badge--failed{background:var(--red-bg);color:var(--red-text);border:1px solid rgba(239,68,68,.2)}.section-eyebrow{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);margin-bottom:16px}@media (max-width: 860px){.sidebar{display:none}.main-content{margin-left:0}.dashboard-grid{grid-template-columns:1fr}}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--surface-high);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.skeleton{background:linear-gradient(90deg,var(--surface-alt) 0%,var(--surface-high) 50%,var(--surface-alt) 100%);background-size:200% 100%;animation:shimmer 1.5s ease infinite;border-radius:var(--radius-sm)}.skeleton-line{height:14px;margin-bottom:10px}.skeleton-line:last-child{width:60%}
