:root{--bg0: #f3f6f8;--bg1: #e7eef3;--ink: #15202b;--muted: #5b6b78;--line: #c9d4dd;--accent: #0b6e4f;--accent-ink: #ffffff;--danger: #9b2c2c;--ok: #1b5e3b;--panel: rgba(255, 255, 255, .86);--shadow: 0 18px 50px rgba(21, 32, 43, .08);--font: "IBM Plex Sans", "Segoe UI", sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;color:var(--ink);font-family:var(--font);background:radial-gradient(1200px 600px at 10% -10%,#d9ebe3 0%,transparent 55%),radial-gradient(900px 500px at 100% 0%,#d7e4f2 0%,transparent 50%),linear-gradient(180deg,var(--bg0),var(--bg1))}a{color:inherit;text-decoration:none}h1,h2{margin:0 0 .35rem;font-weight:600;letter-spacing:-.02em}.lede{margin:0;color:var(--muted);max-width:52rem}.eyebrow{margin:0 0 .35rem;text-transform:uppercase;letter-spacing:.14em;font-size:.75rem;color:var(--muted)}.shell{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:1.5rem;padding:.9rem 1.5rem;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffb3;position:sticky;top:0;z-index:10}.brand{display:flex;flex-direction:column;min-width:8rem}.brand-mark{font-weight:600;letter-spacing:.08em;font-size:1.05rem}.brand-sub{font-size:.8rem;color:var(--muted)}.nav{display:flex;gap:.75rem;flex:1}.nav a{padding:.4rem .7rem;border-radius:6px;color:var(--muted)}.nav a.active{color:var(--ink);background:#e8f3ee}.session{display:flex;align-items:center;gap:.75rem}.session-user{font-family:var(--mono);font-size:.85rem}.main{width:min(1200px,calc(100% - 2rem));margin:1.5rem auto 3rem}.stack{display:flex;flex-direction:column;gap:1rem}.page-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:1.1rem 1.2rem;box-shadow:var(--shadow)}.form,.grid{display:grid;gap:.85rem}.grid.filters,.form.grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.span-2{grid-column:1 / -1}label{display:flex;flex-direction:column;gap:.35rem;font-size:.9rem}label.checkbox{flex-direction:row;align-items:center;gap:.55rem}input,select,textarea{font:inherit;border:1px solid var(--line);border-radius:8px;padding:.55rem .7rem;background:#fff;color:var(--ink)}textarea{resize:vertical;font-family:var(--mono);font-size:.85rem}.btn{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:8px;padding:.55rem .9rem;font:inherit;cursor:pointer}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.ghost{background:transparent}.btn.danger{color:var(--danger);border-color:#e2b4b4}.btn:disabled{opacity:.6;cursor:not-allowed}.actions{display:flex;gap:.6rem;align-items:end}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:.65rem .45rem;border-bottom:1px solid var(--line);vertical-align:top}.mono{font-family:var(--mono);font-size:.84rem}.muted{color:var(--muted)}.error{color:var(--danger)}.ok{color:var(--ok)}.banner{margin:0;padding:.75rem 1rem;border-radius:8px;background:#fff;border:1px solid var(--line)}.row-actions{white-space:nowrap}.code-block{margin:1rem 0 0;padding:.9rem;background:#0f1a22;color:#d7e6ef;border-radius:8px;overflow:auto;font-family:var(--mono);font-size:.82rem}.login-page{min-height:100vh;display:grid;place-items:center;padding:1.5rem;background:linear-gradient(135deg,rgba(11,110,79,.12),transparent 40%),radial-gradient(800px 400px at 80% 20%,#cfe0f0,transparent 60%),var(--bg0)}.login-panel{width:min(420px,100%);padding:2rem 1.75rem;background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.login-brand{font-size:clamp(2.4rem,6vw,3.2rem);letter-spacing:.06em;margin-bottom:.4rem}.page-center{min-height:100vh;display:grid;place-items:center;color:var(--muted)}.version-hero .version-number{font-size:clamp(2.5rem,6vw,4rem);margin:.2rem 0 .6rem;font-family:var(--mono);letter-spacing:-.04em}@media(max-width:720px){.topbar{flex-wrap:wrap}.page-head{flex-direction:column}}
