:root{--bg: #f7f8fa;--surface: #ffffff;--text: #1a1f26;--muted: #5b6470;--border: #d9dee5;--border-strong: #b9c1cb;--accent: #0a5fa8;--accent-text: #ffffff;--xero: #13b5ea;--danger: #b42318;--danger-bg: #fdecea;--ok: #1f7a3a;--ok-bg: #e6f4ea;--warn: #8a5a00;--warn-bg: #fff4d6;--info-bg: #e8f1fb;--code-bg: #0f1419;--code-text: #e6e9ee;--focus: #0a5fa8;--radius: 8px;--shadow: 0 1px 2px rgba(16, 24, 40, .06)}@media(prefers-color-scheme:dark){:root{--bg: #121519;--surface: #1b2027;--text: #e7eaee;--muted: #9aa4b1;--border: #2b323c;--border-strong: #3d4653;--accent: #6cb4f0;--accent-text: #0b1620;--danger: #f28b82;--danger-bg: #3a1f1d;--ok: #7fd49a;--ok-bg: #1d3325;--warn: #f0c36d;--warn-bg: #3a2e12;--info-bg: #1c2a3a;--code-bg: #0b0e12;--code-text: #d6dbe2;--focus: #6cb4f0;--shadow: none}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}h1,h2,h3{line-height:1.25;margin:0 0 .5rem;font-weight:600}h1{font-size:1.5rem}h2{font-size:1.15rem}h3{font-size:1rem}p{margin:0 0 .75rem}a{color:var(--accent)}code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.site-header{background:var(--surface);border-bottom:1px solid var(--border)}.site-header .inner{max-width:960px;margin:0 auto;padding:.75rem 1.25rem;display:flex;align-items:center;gap:1rem}.brand{font-weight:700;text-decoration:none;color:var(--text)}.brand-dot{display:inline-block;width:.65em;height:.65em;border-radius:50%;background:var(--xero);margin-right:.45em}.site-header .spacer{flex:1}.site-header .who{color:var(--muted);font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:40ch}main{max-width:960px;margin:0 auto;padding:1.5rem 1.25rem 4rem}.narrow{max-width:560px}.centered{max-width:480px;margin:4rem auto;text-align:center}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap}.page-head h1{margin:0}.subtle{color:var(--muted)}.small{font-size:.875rem}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;box-shadow:var(--shadow)}.card+.card{margin-top:1rem}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}.app-list{list-style:none;padding:0;margin:0}.app-list li{display:flex}.app-card{flex:1;display:flex;flex-direction:column;gap:.35rem;text-decoration:none;color:inherit}.app-card:hover,.app-card:focus-visible{border-color:var(--border-strong)}.app-card .name{font-weight:600;font-size:1.05rem}.app-card .meta{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.app-card .host{color:var(--muted);font-size:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty{text-align:center;padding:3rem 1.5rem}.empty p{max-width:48ch;margin:0 auto .75rem}.pill,.badge{display:inline-block;padding:.1rem .55rem;border-radius:999px;font-size:.78rem;font-weight:600;line-height:1.5;white-space:nowrap}.badge{background:var(--info-bg);color:var(--accent)}.pill{border:1px solid transparent}.pill-active,.pill-live{background:var(--ok-bg);color:var(--ok)}.pill-provisioning,.pill-building,.pill-releasing,.pill-uploaded,.pill-deleting{background:var(--warn-bg);color:var(--warn)}.pill-stopped{background:var(--bg);color:var(--muted);border-color:var(--border)}.pill-failed{background:var(--danger-bg);color:var(--danger)}.btn{appearance:none;display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .9rem;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font:inherit;font-weight:500;cursor:pointer;text-decoration:none;line-height:1.3}.btn:hover{border-color:var(--text)}.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn-primary:hover{filter:brightness(1.08);border-color:var(--accent)}.btn-danger{color:var(--danger);border-color:var(--danger)}.btn-danger.btn-solid{background:var(--danger);color:#fff}.btn-sm{padding:.3rem .65rem;font-size:.875rem}.btn-link{border:none;background:none;color:var(--accent);padding:0;text-decoration:underline;font-weight:400}.btn-xero{background:var(--xero);border-color:var(--xero);color:#fff;font-weight:600;font-size:1rem;padding:.7rem 1.4rem}.btn-xero:hover{background:#0fa0d0;border-color:#0fa0d0}.btn-row{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}.field{margin-bottom:1rem}.field label,.field .label{display:block;font-weight:600;margin-bottom:.3rem}.field .hint{color:var(--muted);font-size:.875rem;margin:.3rem 0 0}.field .error-text{color:var(--danger);font-size:.875rem;margin:.3rem 0 0}input[type=text],input[type=email],input[type=search],textarea,select{width:100%;font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);padding:.5rem .65rem}input[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--danger)}textarea{min-height:5.5rem;resize:vertical}select{width:auto}fieldset{border:none;padding:0;margin:0 0 1rem}legend{font-weight:600;margin-bottom:.3rem;padding:0}.radio{display:grid;grid-template-columns:auto 1fr;gap:.25rem .6rem;align-items:start;padding:.75rem;border:1px solid var(--border);border-radius:var(--radius);margin-bottom:.5rem;cursor:pointer}.radio:has(input:checked){border-color:var(--accent);background:var(--info-bg)}.radio input{margin-top:.3rem}.radio .title{font-weight:600}.radio .desc{grid-column:2;color:var(--muted);font-size:.875rem}.notice{padding:.7rem .9rem;border-radius:var(--radius);border:1px solid transparent;margin:0 0 1rem}.notice-error{background:var(--danger-bg);color:var(--danger)}.notice-info{background:var(--info-bg);color:var(--text)}.notice-warn{background:var(--warn-bg);color:var(--warn)}.notice-ok{background:var(--ok-bg);color:var(--ok)}.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--border);margin-bottom:1.25rem;overflow-x:auto}.tabs a{padding:.55rem .9rem;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}.tabs a:hover{color:var(--text)}.tabs a[aria-current=page]{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.kv{display:grid;grid-template-columns:max-content 1fr;gap:.4rem 1.25rem;margin:0 0 1rem}.kv dt{color:var(--muted)}.kv dd{margin:0;word-break:break-word}.rows{list-style:none;padding:0;margin:0}.rows li{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.6rem 0;border-top:1px solid var(--border);flex-wrap:wrap}.rows li:first-child{border-top:none}.rows .primary{font-weight:500;word-break:break-all}.rows .secondary{color:var(--muted);font-size:.875rem}.log{background:var(--code-bg);color:var(--code-text);padding:.85rem 1rem;border-radius:var(--radius);max-height:420px;overflow:auto;white-space:pre-wrap;word-break:break-word;margin:0 0 1rem;font-size:.82rem;line-height:1.45}.log:empty:before{content:"Nothing yet.";color:#8b95a3}.dropzone{border:2px dashed var(--border-strong);border-radius:var(--radius);padding:2rem 1.5rem;text-align:center;background:var(--surface);margin:0 0 1rem}.dropzone.over{border-color:var(--accent);background:var(--info-bg)}.dropzone .btn{margin-top:.5rem}.env-row{display:grid;grid-template-columns:1fr 1.5fr auto;gap:.6rem;margin-bottom:.6rem;align-items:start}@media(max-width:600px){.env-row{grid-template-columns:1fr}}.confirm{border:1px solid var(--danger);border-radius:var(--radius);padding:.9rem 1rem;margin:1rem 0 0;background:var(--danger-bg);color:var(--text)}.confirm p{margin-bottom:.7rem}.steps{list-style:none;padding:0;margin:0 0 1rem;display:flex;gap:1rem;flex-wrap:wrap}.steps li{color:var(--muted)}.steps li[data-state=active]{color:var(--text);font-weight:600}.steps li[data-state=done]{color:var(--ok)}.steps li[data-state=failed]{color:var(--danger)}
