:root{--bg: #0f1419;--panel: #1a222c;--panel-2: #232d3a;--text: #e8eef4;--muted: #8b9aab;--accent: #2f9e7b;--accent-2: #3db892;--danger: #d45757;--border: #2c3848;--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--sans: "IBM Plex Sans", "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--sans);background:radial-gradient(1200px 600px at 10% -10%,#1c3a32 0%,transparent 55%),radial-gradient(900px 500px at 100% 0%,#1a2a40 0%,transparent 50%),var(--bg);color:var(--text)}a{color:var(--accent-2);text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}.app{display:grid;grid-template-columns:240px 1fr;min-height:100%}.sidebar{background:#12181feb;border-right:1px solid var(--border);padding:1.25rem 1rem;display:flex;flex-direction:column;gap:1.5rem}.brand{font-weight:700;letter-spacing:.02em;font-size:1.1rem}.sidebar nav{display:flex;flex-direction:column;gap:.35rem}.sidebar nav a{color:var(--muted);padding:.55rem .75rem;border-radius:8px}.sidebar nav a.active,.sidebar nav a:hover{background:var(--panel-2);color:var(--text)}.sidebar-foot{margin-top:auto;display:flex;justify-content:space-between;color:var(--muted);font-size:.9rem}.content{padding:1.75rem 2rem}.page h1{margin:0 0 .35rem;font-size:1.6rem}.page .sub{color:var(--muted);margin-bottom:1.5rem}.panel{background:#1a222ce6;border:1px solid var(--border);border-radius:14px;padding:1.25rem}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1rem}.field{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.85rem}.field label{font-size:.85rem;color:var(--muted)}.field input,.field select,.field textarea{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:.55rem .7rem}.field textarea{min-height:120px;font-family:var(--mono);font-size:.85rem}.btn{background:var(--accent);border:none;color:#fff;border-radius:8px;padding:.6rem 1rem;cursor:pointer;font-weight:600}.btn:hover{background:var(--accent-2)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.secondary{background:var(--panel-2);border:1px solid var(--border)}.btn.danger{background:var(--danger)}.linkish{background:none;border:none;color:var(--accent-2);cursor:pointer;padding:0}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:.7rem .5rem;border-bottom:1px solid var(--border);font-size:.95rem;vertical-align:top}.table th{color:var(--muted);font-weight:500}.table td>.row-actions{margin:-.15rem 0}.firewall-rules{margin-bottom:1.25rem}.firewall-table input,.firewall-table select{width:100%;min-width:0;font-size:.9rem;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:.45rem .6rem}.firewall-table input::placeholder{color:var(--muted)}.firewall-table input:focus,.firewall-table select:focus{outline:none;border-color:var(--accent)}.firewall-table option{color:var(--text);background:var(--panel-2)}.firewall-table td:nth-child(2){width:5.5rem}.firewall-table td:nth-child(3){width:6.5rem}.firewall-table td:nth-child(5){width:2.75rem;text-align:center}.btn-icon{padding:.35rem .55rem;line-height:1;min-width:2rem}.firewall-warn{color:#e6c35c;margin:.5rem 0 0}.firewall-rules .row-actions select{min-width:12rem;max-width:18rem;font-size:.9rem;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:.45rem .6rem}.firewall-rules .row-actions select:focus{outline:none;border-color:var(--accent)}.firewall-rules .row-actions select option{color:var(--text);background:var(--panel-2)}.badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;background:var(--panel-2);font-size:.8rem;border:1px solid var(--border)}.badge.ok{border-color:#2f9e7b55;color:#7ddec0}.badge.fail{border-color:#d4575755;color:#f0a0a0}.badge.draft{border-color:#c9a22766;color:#e6c35c}.badge.locked{border-color:#8a8f9855;color:#a8aeb8}.deploy-status-cell{min-width:14rem}.deploy-name{font-weight:600}.deploy-meta{margin-top:.15rem}.deploy-apply-hint{margin-top:.25rem;font-size:.78rem}.row-locked td{opacity:.88}.status-crumb{display:flex;flex-wrap:wrap;gap:.2rem;align-items:center;list-style:none;margin:.4rem 0 0;padding:0;font-size:.72rem;color:var(--muted)}.status-crumb li{display:inline-flex;align-items:center}.status-crumb li:not(:last-child):after{content:"·";margin-left:.2rem;color:var(--border)}.status-crumb li.done{color:#7ddec0}.status-crumb li.current{color:var(--text);font-weight:600}.apply-history{list-style:none;margin:.5rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem}.apply-history li{border:1px solid var(--border);border-left:3px solid var(--border);border-radius:8px;padding:.6rem .75rem;background:var(--panel-2)}.apply-history li.ok{border-left-color:#2f9e7b}.apply-history li.fail{border-left-color:#d45757}.apply-history-head{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.apply-history-when{color:var(--muted);font-size:.85rem}.apply-history-latest{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:#7ddec0;border:1px solid #2f9e7b55;border-radius:999px;padding:.05rem .4rem}.apply-history-head .linkish{margin-left:auto}.apply-history-summary{margin-top:.4rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.82rem;color:var(--text);word-break:break-word}.log-summary-cell{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8rem;color:var(--muted);max-width:30rem;word-break:break-word}.delete-panel{border-color:#d4575755}.delete-panel h3{color:#f0a0a0}.delete-confirm{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-top:.75rem}.delete-confirm input{flex:1 1 12rem;min-width:10rem}.wizard-progress{display:flex;flex-wrap:wrap;gap:.5rem;margin:.75rem 0 1rem;list-style:none;padding:0}.wizard-progress li{display:flex;align-items:center;gap:.35rem;padding:.35rem .65rem;border-radius:8px;border:1px solid var(--border);background:var(--panel-2);font-size:.85rem;color:var(--muted)}.wizard-progress li.done{border-color:#2f9e7b55;color:#7ddec0}.wizard-progress li.current{border-color:var(--accent);color:var(--text);font-weight:600}.wizard-progress li.failed-at{border-color:#d4575755;color:#f0a0a0}.btn.current-step{box-shadow:0 0 0 2px #5ea0ff59}.login-wrap{min-height:100%;display:grid;place-items:center;padding:2rem}.login-card{width:min(400px,100%);background:#1a222cf2;border:1px solid var(--border);border-radius:16px;padding:1.75rem}.login-card h1{margin-top:0}.steps{display:flex;gap:.5rem;flex-wrap:wrap;margin:1rem 0}.output{background:#0b1016;border:1px solid var(--border);border-radius:10px;padding:1rem;font-family:var(--mono);font-size:.8rem;white-space:pre-wrap;max-height:480px;overflow:auto;color:#c8d0da}.live-activity{display:flex;align-items:center;gap:.6rem;margin:.75rem 0 .5rem;padding:.55rem .75rem;border:1px solid var(--border);border-radius:8px;background:#1a222cb3;font-size:.85rem;color:#c8d0da}.live-activity.running{border-color:#7ddec059}.live-activity-text{font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spinner{width:.9rem;height:.9rem;border:2px solid rgba(200,208,218,.25);border-top-color:#7ddec0;border-radius:50%;flex-shrink:0;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.output .tf-header{color:#8fb7e6;font-weight:700}.output .tf-key{color:#8ec7e6}.output .tf-value{color:#fff}.output .tf-secret{color:#6b7684;font-style:italic}.output .tf-dim{color:#6b7684}.output .tf-bootstrap{color:#e6c07b}.error{color:#f0a0a0;margin:.5rem 0}.domain-input-row{display:flex;align-items:center;gap:.5rem}.domain-input-row input{flex:1;min-width:0}.domain-ok{color:#7ddec0;font-weight:700;font-size:1.1rem;line-height:1}.row-actions{display:flex;gap:.5rem;flex-wrap:wrap}.preset-tabs{display:flex;gap:.35rem;margin:0 0 1.1rem;flex-wrap:wrap}.preset-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--panel-2);color:var(--muted);border-radius:8px;padding:.45rem .9rem;cursor:pointer;font:inherit}.preset-tab:hover{color:var(--text);border-color:var(--accent)}.preset-tab.active{color:var(--text);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,var(--panel-2))}.tf-opts{display:flex;flex-direction:column;gap:.65rem;margin:0 0 1rem;padding:.75rem .9rem;background:var(--panel-2, rgba(255, 255, 255, .04));border-radius:8px}.tf-opts-check{display:flex;align-items:flex-start;gap:.55rem;cursor:pointer;font-size:.92rem}.tf-opts-check input{margin-top:.2rem;flex-shrink:0}.tf-opts-extra{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;color:var(--muted)}.tf-opts-extra input{width:100%;box-sizing:border-box;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85rem}.tf-opts-hint{margin:0;font-size:.8rem}.tf-opts-hint code{font-size:.78rem}button.linkish{background:none;border:none;padding:0;color:var(--accent-2);cursor:pointer;text-decoration:underline;font:inherit}.kv{display:grid;grid-template-columns:10rem 1fr;gap:.4rem 1rem;margin:.5rem 0 0}.kv dt{color:var(--muted);font-size:.85rem}.kv dd{margin:0;display:flex;flex-wrap:wrap;align-items:flex-start;gap:.5rem}.kv code.wrap{white-space:pre-wrap;word-break:break-all;font-size:.8rem}.secrets-box{margin-top:1rem;display:flex;flex-direction:column;gap:1rem}.secret-block{border:1px solid #d4575755;border-radius:10px;padding:.75rem .9rem;background:#d4575714}.secret-head{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:.5rem}.secret-pre{margin:0;padding:.65rem;background:#0b1016;border-radius:8px;border:1px solid var(--border);font-family:var(--mono);font-size:.75rem;white-space:pre-wrap;word-break:break-all;max-height:220px;overflow:auto}.cost-box{margin:1rem 0 1.25rem;padding:1rem 1.1rem;border-radius:12px;border:1px solid #2f9e7b55;background:linear-gradient(135deg,#2f9e7b1f,#1a222c99)}.cost-head{margin-bottom:.5rem}.cost-total{font-size:1.45rem;font-weight:700;margin-bottom:.75rem}.cost-table td{vertical-align:top}.cost-disclaimer{margin-top:.75rem;font-size:.8rem}.vm-size-picker{display:flex;flex-direction:column;gap:.85rem;margin-bottom:.85rem}.vm-size-filters{padding:.75rem;border-radius:10px;border:1px solid var(--border);background:#0f141959}.vm-size-label-row{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem}.vm-size-hint{display:block;margin-top:.25rem;margin-bottom:0}@media (max-width: 900px){.app{grid-template-columns:1fr}.sidebar{flex-direction:row;flex-wrap:wrap;align-items:center}.sidebar nav{flex-direction:row;flex-wrap:wrap}.sidebar-foot{margin-top:0;width:100%}.grid-2,.grid-3{grid-template-columns:1fr}.content{padding:1rem}}
