@import url("https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700&display=swap");*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }

/*
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*/*,:after,:before{border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.static{position:static}.absolute{position:absolute}.relative{position:relative}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.border{border-width:1px}.lowercase{text-transform:lowercase}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root{--blue:oklch(0.52 0.17 255);--blue-dark:oklch(0.47 0.19 255);--blue-surface:oklch(0.965 0.025 255);--blue-border:oklch(0.82 0.07 255);--text:oklch(0.17 0.008 255);--text-2:oklch(0.45 0.01 255);--text-3:oklch(0.62 0.007 255);--surface:oklch(1 0 0);--canvas:oklch(0.974 0.003 255);--border:oklch(0.875 0.008 255);--green:oklch(0.47 0.15 155);--green-surface:oklch(0.965 0.04 155);--green-border:oklch(0.80 0.07 155);--red:oklch(0.48 0.19 25);--red-surface:oklch(0.97 0.025 25);--red-border:oklch(0.82 0.08 25)}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body{font-family:Manrope,sans-serif;font-size:14px;line-height:1.5;color:var(--text);-webkit-font-smoothing:antialiased}.login-page,body{background:var(--canvas)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:100%;max-width:360px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:40px 32px;text-align:center}.login-logo{color:var(--blue);margin-bottom:16px}.login-title{font-size:22px;font-weight:600;color:var(--text);letter-spacing:-.02em}.login-subtitle{font-size:13px;color:var(--text-2);margin-top:4px;margin-bottom:28px}.login-form{text-align:left}.login-error{font-size:13px;color:var(--red);margin-bottom:12px;text-align:center}.gcp-topbar{background:var(--surface);border-bottom:1px solid var(--border);height:64px;position:sticky;top:0;z-index:10}.gcp-topbar-inner{max-width:1200px;margin:0 auto;padding:0 24px;height:100%;display:flex;align-items:center;justify-content:space-between}.gcp-topbar-left{display:flex;align-items:center;gap:12px}.gcp-logo{width:24px;height:24px;color:var(--blue);flex-shrink:0}.gcp-product-name{font-size:18px;font-weight:600;color:var(--text);letter-spacing:-.02em}.logout-btn{font-size:13px;font-weight:500;font-family:Manrope,sans-serif;color:var(--text-2);background:transparent;border:none;cursor:pointer;padding:4px 8px;border-radius:4px;transition:color .12s}.logout-btn:hover{color:var(--text)}.gcp-project-pill{font-size:13px;font-weight:500;color:var(--text-2);background:var(--canvas);border:1px solid var(--border);border-radius:100px;padding:4px 14px;cursor:default}.gcp-canvas{min-height:calc(100vh - 64px);padding:40px 24px 80px}.gcp-content{max-width:720px;margin:0 auto}.gcp-page-header{margin-bottom:32px}.gcp-page-title{font-size:24px;font-weight:600;color:var(--text);letter-spacing:-.025em;line-height:1.25}.gcp-page-desc{margin-top:8px;font-size:14px;color:var(--text-2);line-height:1.65;max-width:60ch}.gcp-steps{margin-bottom:28px;gap:0}.gcp-step,.gcp-steps{display:flex;align-items:center}.gcp-step{gap:8px;font-size:13px;font-weight:500}.gcp-step.active{color:var(--blue)}.gcp-step.inactive{color:var(--text-3)}.gcp-step-num{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0}.gcp-step.active .gcp-step-num{background:var(--blue);color:#fff}.gcp-step.inactive .gcp-step-num{background:var(--border);color:var(--text-2)}.gcp-step-divider{width:32px;height:1px;background:var(--border);margin:0 10px;flex-shrink:0}.gcp-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:32px}.gcp-field-group{margin-bottom:24px}.gcp-label{display:block;font-size:13px;font-weight:500;color:var(--text-2);margin-bottom:6px;letter-spacing:.005em}.gcp-input-row{display:flex;align-items:stretch;border:1px solid var(--border);border-radius:4px;overflow:hidden;transition:border-color .12s,box-shadow .12s}.gcp-input-row:focus-within{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue)}.gcp-input{flex:1;min-width:0;height:36px;padding:0 12px;font-size:14px;font-family:Manrope,sans-serif;font-weight:500;color:var(--text);background:transparent;border:none;outline:none}.gcp-input::-moz-placeholder{color:oklch(.72 .004 255);font-weight:400}.gcp-input::placeholder{color:oklch(.72 .004 255);font-weight:400}.gcp-input:disabled{opacity:.6;cursor:not-allowed}.gcp-input-suffix{height:36px;padding:0 14px;display:flex;align-items:center;font-size:13px;font-weight:600;font-family:Courier New,monospace;color:var(--text-2);background:var(--canvas);border-left:1px solid var(--border);white-space:nowrap}.gcp-helper{margin-top:6px;font-size:12px;color:var(--text-3);line-height:1.5}.gcp-preview{background:var(--blue-surface);border:1px solid var(--blue-border);border-radius:4px;padding:12px 16px;margin-bottom:24px;display:flex;align-items:baseline;gap:12px;animation:fadein .15s ease}.gcp-preview-label{font-size:12px;font-weight:600;color:var(--blue);white-space:nowrap;text-transform:uppercase;letter-spacing:.05em}.gcp-preview-value{font-family:Courier New,monospace;font-size:13px;color:oklch(.35 .13 255);word-break:break-all}.gcp-status{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border-radius:4px;margin-bottom:24px;animation:fadein .15s ease}.gcp-status.success{background:var(--green-surface);border:1px solid var(--green-border)}.gcp-status.error{background:var(--red-surface);border:1px solid var(--red-border)}.gcp-status-icon{width:18px;height:18px;flex-shrink:0;margin-top:1px}.gcp-status.success .gcp-status-icon{color:var(--green)}.gcp-status.error .gcp-status-icon{color:var(--red)}.gcp-status-title{font-size:14px;font-weight:500;color:var(--text)}.gcp-status.success .gcp-status-title{color:oklch(.3 .1 155)}.gcp-status.error .gcp-status-title{color:oklch(.35 .15 25)}.gcp-status-detail{display:block;margin-top:3px;font-family:Courier New,monospace;font-size:12px;color:oklch(.4 .08 155)}.gcp-actions{display:flex;align-items:center;gap:8px}.gcp-btn-primary{height:36px;padding:0 24px;background:var(--blue);color:#fff;font-family:Manrope,sans-serif;font-size:14px;font-weight:500;border:none;border-radius:4px;cursor:pointer;transition:background .12s;white-space:nowrap}.gcp-btn-primary:hover:not(:disabled){background:var(--blue-dark)}.gcp-btn-primary:disabled{opacity:.4;cursor:not-allowed}.gcp-btn-ghost{height:36px;padding:0 20px;background:transparent;color:var(--blue);font-family:Manrope,sans-serif;font-size:14px;font-weight:500;border:1px solid var(--border);border-radius:4px;cursor:pointer;transition:background .12s,border-color .12s}.gcp-btn-ghost:hover{background:var(--blue-surface);border-color:var(--blue-border)}@keyframes fadein{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.list-header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:nowrap;margin-bottom:24px}a.gcp-btn-ghost,a.gcp-btn-primary{display:inline-flex;align-items:center;text-decoration:none}.record-table{width:100%;border-collapse:collapse}.record-table th{text-align:left;font-size:12px;font-weight:600;color:var(--text-2);letter-spacing:.04em;text-transform:uppercase;padding:10px 16px;background:var(--canvas)}.record-row td,.record-table th{border-bottom:1px solid var(--border)}.record-row td{padding:14px 16px;vertical-align:middle}.record-row:last-child td{border-bottom:none}.record-row:hover td{background:oklch(.985 .005 255)}.cell-name{width:40%}.subdomain-link{text-decoration:none;display:inline-flex;align-items:baseline;gap:2px}.subdomain-link:hover .subdomain-name{color:var(--accent)}.subdomain-name{font-size:14px;font-weight:600;color:var(--text)}.subdomain-domain{font-size:13px;color:var(--text-2)}.cell-ip code{font-family:Courier New,monospace;font-size:12px;color:var(--text-2)}.badge-row{display:flex;gap:6px;flex-wrap:wrap}.badge{display:inline-flex;align-items:center;font-size:11px;font-weight:600;padding:3px 8px;border-radius:100px;white-space:nowrap}.badge-ok{background:var(--green-surface);color:var(--green);border:1px solid var(--green-border)}.badge-pending{color:var(--text-2)}.badge-loading,.badge-pending{background:var(--canvas);border:1px solid var(--border)}.badge-loading{color:var(--text-3);opacity:.6}.badge-unconfigured{background:oklch(.22 .04 55/.4);color:oklch(.72 .12 55);border:1px solid oklch(.4 .08 55/.5)}.cell-action{text-align:right;width:130px}.btn-continue{font-size:13px;font-weight:500;color:var(--blue);text-decoration:none;white-space:nowrap}.btn-continue:hover{text-decoration:underline}.btn-open{font-size:13px;font-weight:500;color:var(--text-2);text-decoration:none;white-space:nowrap}.btn-open:hover{color:var(--blue)}.empty-state{padding:48px 24px;text-align:center;font-size:14px;color:var(--text-2)}.error-text{color:var(--red)}.inline-link{color:var(--blue);text-decoration:none}.inline-link:hover{text-decoration:underline}.breadcrumb{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-2);margin-bottom:20px}.breadcrumb-link{color:var(--blue);text-decoration:none}.breadcrumb-link:hover{text-decoration:underline}.breadcrumb-sep{color:var(--text-3)}.step-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 24px;border-bottom:1px solid var(--border)}.step-row:last-child{border-bottom:none}.step-row.done{background:#fff}.step-row.active{background:oklch(.985 .006 255)}.step-row.locked{background:#fff;opacity:.45;pointer-events:none}.step-row-left{display:flex;align-items:flex-start;gap:14px;flex:1;min-width:0}.step-row-num{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;margin-top:1px}.step-row.done .step-row-num{background:var(--green);color:#fff}.step-row.active .step-row-num{background:var(--blue);color:#fff}.step-row.locked .step-row-num{background:var(--border);color:var(--text-2)}.step-row-label{font-size:14px;font-weight:600;color:var(--text);line-height:1.4}.step-meta{font-size:12px;color:var(--text-2);margin-top:2px}.step-meta code{font-family:Courier New,monospace}.step-row-action{flex-shrink:0;max-width:480px}.step-commands{display:flex;flex-direction:column;gap:8px;margin-top:4px}.step-commands-label{font-size:12px;font-weight:500;color:var(--text-2);margin-bottom:2px}.step-commands pre{font-family:Courier New,monospace;font-size:12px;color:var(--text-1);line-height:1.7;white-space:pre-wrap;word-break:break-all}.code-block{position:relative;background:oklch(.13 .01 255);border-radius:6px;padding:12px 14px}.code-block pre{font-family:Courier New,monospace;font-size:12px;color:oklch(.88 .01 255);line-height:1.7;white-space:pre-wrap;word-break:break-all;padding-right:48px}.copy-btn{position:absolute;top:8px;right:8px;font-size:11px;font-weight:600;font-family:Manrope,sans-serif;color:oklch(.65 .01 255);background:oklch(.22 .01 255);border:none;border-radius:4px;padding:3px 8px;cursor:pointer;transition:color .1s}.copy-btn:hover{color:oklch(.88 .01 255)}.repo-field{min-width:0}.repo-error{font-size:12px;color:var(--red);margin-top:6px}.server-stats{display:flex;gap:10px;align-items:center;font-size:12px;font-weight:500}.stat-ok{color:oklch(.45 .15 145)}.stat-bad{color:var(--red)}.stat-neutral{color:var(--text-2)}.health-ok{color:oklch(.45 .15 145)}.health-fail,.health-ok{font-size:13px;font-weight:500;margin-top:10px}.deploy-blocked,.health-fail{color:var(--red)}.deploy-blocked{display:flex;flex-direction:column;gap:4px;margin-top:12px;padding:12px 14px;background:var(--red-surface);border:1px solid var(--red-border);border-radius:6px;font-size:13px;max-width:400px}.deploy-blocked strong{font-weight:600}.deploy-blocked span{color:oklch(.38 .08 25)}.framework-badge{font-size:12px;font-weight:600;color:var(--text-2);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px}.docker-checking{margin-top:10px;font-size:13px;color:var(--text-2)}.docker-results{margin-top:12px;display:flex;flex-direction:column;gap:4px}.docker-file{display:flex;align-items:center;gap:8px;font-size:13px}.docker-file-icon{width:16px;text-align:center;font-weight:700;font-size:12px}.docker-file code{font-family:Courier New,monospace;font-size:12px}.docker-file-label{font-size:12px}.docker-file-exists .docker-file-icon,.docker-file-label{color:var(--text-3)}.docker-file-created .docker-file-icon{color:var(--green)}.docker-file-failed .docker-file-icon{color:var(--red)}.docker-file-created .docker-file-label{color:var(--green)}.docker-file-failed .docker-file-label{color:var(--red)}.checkbox-label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--text-2);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.checkbox-label input[type=checkbox]{width:14px;height:14px;accent-color:var(--blue);cursor:pointer}.env-textarea{width:100%;font-family:Courier New,monospace;font-size:12px;line-height:1.7;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:10px 12px;resize:vertical;outline:none;transition:border-color .12s}.env-textarea:focus{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue)}.redeploy-section{margin-top:16px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:20px 24px}.redeploy-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.redeploy-title{font-size:14px;font-weight:600;color:var(--text)}.redeploy-desc{font-size:12px;color:var(--text-2);font-family:Courier New,monospace;margin-top:2px}.terminal{margin-top:16px;background:oklch(.1 .01 255);border-radius:6px;padding:14px 16px;max-height:320px;overflow-y:auto;width:100%}.terminal-line{font-family:Courier New,monospace;font-size:12px;line-height:1.8;white-space:pre-wrap;word-break:break-all}.terminal-out{color:oklch(.85 .01 255)}.terminal-err{color:oklch(.75 .12 25)}.terminal-info{color:oklch(.72 .12 255);font-weight:600}.terminal-done{color:oklch(.72 .12 155);font-weight:600}.terminal-error{color:oklch(.65 .18 25);font-weight:600}.gcp-btn-danger{height:36px;padding:0 20px;background:oklch(.45 .18 25);color:#fff;font-family:Manrope,sans-serif;font-size:14px;font-weight:600;border:1px solid oklch(.38 .18 25);border-radius:4px;cursor:pointer;transition:background .12s}.gcp-btn-danger:hover:not(:disabled){background:oklch(.4 .2 25)}.gcp-btn-danger:disabled{opacity:.45;cursor:not-allowed}.danger-zone{margin-top:24px;border:1px solid var(--red-border);border-radius:8px;overflow:hidden}.danger-zone-toggle{width:100%;display:flex;align-items:center;gap:10px;padding:14px 20px;background:var(--red-surface);border:none;color:var(--red);font-family:Manrope,sans-serif;font-size:13px;font-weight:600;cursor:pointer;text-align:left;transition:background .15s}.danger-zone-toggle:hover{background:oklch(.955 .04 25)}.danger-zone-icon{font-size:15px}.danger-zone-chevron{margin-left:auto;font-size:14px;transition:transform .2s;display:inline-block}.danger-zone-body{padding:20px 24px;background:var(--surface);border-top:1px solid var(--red-border);animation:fadein .15s ease}.danger-zone-desc{font-size:13px;color:var(--text-2);line-height:1.6}