/* ==================================================================
   NPTE-PTA Prep by The ConEd Solution — shared look and navigation.
   Approved design 2026-09-16 (design/2026-09-16-redesign): Plus Jakarta Sans,
   EMG navy #000066 rail, orange #EF8641 for the one main action on a screen.
   Loaded by index.html and study.html. Token NAMES are the ones the pages
   already use, so every existing view picks up the look without edits.
   ================================================================== */
:root{
  --paper:#F5F5F8; --card:#FFFFFF; --sunk:#EFEFF4;
  --ink:#1B1B2A; --body:#3A3A4F; --mute:#5B5B70; --faint:#8A8AA0;
  --rule:#E3E3E8; --hair:#EDEDF2;
  --signal:#000066; --signal-soft:#ECECF8; --signal-ink:#000066;
  --accent:#EF8641; --accent-soft:#FDEFE4; --accent-ink:#B4561A; --accent-rule:#F6D3B8;
  --gold:#EF8641; --gold-soft:#FDEFE4; --gold-ink:#A34E17; --gold-rule:#F6D3B8;
  --mastered:#107C10; --developing:#E07A2F; --critical:#D13438;
  --mastered-bg:#E9F6EC; --developing-bg:#FDF1E6; --critical-bg:#FBE9EA;
  --mastered-rule:#CBE9D2;
  --rail:#000066; --rail-ink:#D6D6EE; --rail-dim:#B3B3D6; --rail-hair:#1F1F80; --rail-on:#1F1F80;
  --shadow:0 1px 2px rgba(20,20,60,.04),0 6px 20px rgba(20,20,60,.06);
  --shadow-lift:0 2px 6px rgba(20,20,60,.06),0 14px 34px rgba(20,20,60,.10);
  --r-card:18px; --r-ctl:12px; --r-sm:9px; --r-pill:999px;
  --display:"Plus Jakarta Sans","Segoe UI",system-ui,-apple-system,sans-serif;
  --text:"Plus Jakarta Sans","Segoe UI",system-ui,-apple-system,sans-serif;
  --data:"Plus Jakarta Sans","Segoe UI",system-ui,sans-serif;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --paper:#0C0C1E; --card:#16162E; --sunk:#111127;
    --ink:#EDEDF7; --body:#C9C9DD; --mute:#9D9DB8; --faint:#72728E;
    --rule:#2A2A48; --hair:#212140;
    --signal:#A9A9FF; --signal-soft:#1E1E4C; --signal-ink:#C3C3FF;
    --accent:#F29556; --accent-soft:#3A2414; --accent-ink:#F7B98E; --accent-rule:#5A3820;
    --gold:#F29556; --gold-soft:#3A2414; --gold-ink:#F7B98E; --gold-rule:#5A3820;
    --mastered:#4CC26A; --developing:#F09A55; --critical:#F06A6E;
    --mastered-bg:#12301B; --developing-bg:#35220F; --critical-bg:#3A1719; --mastered-rule:#1F4A2B;
    --rail:#07073A; --rail-hair:#1A1A5E; --rail-on:#1A1A5E;
    --shadow:0 1px 2px rgba(0,0,0,.34),0 8px 24px rgba(0,0,0,.26);
    --shadow-lift:0 2px 8px rgba(0,0,0,.4),0 18px 40px rgba(0,0,0,.34);
  }
}
:root[data-theme="dark"]{
  --paper:#0C0C1E; --card:#16162E; --sunk:#111127;
  --ink:#EDEDF7; --body:#C9C9DD; --mute:#9D9DB8; --faint:#72728E;
  --rule:#2A2A48; --hair:#212140;
  --signal:#A9A9FF; --signal-soft:#1E1E4C; --signal-ink:#C3C3FF;
  --accent:#F29556; --accent-soft:#3A2414; --accent-ink:#F7B98E; --accent-rule:#5A3820;
  --gold:#F29556; --gold-soft:#3A2414; --gold-ink:#F7B98E; --gold-rule:#5A3820;
  --mastered:#4CC26A; --developing:#F09A55; --critical:#F06A6E;
  --mastered-bg:#12301B; --developing-bg:#35220F; --critical-bg:#3A1719; --mastered-rule:#1F4A2B;
  --rail:#07073A; --rail-hair:#1A1A5E; --rail-on:#1A1A5E;
  --shadow:0 1px 2px rgba(0,0,0,.34),0 8px 24px rgba(0,0,0,.26);
  --shadow-lift:0 2px 8px rgba(0,0,0,.4),0 18px 40px rgba(0,0,0,.34);
}

/* ---------- shell: rail on a computer, tab bar on a phone ---------- */
.app-shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}
.app-rail{background:var(--rail);color:#fff;display:flex;flex-direction:column;gap:30px;
  padding:28px 20px 22px;position:sticky;top:0;height:100vh;overflow-y:auto}
