*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font);font-size:16px;line-height:1.5;color:var(--c-text);background:var(--c-bg)}
a{color:var(--c-primary)}
header.top{background:var(--c-primary);color:var(--c-primary-ink);padding:.6rem 1rem;display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}
header.top a{color:var(--c-primary-ink);text-decoration:none}
header.top .app{font-weight:600}
header.top .branch{opacity:.85;font-size:.9rem}
header.top .spacer{flex:1}
header.top form{margin:0}
header.top button{background:transparent;color:var(--c-primary-ink);border:1px solid currentColor;padding:.3rem .7rem;font-size:.85rem}
main{max-width:1100px;margin:0 auto;padding:1rem}
main.narrow{max-width:440px;padding-top:2.5rem}
footer{max-width:1100px;margin:2rem auto 1rem;padding:0 1rem;color:var(--c-muted);font-size:.8rem}
h1{font-size:1.4rem;margin:.2rem 0 1rem}
h2{font-size:1.1rem;margin:1.5rem 0 .6rem}
.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:1rem;margin-bottom:1rem}
label{display:block;font-weight:500;margin:.7rem 0 .25rem}
input[type=text],input[type=email],input[type=number],select{width:100%;padding:.65rem .7rem;font-size:1rem;border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-surface);color:var(--c-text)}
input.code{font-size:1.4rem;letter-spacing:.3em;text-align:center}
button,.btn{display:inline-block;background:var(--c-primary);color:var(--c-primary-ink);border:0;border-radius:var(--radius);padding:.65rem 1.1rem;font-size:1rem;cursor:pointer;text-decoration:none}
button.secondary,.btn.secondary{background:transparent;color:var(--c-primary);border:1px solid var(--c-primary)}
button.danger{background:var(--c-error)}
button.full{width:100%;margin-top:1rem}
.muted{color:var(--c-muted);font-size:.9rem}
.errors{background:#fdecea;border:1px solid var(--c-error);color:var(--c-error);border-radius:var(--radius);padding:.6rem .9rem;margin-bottom:1rem}
.ok{background:#e8f5ec;border:1px solid var(--c-ok);color:var(--c-ok);border-radius:var(--radius);padding:.6rem .9rem;margin-bottom:1rem}
.boards{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem;padding:0;list-style:none}
.boards a{display:block;background:var(--c-surface);border:1px solid var(--c-border);border-left:4px solid var(--c-accent);border-radius:var(--radius);padding:1rem;text-decoration:none;color:var(--c-text);font-weight:600}
.boards small{display:block;font-weight:400;color:var(--c-muted)}
nav.admin{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:1rem}
nav.admin a{padding:.4rem .75rem;border-radius:var(--radius);background:var(--c-surface);border:1px solid var(--c-border);text-decoration:none;font-size:.9rem}
nav.admin a.on{background:var(--c-primary);color:var(--c-primary-ink);border-color:var(--c-primary)}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{border-collapse:collapse;width:100%;background:var(--c-surface)}
th,td{text-align:left;padding:.5rem .6rem;border-bottom:1px solid var(--c-border);vertical-align:top;font-size:.93rem}
th{font-weight:600;background:var(--c-bg)}
td.sub{padding-left:1.6rem}
tr.inactive td{color:var(--c-muted)}
.matrix select{min-width:7rem;padding:.35rem}
.check{display:flex;gap:.5rem;align-items:center;margin:.3rem 0;font-weight:400}
.check input{width:1.2rem;height:1.2rem}
.grid2{display:grid;grid-template-columns:1fr;gap:0 1rem}
@media (min-width:700px){.grid2{grid-template-columns:1fr 1fr}}
.rolebox{border:1px solid var(--c-border);border-radius:var(--radius);padding:.5rem .8rem;margin:.5rem 0}
.rolebox .sub{margin-left:1.4rem}
.qr{display:block;margin:1rem auto;max-width:240px;width:100%;background:#fff}
code,.mono{font-family:ui-monospace,Menlo,monospace;word-break:break-all}
ul.codes{columns:2;font-family:ui-monospace,Menlo,monospace;font-size:1.05rem}
.inline{display:inline}
.row{display:flex;gap:.5rem;align-items:end;flex-wrap:wrap}
.row>*{flex:1;min-width:140px}
.row>button{flex:0 0 auto}
