@import"https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=Syne:wght@600;700;800&display=swap";:root{--ink: #20231f;--field: #f0f3ec;--mist: #dfe5dc;--muted: #758074;--lime: #d9fa82;--deep: #252a24;--panel: #ffffff;--panel-2: #e8ede3;--ok: #5f883c;--ok-bg: #eff8dc;--ok-border: #c9df9b;--bad: #b42318;--bad-bg: #fef3f2;--bad-border: #fecdca;--warn: #9a6700;--focus: #5b9fd4;--radius: 8px;--font-display: Syne, sans-serif;--font-body: "DM Sans", system-ui, sans-serif;--font-mono: "DM Mono", ui-monospace, monospace;color:var(--ink);background:var(--field);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:var(--field);color:var(--ink)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none}a{color:inherit;text-decoration:none}code{font-family:var(--font-mono);font-size:12px;color:var(--muted);background:var(--panel-2);padding:2px 5px;border-radius:3px}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.logo{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:700;letter-spacing:-.04em;font-size:18px;color:var(--ink)}.logo-mark{display:grid;place-items:center;width:26px;height:26px;background:var(--lime);color:var(--ink);border-radius:8px 8px 8px 2px;font-family:var(--font-display);font-size:14px;font-weight:800}.side-logo{background:none;color:var(--ink);padding:0;margin-bottom:28px;text-align:left}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:6px;padding:11px 16px;font-weight:600;font-size:13px;transition:transform .15s ease,box-shadow .15s ease,background .15s ease;white-space:nowrap}.btn-primary{background:var(--ink);color:#fff}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 18px #20231f22}.btn-primary:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}.btn-ghost{border:1px solid var(--mist);color:var(--ink);background:transparent}.btn-ghost:hover{background:#fff}.btn-google{display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;background:#fff;color:var(--ink);border:1px solid var(--mist);border-radius:6px;padding:12px 16px;font-weight:600;font-size:14px}.btn-google:hover{background:#f7f9f4}.btn-google:disabled{opacity:.45;cursor:not-allowed}.toolbar.filters{display:grid;grid-template-columns:1fr auto;gap:10px;margin-bottom:16px;align-items:end}.filter{display:grid;gap:6px;font-size:11px;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.filter select{min-width:140px;background:var(--panel);border:1px solid var(--mist);border-radius:6px;padding:11px 12px;font:13px var(--font-body);color:var(--ink);text-transform:none;letter-spacing:0}.eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 10px}.lede{color:var(--muted);line-height:1.55;margin:0}.lede.tight{margin-top:6px;font-size:14px}.fine{color:var(--muted);font-size:12px;margin:14px 0 0}.fine a{color:var(--ink);text-decoration:underline;text-underline-offset:2px}.form-error{color:var(--bad);font-size:13px;margin:0}.ok-line{color:var(--ok);font-size:13px}.muted{color:var(--muted)}.auth{min-height:100vh;display:grid;place-items:center;padding:32px 20px;background:radial-gradient(ellipse 70% 50% at 20% 0%,#e4edd4 0%,transparent 55%),var(--field)}.auth-card{width:min(100%,420px);background:var(--panel);border:1px solid var(--mist);border-radius:12px;padding:32px 28px;display:grid;gap:14px}.auth-card h1{margin:0;font-family:var(--font-display);font-size:28px;letter-spacing:-.04em}.auth-card label{display:grid;gap:6px;font-size:12px;color:var(--muted);font-weight:600}.auth-card input{width:100%;background:var(--field);border:1px solid var(--mist);border-radius:6px;padding:12px;outline:none}.auth-card input:focus{border-color:var(--focus);box-shadow:0 0 0 3px #5b9fd433;background:#fff}.auth-links{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--muted)}.auth-links a:hover{color:var(--ink)}.boot{min-height:100vh;display:grid;place-content:center;gap:16px;text-align:center;color:var(--muted)}.shell{min-height:100vh;display:flex;position:relative}.sidebar{width:220px;padding:24px 14px;border-right:1px solid var(--mist);background:var(--ink);color:#f5f7f2;display:flex;flex-direction:column;gap:8px;flex-shrink:0}.sidebar .logo,.sidebar .side-logo{color:#f5f7f2}.sidebar nav{display:grid;gap:2px}.nav{text-align:left;padding:10px 12px;border-radius:6px;color:#aeb7aa;font-size:14px;display:flex;align-items:center;justify-content:space-between;transition:background .15s,color .15s}.nav:hover,.nav.active{background:#30362f;color:#fff}.nav-external{font-size:10px;opacity:.5}.nav-count{font-family:var(--font-mono);font-size:11px;background:#30362f;padding:1px 6px;border-radius:8px;color:#9ca69b}.nav.active .nav-count{background:#3a4238;color:#fff}.side-foot{margin-top:auto;padding-top:18px;border-top:1px solid #323832;display:grid;gap:10px}.side-foot strong{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis;color:#f5f7f2}.side-foot span{color:#9ca69b;font-family:var(--font-mono);font-size:11px;text-transform:uppercase}.side-foot .btn-ghost{border-color:#424940;color:#d5ddd0}.side-foot .btn-ghost:hover{background:#30362f;color:#fff}.mobile-head{display:none;position:sticky;top:0;height:60px;padding:0 20px;background:var(--ink);color:#fff;border-bottom:1px solid #323832;align-items:center;justify-content:space-between;z-index:4}.mobile-head .logo{color:#fff}.mobile-head button{padding:8px;color:#fff}.nav-scrim{display:none;position:fixed;inset:60px 0 0;border:0;padding:0;background:#00000059;z-index:2;cursor:pointer}.workspace{flex:1;min-width:0;background:var(--field)}.panel{padding:28px clamp(18px,4vw,40px) 48px}.panel.narrow{max-width:720px}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px}.panel-head h1{margin:0;font-family:var(--font-display);font-size:28px;letter-spacing:-.04em}.toolbar{margin-bottom:16px}.toolbar input,.inline input,.modal input,.modal select,.kv-row input,.file-row input,.file-row textarea{width:100%;background:var(--panel);border:1px solid var(--mist);border-radius:6px;padding:11px 12px;outline:none;transition:border-color .15s,box-shadow .15s}.toolbar input:focus,.inline input:focus,.modal input:focus,.modal select:focus,.kv-row input:focus,.file-row input:focus,.file-row textarea:focus{border-color:var(--focus);box-shadow:0 0 0 3px #5b9fd433}.inline{display:flex;gap:10px;margin:16px 0 20px}.inline input{flex:1}.table-wrap{border:1px solid var(--mist);border-radius:var(--radius);overflow:auto;background:var(--panel)}table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}th{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:12px 14px;border-bottom:1px solid var(--mist);white-space:nowrap;background:#f7f9f4}td{padding:12px 14px;border-bottom:1px solid #edf0eb;white-space:nowrap}tr:last-child td{border-bottom:0}tr:hover td{background:#f7f9f4}.empty{text-align:center;color:var(--muted);padding:36px!important}.actions{display:flex;gap:10px;justify-content:flex-end}.actions button,.stack-list button,.danger{color:var(--ink);font-size:12px;font-weight:600;background:none;border:none;cursor:pointer}.actions button:hover{text-decoration:underline}.danger{color:var(--bad)!important}.status{font-family:var(--font-mono);font-size:11px;color:var(--muted);display:inline-flex;align-items:center;gap:6px}.status:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.status.live{color:var(--ok)}.status.bad{color:var(--bad)}.status.provisioning{color:var(--warn)}.status.archived{color:var(--muted)}.spinner{animation:spin .8s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.banner{margin:18px clamp(18px,4vw,40px) 0;padding:12px 14px;border:1px solid var(--ok-border);background:var(--ok-bg);border-radius:8px;display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:13px}.toast-container{position:fixed;top:18px;right:18px;z-index:100;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{pointer-events:auto;padding:12px 14px;border-radius:8px;border:1px solid var(--mist);background:var(--panel);font-size:13px;max-width:min(420px,calc(100vw - 36px));cursor:pointer;display:flex;align-items:center;gap:10px;animation:toast-in .2s ease-out;box-shadow:0 10px 30px #20231f18}.toast.ok{border-color:var(--ok-border);background:var(--ok-bg)}.toast.err{border-color:var(--bad-border);background:var(--bad-bg)}.toast-icon{flex-shrink:0}.toast.ok .toast-icon{color:var(--ok)}.toast.err .toast-icon{color:var(--bad)}.toast-close{margin-left:auto;padding:4px;color:var(--muted);font-size:16px;line-height:1;opacity:.6}.toast-close:hover{opacity:1}@keyframes toast-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:60px 20px;border:1px dashed var(--mist);border-radius:var(--radius);background:var(--panel)}.empty-state-icon{color:var(--muted);opacity:.45;margin-bottom:20px}.empty-state-title{margin:0 0 8px;font-family:var(--font-display);font-size:18px;letter-spacing:-.02em}.empty-state-desc{margin:0 0 24px;color:var(--muted);max-width:400px;line-height:1.5}.empty-state-action{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:60px 20px}.error-state-icon{width:48px;height:48px;display:grid;place-items:center;background:var(--bad-bg);border:1px solid var(--bad-border);border-radius:50%;color:var(--bad);margin-bottom:20px}.error-state h3{margin:0 0 8px}.error-state p{color:var(--muted);margin:0 0 20px}.error-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.pill{display:inline-block;margin-left:8px;padding:2px 7px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.02em;vertical-align:middle}.pill.current{background:var(--ok-bg);color:var(--ok);border:1px solid var(--ok-border)}.alert-card{border-radius:var(--radius);padding:20px;margin-bottom:20px}.alert-card.success{background:var(--ok-bg);border:1px solid var(--ok-border)}.alert-card h3{margin:0 0 6px;font-family:var(--font-display)}.alert-card p{margin:0 0 16px;color:var(--muted);font-size:13px}.secret-display{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--mist);border-radius:6px;padding:12px}.secret-display code{flex:1;word-break:break-all;color:var(--ink);font-size:13px;background:transparent;padding:0}.skeleton{display:inline-block;background:linear-gradient(90deg,var(--panel-2) 25%,var(--mist) 50%,var(--panel-2) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:4px}.skeleton-nav{pointer-events:none}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.empty-card{border:1px solid var(--mist);border-radius:var(--radius);padding:28px;background:var(--panel);max-width:560px}.empty-card h3{margin:0 0 8px;font-family:var(--font-display)}.empty-card p{color:var(--muted);margin:0 0 16px}.bullets{color:var(--muted);margin:0 0 18px;padding-left:18px}.bullets li{margin:6px 0}.stack-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.stack-list li,.kv-row,.file-row{display:grid;gap:8px;align-items:center;background:var(--panel);border:1px solid var(--mist);border-radius:6px;padding:10px}.stack-list li{grid-template-columns:1fr auto auto}.kv-row{grid-template-columns:1fr 1.4fr auto}.file-row{grid-template-columns:1fr}.file-row textarea{min-height:90px;resize:vertical}.subhead{display:flex;justify-content:space-between;align-items:center;margin:28px 0 12px}.subhead h2,.sub-title{margin:0;font-size:16px;font-family:var(--font-display);letter-spacing:-.02em}.sub-title{margin:28px 0 12px}.facts{margin:0;border:1px solid var(--mist);border-radius:var(--radius);background:var(--panel)}.facts>div{display:flex;justify-content:space-between;gap:16px;padding:14px 16px;border-bottom:1px solid var(--mist)}.facts>div:last-child{border-bottom:0}.facts dt{color:var(--muted)}.facts dd{margin:0;font-weight:600}.stat-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:8px}.stat-row article{background:var(--panel);border:1px solid var(--mist);border-radius:var(--radius);padding:16px}.stat-row span{display:block;color:var(--muted);font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px}.stat-row strong{font-size:22px;letter-spacing:-.03em;font-family:var(--font-display)}.modal-backdrop{position:fixed;inset:0;background:#20231f66;display:grid;place-items:center;padding:20px;z-index:30;animation:fade-in .15s}.modal{width:min(100%,420px);background:var(--panel);border:1px solid var(--mist);border-radius:12px;padding:24px;display:grid;gap:12px;animation:modal-in .2s ease-out}.modal h3{margin:0;font-family:var(--font-display)}.modal label{display:grid;gap:6px;font-size:12px;color:var(--muted);font-weight:600}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-in{0%{transform:scale(.97);opacity:0}to{transform:scale(1);opacity:1}}.ssh-cell{font-family:var(--font-mono);font-size:12px;color:var(--ink)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.skeleton{animation:none}}@media(max-width:860px){.shell{flex-direction:column}.sidebar{position:fixed;inset:60px auto 0 0;width:260px;transform:translate(-100%);transition:transform .2s;z-index:3}.sidebar.open{transform:translate(0)}.mobile-head{display:flex}.nav-scrim{display:block}.stat-row,.kv-row,.stack-list li{grid-template-columns:1fr}}@media(max-width:520px){.panel-head{flex-direction:column}.panel-head .btn{width:100%}.inline{flex-direction:column}.inline .btn{width:100%}.modal-actions{flex-direction:column}.modal-actions .btn{width:100%}.banner{flex-direction:column;align-items:stretch}}
