/* Rosterhouse — theme + components, reproduced from the build mockup. */
body{
  --bg:#10131A; --card:#1A1F29; --card2:#222834; --ink:#E7ECF4; --ink-soft:#AEB9CB;
  --rule:rgba(231,236,244,0.13); --rule-soft:rgba(231,236,244,0.06); --pattern:rgba(231,236,244,0.02);
  --accent:#4C8DF0; --accent-2:#86B4F5; --accent-soft:rgba(76,141,240,0.16);
  --good:#3FB8A0; --good-soft:rgba(63,184,160,0.16);
  --info:#7E93AE; --info-soft:rgba(126,147,174,0.16);
  --warm:#C9A24B; --warm-soft:rgba(201,162,75,0.16);
  --bad:#E0746B; --bad-soft:rgba(224,116,107,0.16);
}
body.light{
  --bg:#F2F5FB; --card:#FFFFFF; --card2:#EAF0F9; --ink:#1B2330; --ink-soft:#4A5A6E;
  --rule:rgba(27,35,48,0.14); --rule-soft:rgba(27,35,48,0.06); --pattern:rgba(27,35,48,0.018);
  --accent:#2C6FE0; --accent-2:#1A4FB0; --accent-soft:rgba(44,111,224,0.10);
  --good:#17897A; --good-soft:rgba(23,137,122,0.12);
  --info:#56708E; --info-soft:rgba(86,112,142,0.12);
  --warm:#9A7320; --warm-soft:rgba(154,115,32,0.12);
  --bad:#C0453B; --bad-soft:rgba(192,69,59,0.12);
}
:root{
  --disp:"Oswald",Impact,sans-serif; --body:"Barlow",-apple-system,sans-serif; --mono:"JetBrains Mono",ui-monospace,monospace;
  --hero:var(--disp); /* decorative font for big headings; themes override this only */
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.6;font-weight:400;
  background-image:repeating-linear-gradient(135deg,var(--pattern) 0 2px,transparent 2px 10px);transition:background .2s,color .2s}
a{color:var(--accent-2);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3,h4{font-family:var(--hero);font-weight:600;line-height:1.1;margin:0;text-transform:uppercase;letter-spacing:.01em}
p{margin:0 0 1rem}
.muted{color:var(--ink-soft)} .small{font-size:14px}
.mono{font-family:var(--mono)}

/* ---- App shell ---- */
.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:18px;padding:12px 22px;
  background:var(--card);border-bottom:1px solid var(--rule);flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--disp);font-weight:700;text-transform:uppercase;font-size:18px}
.brand .mark{width:32px;height:32px;border-radius:9px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700}
.nav{display:flex;gap:4px;flex-wrap:wrap;flex:1}
.nav a{font-family:var(--disp);text-transform:uppercase;font-size:14px;letter-spacing:.03em;color:var(--ink-soft);padding:7px 12px;border-radius:7px}
.nav a:hover{background:var(--card2);text-decoration:none}
.nav a.active{background:var(--accent-soft);color:var(--accent-2)}
.userbox{display:flex;align-items:center;gap:10px;font-size:13px}
.themetoggle button{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;background:var(--card2);border:1px solid var(--rule);color:var(--ink);padding:6px 12px;border-radius:30px;cursor:pointer}
.themetoggle button:hover{border-color:var(--accent)}
.container{max-width:1000px;margin:0 auto;padding:26px 22px 70px}
.pagehead{display:flex;align-items:baseline;gap:14px;margin-bottom:20px;flex-wrap:wrap}
.pagehead h2{font-size:clamp(1.5rem,4vw,2.1rem);font-weight:700}
.pagehead .sub{font-size:13.5px;color:var(--ink-soft)}
.btnlink{display:inline-block;font-family:var(--disp);text-transform:uppercase;font-size:13px;font-weight:600;letter-spacing:.03em;
  padding:8px 16px;border-radius:7px;border:1px solid var(--rule);background:var(--card2);color:var(--ink);cursor:pointer}
