@import"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700&family=Outfit:wght@300;400;500;600;700;800&family=Fira+Code:wght@400;500&display=swap";:root{--bg-main: hsl(230, 25%, 7%);--bg-card: hsl(228, 22%, 11%);--bg-card-hover: hsl(228, 22%, 15%);--border-color: hsl(228, 16%, 18%);--border-glow: hsla(263, 90%, 65%, .3);--text-primary: hsl(0, 0%, 96%);--text-secondary: hsl(228, 12%, 70%);--text-muted: hsl(228, 8%, 50%);--color-primary: hsl(263, 90%, 65%);--color-primary-hover: hsl(263, 90%, 72%);--color-primary-glow: hsla(263, 90%, 65%, .15);--color-success: hsl(158, 85%, 45%);--color-success-bg: hsla(158, 85%, 45%, .12);--color-warning: hsl(38, 92%, 50%);--color-warning-bg: hsla(38, 92%, 50%, .12);--color-error: hsl(354, 85%, 55%);--color-error-bg: hsla(354, 85%, 55%, .12);--font-title: "Outfit", "Plus Jakarta Sans", sans-serif;--font-body: "Plus Jakarta Sans", sans-serif;--font-mono: "Fira Code", monospace;--transition-smooth: all .25s cubic-bezier(.4, 0, .2, 1);--shadow-card: 0 10px 30px -10px rgba(0, 0, 0, .5);--border-radius-lg: 14px;--border-radius-md: 10px;--border-radius-sm: 6px}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-main);color:var(--text-primary);font-family:var(--font-body);-webkit-font-smoothing:antialiased;min-height:100vh;overflow-x:hidden}.mono{font-family:var(--font-mono)}.glow-orb{position:fixed;width:500px;height:500px;border-radius:50%;filter:blur(160px);z-index:0;opacity:.12;pointer-events:none}.main-orb{top:-150px;right:-100px;background:var(--color-primary)}.sec-orb{bottom:-150px;left:-100px;background:#0080ff}.app-shell{max-width:1200px;margin:0 auto;padding:24px;min-height:100vh;display:flex;flex-direction:column;position:relative;z-index:1}.main-content{flex:1;display:flex;flex-direction:column;gap:24px}.navbar-container{display:flex;justify-content:space-between;align-items:center;padding-bottom:20px;border-bottom:1px solid var(--border-color);margin-bottom:8px}.navbar-left{display:flex;align-items:center;gap:14px}.brand-logo{width:40px;height:40px;background:linear-gradient(135deg,var(--color-primary),hsl(210,100%,50%));border-radius:var(--border-radius-md);display:flex;align-items:center;justify-content:center;box-shadow:0 0 20px var(--color-primary-glow)}.logo-spark{width:16px;height:16px;background-color:#fff;clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}.brand-title{font-family:var(--font-title);font-size:1.25rem;font-weight:700;background:linear-gradient(90deg,#fff,var(--text-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.brand-version{display:block;font-size:.75rem;color:var(--text-muted)}.session-info{display:flex;align-items:center;gap:12px}.user-badge{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;color:var(--color-success);background:var(--color-success-bg);padding:4px 10px;border-radius:20px;border:1px solid hsla(158,85%,45%,.2)}.user-dot{width:6px;height:6px;background:var(--color-success);border-radius:50%}.breadcrumbs{display:flex;align-items:center;gap:8px;font-size:.875rem;color:var(--text-secondary)}.breadcrumb-item{display:inline-flex;align-items:center;gap:6px}.breadcrumb-link{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px 8px;border-radius:var(--border-radius-sm);transition:var(--transition-smooth)}.breadcrumb-link:hover{color:var(--text-primary);background:var(--bg-card-hover)}.breadcrumb-active{color:var(--text-primary);font-weight:600}.breadcrumb-separator{color:var(--text-muted)}.view-container{display:flex;flex-direction:column;gap:24px}.view-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.view-subtitle{font-size:.85rem;color:var(--color-primary);text-transform:uppercase;letter-spacing:.05em;font-weight:600;margin-bottom:4px}.view-title{font-family:var(--font-title);font-size:1.75rem;font-weight:700;color:var(--text-primary)}.view-description{font-size:.9rem;color:var(--text-secondary);margin-top:4px}.view-actions{display:flex;gap:10px}.card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);padding:24px;box-shadow:var(--shadow-card);transition:var(--transition-smooth)}.clickable{cursor:pointer}.clickable:hover{background:var(--bg-card-hover);border-color:var(--border-glow);transform:translateY(-2px)}.grid{display:grid;gap:20px}.grid-2{grid-template-columns:repeat(auto-fill,minmax(360px,1fr))}.grid-3{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font-body);font-size:.875rem;font-weight:600;padding:10px 18px;border-radius:var(--border-radius-md);border:1px solid transparent;cursor:pointer;transition:var(--transition-smooth)}.btn-primary{background:var(--color-primary);color:#fff;box-shadow:0 4px 14px var(--color-primary-glow)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:0 6px 20px var(--color-primary-glow)}.btn-secondary{background:#272935;color:var(--text-primary);border-color:var(--border-color)}.btn-secondary:hover:not(:disabled){background:#2f3341;border-color:#3c4153}.btn-outline{background:transparent;color:var(--text-secondary);border-color:var(--border-color)}.btn-outline:hover:not(:disabled){color:var(--text-primary);border-color:var(--text-secondary)}.btn-sm{padding:6px 12px;font-size:.8rem;border-radius:var(--border-radius-sm)}.btn-block{width:100%}.btn:disabled{opacity:.5;cursor:not-allowed}.form-card{border-color:var(--border-glow);background:#1a1d28}.card-header-sm{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.btn-close{background:none;border:none;color:var(--text-muted);font-size:1.2rem;cursor:pointer}.btn-close:hover{color:var(--text-primary)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:.8rem;font-weight:600;color:var(--text-secondary)}.form-group input{background:var(--bg-main);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:10px 14px;color:var(--text-primary);font-family:var(--font-body);font-size:.9rem}.form-group input:focus{outline:none;border-color:var(--color-primary)}.form-actions{display:flex;justify-content:flex-end;gap:10px}.badge-status{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;font-weight:600;padding:4px 10px;border-radius:20px;text-transform:capitalize;border:1px solid transparent}.badge-sm{padding:2px 8px;font-size:.7rem}.status-dot{width:6px;height:6px;border-radius:50%}.badge-building{background:var(--color-warning-bg);color:var(--color-warning);border-color:#f59f0a4d}.dot-building{background:var(--color-warning)}.badge-running{background:#0080ff26;color:#4da6ff;border-color:#0080ff4d}.dot-running{background:#4da6ff}.badge-success{background:var(--color-success-bg);color:var(--color-success);border-color:#11d48d4d}.dot-success{background:var(--color-success)}.badge-failed{background:var(--color-error-bg);color:var(--color-error);border-color:#ee2b3e4d}.dot-failed{background:var(--color-error)}.badge-pending{background:#272935;color:var(--text-secondary);border-color:var(--border-color)}.dot-pending{background:var(--text-muted)}.badge-stopped{background:#24262e;color:var(--text-muted)}.dot-stopped{background:var(--text-muted)}.pulse{animation:pulse-animation 1.5s infinite}@keyframes pulse-animation{0%{opacity:.4}50%{opacity:1}to{opacity:.4}}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;gap:16px;color:var(--text-secondary)}.spinner{width:32px;height:32px;border:3px solid var(--border-color);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}.mini-spinner{display:inline-block;width:12px;height:12px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-card,.error-card{text-align:center;padding:48px 24px;background:var(--bg-card);border:1px dashed var(--border-color);border-radius:var(--border-radius-lg);display:flex;flex-direction:column;align-items:center;gap:12px}.empty-icon,.error-icon{font-size:2.5rem}.error-code{font-family:var(--font-mono);font-size:.85rem;color:var(--color-error);margin-bottom:8px}.error-banner{background:var(--color-error-bg);border:1px solid hsla(354,85%,55%,.3);color:var(--color-error);padding:10px 14px;border-radius:var(--border-radius-md);font-size:.85rem;margin-bottom:12px}.session-banner{display:flex;justify-content:space-between;align-items:center}.live-status-banner{display:flex;align-items:center;gap:10px;background:#9355f61a;border:1px solid var(--border-glow);padding:12px 16px;border-radius:var(--border-radius-md);font-size:.85rem;color:var(--text-primary)}.pulse-beacon{width:8px;height:8px;background:var(--color-primary);border-radius:50%;box-shadow:0 0 10px var(--color-primary);animation:pulse-animation 1.5s infinite}.execution-banner{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-radius:var(--border-radius-md);font-size:.875rem}.banner-content{display:flex;align-items:center;gap:10px}.banner-success{background:var(--color-success-bg);border:1px solid hsla(158,85%,45%,.3);color:var(--color-success)}.banner-warning{background:var(--color-warning-bg);border:1px solid hsla(38,92%,50%,.3);color:var(--color-warning)}.banner-error{background:var(--color-error-bg);border:1px solid hsla(354,85%,55%,.3);color:var(--color-error)}.btn-close-sm{background:none;border:none;color:currentColor;opacity:.7;cursor:pointer}.btn-close-sm:hover{opacity:1}.project-card-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.project-icon{font-size:1.5rem;background:var(--bg-main);padding:8px;border-radius:var(--border-radius-md);border:1px solid var(--border-color)}.project-name{font-family:var(--font-title);font-size:1.1rem;font-weight:600}.project-slug{font-size:.8rem;color:var(--text-muted);font-family:var(--font-mono)}.project-meta,.env-card-body{display:flex;flex-direction:column;gap:8px;font-size:.85rem;margin-bottom:16px;border-top:1px solid var(--border-color);padding-top:12px}.meta-row{display:flex;justify-content:space-between;align-items:center}.meta-label{color:var(--text-muted)}.meta-val{color:var(--text-secondary)}.project-card-action{font-size:.85rem;font-weight:600;color:var(--color-primary);display:flex;justify-content:flex-end}.env-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.env-name{font-family:var(--font-title);font-size:1.1rem;font-weight:600}.env-slug{font-size:.8rem;color:var(--text-muted);font-family:var(--font-mono)}.preview-url-link{color:var(--color-primary);text-decoration:none;font-family:var(--font-mono);font-size:.8rem}.preview-url-link:hover{text-decoration:underline}.expiry-tag{font-size:.75rem;color:var(--color-warning);background:var(--color-warning-bg);padding:4px 8px;border-radius:var(--border-radius-sm);margin-top:4px}.table-card{padding:0;overflow:hidden}.deployments-table{width:100%;border-collapse:collapse;text-align:left;font-size:.875rem}.deployments-table th{background:#1a1d28;color:var(--text-secondary);font-weight:600;padding:14px 20px;border-bottom:1px solid var(--border-color);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}.deployments-table td{padding:16px 20px;border-bottom:1px solid var(--border-color);color:var(--text-primary);vertical-align:middle}.deployments-table tr:last-child td{border-bottom:none}.deployments-table tr:hover td{background:var(--bg-card-hover)}.row-active td{background:#9355f60d}.failure-code-sub{font-size:.75rem;color:var(--color-error);font-family:var(--font-mono);margin-top:4px}.git-connect-card{margin-bottom:24px;background:#181b25;border:1px solid var(--border-color)}.git-connect-header{display:flex;justify-content:space-between;align-items:center}.git-connect-title{display:flex;align-items:center;gap:12px}.git-icon{font-size:1.5rem}.git-subtitle{font-size:.8rem;color:var(--text-muted)}.git-binding-details{display:flex;align-items:center;gap:16px;padding:12px 16px;background:var(--bg-main);border-radius:var(--border-radius-md);border:1px solid var(--border-color)}.binding-badge{display:flex;align-items:center;gap:8px}.badge-provider{font-size:.75rem;font-weight:700;color:#fff;background:#0073e6;padding:2px 8px;border-radius:12px}.binding-repo-name{font-size:.9rem;font-weight:600}.binding-meta{display:flex;align-items:center;gap:16px;font-size:.8rem;color:var(--text-secondary)}.status-connected{color:var(--color-success);font-weight:600}.select-input{background:var(--bg-main);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:8px 12px;color:var(--text-primary);font-family:var(--font-body);font-size:.85rem;width:100%}.select-input:focus{outline:none;border-color:var(--color-primary)}.loading-state-sm{font-size:.85rem;color:var(--text-muted);display:flex;align-items:center;gap:8px;padding:8px 0}.margin-top-sm{margin-top:12px}.app-footer{margin-top:40px;padding-top:20px;border-top:1px solid var(--border-color);text-align:center;font-size:.8rem;color:var(--text-muted)}.build-log-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000bf;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:9999;padding:20px}.build-log-modal{width:100%;max-width:900px;height:80vh;background:var(--bg-card);border:1px solid var(--border-glow);border-radius:var(--border-radius-lg);box-shadow:0 20px 50px #0009;display:flex;flex-direction:column;overflow:hidden}.build-log-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:var(--bg-card-hover);border-bottom:1px solid var(--border-color)}.build-log-title{display:flex;align-items:center;gap:12px}.build-log-title h3{margin:0;font-size:1rem;font-family:var(--font-title);color:var(--text-primary)}.build-log-title code{font-family:monospace;background:var(--bg-main);padding:2px 6px;border-radius:4px;font-size:.85rem;color:var(--color-primary-light)}.live-badge{font-size:.75rem;font-weight:700;padding:3px 8px;border-radius:12px;letter-spacing:.5px}.live-badge.connected{background:#11d48d26;color:var(--color-success);border:1px solid hsla(158,85%,45%,.3)}.live-badge.disconnected{background:#80808026;color:var(--text-muted);border:1px solid var(--border-color)}.build-log-actions{display:flex;align-items:center;gap:16px}.autoscroll-toggle{font-size:.8rem;color:var(--text-secondary);display:flex;align-items:center;gap:6px;cursor:pointer}.build-log-terminal{flex:1;background:#0d0f14;padding:16px 20px;overflow-y:auto;font-family:JetBrains Mono,Fira Code,monospace;font-size:.825rem;line-height:1.6}.log-empty{color:var(--text-muted);font-style:italic;padding:20px 0}.log-line{display:flex;align-items:baseline;gap:12px;word-break:break-all;white-space:pre-wrap}.log-seq{color:#4a5568;-webkit-user-select:none;user-select:none;min-width:32px;font-size:.75rem}.log-time{color:#718096;-webkit-user-select:none;user-select:none;font-size:.75rem}.log-stream{font-size:.7rem;font-weight:600;text-transform:uppercase;-webkit-user-select:none;user-select:none}.stream-tag-stdout{color:#63b3ed}.stream-tag-stderr{color:#feb2b2}.stream-tag-system{color:#d6bcfa}.stream-stdout .log-msg{color:#e2e8f0}.stream-stderr .log-msg{color:#fc8181}.stream-system .log-msg{color:#b794f4;font-style:italic}
