:root{--bg0: #0b1210;--bg1: #12201a;--bg2: #1a2e24;--line: #2a4538;--text: #e7f0ea;--muted: #8aa897;--accent: #39e05a;--accent-dim: #1f8a3a;--warn: #e6b84d;--crit: #e85d5d;--info: #5db7e8;--radius: 10px;--font: "IBM Plex Sans", system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--text);background:radial-gradient(1200px 600px at 10% -10%,#163528 0%,transparent 55%),radial-gradient(900px 500px at 100% 0%,#1a2830 0%,transparent 50%),linear-gradient(180deg,var(--bg0),#0e1612 40%,var(--bg0));min-height:100%}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,select{font:inherit}.shell{max-width:1100px;margin:0 auto;padding:1.25rem 1.25rem 3rem}.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.75rem}.brand{display:inline-flex;align-items:center;gap:.55rem;font-weight:700;letter-spacing:.02em;font-size:1.15rem;color:var(--text);text-decoration:none}.brand:hover{text-decoration:none}.brand-logo{display:block;width:auto;border-radius:4px}.brand-text{color:var(--accent);font-weight:600}.brand-lg{font-size:1.45rem;gap:.7rem;margin-bottom:.35rem}.brand span{color:var(--accent)}.nav{display:flex;gap:.85rem;flex-wrap:wrap;align-items:center}.nav a,.nav button.linkish{color:var(--muted);background:none;border:0;cursor:pointer;padding:0}.nav a:hover,.nav button.linkish:hover{color:var(--text)}.panel{background:color-mix(in srgb,var(--bg1) 88%,transparent);border:1px solid var(--line);border-radius:var(--radius);padding:1.1rem 1.2rem;margin-bottom:1rem}.grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}h1,h2,h3{margin:0 0 .6rem;font-weight:600}h1{font-size:1.6rem}h2{font-size:1.15rem}.muted{color:var(--muted)}.mono{font-family:var(--mono);font-size:.9rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border:1px solid var(--accent-dim);background:linear-gradient(180deg,#2a9a62,#1f7a4d);color:#fff;border-radius:8px;padding:.55rem .95rem;cursor:pointer;font-weight:600}.btn:hover{filter:brightness(1.08)}.btn.secondary{background:transparent;border-color:var(--line);color:var(--text)}.btn.danger{background:#8b2e2e;border-color:#a34444}.field{display:grid;gap:.35rem;margin-bottom:.85rem}.field label{color:var(--muted);font-size:.9rem}.field input,.field select{background:var(--bg0);border:1px solid var(--line);border-radius:8px;color:var(--text);padding:.6rem .75rem}.table{width:100%;border-collapse:collapse;font-size:.95rem}.table th,.table td{text-align:left;padding:.55rem .35rem;border-bottom:1px solid var(--line);vertical-align:top}.table th{color:var(--muted);font-weight:500}.badge{display:inline-block;border-radius:999px;padding:.15rem .55rem;font-size:.78rem;border:1px solid var(--line);color:var(--muted)}.badge.online,.badge.ok,.badge.active,.badge.trialing{color:var(--accent);border-color:var(--accent-dim)}.badge.paused,.badge.warning,.badge.past_due{color:var(--warn);border-color:#8a6a20}.badge.offline,.badge.critical,.badge.canceled,.badge.error,.badge.missing{color:var(--crit);border-color:#7a3030}.badge.stub,.badge.info{color:var(--info);border-color:#2a6078}.auth-wrap{min-height:100%;display:grid;place-items:center;padding:2rem 1rem}.auth-card{width:min(420px,100%)}.auth-card .brand{font-size:1.6rem;display:block;margin-bottom:.35rem}.error{background:#3a1a1a;border:1px solid #7a3030;color:#ffb4b4;padding:.65rem .8rem;border-radius:8px;margin-bottom:.85rem}.stack{display:grid;gap:.75rem}.row{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center}.install-cmd{background:#07110d;border:1px solid var(--line);border-radius:8px;padding:.75rem;overflow-x:auto;white-space:nowrap}