.btnlink.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.btnlink.danger{background:var(--bad-soft);color:var(--bad);border-color:var(--bad)}
/* .btn — themed action button used across newer pages (was previously undefined → rendered white) */
.btn{display:inline-flex;align-items:center;gap:6px;font-family:var(--disp);text-transform:uppercase;font-size:13px;font-weight:600;letter-spacing:.03em;
  padding:9px 16px;border-radius:7px;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;text-decoration:none}
.btn:hover{filter:brightness(1.08);text-decoration:none}
.btn.ghost{background:var(--card2);color:var(--ink);border-color:var(--rule)}
.btn.ghost:hover{border-color:var(--accent);color:var(--accent-2)}
.btn.danger{background:var(--bad-soft);color:var(--bad);border-color:var(--bad)}
.flash{border-left:3px solid var(--good);background:var(--card);padding:12px 16px;border-radius:0 8px 8px 0;margin-bottom:18px;font-size:14px}
.flash.err{border-left-color:var(--bad);color:var(--bad)}
.card{background:var(--card);border:1px solid var(--rule);border-radius:14px;padding:22px;margin-bottom:18px}

/* ---- Tables / pills ---- */
.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;margin:8px 0 18px;font-size:14.5px}
thead th{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);text-align:left;padding:0 12px 9px;border-bottom:1.5px solid var(--accent);font-weight:500;vertical-align:bottom}
tbody td{padding:11px 12px;border-bottom:1px solid var(--rule-soft);vertical-align:top}
tbody tr:nth-child(even){background:var(--pattern)}
td code,.codei{font-family:var(--mono);font-size:12.5px;background:var(--accent-soft);padding:1px 5px;border-radius:3px;color:var(--accent-2)}
.pill{display:inline-block;font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;padding:3px 9px;border-radius:20px;white-space:nowrap;font-weight:500}
.p-active{background:var(--good-soft);color:var(--good)}
.p-pending{background:var(--accent-soft);color:var(--accent-2)}
.p-retired{background:var(--info-soft);color:var(--info)}
.p-removed,.p-banned{background:var(--warm-soft);color:var(--warm)}
.p-deceased{background:var(--rule-soft);color:var(--ink-soft)}
.p-dec{background:var(--accent);color:#fff}

/* ---- Login / MFA ---- */
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:640px){.two-col{grid-template-columns:1fr}}
.authwrap{min-height:80vh;display:flex;align-items:center;justify-content:center;padding:24px}
.lg-card{background:var(--card2);border:1px solid var(--rule);border-radius:12px;padding:26px;max-width:340px;width:100%;margin:0 auto}
.lg-mark{width:46px;height:46px;border-radius:12px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-weight:700;margin:0 auto 14px;font-size:18px}
.lg-h{font-family:var(--disp);font-size:22px;font-weight:600;text-align:center;margin:0 0 4px;text-transform:uppercase}
.lg-sub{font-size:12.5px;color:var(--ink-soft);text-align:center;margin:0 0 18px;line-height:1.5}
.lg-l{font-size:11px;color:var(--ink-soft);display:block;margin-bottom:4px;text-transform:uppercase;letter-spacing:.04em}
.lg-in{width:100%;border:1px solid var(--rule);border-radius:7px;padding:9px 11px;background:var(--card);font-family:var(--body);font-size:14px;margin-bottom:13px;color:var(--ink)}
.lg-btn{width:100%;border:none;background:var(--accent);color:#fff;padding:11px;border-radius:7px;font-family:var(--disp);font-size:15px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;cursor:pointer}
.lg-or{display:flex;align-items:center;gap:9px;margin:14px 0;color:var(--ink-soft);font-size:11px}
.lg-or::before,.lg-or::after{content:"";flex:1;height:1px;background:var(--rule)}
.lg-g{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;background:var(--card);border:1px solid var(--rule);padding:10px;border-radius:7px;font-size:13px;color:var(--ink-soft);cursor:not-allowed;opacity:.65}
.lg-g b{font-family:var(--disp);color:var(--accent-2)}
.totp-in{width:100%;text-align:center;letter-spacing:.5em;font-family:var(--mono);font-size:22px;border:1px solid var(--rule);border-radius:8px;padding:12px;background:var(--card);color:var(--ink);margin-bottom:14px}
.qrbox{background:#fff;border-radius:10px;padding:14px;display:flex;align-items:center;justify-content:center;margin:0 auto 14px;width:fit-content}
.secretline{font-family:var(--mono);font-size:12px;word-break:break-all;background:var(--card);border:1px solid var(--rule);border-radius:6px;padding:8px;color:var(--ink-soft);text-align:center}

/* ---- Dashboard ---- */
.dash{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media(max-width:560px){.dash{grid-template-columns:1fr}}
.dtile{background:var(--card2);border:1px solid var(--rule);border-radius:12px;padding:16px;text-align:center;color:var(--ink)}
.dtile:hover{border-color:var(--accent);text-decoration:none}
.dtile .di{font-family:var(--hero);font-size:15px;font-weight:600;text-transform:uppercase;margin-top:8px}
.dtile .dd{font-size:11.5px;color:var(--ink-soft);margin-top:2px}
.dico{width:38px;height:38px;border-radius:10px;background:var(--accent-soft);color:var(--accent-2);display:flex;align-items:center;justify-content:center;margin:0 auto;font-family:var(--disp);font-weight:700}
.note{border-left:3px solid var(--accent);background:var(--card);padding:14px 18px;border-radius:0 8px 8px 0;margin:18px 0;font-size:14px}

/* ---- Org chart / chapter ---- */
.crumb{font-family:var(--mono);font-size:12px;color:var(--ink-soft);margin-bottom:14px}
.crumb b{color:var(--accent-2)} .crumb a{color:var(--ink-soft)}
.band{background:var(--card2);border:1px solid var(--rule);border-radius:10px;padding:12px 14px;margin-bottom:12px}
.band .bl{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px}
.off{display:flex;align-items:center;gap:10px} .off + .off{margin-top:10px}
.av{width:32px;height:32px;border-radius:50%;background:var(--accent-soft);color:var(--accent-2);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;font-family:var(--mono);flex-shrink:0}
.off .n{font-size:13.5px;font-weight:500} .off .r{font-size:11.5px;color:var(--ink-soft)}
.cards3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
@media(max-width:560px){.cards3{grid-template-columns:1fr}}
.ccard{background:var(--card2);border:1px solid var(--rule);border-radius:10px;padding:12px 13px;color:var(--ink)}
.ccard:hover{border-color:var(--accent);text-decoration:none}
.ccard .cn{font-size:14px;font-weight:500;display:flex;align-items:center;gap:6px}
.ccard .cs{font-size:11.5px;color:var(--ink-soft);margin-top:4px}
.dot{width:7px;height:7px;border-radius:50%;display:inline-block}
.tabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}
.tab{font-size:13px;padding:6px 14px;border-radius:20px;border:1px solid var(--rule);background:var(--card2);color:var(--ink-soft)}
.tab.on{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:500}
.chead{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:10px;margin-bottom:6px}
.chead .cnm{font-family:var(--disp);font-size:22px;font-weight:600;text-transform:uppercase}
.chead .cad{font-size:12.5px;color:var(--ink-soft)}

/* ---- Member contact ---- */
.crec{width:100%;font-size:14px;border-collapse:collapse}
.crec td{padding:10px 0;border-bottom:1px solid var(--rule-soft)}
.crec tr:last-child td{border-bottom:none}
.crec td:first-child{color:var(--ink-soft);width:38%;font-weight:400}
.crec td:last-child{text-align:right;font-weight:500}
.crec td .lk{font-family:var(--mono);font-size:10px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.05em}
.hiddenval{color:var(--ink-soft);font-style:italic;font-weight:400}

/* ---- Profile edit / privacy ---- */
.pform{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:600px){.pform{grid-template-columns:1fr}}
.pform .full{grid-column:1 / -1}
.pfield label{font-size:13px;font-weight:600;color:var(--ink);display:block;margin-bottom:6px;text-transform:uppercase;letter-spacing:.03em}
.pfield input,.pfield textarea,.pfield select{width:100%;border:1px solid var(--rule);border-radius:7px;padding:11px 12px;background:var(--card2);font-family:var(--body);font-size:16px;color:var(--ink)}
.pfield input:disabled{color:var(--ink-soft);opacity:.7}
.photo-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.photo{width:64px;height:64px;border-radius:14px;background:var(--accent-soft);color:var(--accent-2);display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-weight:700;font-size:22px;flex-shrink:0;object-fit:cover}
.pbtns{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
.prow{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--rule-soft);gap:10px}
.prow:last-child{border-bottom:none}
.prow .pf{font-size:14px;font-weight:500} .prow .pd{font-size:12px;color:var(--ink-soft)}
.tag-off{font-family:var(--mono);font-size:10px;color:var(--ink-soft);margin-right:10px;letter-spacing:.05em}
.switch{position:relative;display:inline-block;width:40px;height:22px;flex-shrink:0}
.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;cursor:pointer;inset:0;background:var(--rule);border-radius:11px;transition:.2s}
.slider::before{content:"";position:absolute;height:16px;width:16px;left:3px;top:3px;background:var(--ink-soft);border-radius:50%;transition:.2s}
.switch input:checked + .slider{background:var(--accent)}
.switch input:checked + .slider::before{transform:translateX(18px);background:#fff}

/* ---- Search / directory ---- */
.search{display:flex;align-items:center;gap:8px;border:1px solid var(--rule);border-radius:9px;padding:9px 12px;background:var(--card2);margin-bottom:14px}
.search input{border:none;background:transparent;color:var(--ink);font-family:var(--body);font-size:14px;flex:1;outline:none}
.sres{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--rule-soft)}
.sres:last-child{border-bottom:none}
.qtag{font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;padding:2px 7px;border-radius:4px}
.t-add{background:var(--good-soft);color:var(--good)}
.t-rem{background:var(--warm-soft);color:var(--warm)}
.t-awd{background:var(--accent-soft);color:var(--accent-2)}
.t-edit,.t-status{background:var(--rule-soft);color:var(--ink-soft)}

/* ---- Approvals ---- */
.qrow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1px solid var(--rule-soft)}
.qrow:last-child{border-bottom:none}
.qmeta{min-width:0}
.qmeta .qf{font-weight:500;font-size:13.5px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.qmeta .qd{font-size:12px;color:var(--ink-soft)}
.qmeta .qv{font-family:var(--mono);font-size:11.5px;margin-top:3px}
.qmeta .qv s{color:var(--ink-soft);margin-right:7px} .qmeta .qv b{color:var(--good)}
.qbtns{display:flex;gap:7px;flex-shrink:0;align-items:center}
.qbtn{font-family:var(--body);font-size:12px;padding:6px 13px;border-radius:6px;border:1px solid var(--rule);background:var(--card);cursor:pointer;color:var(--ink)}
.qbtn.ok{background:var(--good);color:#fff;border-color:var(--good)}
.qbtn.no{color:var(--warm);border-color:var(--warm);background:var(--warm-soft)}
.reasonin{border:1px solid var(--rule);border-radius:6px;padding:6px 9px;background:var(--card2);color:var(--ink);font-size:12px;font-family:var(--body)}

/* ---- Audit log ---- */
.log{display:flex;flex-direction:column}
.lrow{display:flex;gap:12px;padding:11px 0;border-bottom:1px solid var(--rule-soft)}
.lrow:last-child{border-bottom:none}
.lrow .lav{width:28px;height:28px;border-radius:50%;background:var(--accent-soft);color:var(--accent-2);display:flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:600;font-family:var(--mono);flex-shrink:0}
.lrow .lav.sys{background:var(--rule-soft);color:var(--ink-soft)}
.lbody{font-size:13.5px;flex:1;min-width:0} .lbody b{font-weight:600}
.ltime{font-family:var(--mono);font-size:11px;color:var(--ink-soft);white-space:nowrap}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.chip{font-size:12px;background:var(--card2);border:1px solid var(--rule);border-radius:16px;padding:3px 11px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:760px){.grid2{grid-template-columns:1fr}}

/* ---- Accordion (org chart) ---- */
.acc{border:1px solid var(--rule);border-radius:10px;margin-bottom:8px;background:var(--card2);overflow:hidden}
.acc>summary{cursor:pointer;padding:12px 14px;font-family:var(--hero);text-transform:uppercase;font-size:15px;letter-spacing:.02em;list-style:none;display:flex;align-items:center;gap:8px}
.acc>summary::-webkit-details-marker{display:none}
.acc>summary::before{content:'\25B8';color:var(--accent-2);font-size:12px}
.acc[open]>summary::before{content:'\25BE'}
.acc>summary:hover{color:var(--accent-2)}
.acc-body{padding:2px 14px 12px}
.acc-sub{background:var(--card);margin:6px 0}
.acc-sub>summary{font-size:13px}
.off .n a{color:var(--ink)} .off .n a:hover{color:var(--accent-2);text-decoration:none}

/* ---- Recognition: medallions, BOC, memorial ---- */
.badges{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
@media(max-width:560px){.badges{grid-template-columns:repeat(3,1fr)}}
.bcell{text-align:center}
.bcell .bn{font-size:12.5px;font-weight:500;margin-top:6px}
.bcell .bt{font-size:10.5px;color:var(--ink-soft)}
.boc-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
@media(max-width:560px){.boc-grid{grid-template-columns:1fr}}
.boc-cell{display:flex;align-items:center;gap:12px;background:var(--card2);border:1px solid var(--rule);border-radius:11px;padding:12px 14px}
.boc-cell .n a{color:var(--ink)} .boc-cell .n a:hover{color:var(--accent-2);text-decoration:none}
.boc-cell .r{font-size:11.5px;color:var(--ink-soft)}
.mem{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:560px){.mem{grid-template-columns:1fr}}
.mcard{background:var(--card2);border:1px solid var(--rule);border-radius:11px;padding:14px 15px}
.mtop{display:flex;align-items:center;gap:11px;margin-bottom:10px}
.mn{font-size:14px;font-weight:500} .mh{font-size:11.5px;color:var(--ink-soft)}
.myr{display:flex;justify-content:space-between;font-size:12.5px;padding:8px 0;border-top:1px solid var(--rule-soft);border-bottom:1px solid var(--rule-soft)}
.myr span:last-child{color:var(--ink-soft)}
.recrow{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start}
.recitem{text-align:center;width:64px}
.recitem .bn{font-size:11px;color:var(--ink-soft);margin-top:4px}
.mpatch{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.mpatch-chip{font-family:var(--mono);font-size:10px;background:var(--accent-soft);color:var(--accent-2);padding:2px 6px;border-radius:5px;font-weight:500}

/* ---- QR card ---- */
.qrcard{max-width:300px;margin:0 auto;background:var(--card2);border:1px solid var(--rule);color:var(--ink);border-radius:14px;padding:24px;text-align:center}
.qrcard .qrname{font-family:var(--disp);font-size:20px;font-weight:600;text-transform:uppercase}
.qrcard .qrsub{font-size:12px;color:var(--ink-soft);margin-bottom:16px}
.qrcard .qrbox{background:#fff;border-radius:10px;padding:10px;display:inline-block;line-height:0}
.qrcard .qrid{font-family:var(--mono);font-size:11px;color:var(--ink-soft);margin-top:14px;letter-spacing:.12em;word-break:break-all}

/* ---- Map ---- */
.map{position:relative;height:300px;background:var(--card2);border:1px solid var(--rule);border-radius:10px;overflow:hidden;background-image:linear-gradient(var(--rule-soft) 1px,transparent 1px),linear-gradient(90deg,var(--rule-soft) 1px,transparent 1px);background-size:34px 34px}
.pin{position:absolute;width:14px;height:14px;border-radius:50% 50% 50% 0;background:var(--accent);transform:rotate(-45deg);border:2px solid var(--card);cursor:pointer}
.pin:hover{background:var(--accent-2)}

/* ---- Messaging ---- */
.msg{display:flex;flex-direction:column;gap:9px;max-width:560px}
.bub{max-width:80%;padding:9px 13px;border-radius:14px;font-size:13.5px;line-height:1.45}
.bub.them{background:var(--card2);border:1px solid var(--rule);align-self:flex-start;border-bottom-left-radius:4px}
.bub.me{background:var(--accent);color:#fff;align-self:flex-end;border-bottom-right-radius:4px}
.bub .who{font-size:10.5px;color:var(--accent-2);margin-bottom:2px;font-weight:600}
.bub.me .who{color:rgba(255,255,255,.85)}

/* ---- Distinctive 31st nav item ---- */
.nav a.nav-31{border:1px solid var(--accent);color:var(--accent-2);border-radius:7px;font-weight:600}
.nav a.nav-31:hover{background:var(--accent);color:#fff}
.nav a.nav-31.active{background:var(--accent);color:#fff}

/* ===== Preconfigured themes — accent + a decorative HERO font for big titles
   only (nav, buttons, labels stay Oswald for readability). ===== */
.brand,.pagehead h2,.cover h1,.cnm,.chead .cnm,.lg-h,.qrname,.hero{font-family:var(--hero)}
/* Colour themes set the accent only (font is chosen separately). */
body[data-theme="outlaw"]{--accent:#E8852B;--accent-2:#F2A65A;--accent-soft:rgba(232,133,43,.18)}
body[data-theme="military"]{--accent:#7E8C3A;--accent-2:#B6C76A;--accent-soft:rgba(126,140,58,.20)}
body[data-theme="crimson"]{--accent:#C0392B;--accent-2:#E0746B;--accent-soft:rgba(192,57,43,.18)}
/* Heading font choices (readable display faces, independent of colour). */
body[data-font="bebas"]{--hero:"Bebas Neue",Impact,sans-serif}
body[data-font="rajdhani"]{--hero:"Rajdhani",-apple-system,sans-serif}
body[data-font="teko"]{--hero:"Teko",-apple-system,sans-serif}
body[data-font="saira"]{--hero:"Saira Condensed",-apple-system,sans-serif}
.pagehead h2,.cnm,.lg-h{letter-spacing:.01em}

/* Global form-field theming so EVERY input is dark-mode aware by default,
   even on pages that don't use a specific field class. */
input:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=file]):not([type=range]),
textarea, select {
  background: var(--card2); color: var(--ink); border: 1px solid var(--rule);
  border-radius: 7px; font-family: var(--body); font-size: 15px; padding: 9px 11px;
}
input::placeholder, textarea::placeholder { color: var(--ink-soft); opacity: .9 }
input:focus, textarea:focus, select:focus { outline: none; border-color: var(--accent) }
/* Make the native date-picker icon visible on dark backgrounds */
body:not(.light) input[type=date]::-webkit-calendar-picker-indicator { filter: invert(1); opacity: .6 }
select option{background:var(--card);color:var(--ink)}

/* ===== Admin config inline editing ===== */
.cfg-line{display:flex;gap:8px;align-items:center;border-bottom:1px solid var(--rule-soft);padding:7px 0;flex-wrap:wrap}
.cfg-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;flex:1;margin:0}
.cfg-row input,.cfg-row select{border:1px solid var(--rule);border-radius:6px;padding:9px 10px;background:var(--card2);color:var(--ink);font-size:15px;font-family:var(--body)}
.cfg-head{padding:0 0 6px;color:var(--ink-soft);font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:600}
.cfg-head span{display:inline-block}
.addr-wrap{position:relative}
.addr-suggest{list-style:none;margin:6px 0 0;padding:0;position:absolute;left:0;right:0;top:100%;z-index:50;background:var(--card);border:1px solid var(--rule);border-radius:8px;box-shadow:0 14px 34px rgba(0,0,0,.4);max-height:260px;overflow:auto;display:none}
.addr-suggest.open{display:block}
.addr-suggest li{padding:10px 12px;cursor:pointer;font-size:15px;line-height:1.35;border-bottom:1px solid var(--rule-soft)}
.addr-suggest li:last-child{border-bottom:none}
.addr-suggest li:hover{background:var(--accent-soft);color:var(--accent-2)}
.addr-map{height:230px;border-radius:10px;overflow:hidden;margin-top:10px;z-index:0}
.deleg-badge{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--warm);background:var(--warm-soft);border:1px solid var(--warm);padding:5px 10px;border-radius:30px;white-space:nowrap}
.deleg-badge:hover{text-decoration:none;filter:brightness(1.1)}
.cfg-add{margin-top:10px;border-top:1px dashed var(--rule);padding-top:12px}
.cfg-chk{display:flex;align-items:center;gap:5px;font-size:14px;color:var(--ink);white-space:nowrap}
.cfg-chk input{width:17px;height:17px}
.btnlink.danger{padding:6px 10px}

/* ===== Mobile / responsive ===== */
.navtoggle{display:none;background:var(--card2);border:1px solid var(--rule);color:var(--ink);border-radius:8px;padding:5px 11px;font-size:20px;line-height:1;cursor:pointer}
@media(max-width:920px){
  .navtoggle{display:inline-flex;align-items:center}
  .brand{flex:1}
  /* Header is static on mobile: a tall open menu (and the page) scroll normally.
     A sticky header taller than the viewport would trap scrolling. */
  .topbar{position:static}
  .nav{order:6;flex-basis:100%;flex-direction:column;gap:3px;display:none;margin-top:8px}
  body.nav-open .nav{display:flex}
  .nav a{padding:12px 12px;border-radius:8px;font-size:15px}
  .nav a.nav-31{align-self:stretch}
}
@media(max-width:620px){
  .topbar{padding:10px 14px}
  .container{padding:18px 14px 64px}
  .userbox{gap:8px}
  .userbox .userlink{display:none}
  .pagehead{gap:8px}
  .pagehead h2{font-size:1.4rem}
  .pagehead .btnlink{margin-left:0 !important}
  .prefs-panel{width:min(86vw,260px)}
  .dash{grid-template-columns:1fr}
  .two-col{grid-template-columns:1fr}
  .card{padding:18px 16px}
  .chead{flex-direction:column}
  /* approvals queue: stack meta over actions, full-width deny reason */
  .qrow{flex-direction:column;align-items:stretch;gap:10px}
  .qbtns{flex-wrap:wrap;justify-content:flex-start}
  .qbtns form{flex:1}
  .reasonin{flex:1;min-width:0}
  /* misc dense bits */
  .search{max-width:100% !important}
  .map{height:340px}
  .grid2{gap:14px}
  .pbtns{flex-wrap:wrap}
  .crec td:first-child{width:42%}
  table{font-size:13.5px}
  thead th,tbody td{padding-left:8px;padding-right:8px}
}

/* ===== Text size / zoom ===== */
body[data-size="A"]{zoom:1.12}
body[data-size="AA"]{zoom:1.25}

/* ===== Appearance panel ===== */
.prefs{position:relative}
.prefs-btn{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;background:var(--card2);border:1px solid var(--rule);color:var(--ink);padding:6px 12px;border-radius:30px;cursor:pointer}
.prefs-btn:hover{border-color:var(--accent)}
.prefs-panel{position:absolute;right:0;top:130%;width:270px;background:var(--card);border:1px solid var(--rule);border-radius:12px;padding:14px;box-shadow:0 12px 34px rgba(0,0,0,.35);display:none;z-index:200}
.prefs-panel.open{display:block}
.prefs-row{margin-bottom:12px}
.prefs-row:last-child{margin-bottom:0}
.prefs-row>span{display:block;font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px}
.seg{display:flex;flex-wrap:wrap;gap:6px}
.seg button{flex:1 1 auto;min-width:54px;font-size:12px;padding:6px 8px;border:1px solid var(--rule);background:var(--card2);color:var(--ink);border-radius:7px;cursor:pointer;font-family:var(--body)}
.seg button:hover{border-color:var(--accent)}
.seg button.on{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}
.seg.fonts button{flex:1 1 46%;min-width:100px;font-weight:400;font-size:14px;letter-spacing:.01em;padding:8px 6px;text-transform:none}
.seg.fonts button.on{font-weight:400}
.prefs-panel input[type=color]{width:100%;height:34px;border:1px solid var(--rule);border-radius:7px;background:var(--card2);cursor:pointer;padding:2px}
