/* Login, waiting and admin screens only. Scoped so it cannot touch the main site. */
.gate,body.admin{--g-bg:var(--ds-bg);--g-card:var(--ds-raised);--g-ink:var(--ds-ink);--g-mute:var(--ds-muted);--g-brand:var(--ds-accent);--g-link:var(--ds-accent-text);--g-line:var(--ds-line-soft);--g-ctl:var(--ds-line);--g-bad:var(--ds-port-text);--g-warn:var(--ds-coral-text);--g-ok:var(--ds-cyan)}
.gate{min-height:100vh;display:grid;place-items:center;padding:16px;background:var(--g-bg);color:var(--g-ink);font:16px/1.5 var(--font-text)}
.gate[hidden],.view[hidden]{display:none}
body.admin{margin:0;min-height:100vh;display:grid;place-items:start center;padding:16px;background:var(--g-bg);color:var(--g-ink);font:16px/1.5 var(--font-text)}
:is(.gate,body.admin) main{width:100%;max-width:420px;background:var(--g-card);border:1px solid var(--g-line);border-radius:0;padding:28px}
body.admin main.wide{max-width:1000px}
:is(.gate,body.admin) h1{font:400 1.15rem/1.35 var(--font-headline);letter-spacing:.04em;text-transform:uppercase;margin:0 0 6px}
:is(.gate,body.admin) p{color:var(--g-mute);margin:.4rem 0 1rem}
:is(.gate,body.admin) .logo{margin-bottom:14px;font:400 1.15rem/1 var(--font-headline);letter-spacing:.06em;text-transform:uppercase;color:var(--g-ink)}
:is(.gate,body.admin) .logo::before{content:"Stella"}
:is(.gate,body.admin) .logo::after{content:"17";color:var(--g-link)}
:is(.gate,body.admin) button{display:block;width:100%;padding:12px 14px;margin:8px 0;border:1px solid var(--g-ctl);border-radius:0;background:var(--g-card);color:var(--g-ink);font:400 12px/1.3 var(--font-mono);letter-spacing:2px;text-transform:uppercase;cursor:pointer}
:is(.gate,body.admin) button:hover{border-color:var(--g-link)}
:is(.gate,body.admin) .err{color:var(--g-bad);font-weight:600}
body.admin table{width:100%;border-collapse:collapse;font-size:.9rem}
body.admin th,body.admin td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--g-line)}
body.admin td button{display:inline-block;width:auto;margin:2px;padding:5px 10px;font-size:.82rem}
body.admin button.primary{background:var(--g-brand);border-color:var(--g-brand);color:var(--ds-on-accent)}
.role{font-family:var(--font-mono);font-weight:400;text-transform:uppercase;font-size:.72rem;letter-spacing:.04em}
.role.pending{color:var(--g-warn)}.role.viewer{color:var(--g-ok)}.role.admin{color:var(--g-link)}
.tablewrap{overflow-x:auto}
body.admin a,body.doc a{color:var(--g-link)}
.acct{display:flex;gap:12px;align-items:center;font-size:.85rem}
.acct a{color:inherit}
body.doc main{max-width:720px}
body.doc h2{font:italic 700 1.5rem/1.1 var(--font-display);text-transform:uppercase;margin:1.6rem 0 .2rem}
body.doc p,body.doc li{color:var(--g-ink)}
body.doc ul{padding-left:1.2rem;margin:.4rem 0 1rem}
body.doc li{margin:.35rem 0}
.gate .foot{margin:1.2rem 0 0;font-size:.85rem}
.gate .foot a{color:var(--g-mute)}
