/* Road to Sergeant: shared design system for every page (library, reader, study center, test prep).
   Same tokens as the test app: navy + brass, Archivo / Source Serif 4, light and dark. */
:root{
  --navy:#0E2A5C; --navy-2:#173C7A; --ink:#101A2C; --muted:#5B6B84; --line:#DCE2EC;
  --bg:#EEF1F6; --surface:#FFFFFF; --surface-2:#F6F8FB; --fill:rgba(16,26,44,.05);
  --brass:#C9A24A; --brass-hi:#F1D88C; --brass-lo:#A87B25; --brass-ink:#8A6416; --flag-ink:#9A5B0B; --ok-ink:#17784E;
  --ok:#1F8A5B; --ok-bg:#E4F4EC; --bad:#B3372F; --bad-bg:#FBEAE8; --flag:#D48A1F; --royal:#2C5AA8;
  --shadow:0 1px 2px rgba(16,26,44,.06),0 8px 24px rgba(16,26,44,.06);
  --r-lg:22px; --r-md:14px; --r-sm:10px; --ease:cubic-bezier(.2,.8,.2,1); --spring:cubic-bezier(.22,1.15,.36,1);
  --sans:"Archivo",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --serif:"Source Serif 4",Georgia,"Times New Roman",serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  /* aliases so older page rules keep working */
  --gold:var(--brass); --gold-soft:var(--brass-hi); --blue:var(--royal); --red:var(--bad); --green:var(--ok);
  --card:var(--surface); --panel:var(--surface); --panel-2:var(--surface-2); --line-2:var(--line); --ink-2:var(--muted);
  --navy-700:var(--navy); --navy-900:#071631; --font:var(--sans);
  --maxw:1200px;
  color-scheme:light;
}
@media(min-width:1600px){:root{--maxw:1360px}}
@media(min-width:2100px){:root{--maxw:1560px}}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --ink:#E9EEF7; --brass-ink:#E3C377; --flag-ink:#F0B15A; --ok-ink:#4CC38A; --muted:#98A6BD; --line:#26344F; --bg:#0A1326; --surface:#111D36; --surface-2:#16243F; --fill:rgba(255,255,255,.06);
    --navy:#8FB0EE; --navy-2:#B6CBF4; --ok:#4CC38A; --ok-bg:#12301F; --bad:#F07C72; --bad-bg:#3A1716;
    --shadow:0 1px 2px rgba(0,0,0,.3),0 10px 30px rgba(0,0,0,.25); color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --ink:#E9EEF7; --brass-ink:#E3C377; --flag-ink:#F0B15A; --ok-ink:#4CC38A; --muted:#98A6BD; --line:#26344F; --bg:#0A1326; --surface:#111D36; --surface-2:#16243F; --fill:rgba(255,255,255,.06);
  --navy:#8FB0EE; --navy-2:#B6CBF4; --ok:#4CC38A; --ok-bg:#12301F; --bad:#F07C72; --bad-bg:#3A1716;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 10px 30px rgba(0,0,0,.25); color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;overflow-x:clip;min-height:100vh;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.5;font-variation-settings:"wdth" 100;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font-family:var(--sans)}
:focus-visible{outline:3px solid var(--brass);outline-offset:2px;border-radius:8px}
.lightbar{display:none!important}

