/* mapa.edu · sign-in, invitation, admin — built on the tokens in mapa.css */

/* hide content until the session guard has decided what this user may see */
body.booting main, body.booting .mainnav { visibility: hidden; }

.topbar .tb-right { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
a.brandlink { color: inherit; text-decoration: none; }

/* user bar in the black top bar */
.userbar { display: flex; align-items: center; gap: 0; }
.userbar .ub-who { display: flex; flex-direction: column; line-height: 1.15; margin-right: 12px; text-align: right; }
.userbar .ub-who b { font-size: 13px; }
.userbar .ub-who small { font-size: 10px; opacity: .7; text-transform: uppercase; letter-spacing: 1px; }
.userbar .ub-btn {
  background: transparent; color: #fff; border: 2px solid #fff; border-right: none;
  padding: 6px 14px; font-family: inherit; font-weight: 700; cursor: pointer;
  font-size: 13px; text-transform: uppercase; letter-spacing: .4px; text-decoration: none; line-height: 1.5;
}
.userbar .ub-btn:last-child { border-right: 2px solid #fff; }
.userbar .ub-btn:hover { background: #fff; color: var(--ink); }
@media (max-width: 760px) { .userbar .ub-who { display: none; } }

/* sign-in / invitation card */
.authwrap { max-width: 460px; margin: 24px auto 0; }
.authwrap .card { padding: 30px; }
.authwrap h1 { font-size: 2rem; }
.authwrap form { display: flex; flex-direction: column; gap: 16px; }
.authwrap .actions { margin-top: 8px; }
.authwrap .btn { width: 100%; }
.authsmall { font-size: 13px; color: var(--muted); margin: 0; }
.authmsg { border: 2px solid var(--ink); padding: 10px 14px; font-size: 14px; font-weight: 700; margin: 0 0 16px; }
.authmsg.err { border-color: var(--low); color: var(--low); background: #FFF4F2; }
.authmsg.ok  { border-color: var(--good); color: var(--good); background: #F1FBF6; }
.authmsg[hidden] { display: none; }
.codeinput { font-size: 26px; letter-spacing: 8px; text-align: center; font-weight: 800; }
.qrbox { display: flex; flex-direction: column; align-items: center; gap: 10px; border: 2px dashed var(--ink); background: var(--gray); padding: 16px; }
.qrbox img { width: 190px; height: 190px; background: #fff; border: 2px solid var(--ink); }
.qrbox code { font-size: 13px; font-weight: 700; word-break: break-all; text-align: center; }
.readonly { padding: 12px 13px; border: 2px dashed var(--ink); background: var(--gray); font-weight: 700; }

/* admin */
.adm-section { margin-top: 26px; }
.adm-section > h2 { font-size: 1.3rem; margin: 0 0 12px; text-transform: uppercase; letter-spacing: .3px; }
.adm-section .card { padding: 20px; }
.inlineform { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; }
.inlineform .field { flex: 1; min-width: 180px; }
.inlineform .btn { padding: 12px 20px; }
.ttab td .btn, .ttab td select { padding: 6px 10px; font-size: 12px; }
.ttab td .btn { letter-spacing: .3px; }
.ttab tr.pick { cursor: pointer; }
.ttab tr.pick:hover { background: var(--gray); }
.ttab tr.sel { background: #EEF1FF; }
.pill { display: inline-block; font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .4px; padding: 3px 9px; border: 2px solid var(--ink); }
.pill.ok   { border-color: var(--good); color: var(--good); }
.pill.warn { border-color: var(--mid);  color: #8a6800; }
.pill.bad  { border-color: var(--low);  color: var(--low); }
.pill.mute { border-color: var(--grid); color: var(--muted); }
.flash { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); z-index: 60; min-width: 260px; max-width: 90vw; text-align: center; }
.tablewrap { overflow-x: auto; }
