/* Ace University Software Suite. One column of tool cards under a wide brand header; the same
   red, type and logos as the ID Challenge. Light by default, dark when the device asks for it. */
:root{
  --red:#D0332C; --red-deep:#A82620; --red-text:#B82A24; --on-red:#fff;
  --bg:#ffffff; --surface:#F4F2F1; --card:#ffffff; --fg:#171313; --muted:#655E5D; --line:#D9D4D2;
  --good:#1B7F45; --warn:#8A5A00; --warn-bg:#FFF4D6;
  --logo-light:block; --logo-dark:none;
  --display:"Barlow Condensed","Arial Narrow","Roboto Condensed",Impact,sans-serif;
  --body:"Barlow","Helvetica Neue",Helvetica,Arial,sans-serif;
}
@media (prefers-color-scheme: dark){
  :root{ --bg:#141111; --surface:#221D1D; --card:#1B1717; --fg:#F6F3F2; --muted:#ADA5A3; --line:#3B3433;
    --red-text:#F0655D; --good:#3DB26C; --warn:#F0C766; --warn-bg:#3A2E10;
    --logo-light:none; --logo-dark:block; color-scheme:dark }
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--body);font-size:17px;line-height:1.45}
a{color:var(--red-text)}
.wrap{max-width:1080px;margin:0 auto;padding:0 max(20px,env(safe-area-inset-right)) 0 max(20px,env(safe-area-inset-left))}
.logo.l{display:var(--logo-light)} .logo.d{display:var(--logo-dark)}
.logo{height:auto;max-width:100%}

/* ----- landing ----- */
.mast{border-bottom:4px solid var(--red)}
.mast .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:18px;padding-bottom:18px}
.mast .logo{width:min(300px,62vw)}
.mast .tag{font-family:var(--display);font-weight:700;font-size:15px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);text-align:right}
@media (max-width:520px){.mast .tag{display:none}}
.hero{padding:44px 0 26px}
.eyebrow{font-family:var(--display);font-weight:700;font-size:17px;letter-spacing:.2em;text-transform:uppercase;color:var(--red-text);margin:0 0 6px}
h1{font-family:var(--display);font-weight:800;text-transform:uppercase;line-height:.92;margin:0;font-size:clamp(46px,9vw,92px);letter-spacing:.005em;text-wrap:balance}
h1 em{font-style:normal;color:var(--red-text)}
.lede{max-width:56ch;color:var(--muted);font-size:19px;margin:16px 0 0}
.notice{background:var(--surface);border-left:4px solid var(--good);padding:10px 14px;border-radius:0 6px 6px 0;margin:0 0 20px;font-weight:500}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:18px;padding:8px 0 40px;margin:0;list-style:none}
.tool{display:flex;flex-direction:column;gap:10px;background:var(--card);border:1px solid var(--line);border-top:5px solid var(--fg);border-radius:8px;padding:20px 20px 18px;min-width:0}
.tool.locked{border-top-color:var(--line)}
.kind{font-family:var(--display);font-weight:700;font-size:14px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.tool h2{font-family:var(--display);font-weight:800;text-transform:uppercase;font-size:32px;line-height:.98;margin:0;text-wrap:balance}
.tool p{margin:0;color:var(--muted);font-size:16px;flex:1}
.foot{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:8px}
.status{display:inline-flex;align-items:center;gap:7px;font-size:14px;font-weight:600;color:var(--muted)}
.status svg{width:16px;height:16px;flex:none}
.status.ok{color:var(--good)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:10px 20px;border-radius:6px;border:1px solid transparent;
  background:var(--red);color:var(--on-red);font-family:var(--display);font-weight:700;font-size:19px;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;cursor:pointer}
.btn:hover{background:var(--red-deep)}
.btn.alt{background:transparent;color:var(--fg);border-color:var(--line)}
.btn.alt:hover{background:var(--surface)}
.btn.sm{min-height:36px;padding:6px 12px;font-size:15px}
.btn:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,button:focus-visible{outline:3px solid var(--red-text);outline-offset:2px}
.base{border-top:1px solid var(--line);padding:18px 0 34px;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:14px}
.base form{margin:0}
.linkbtn{background:none;border:0;padding:0;font:inherit;color:var(--red-text);text-decoration:underline;cursor:pointer}

/* ----- unlock and message pages ----- */
.center{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px 20px;background:var(--surface)}
.panel{width:100%;max-width:440px;background:var(--card);border:1px solid var(--line);border-top:5px solid var(--red);border-radius:8px;padding:26px 24px 22px;display:flex;flex-direction:column;gap:14px}
.panel .logo{width:230px}
.panel h1{font-size:38px}
.panel p{margin:0;color:var(--muted)}
label{display:block;font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
input[type=password],input[type=text],input[type=number],select{width:100%;font:inherit;font-size:18px;padding:11px 12px;border:2px solid var(--line);border-radius:6px;background:var(--card);color:var(--fg)}
.err{color:var(--red-text);font-weight:600;margin:0}
.warn{background:var(--warn-bg);color:var(--warn);border-radius:6px;padding:10px 12px;font-weight:600}
.panel .btn{width:100%}
.small{font-size:14px}

/* ----- admin ----- */
body.admin{background:var(--surface)}
.top{background:var(--card);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding-top:10px;padding-bottom:10px}
.top .logo{width:150px}
.top nav{display:flex;gap:4px;flex:1;flex-wrap:wrap}
.top nav a{padding:8px 12px;border-radius:6px;text-decoration:none;color:var(--fg);font-weight:600}
.top nav a.on{background:var(--fg);color:var(--bg)}
.top form{margin:0}
main.wrap{padding-top:22px;padding-bottom:50px}
.admin h1{font-size:40px;margin-bottom:6px}
.admin .sub{color:var(--muted);margin:0 0 18px;max-width:70ch}
.flash{background:var(--card);border:1px solid var(--line);border-left:5px solid var(--good);border-radius:6px;padding:10px 14px;margin:0 0 14px;font-weight:500}
.acard{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:18px 20px;margin:0 0 16px}
.acard h2{font-family:var(--display);font-weight:800;text-transform:uppercase;font-size:27px;line-height:1;margin:0}
.acard .addr{font-size:14px;color:var(--muted);margin:4px 0 14px;overflow-wrap:anywhere}
.row2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:14px 22px;align-items:end}
.seg{display:flex;border:2px solid var(--line);border-radius:6px;overflow:hidden}
.seg label{flex:1;margin:0;text-transform:none;letter-spacing:0;font-size:15px;font-weight:600;color:var(--fg);text-align:center;cursor:pointer;position:relative}
.seg input{position:absolute;opacity:0;inset:0;cursor:pointer}
.seg span{display:block;padding:10px 8px}
.seg label+label{border-left:2px solid var(--line)}
.seg input:checked+span{background:var(--fg);color:var(--bg)}
.seg input:focus-visible+span{outline:3px solid var(--red-text);outline-offset:-3px}
.pwrow{display:flex;gap:8px}
.pwrow input{flex:1;min-width:0}
.hint{font-size:13.5px;color:var(--muted);margin:6px 0 0}
.acard .actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:16px}
.pill{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:99px;background:var(--surface);color:var(--muted);vertical-align:middle;margin-left:8px}
.pill.open{background:var(--good);color:#fff} .pill.password{background:var(--fg);color:var(--bg)} .pill.off{background:var(--line);color:var(--fg)}