/* ---- global bar (same on every page) ---- */
.gbar{position:sticky;top:0;z-index:60;padding-top:env(safe-area-inset-top);background:color-mix(in srgb,var(--bg) 84%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(14px);backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid var(--line)}
.gbar .in{max-width:var(--maxw);margin:0 auto;padding:10px max(24px,env(safe-area-inset-right)) 10px max(24px,env(safe-area-inset-left));display:flex;align-items:center;gap:14px}
.gbrand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-weight:800;font-variation-settings:"wdth" 80;letter-spacing:.01em;font-size:18px;line-height:1.1;flex:none}
.gbrand small{display:block;font-weight:500;font-size:12px;color:var(--muted);letter-spacing:0;font-variation-settings:"wdth" 100}
.tile{--s:44px;width:var(--s);height:var(--s);border-radius:calc(var(--s)*.26);display:inline-grid;place-items:center;flex:none;color:#fff;
  background:linear-gradient(160deg,#2C5AA8 0%,#0E2A5C 60%,#081A3B 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 4px 12px rgba(14,42,92,.3)}
.tile svg{width:60%;height:60%;color:var(--brass-hi);filter:drop-shadow(0 1px 1px rgba(0,0,0,.35))}
.tile.sm{--s:36px}
.gnav{display:flex;gap:4px;margin-left:10px}
.gnav a{white-space:nowrap;padding:8px 14px;border-radius:10px;color:var(--muted);text-decoration:none;font-weight:700;font-size:15px;transition:.2s}
.gnav a:hover{color:var(--ink);background:var(--fill)}
.gnav a[aria-current="page"]{color:var(--ink);background:color-mix(in srgb,var(--brass) 20%,transparent);box-shadow:inset 0 -2px 0 var(--brass)}
.gbar .sp{flex:1}
#gextra{display:flex;gap:4px;flex:none}
.iconbtn{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;transition:.2s}
.iconbtn:hover{border-color:var(--brass);transform:translateY(-1px)}
.iconbtn svg{width:20px;height:20px}
.iconbtn.off{opacity:.5}


/* ---- animated rank chevrons (the logo next to "Road to Sergeant") ----
   On load the three chevrons climb into place; every few seconds a bright pulse climbs
   bottom to top, like earning a stripe. Hovering the logo replays the climb. */
.rank svg{overflow:visible}
.rank path{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transform-box:fill-box;transform-origin:center;
  animation:rankIn .55s var(--spring) backwards,rankPulse 6s ease-in-out infinite}
.rank .c3{animation-delay:.05s,1.4s}.rank .c2{animation-delay:.17s,1.62s}.rank .c1{animation-delay:.29s,1.84s}
.gbrand .tile.rank,.top .tile.rank{animation:rankGlow 6s ease-in-out 1.4s infinite}
.gbrand:hover .rank path,.brandlink:hover .rank path{animation:rankClimb .6s var(--spring) both}
.gbrand:hover .rank .c3,.brandlink:hover .rank .c3{animation-delay:0s}.gbrand:hover .rank .c2,.brandlink:hover .rank .c2{animation-delay:.08s}.gbrand:hover .rank .c1,.brandlink:hover .rank .c1{animation-delay:.16s}
@keyframes rankIn{from{opacity:0;transform:translateY(6px) scale(.8)}to{opacity:1;transform:none}}
@keyframes rankPulse{0%,12%,100%{stroke:var(--brass-hi);transform:none}5%{stroke:#fff;transform:translateY(-1.6px)}}
@keyframes rankClimb{0%{stroke:var(--brass-hi);transform:none}40%{stroke:#fff;transform:translateY(-2.4px) scale(1.08)}100%{stroke:var(--brass-hi);transform:none}}
@keyframes rankGlow{0%,14%,100%{box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 4px 12px rgba(14,42,92,.3)}6%{box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 0 0 1px rgba(241,216,140,.5),0 0 18px rgba(241,216,140,.55)}}


/* ---- officer profile: top-bar chip and the create-profile / sign-in gate ---- */
#guser{position:relative;flex:none}
.userchip{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 12px 0 5px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:700 14px var(--sans);cursor:pointer;transition:.2s}
.userchip:hover{border-color:var(--brass)}
.uav{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;background:linear-gradient(160deg,#2C5AA8,#0E2A5C);color:var(--brass-hi);font-size:12px;font-weight:800;letter-spacing:.02em}
.unm{max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.usermenu{position:absolute;right:0;top:calc(100% + 8px);z-index:80;min-width:210px;padding:14px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);box-shadow:0 18px 40px rgba(16,26,44,.25)}
.usermenu[hidden]{display:none}
.um-name{font-weight:800;font-size:16px}.um-sub{color:var(--muted);font-size:13px;margin-top:2px}
.um-plan{display:inline-block;margin:10px 0 12px;padding:3px 10px;border-radius:999px;font:800 11px var(--sans);letter-spacing:.06em;text-transform:uppercase;background:color-mix(in srgb,var(--brass) 22%,transparent);color:var(--ink)}
.um-out{display:block;width:100%;min-height:40px;border-radius:10px;border:1px solid var(--line);background:var(--surface-2);color:var(--ink);font:700 14px var(--sans);cursor:pointer}
.um-out:hover{border-color:var(--bad);color:var(--bad)}
@media(max-width:640px){.unm{display:none}.userchip{padding:0 5px;height:38px}}
@media(max-width:420px){.userchip{height:36px}.uav{width:28px;height:28px}}
.authgate{position:fixed;inset:0;z-index:300;display:grid;place-items:center;padding:16px;overflow:auto;background:radial-gradient(120% 90% at 50% 15%,#1B3E7E 0%,#0E2A5C 50%,#071631 100%);-webkit-overflow-scrolling:touch}
.ag-card{width:100%;max-width:440px;margin:auto;padding:26px 24px 22px;border-radius:var(--r-lg);background:var(--surface);color:var(--ink);box-shadow:0 30px 80px rgba(0,0,0,.45);border:1px solid var(--line);animation:agIn .5s var(--spring) both}
@keyframes agIn{from{opacity:0;transform:translateY(18px) scale(.97)}}
.ag-logo{display:flex;justify-content:center;margin-bottom:10px}.ag-logo .tile{--s:56px}
.ag-card h2{margin:0 0 6px;text-align:center;font:800 26px var(--sans);font-variation-settings:"wdth" 82}
.ag-sub{margin:0 0 16px;text-align:center;color:var(--muted);font:15px/1.45 var(--serif)}
.ag-tabs{display:flex;gap:4px;padding:4px;border:1px solid var(--brass);border-radius:14px;background:var(--surface-2);margin-bottom:14px}
.ag-tabs button{flex:1;min-height:40px;border:0;border-radius:10px;background:none;color:var(--muted);font:700 15px var(--sans);cursor:pointer;transition:.2s}
.ag-tabs button[aria-selected="true"]{background:linear-gradient(160deg,var(--brass-hi),var(--brass) 60%,var(--brass-lo));color:#1C1405}
.ag-card form{display:grid;gap:12px}.ag-card form[hidden]{display:none}
.ag-card label{display:grid;gap:5px;font:700 13px var(--sans);color:var(--ink)}
.ag-card input[type=text],.ag-card input:not([type]),.ag-card input[type=password]{width:100%;min-height:46px;padding:0 14px;border-radius:12px;font-size:16px}
.ag-card textarea{width:100%;padding:10px 14px;border-radius:12px;font:16px/1.4 var(--sans);resize:vertical;border:1px solid var(--line);background:var(--surface-2);color:var(--ink)}
.ag-check{display:flex!important;align-items:flex-start;gap:10px;font-weight:600!important;font-size:13.5px!important;line-height:1.4;color:var(--muted)!important}
.ag-check input{margin-top:3px;width:18px;height:18px;flex:none;accent-color:var(--brass-lo)}
.ag-check b{color:var(--ink)}
.ag-err{min-height:18px;color:var(--bad);font-size:14px;font-weight:600}
.ag-notice{margin-bottom:12px;padding:10px 12px;border-radius:12px;font-size:14px;line-height:1.4;background:color-mix(in srgb,var(--brass) 18%,transparent);border:1px solid color-mix(in srgb,var(--brass) 45%,transparent)}
.ag-notice[hidden]{display:none}
.ag-submit{width:100%;min-height:48px;font-size:16px}
.ag-fine{margin:14px 0 0;color:var(--muted);font-size:12px;line-height:1.5;text-align:center}
.ag-card form .ag-fine{margin:0}
html.ag-open,html.ag-open body{overflow:hidden}

/* ---- buttons ---- */
.btn,.sbtn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 18px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:700 14.5px var(--sans);text-decoration:none;cursor:pointer;white-space:nowrap;transition:transform .15s var(--ease),border-color .2s,background .2s,box-shadow .2s}
.btn:hover,.sbtn:hover{border-color:var(--brass);transform:translateY(-1px)}
.btn:active,.sbtn:active{transform:scale(.98)}
.btn.gold,.sbtn:not(.ghost){background:linear-gradient(160deg,var(--brass-hi),var(--brass) 55%,var(--brass-lo));color:#1C1405;border-color:transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 6px 16px rgba(168,123,37,.28)}
.btn.gold:hover,.sbtn:not(.ghost):hover{box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 10px 24px rgba(168,123,37,.4)}
.sbtn.ghost{background:var(--surface);color:var(--ink);border:1px solid var(--line);box-shadow:none}
.sbtn.ghost:hover{border-color:var(--brass);color:var(--ink)}
.btn.red{background:var(--bad);color:#fff;border-color:transparent}
.btn.green{background:var(--ok);color:#fff;border-color:transparent}
.btn.primary{background:var(--navy);color:#fff;border-color:transparent}
.btn:disabled{opacity:.4;pointer-events:none}

/* ---- inputs ---- */
input[type=text],input[type=search],input[type=date],input[type=password],input:not([type]),select,textarea{background:var(--surface-2);border:1px solid var(--line);color:var(--ink);border-radius:12px;padding:10px 13px;font:inherit;outline:none;transition:.2s}
input:focus,select:focus,textarea:focus{border-color:var(--brass);box-shadow:0 0 0 4px color-mix(in srgb,var(--brass) 25%,transparent)}
input::placeholder,textarea::placeholder{color:var(--muted)}
select option{color:#101A2C;background:#fff}

/* ---- shared footer credit ---- */
.gfoot{max-width:var(--maxw);margin:0 auto;padding:30px 24px 40px;text-align:center;color:var(--muted);font-size:13px;border-top:1px solid var(--line)}
.gfoot b{color:var(--brass-ink);font-weight:800}
:root[data-theme="dark"] .gfoot b{color:var(--brass-hi)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .gfoot b{color:var(--brass-hi)}}

/* ---- responsive: phone / tablet / desktop ----
   >=1600 wide desktop (wider container) | 861-1599 desktop + tablet landscape | 641-860 tablet portrait
   <=640 large phone | <=420 phone | <=350 small phone | short landscape phones | touch devices */
.gnav{min-width:0}
@media(max-width:860px){
  .gbar .in{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right));gap:8px}
  .gnav{margin-left:2px;gap:0}.gnav a{padding:8px 10px;font-size:14px}
}
@media(max-width:640px){
  .gbar .in{gap:6px}
  .gbrand span.t{display:none}
  .gnav{flex:1 1 auto;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.gnav::-webkit-scrollbar{display:none}
  .gnav a.gh{display:none}
  .gbar .sp{display:none}
  .iconbtn{width:38px;height:38px}
}
@media(max-width:420px){
  .gbar .in{padding-left:max(10px,env(safe-area-inset-left));padding-right:max(10px,env(safe-area-inset-right));gap:4px}
  .gnav a{padding:8px 7px;font-size:13px}.iconbtn{width:36px;height:36px}.tile.sm{--s:32px}
}
@media(max-width:350px){.gnav a{padding:8px 5px;font-size:12.5px}.iconbtn{width:34px;height:34px}.gbrand .tile{--s:30px}}
/* touch screens: bigger targets, 16px inputs (stops iOS zooming into fields), no sticky hover */
@media(pointer:coarse){
  .gnav a{min-height:40px;display:inline-flex;align-items:center}
  .btn,.sbtn{min-height:44px}
  input,select,textarea{font-size:16px!important}
}
@media(max-width:640px) and (pointer:coarse){.iconbtn{width:40px;height:40px}}
@media(max-width:420px) and (pointer:coarse){.iconbtn{width:38px;height:38px}}
/* short landscape phones: keep the sticky bar compact */
@media(max-height:520px){.gbar .in{padding-top:6px;padding-bottom:6px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media print{.gbar,.gfoot{display:none}}

/* keyboard / screen-reader navigation */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skiplink{position:fixed;left:12px;top:-60px;z-index:200;background:var(--navy,#0E2A5C);color:#fff;padding:10px 16px;border-radius:10px;font:700 14px var(--sans,system-ui);text-decoration:none;border:2px solid var(--brass,#C9A24A);transition:top .15s}
.skiplink:focus{top:10px}
:focus-visible{outline:3px solid var(--brass,#C9A24A);outline-offset:2px}


/* ---- "Home" label under the chevron icon ---- */
.gic{display:flex;flex-direction:column;align-items:center;gap:3px;flex:none}
.hm{font:800 10px/1 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.gbrand:hover .hm{color:var(--ink)}
/* phones: two tidy rows. Row 1: Home icon, profile, theme. Row 2: Library / Study Center / Take a Test, all the same style */
@media(max-width:640px){
  .gbar .in{flex-wrap:wrap;row-gap:4px;padding-top:6px;padding-bottom:6px}
  .gbar .sp{display:block;flex:1;order:2}
  .gbrand{order:1}.gextra,#gextra{order:3}#guser{order:4}#gsearch{order:5}#gtheme{order:6}
  .gnav{order:9;flex:1 1 100%;display:flex;margin:0;overflow:visible;border-top:1px solid var(--line);padding-top:4px}
  .gnav a,.gnav a.gh{flex:1 1 0;display:inline-flex;justify-content:center;align-items:center;text-align:center;padding:8px 4px;font-size:14px;min-height:38px}
  .gnav a.gh{display:none}
  .gbar{background:color-mix(in srgb,var(--bg) 97%,transparent)}
}
/* ---- gate: forgot passcode, disclaimer, modal ---- */
.ag-forgot{justify-self:center;background:none;border:0;padding:4px 8px;color:var(--navy);font:700 14px var(--sans);text-decoration:underline;cursor:pointer}
:root[data-theme="dark"] .ag-forgot{color:var(--brass-hi)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .ag-forgot{color:var(--brass-hi)}}
.ag-disc{margin:12px 0 0;padding:10px 12px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line);color:var(--muted);font-size:12px;line-height:1.5;text-align:center}
.ag-disc b{color:var(--ink)}
.ag-modal{position:fixed;inset:0;z-index:310;display:grid;place-items:center;padding:16px;background:rgba(7,22,49,.72);overflow:auto}
.ag-mcard{width:100%;max-width:400px;padding:22px 20px;border-radius:var(--r-lg);background:var(--surface);color:var(--ink);border:1px solid var(--line);box-shadow:0 30px 80px rgba(0,0,0,.5)}
.ag-mcard h3{margin:0 0 8px;font:800 20px var(--sans)}
.ag-mcard form{display:grid;gap:12px}
.ag-mbtns{display:flex;gap:10px;justify-content:flex-end}
.ag-modal label{display:grid;gap:5px;font:700 13px var(--sans);color:var(--ink)}
.ag-modal input{width:100%;min-height:46px;padding:0 14px;border-radius:12px;font-size:16px}
.ag-modal .ag-err{min-height:18px}

.ag-terms{margin:0 0 12px;padding:0 0 0 18px;font-size:13px;line-height:1.5;color:var(--muted);text-align:left}
.ag-terms li{margin-bottom:8px}.ag-terms b{color:var(--ink)}.ag-terms a{color:var(--navy);font-weight:700}
#paywall .ag-check{margin-bottom:8px}
/* paywall: the two plans */
.pw-plans{display:grid;gap:8px;margin:0 0 12px;text-align:left}
.pw-plan{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1.5px solid var(--line);border-radius:12px;background:var(--surface-2);cursor:pointer;font-weight:600!important;font-size:14px!important;color:var(--ink)!important}
.pw-plan:has(input:checked){border-color:var(--brass-lo);background:color-mix(in srgb,var(--brass) 14%,transparent)}
.pw-plan input{width:18px;height:18px;flex:none;accent-color:var(--brass-lo)}
.pw-plan span{display:flex;flex-direction:column;gap:2px}.pw-plan small{color:var(--muted);font-weight:500;font-size:12.5px}
.um-manage{margin-bottom:8px}.um-manage:hover{border-color:var(--brass-lo);color:var(--ink)}

.gfoot .contact{margin-top:8px}.gfoot .contact a{color:var(--navy);font-weight:700}
:root[data-theme="dark"] .gfoot .contact a,:root[data-theme="dark"] .ag-terms a{color:var(--brass-hi)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .gfoot .contact a,:root:not([data-theme="light"]) .ag-terms a{color:var(--brass-hi)}}

.gfoot .disc{max-width:640px;margin:10px auto 0;font-size:12.5px;line-height:1.5}

/* ---- Ctrl/Cmd + K procedure search ---- */
html.ps-open,html.ps-open body{overflow:hidden}
.psearch{position:fixed;inset:0;z-index:400;display:flex;justify-content:center;align-items:flex-start;padding:10vh 14px 14px;background:rgba(7,22,49,.62);backdrop-filter:blur(3px)}
.ps-card{width:100%;max-width:640px;background:var(--surface);color:var(--ink);border:1px solid var(--brass);border-radius:16px;box-shadow:0 30px 80px rgba(0,0,0,.5);overflow:hidden;display:flex;flex-direction:column;max-height:72vh}
.ps-in{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line);color:var(--muted)}
.ps-in input{flex:1;min-width:0;border:0;background:none;outline:none;box-shadow:none;font:600 17px var(--sans);color:var(--ink);padding:6px 0}
.ps-in input:focus{box-shadow:none}
.ps-in kbd{font:12px var(--mono);border:1px solid var(--line);border-radius:6px;padding:2px 7px}
#ps-list{list-style:none;margin:0;padding:6px;overflow:auto}
#ps-list li{display:flex;gap:12px;align-items:flex-start;padding:10px;border-radius:10px;cursor:pointer}
#ps-list li b{flex:none;min-width:78px;font:800 13px var(--sans);color:var(--navy);padding-top:2px}
:root[data-theme="dark"] #ps-list li b{color:var(--brass-hi)}
#ps-list li span{font:600 15px/1.3 var(--sans);min-width:0}#ps-list li small{display:block;color:var(--muted);font-weight:500;font-size:12.5px;margin-top:2px}
#ps-list li.on{background:color-mix(in srgb,var(--brass) 22%,transparent);box-shadow:inset 0 0 0 1px var(--brass)}
#ps-list li.none{cursor:default;color:var(--muted);justify-content:center}
.ps-foot{margin:0;padding:8px 14px;border-top:1px solid var(--line);font-size:12.5px;color:var(--muted);text-align:center}
@media(max-width:560px){.psearch{padding-top:6vh}.ps-in kbd{display:none}#ps-list li b{min-width:64px}}

.gfoot a{display:inline-block;padding:8px 4px}
@media(pointer:coarse){.gfoot a{padding:12px 6px}}

/* "Road to Sergeant" stays next to the Home icon on every page and screen size, centered on the icon */
.gbrand .t{display:flex;flex-direction:column;justify-content:center;align-self:center}
@media(max-width:640px){
  .gbar .gbrand span.t{display:flex;font-size:15px;line-height:1.15;white-space:nowrap}
  .gbar .gbrand small{display:block;font-size:11px}
  .gbrand{gap:8px}
}
@media(max-width:360px){.gbar .gbrand span.t{font-size:13px}.gbar .gbrand small{display:none}.gbrand{gap:5px}.gbar .in{gap:3px}.gbar .iconbtn{width:34px;height:34px}}

/* ---- main navigation: Today · Learn · Practice · Tutor · Progress (October 2026) ----
   Wide screens: links in the top bar. Phones and small tablets (<=760px): a bottom bar with icons AND text labels, 56px tall,
   above the home indicator (safe area). It hides while a test is running (the test has its own controls), while the phone
   keyboard is open, and on pages that set <html class="no-bnav">. */
.gnav a svg{width:18px;height:18px;flex:none;margin-right:6px;opacity:.8}
.gnav a{display:inline-flex;align-items:center}
.bnav{display:none}
@media(max-width:1100px) and (min-width:761px){.gnav a svg{display:none}.gnav a{padding:8px 10px}}
@media(max-width:760px){
  .gbar .gnav{display:none!important}
  .gbar .in{flex-wrap:nowrap!important}
  .gbar .sp{display:block!important;flex:1}
  .bnav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:70;background:color-mix(in srgb,var(--surface) 96%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(14px);backdrop-filter:saturate(1.4) blur(14px);border-top:1px solid var(--line);padding:0 max(4px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(4px,env(safe-area-inset-left))}
  .bnav a{flex:1 1 0;min-width:0;min-height:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--muted);text-decoration:none;font:700 11.5px/1.1 var(--sans);letter-spacing:.01em;border-radius:12px;margin:4px 1px}
  .bnav a svg{width:22px;height:22px}
  .bnav a span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .bnav a[aria-current="page"]{color:var(--ink);background:color-mix(in srgb,var(--brass) 18%,transparent)}
  .bnav a[aria-current="page"] svg{color:var(--brass-ink)}
  html.has-bnav body{padding-bottom:calc(64px + env(safe-area-inset-bottom))}
  html.in-test .bnav,html.kb-open .bnav,html.no-bnav .bnav{display:none}
  html.in-test.has-bnav body,html.kb-open.has-bnav body,html.no-bnav.has-bnav body{padding-bottom:0}
}
@media(max-width:760px) and (max-height:430px){.bnav a{min-height:44px;flex-direction:row;gap:6px}.bnav a svg{width:18px;height:18px}html.has-bnav body{padding-bottom:calc(52px + env(safe-area-inset-bottom))}}
:root[data-theme="dark"] .bnav a[aria-current="page"] svg{color:var(--brass-hi)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .bnav a[aria-current="page"] svg{color:var(--brass-hi)}}
/* user menu links (secondary navigation) */
.usermenu .um-link{display:block;padding:9px 10px;border-radius:9px;color:var(--ink);text-decoration:none;font-weight:600;font-size:14.5px}
.usermenu .um-link:hover,.usermenu .um-link:focus-visible{background:var(--fill)}
.usermenu .um-sep{height:1px;background:var(--line);margin:6px 0}

/* ---- shared components for the learning pages (Today, Tutor, Progress) ---- */
.lp{max-width:980px;margin:0 auto;padding:22px max(16px,env(safe-area-inset-left)) 48px max(16px,env(safe-area-inset-right))}
.lp h1{font:800 clamp(26px,5vw,36px)/1.12 var(--sans);font-variation-settings:"wdth" 86;margin:0 0 4px;letter-spacing:-.01em}
.lp h2{font:800 19px/1.25 var(--sans);margin:0 0 10px}
.lp h3{font:700 16px/1.3 var(--sans);margin:0 0 6px}
.lp .lede{color:var(--muted);margin:0 0 18px;font-size:16px}
.lp p{margin:0 0 10px}
.card2{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:18px;box-shadow:var(--shadow)}
.card2+.card2,.stack2>*+*{margin-top:14px}
.grid2{display:grid;gap:14px;grid-template-columns:1fr}
@media(min-width:760px){.grid2.c2{grid-template-columns:1fr 1fr}.grid2.c3{grid-template-columns:repeat(3,1fr)}}
.kicker{font:800 12px/1 var(--sans);letter-spacing:.09em;text-transform:uppercase;color:var(--brass-ink);margin:0 0 8px}
:root[data-theme="dark"] .kicker{color:var(--brass-hi)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .kicker{color:var(--brass-hi)}}
.muted2{color:var(--muted)}
.small{font-size:14px}
.btn2{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 18px;border-radius:12px;border:1px solid var(--line);background:var(--surface-2);color:var(--ink);font:700 15.5px/1.2 var(--sans);text-decoration:none;cursor:pointer}
.btn2:hover{border-color:var(--muted)}
.btn2.primary{background:var(--navy-900);border-color:var(--navy-900);color:#fff}
:root[data-theme="dark"] .btn2.primary{background:var(--brass);border-color:var(--brass);color:#14100a}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .btn2.primary{background:var(--brass);border-color:var(--brass);color:#14100a}}
.btn2.ghost{background:none}
.btn2[disabled]{opacity:.55;cursor:not-allowed}
.btn2.wide{width:100%}
.row2{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font:700 12.5px/1.4 var(--sans);border:1px solid var(--line);background:var(--surface-2);white-space:nowrap}
.pill i{width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block}
.lab-none{color:var(--muted)}.lab-review{color:var(--bad)}.lab-improving{color:var(--flag-ink)}.lab-mastered{color:var(--ok-ink)}
.pill.tent{border-style:dashed}
.seg3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.seg3 button{min-height:64px;border-radius:12px;border:1px solid var(--line);background:var(--surface-2);color:var(--ink);font:800 18px/1.1 var(--sans);cursor:pointer;padding:8px}
.seg3 button small{display:block;font:600 12.5px/1.2 var(--sans);color:var(--muted);margin-top:4px}
.seg3 button[aria-pressed="true"]{border-color:var(--brass);box-shadow:inset 0 0 0 2px var(--brass);background:color-mix(in srgb,var(--brass) 12%,var(--surface))}
.list2{list-style:none;margin:0;padding:0}
.list2>li{padding:12px 0;border-top:1px solid var(--line)}
.list2>li:first-child{border-top:0;padding-top:4px}
.why{margin:4px 0 0;padding:0;list-style:none;color:var(--muted);font-size:14px}
.why li::before{content:"· "}
.src{border-left:4px solid var(--brass);background:var(--surface-2);border-radius:0 12px 12px 0;padding:12px 14px;margin:10px 0;font-family:var(--serif);font-size:16.5px;line-height:1.55}
.src .cite{display:block;font:700 12.5px/1.4 var(--sans);color:var(--muted);margin-top:8px}
.src .cite a{color:inherit}
.tag{display:inline-block;font:800 11px/1 var(--sans);letter-spacing:.08em;text-transform:uppercase;padding:4px 7px;border-radius:6px;margin-bottom:6px}
.tag.s{background:color-mix(in srgb,var(--brass) 22%,transparent);color:var(--ink)}
.tag.warn{background:var(--bad-bg);color:var(--bad)}
.opts2{display:grid;gap:10px;margin:12px 0}
.opts2 button{display:flex;gap:12px;align-items:flex-start;text-align:left;width:100%;min-height:52px;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:500 16px/1.45 var(--sans);cursor:pointer}
.opts2 button b{flex:none;width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:var(--fill);font-weight:800}
.opts2 button:hover:not([disabled]){border-color:var(--muted)}
.opts2 button.right{border-color:var(--ok);background:var(--ok-bg)}
.opts2 button.wrong{border-color:var(--bad);background:var(--bad-bg)}
.opts2 button.gone{opacity:.45;text-decoration:line-through}
.opts2 button[disabled]{cursor:default}
.mark-ok::before{content:"✓ ";font-weight:800;color:var(--ok)}
.mark-bad::before{content:"✗ ";font-weight:800;color:var(--bad)}
.weekbars{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;align-items:end;height:92px;margin-top:6px}
.weekbars div{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;font:600 11.5px var(--sans);color:var(--muted)}
.weekbars i{display:block;width:100%;max-width:28px;border-radius:6px 6px 2px 2px;background:var(--royal);min-height:2px}
.weekbars b{font-weight:800;color:var(--ink)}
.meter{height:10px;border-radius:999px;background:var(--fill);overflow:hidden}
.meter i{display:block;height:100%;background:var(--ok);border-radius:999px}
.notice{padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--surface-2);font-size:14.5px}
.notice.warn{border-color:color-mix(in srgb,var(--flag) 60%,var(--line));background:color-mix(in srgb,var(--flag) 10%,var(--surface))}
.dialog2{border:0;border-radius:16px;padding:0;max-width:min(520px,calc(100vw - 32px));width:100%;background:var(--surface);color:var(--ink);box-shadow:0 20px 60px rgba(0,0,0,.35)}
.dialog2::backdrop{background:rgba(7,22,49,.55)}
.dialog2 form{padding:20px}
.dialog2 textarea,.lp textarea,.lp input[type=date],.lp select{width:100%;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--surface);color:var(--ink);font:16px/1.4 var(--sans)}
.lp label{font-weight:700}
.lp fieldset{border:0;padding:0;margin:0 0 16px}
.lp legend{font-weight:800;margin-bottom:8px;padding:0}
.chk{display:flex;flex-wrap:wrap;gap:8px}
.chk label{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;border:1px solid var(--line);border-radius:10px;font-weight:600;cursor:pointer}
.chk input{width:18px;height:18px}
.linkbtn{background:none;border:0;padding:0;color:var(--royal);font:inherit;text-decoration:underline;cursor:pointer}
:root[data-theme="dark"] .linkbtn{color:var(--brass-hi)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .linkbtn{color:var(--brass-hi)}}
.skel{color:var(--muted)}

/* ---- UI/UX pass (October 24, 2026) ---- */
/* touch screens: every control at least 44px, checkboxes and radios easy to hit */
@media(pointer:coarse),(max-width:760px){
  .iconbtn,.gbar .iconbtn{width:44px!important;height:44px!important}
  .userchip{min-height:44px!important;height:44px!important}
  .tab,.fl,.chips button,.chips a{min-height:44px}
  input[type=checkbox],input[type=radio]{width:20px;height:20px;accent-color:var(--navy-2)}
  label:has(>input[type=checkbox]),label:has(>input[type=radio]){min-height:44px;display:inline-flex;align-items:center;gap:8px}
}
@media(max-width:360px){.gbar .iconbtn{width:40px!important;height:40px!important}.gbar .gbrand small{display:none}}
.bnav a{font-size:12px!important}
/* Learn: quick links between the Library and the Study Center tools */
.learnbar{max-width:var(--maxw);margin:10px auto 0;padding:0 max(16px,env(safe-area-inset-left));display:flex;flex-wrap:wrap;gap:8px}
.learnbar a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);font:700 14px var(--sans);text-decoration:none}
.learnbar a[aria-current="page"]{border-color:var(--brass);box-shadow:inset 0 0 0 1px var(--brass);background:color-mix(in srgb,var(--brass) 12%,var(--surface))}
/* browser autofill must not paint a pale box over dark-mode fields */
input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 1000px var(--surface) inset;-webkit-text-fill-color:var(--ink);caret-color:var(--ink);transition:background-color 9999s}
.ag-forgot{min-height:44px}
.time-options button{min-height:44px}
/* library and Study Center small controls reach 44px on touch screens and phones */
@media(pointer:coarse),(max-width:760px){
  .fl,.chips button,.chips a{min-height:44px!important;padding-top:0;padding-bottom:0;display:inline-flex;align-items:center}
  .star{min-width:44px!important;min-height:44px!important;right:4px!important;bottom:2px!important}
  .pdfb{min-height:40px!important;bottom:4px!important;right:50px!important}
  .up a{min-height:44px}
  #godue,.hrow a{display:inline-flex;align-items:center;min-height:44px;padding:0 4px}
}

/* ---------- recall drills ("Who does it?" runner, js/drills.js), shared by the reader dialog and the Study Center ---------- */
.drdlg{max-width:min(620px,calc(100vw - 24px))}
.drhost{padding:20px;font:16px/1.5 var(--sans)}
.dr-k{margin:0 0 8px;font:800 12px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--brass-ink)}
:root[data-theme=dark] .dr-k,body[data-theme=dark] .dr-k{color:var(--brass-hi)}
.dr-bar{height:4px;border-radius:4px;background:var(--line);overflow:hidden;margin:0 0 12px}.dr-bar span{display:block;height:100%;background:var(--brass)}
.dr-q{margin:0 0 14px;padding:12px 14px;border-left:4px solid var(--brass);background:var(--fill,rgba(0,0,0,.04));border-radius:0 10px 10px 0;font:17px/1.55 var(--serif,Georgia,serif)}
.dr-opts{display:grid;gap:8px}
.dr-opt{min-height:46px;text-align:left;padding:10px 14px;border-radius:12px;border:1.5px solid var(--line);background:var(--surface);color:var(--ink);font:700 15px var(--sans);cursor:pointer}
.dr-opt:hover:not(:disabled),.dr-opt:focus-visible{border-color:var(--brass)}
.dr-opt.ok{border-color:var(--ok);background:var(--ok-bg,#e6f7ee)}
.dr-opt.bad{border-color:var(--bad);background:var(--bad-bg,#fdeaea)}
.dr-opt:disabled{cursor:default}
.dr-fb p{margin:12px 0 10px}
.dr-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.dr-btn{min-height:44px;padding:0 16px;border-radius:10px;border:1.5px solid var(--line);background:var(--surface);color:var(--ink);font:700 15px var(--sans);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center}
.dr-btn.pri{background:var(--navy);border-color:var(--navy);color:#fff}
:root[data-theme=dark] .dr-btn.pri{color:#0A1326}
.dr-score{margin:0 0 6px;font:800 26px var(--sans)}.dr-score small{font-size:16px;color:var(--muted)}
.dr-sub{color:var(--muted);margin:0 0 10px}
.dr-miss{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:8px}
.dr-miss li{padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:14.5px}
.dr-miss li span{color:var(--muted)}

/* ---- front-end pass 2 (October 24, 2026): design-skill review fixes ---- */
/* text tokens: --brass-ink and --flag-ink keep small brass/amber text at 4.5:1 or better (brass-lo and flag stay for fills and borders) */
.list2.card2{padding:6px 18px}
.skiplink{min-height:44px;display:inline-flex;align-items:center}
@media(max-width:520px){.lp .card2{padding:16px}}
@media(pointer:coarse),(max-width:760px){.userchip{min-width:44px!important;justify-content:center}}
