/* Login, admin and editor pages – built on the tokens from game.css */
.wrap.narrow{max-width:560px;padding-block:12vh 56px}
.wrap.wide{max-width:1000px}
.ticket.single{grid-template-columns:1fr}
a.btn,a.ghost{text-decoration:none;display:inline-flex;align-items:center}
a.ghost{color:var(--ink)}
.form{display:flex;flex-direction:column;gap:8px}
.form label{font:600 12px/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.form input[type=password],.form input[type=file],.form textarea{font:inherit;color:var(--ink);background:var(--glass-hi);border:1px solid var(--line);border-radius:14px;padding:12px 14px;box-shadow:inset 0 1px 0 var(--edge)}
.form textarea{font:13px/1.45 var(--mono);min-height:50vh;resize:vertical;width:100%}
.form input:focus-visible,.form textarea:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.error{color:var(--bad);font-weight:600}
.errors{border:1px solid var(--bad);background:color-mix(in srgb,var(--bad) 12%,transparent);border-radius:16px;padding:14px 16px;color:var(--ink)}
.errors ul{margin:8px 0 0;padding-left:20px}
.flash{padding:12px 16px;border-radius:16px;background:color-mix(in srgb,var(--ok) 16%,var(--glass-hi));border:1px solid var(--ok)}
.confirm{position:relative}
.confirm summary{list-style:none;cursor:pointer}
.confirm summary::-webkit-details-marker{display:none}
.confirm[open] form{display:flex;flex-direction:column;gap:8px;margin-top:8px;padding:12px;border-radius:14px;background:var(--glass-hi);border:1px solid var(--line);max-width:280px}
code{font:500 12px var(--mono)}
form{margin:0}