.app-brand{padding:0 8px}
.app-brand .bt{font:800 18px/1.2 var(--display);letter-spacing:-.2px;color:#fff}
.app-brand .bs{font:500 12px/1.3 var(--display);color:var(--rail-dim);margin-top:4px}
.app-nav{display:flex;flex-direction:column;gap:4px}
.app-nav a{display:flex;align-items:center;gap:12px;padding:12px;border-radius:12px;text-decoration:none;
  font:600 15px/1.2 var(--display);color:var(--rail-ink)}
.app-nav a:hover{background:rgba(255,255,255,.07);color:#fff}
.app-nav a.on{background:var(--rail-on);color:#fff;font-weight:700}
.app-nav svg{flex:none}
.app-nav .nav-badge{font:700 11px/1 var(--display);color:#fff;background:rgba(255,255,255,.16);border-radius:999px;padding:4px 8px;white-space:nowrap}
/* The number on the Generator item is a credit balance; say so on screen, not only in a tooltip.
   "570 credits" does not fit beside the label in the rail, so it sits on its own line under the label
   (32px = the icon plus the gap). Items without a badge stay on one line. */
.app-nav .nav-badge::after{content:" credits"}
.app-nav a{flex-wrap:wrap;row-gap:6px}
.app-nav .nav-badge{margin-left:32px}
.app-acct{margin-top:auto;display:flex;align-items:center;gap:10px;padding:18px 8px 0;border-top:1px solid var(--rail-hair)}
.app-acct .ini{width:34px;height:34px;border-radius:999px;background:var(--accent);color:#fff;flex:none;
  display:grid;place-items:center;font:800 13px var(--display)}
.app-acct .nm{font:700 13px/1.3 var(--display);color:#fff;word-break:break-word}
.app-acct .ln{font:500 11px/1.4 var(--display);color:var(--rail-dim);margin-top:2px}
.app-acct .ln button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;text-decoration:none}
.app-acct .ln button:hover{color:#fff;text-decoration:underline}
/* On the Account page its link is the current place (the page sets aria-current). */
.app-acct .ln a[aria-current="page"]{color:#fff!important;font-weight:800;text-decoration:underline!important;text-decoration-color:var(--accent)!important;text-underline-offset:3px}
.acct-btn.on{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--signal)}
.app-main{min-width:0;display:flex;flex-direction:column}
.app-tabbar{display:none}
.app-phonehead{display:none}

@media (max-width:900px){
  .app-shell{grid-template-columns:minmax(0,1fr)}
  .app-rail{display:none}
  .app-main{padding-bottom:78px}
  .app-tabbar{display:grid;grid-template-columns:repeat(6,1fr);position:fixed;left:0;right:0;bottom:0;z-index:60;
    background:var(--card);border-top:1px solid var(--rule);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
  .app-tabbar a{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;text-decoration:none;
    font:600 11px var(--display);color:var(--mute)}
  .app-tabbar a.on{color:var(--signal-ink);font-weight:800}
  .app-phonehead{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px 0}
  .app-phonehead .pb{font:800 15px var(--display);color:var(--ink)}
  .app-phonehead .pb small{display:block;font:500 11px var(--display);color:var(--mute)}
}
.acct-btn{width:36px;height:36px;border-radius:999px;background:var(--accent);color:#fff;border:0;cursor:pointer;
  font:800 13px var(--display);display:grid;place-items:center;flex:none}
.acct-menu{position:fixed;right:12px;top:58px;z-index:90;background:var(--card);border:1px solid var(--rule);
  border-radius:14px;box-shadow:var(--shadow-lift);padding:12px;min-width:220px}
.acct-menu .who{font:700 13px var(--display);color:var(--ink)}
.acct-menu .em{font:500 12px var(--display);color:var(--mute);margin-bottom:8px;word-break:break-all}
.acct-menu button{display:block;width:100%;text-align:left;padding:9px 8px;border-radius:9px;border:0;background:none;
  font:600 14px var(--display);color:var(--ink);cursor:pointer}
.acct-menu button:hover{background:var(--sunk)}

/* ---------- shared controls in the new look ---------- */
.btn-cta{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:14px 22px;border-radius:14px;border:0;
  background:var(--accent);color:#fff;font:700 15px var(--display);text-decoration:none;cursor:pointer;
  box-shadow:0 6px 18px rgba(239,134,65,.32)}
.btn-cta:hover{filter:brightness(1.05)}
.btn-cta:disabled{opacity:.5;cursor:default}
.btn-navy{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 18px;border-radius:12px;border:0;
  background:#000066;color:#fff;font:700 14px var(--display);text-decoration:none;cursor:pointer}
.btn-navy:hover{background:#0F0F80}
.link-navy{font:700 14px var(--display);color:var(--signal-ink);text-decoration:none}
.link-navy:hover{text-decoration:underline}
.lbl{font:700 12px var(--display);letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}
.lbl.acc{color:var(--accent)}
/* ---------- a topic's pages: one header, three tabs ---------- */
.topic-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.topic-back{font:700 14px var(--display);color:var(--mute);text-decoration:none}
.topic-back:hover{color:var(--ink)}
.topic-tabs{display:flex;gap:6px;flex-wrap:wrap}
.topic-tabs a{font:700 14px var(--display);text-decoration:none;color:var(--mute);padding:8px 16px;border-radius:999px;border:1px solid transparent}
.topic-tabs a:hover{color:var(--ink)}
.topic-tabs a.on{background:var(--card);color:var(--ink);border-color:var(--rule);box-shadow:var(--shadow)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
