/* The HTML `hidden` attribute must always win. Author rules like `.acct-item{display:block}`
   otherwise override the browser's default `[hidden]{display:none}` (equal specificity, author
   beats UA), which silently showed the staff-only "Admin Dashboard" item to every member even
   though the JS had set hidden=true. This makes `hidden` authoritative site-wide. */
[hidden]{display:none!important}
:root{
  --cream:#F6F6E9; --paper:#fffdf6; --navy:#343F56; --navy-soft:#46536f;
  --red:#DC1D26; --ink:#222a3a; --muted:#6b7384; --line:#e4e3d4;
  --btn:#343F56; --login-glow:#ffffff;
  --shadow:0 2px 14px rgba(52,63,86,.10); --radius:14px;
  --ic-lock:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.9%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%224%22%20y%3D%2210.5%22%20width%3D%2216%22%20height%3D%2210.5%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M8%2010.5V7a4%204%200%200%201%208%200v3.5%22%2F%3E%3C%2Fsvg%3E");
}
/* Every inline line icon from bnc-icons.js. Stroke-only and currentColor, so
   an icon always matches the text it sits beside, in either theme. */
.bic{display:inline-block;vertical-align:-.17em;flex:none}

/* Keyboard focus is visible and identical everywhere. :focus-visible, not
   :focus, so clicking with a mouse never leaves a ring behind. Controls that
   already draw their own ring (the login and account inputs, the feedback
   drop) are not in this list and keep theirs. */
.navlink:focus-visible,.fchip:focus-visible,.lib-sort:focus-visible,.sess-lib:focus-visible,
.acct-item:focus-visible,.acct-btn:focus-visible,.notif-bell:focus-visible,.theme-toggle:focus-visible,
.cal-tab:focus-visible,.btn-ghost:focus-visible,.btn-primary:focus-visible{
  outline:2px solid var(--navy);outline-offset:2px}
/* The search field reads as focused as a whole, not just its bare input. */
.lib-search:focus-within{border-color:var(--navy)}

/* ---- admin dashboard: overview tiles, charts, collapsible sections ---- */
.adm-top{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.adm-range{display:inline-flex;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:var(--paper)}
.adm-range button{border:none;background:transparent;font:600 12.5px/1 'Inter',sans-serif;color:var(--muted);
  padding:8px 13px;cursor:pointer;transition:background .12s,color .12s}
.adm-range button+button{border-left:1px solid var(--line)}
.adm-range button:hover{color:var(--navy)}
/* --btn, not --navy: --navy INVERTS to near-white in dark theme, which made
   this white-on-white. --btn stays dark enough for white text in both. */
.adm-range button.on{background:var(--btn);color:#fff}
.adm-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin:20px 0 16px}
.adm-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius)}
.adm-tile{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:15px 16px 10px;display:flex;flex-direction:column;gap:2px;min-width:0}
.adm-tile-l{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.07em;
  font-size:10.5px;font-weight:700;color:var(--muted)}
.adm-tile-n{font-family:'Source Serif 4',serif;font-size:27px;font-weight:600;color:var(--navy);line-height:1.15}
.adm-tile-s{font-size:11.5px;color:var(--muted)}
.adm-tile.is-load .adm-tile-l,.adm-tile.is-load .adm-tile-n{background:var(--cream);border-radius:5px;color:transparent}
.adm-tile.is-load .adm-tile-l{width:60%;height:11px}
.adm-tile.is-load .adm-tile-n{width:45%;height:27px;margin-top:5px}
.adm-charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px;margin-bottom:22px}
.adm-chart{padding:15px 16px 12px}
.adm-chart-h{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.07em;
  font-size:10.5px;font-weight:700;color:var(--muted);margin-bottom:10px}
.adm-chart-sub{text-transform:none;letter-spacing:0;font-family:'Inter',sans-serif;font-weight:500;color:var(--muted)}
.adm-card.admin-sec{margin-bottom:12px}
.adm-card.admin-sec.open{border-color:var(--navy-soft)}

/* charts: the plot stretches, the stroke does not (vector-effect on the path) */
.ch{position:relative;width:100%}
.ch-svg{display:block;width:100%;height:100%;overflow:visible}
.ch-hit{position:absolute;inset:0}
.ch-col{position:absolute;top:0;bottom:0}
.ch-cross{position:absolute;top:0;bottom:0;width:1px;background:var(--line);pointer-events:none}
.ch-dot{position:absolute;width:7px;height:7px;margin:-3.5px 0 0 -3.5px;border-radius:50%;
  background:var(--paper);border:2px solid var(--navy-soft);pointer-events:none}
.ch-tip{position:absolute;top:-4px;transform:translate(-50%,-100%);white-space:nowrap;pointer-events:none;
  background:var(--navy);color:#fff;font:600 11.5px/1 'Inter',sans-serif;padding:6px 9px;border-radius:6px}
[data-theme=dark] .ch-tip{background:#0f1420}
.ch-empty{font-size:12.5px;color:var(--muted);padding:14px 0}
@media (max-width:600px){
  .adm-tiles{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
  .adm-charts{grid-template-columns:1fr}
  .adm-tile-n{font-size:23px}
}

/* e-delivery consent: a real checkbox, not a styled div, so it is keyboard
   reachable and screen-reader announced like any other consent. */
.ref-consent{display:flex;gap:11px;align-items:flex-start;margin:16px 0 18px;
  padding:15px 16px;border:1px solid var(--line);border-radius:11px;background:var(--cream);
  font-size:14px;line-height:1.55;color:var(--ink);cursor:pointer}
.ref-consent input{width:18px;height:18px;flex:none;margin-top:1px;accent-color:var(--navy);cursor:pointer}
.ref-consent a{color:var(--red)}
.ref-consent:has(input:focus-visible){outline:2px solid var(--navy);outline-offset:2px}
.ref-consent-err{margin-top:10px;font-size:13.5px;color:var(--red)}

/* ---- command palette (Cmd/Ctrl+K, or the magnifier in the top bar) ---- */
/* 38px to match the account and notification buttons beside it. */
.pal-btn{width:38px;height:38px;flex:none;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line);background:var(--paper);color:var(--navy-soft);border-radius:50%;cursor:pointer;
  transition:border-color .12s,color .12s}
.pal-btn:hover{border-color:var(--navy-soft);color:var(--navy)}
.pal{position:fixed;inset:0;z-index:200;background:rgba(20,26,40,.44);
  display:flex;align-items:flex-start;justify-content:center;padding:12vh 16px 16px}
[data-theme=dark] .pal{background:rgba(6,9,16,.62)}
.pal-box{width:min(620px,100%);max-height:70vh;display:flex;flex-direction:column;overflow:hidden;
  background:var(--paper);border:1px solid var(--line);border-radius:15px;box-shadow:0 24px 70px rgba(0,0,0,.4)}
.pal-top{display:flex;align-items:center;gap:11px;padding:14px 17px;border-bottom:1px solid var(--line)}
.pal-top-ic{display:flex;color:var(--muted);flex:none}
/* phone only: desktop backs out with Escape or a click on the backdrop, neither of
   which exists once the box goes full-screen */
.pal-close{display:none;align-items:center;justify-content:center;flex:none;
  background:none;border:none;color:var(--muted);cursor:pointer;padding:6px;margin:-6px -6px -6px 0;border-radius:8px}
.pal-close:hover{color:var(--navy)}
.pal-input{flex:1;min-width:0;border:none;background:transparent;outline:none;
  font-family:inherit;font-size:16px;color:var(--ink)}
.pal-input::placeholder{color:var(--muted)}
.pal-list{list-style:none;margin:0;padding:6px;overflow-y:auto}
.pal-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:9px;cursor:pointer}
.pal-item.on{background:var(--cream)}
.pal-ic{display:flex;color:var(--muted);flex:none}
.pal-item.on .pal-ic{color:var(--red)}
.pal-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.pal-l{font-size:14.5px;font-weight:600;color:var(--navy);line-height:1.25;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pal-s{font-size:12px;color:var(--muted);line-height:1.2}
.pal-kind{flex:none;font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.07em;
  font-size:10.5px;font-weight:700;color:var(--muted);border:1px solid var(--line);border-radius:20px;padding:2px 8px}
.pal-empty{padding:22px 14px;text-align:center;font-size:14px;color:var(--muted)}
@media (max-width:600px){
  /* Full-screen on a phone, so the keyboard has the whole sheet to work with. */
  .pal{padding:0}
  .pal-box{width:100%;max-height:100%;height:100%;border:none;border-radius:0}
  .pal-top{padding:15px 16px}
  .pal-close{display:flex;padding:9px;margin:-9px -9px -9px 0}   /* comfortable tap target */
  .pal-list{padding:6px 6px calc(16px + env(safe-area-inset-bottom))}
}
html[data-theme="dark"]{
  --cream:#1d2331; --paper:#28303f; --navy:#eef1f7; --navy-soft:#aeb7cc;
  --red:#DC1D26; --ink:#d4d9e3; --muted:#838ca3; --line:#384256;
  --btn:#46536f; --login-glow:#28303f;
  --shadow:0 2px 16px rgba(0,0,0,.45);
}
html,body{transition:background-color .2s ease}
.theme-toggle{position:fixed;bottom:18px;right:18px;z-index:60;width:42px;height:42px;border-radius:50%;
  border:1px solid var(--line);background:var(--paper);color:var(--navy);font-size:18px;cursor:pointer;
  box-shadow:var(--shadow);display:flex;align-items:center;justify-content:center;transition:transform .12s,background .2s}
.theme-toggle:hover{transform:scale(1.08)}
*{box-sizing:border-box}
html,body{margin:0}
/* No horizontal scrollbar, ever: 100vw full-bleed elements (.cls-sticky::before)
   are a scrollbar-width too wide when classic scrollbars are shown (macOS with a
   mouse). clip - not hidden - so position:sticky keeps working. */
html,body{overflow-x:clip}
body{font-family:'Inter',system-ui,sans-serif;background:var(--cream);color:var(--ink);
  -webkit-font-smoothing:antialiased;text-wrap:pretty}
a{color:var(--red);text-decoration:none}
a:hover{text-decoration:underline}

/* ---------- login ---------- */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;
  background:radial-gradient(1200px 600px at 50% -10%, var(--login-glow) 0%, var(--cream) 60%)}
.login-card{background:var(--paper);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);
  width:100%;max-width:400px;padding:38px 34px;text-align:center}
.login-logo{width:230px;max-width:80%;margin:0 auto 18px;display:block}
.login-card h1{font-family:'Source Serif 4',serif;color:var(--navy);font-size:24px;margin:6px 0 2px}
.login-sub{color:var(--muted);font-size:13.5px;margin:0 0 22px}
.login-card label{display:block;text-align:left;font-size:11px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--navy-soft);margin:14px 0 5px}
.login-card input{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:10px;
  font-size:15px;background:#fff;color:#222a3a}
.login-card input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(52,63,86,.12)}
.btn-primary{width:100%;margin-top:22px;background:var(--red);color:#fff;border:none;border-radius:10px;
  padding:12px;font-size:15px;font-weight:700;cursor:pointer;transition:filter .12s}
.btn-primary:hover{filter:brightness(1.06)}
.login-note{color:var(--muted);font-size:11.5px;margin:18px 0 0;line-height:1.5}
html[data-theme="dark"] .login-sub,
html[data-theme="dark"] .login-note{color:var(--navy-soft)}

/* ---------- topbar ---------- */
.topbar{background:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}
.topbar-in{max-width:1040px;margin:0 auto;display:flex;align-items:center;gap:14px;padding:13px 22px}
.topbar-logo{height:30px;cursor:pointer}
.spacer{flex:1}
.who{color:var(--muted);font-size:13px}
.btn-ghost{background:transparent;border:1px solid var(--line);border-radius:9px;padding:7px 13px;
  font-size:13px;font-weight:600;color:var(--navy);cursor:pointer}
.btn-ghost:hover{background:var(--cream)}
main{max-width:1040px;margin:0 auto;padding:26px 22px 60px}
.foot{text-align:center;color:var(--muted);font-size:11.5px;padding:26px;border-top:1px solid var(--line)}
.foot .terms-link{color:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.foot .terms-link:hover{color:var(--navy)}

/* ---------- library ---------- */
.lib-h{font-family:'Source Serif 4',serif;color:var(--navy);font-size:26px;margin:0}
.lib-sub{color:var(--muted);font-size:14px;margin:0 0 26px}
.series-h{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.12em;
  font-size:14px;font-weight:700;color:var(--navy);margin:26px 0 12px;padding-bottom:6px;border-bottom:2px solid var(--line)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
  cursor:pointer;transition:transform .12s,box-shadow .12s,border-color .12s;display:flex;flex-direction:column}
.card:hover{transform:translateY(-2px);border-color:var(--navy-soft);box-shadow:0 8px 22px rgba(52,63,86,.14)}
.card-tile{background:linear-gradient(135deg,#343F56,#46536f);padding:30px 22px 22px;display:flex;
  flex-direction:column;align-items:center;gap:16px;text-align:center;position:relative}
.card-num{position:absolute;top:11px;left:11px;min-width:26px;height:26px;padding:0 7px;border-radius:999px;
  display:flex;align-items:center;justify-content:center;font-family:'Roboto Condensed',sans-serif;
  font-weight:700;font-size:14px;color:#F6F6E9;background:rgba(246,246,233,.12);border:1px solid rgba(246,246,233,.34)}
/* CE-earned check: mirrors .card-num exactly (26x26, 11px from its corner) on the right. */
.card-done{position:absolute;top:11px;right:11px;width:26px;height:26px;border-radius:999px;z-index:5;
  display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;line-height:1;
  color:#fff;background:#2f9e63;box-shadow:0 1px 3px rgba(0,0,0,.28)}
.card-logo{width:74%;max-width:232px;height:auto}
.card-series{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.1em;
  font-size:12px;font-weight:700;color:rgba(246,246,233,.86)}
.card-chip{background:#F6F6E9;color:#343F56;font-size:13.5px;font-weight:600;border-radius:7px;padding:9px 13px;
  width:100%;line-height:1.3;text-wrap:balance}
.card-body{padding:15px 17px 17px;display:flex;flex-direction:column;gap:7px;flex:1}
.card-title{font-family:'Source Serif 4',serif;font-size:18px;color:var(--navy);line-height:1.22;
  min-height:2.44em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-wrap:balance}
.card-sub{font-size:13px;color:var(--muted)}
.card-tags{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px}
.pill.ce{display:inline-flex;align-items:center;gap:5px}
.irs-eagle{display:inline-block;width:15px;height:13px;flex-shrink:0;background-color:currentColor;
  -webkit-mask:url(assets/eagle-mask.png) center/contain no-repeat;mask:url(assets/eagle-mask.png) center/contain no-repeat}
.card-bar{position:relative;height:24px;border-radius:20px;background:var(--line);overflow:hidden;margin-top:auto}
.card-bar-fill{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,#2f9e63,#34c178);
  border-radius:20px;transition:width .35s ease}
.card-bar-lbl{position:absolute;left:13px;top:50%;transform:translateY(-50%);font-family:'Roboto Condensed',sans-serif;
  font-weight:700;font-size:12px;color:#fff;z-index:2;letter-spacing:.03em}
.card-bar.zero .card-bar-lbl{color:var(--muted)}
.card-match{margin-top:9px;padding-top:9px;border-top:1px solid var(--line);font-size:11.5px;color:var(--muted);line-height:1.55}
.cm-field{display:inline-block;text-transform:uppercase;font-size:9.5px;font-weight:700;letter-spacing:.05em;
  color:var(--red);margin-right:5px}

/* library search + filters */
/* Title on the left, the two icons anchoring the right, a hairline under the whole
   row, and the panel opening full-width beneath it (Bobby picked this 2026-07-27).
   Both rows wrap, so a long active-series pill drops to its own line on a phone
   instead of pushing the page sideways. */
.lib-head{margin-bottom:26px}
.lib-headrow{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  padding-bottom:14px;border-bottom:1px solid var(--line)}
.lib-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end;margin-left:auto}
.lib-search{flex:1;min-width:250px;display:flex;align-items:center;gap:9px;background:var(--paper);
  border:1px solid var(--line);border-radius:11px;padding:10px 14px;transition:border-color .12s}
.lib-search svg{width:18px;height:18px;fill:var(--muted);flex-shrink:0}
.lib-search input{flex:1;border:none;background:transparent;font-size:14.5px;color:var(--ink);outline:none}
.lib-search input::placeholder{color:var(--muted)}
/* collapsed: just the magnifier icon until clicked */
.lib-search.collapsed{flex:0 0 auto;min-width:0;width:auto;padding:10px 11px;gap:0;cursor:pointer}
.lib-search.collapsed input{width:0;flex:0;padding:0;pointer-events:none}
.lib-search.collapsed svg{cursor:pointer}
.lib-filters,.lib-sorts,.lib-upcoming{display:flex;gap:7px;flex-wrap:wrap}
/* The library tools are two icons at every width — search and filter — and the filter
   icon opens one panel holding the series filter, the sort order, and the upcoming
   block's Show/Hide. Nothing else sits on the page by default (Bobby, 2026-07-27:
   same treatment on desktop as on the phone). */
.lib-toolbtn{display:flex;align-items:center;justify-content:center;flex:0 0 auto;cursor:pointer;
  background:var(--paper);border:1px solid var(--line);border-radius:11px;padding:10px 11px;
  transition:background .12s,border-color .12s}
.lib-toolbtn:hover{border-color:var(--navy-soft)}
.lib-toolbtn svg{width:18px;height:18px;fill:var(--muted);display:block}
.lib-head[data-open="1"] .lib-toolbtn{background:var(--navy);border-color:var(--navy)}
.lib-head[data-open="1"] .lib-toolbtn svg{fill:#F6F6E9}
html[data-theme="dark"] .lib-head[data-open="1"] .lib-toolbtn svg{fill:var(--cream)}
.lib-panel{display:none;flex-direction:column;gap:13px;padding-top:16px}
.lib-head[data-open="1"] .lib-panel{display:flex}
.lib-panel-g{display:flex;flex-direction:column;gap:8px}
.lib-panel-l{display:block;font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;
  letter-spacing:.09em;font-size:11px;font-weight:700;color:var(--muted)}
.lib-head:not([data-open="1"]) .lib-activef.on{display:inline-flex}
.lib-activef{display:none;align-items:center;flex:0 1 auto;min-width:0;
  background:var(--navy);border:1px solid var(--navy);border-radius:20px;color:#F6F6E9}
html[data-theme="dark"] .lib-activef{color:var(--cream)}
.lib-activef button{background:none;border:none;color:inherit;cursor:pointer;
  font-family:'Inter',sans-serif;font-size:13px;font-weight:600}
.lib-activef-name{padding:8px 3px 8px 13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lib-activef-x{padding:9px 13px 9px 8px;font-size:15px;line-height:1}
.fchip{background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:8px 14px;font-size:13px;
  font-weight:600;color:var(--navy-soft);cursor:pointer;transition:background .12s,border-color .12s,color .12s}
.fchip:hover{border-color:var(--navy-soft)}
.fchip.on{background:var(--navy);border-color:var(--navy);color:#F6F6E9}
html[data-theme="dark"] .fchip.on{color:var(--cream)}
.lib-resultnote{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.08em;
  font-size:12px;font-weight:700;color:var(--navy-soft);margin-bottom:14px}
.sh-row{display:flex;align-items:center}
.sh-hide{margin-left:auto;background:transparent;border:1px solid var(--line);border-radius:8px;
  padding:4px 12px;font-family:'Inter',sans-serif;font-size:11.5px;font-weight:600;letter-spacing:0;text-transform:none;
  color:var(--navy-soft);cursor:pointer;transition:background .12s,border-color .12s}
.sh-hide:hover{background:var(--cream);border-color:var(--navy-soft);color:var(--navy)}
.pill{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;border-radius:20px;
  padding:3px 9px;background:rgba(220,29,38,.09);color:var(--red)}
.pill.ce{background:rgba(47,111,79,.12);color:#2f6f4f}
html[data-theme="dark"] .pill.ce{background:rgba(126,224,171,.18);color:#7ee0ab}
.pill.upd{background:rgba(202,138,4,.16);color:#b07d12}
html[data-theme="dark"] .pill.upd{color:#e3b248}
.card-upd{border-left:3px solid rgba(202,138,4,.55)}
.pill.rev{background:rgba(70,110,200,.16);color:#4f72c8}
html[data-theme="dark"] .pill.rev{color:#7fa0e6}
.pill.guest{background:rgba(150,90,200,.16);color:#8b54c4}
html[data-theme="dark"] .pill.guest{color:#bd8fe0}
.pill.bonus{background:rgba(52,63,86,.12);color:var(--navy-soft)}
.pill.new{background:rgba(220,29,38,.12);color:#DC1D26}
html[data-theme="dark"] .pill.new{background:rgba(255,138,143,.16);color:#ff8a8f}
html[data-theme="dark"] .pill.bonus{color:#aeb7cc}
/* Start Here welcome banner */
.start-here{background:linear-gradient(135deg,#343F56,#46536f);border-radius:var(--radius);
  padding:20px 24px;margin-bottom:26px;cursor:pointer;box-shadow:var(--shadow);
  transition:transform .12s,box-shadow .12s}
.start-here:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(0,0,0,.3)}
.sh-tag{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.09em;font-size:11px;
  font-weight:700;color:#DC1D26;background:#F6F6E9;display:inline-block;padding:3px 11px;border-radius:20px;margin-bottom:9px}
.sh-title{font-family:'Source Serif 4',serif;font-size:23px;color:#F6F6E9;margin-bottom:3px}
.sh-sub{font-size:13px;color:rgba(246,246,233,.72)}

/* ---------- class page ---------- */
.back{display:inline-flex;align-items:center;gap:6px;color:var(--navy-soft);font-size:13px;font-weight:600;
  cursor:pointer;margin-bottom:14px}
.back:hover{color:var(--navy)}
.cls-eyebrow{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.12em;
  font-size:12px;font-weight:700;color:var(--navy-soft);margin-bottom:4px}
.cls-title{font-family:'Source Serif 4',serif;color:var(--navy);font-size:30px;margin:0 0 20px;line-height:1.15}
/* pinned class header + progress bar. top must match the real topbar height
   (58px) so nothing peeks through the seam; sits below the topbar (z-index). */
.cls-sticky{position:sticky;top:57px;z-index:6;padding:24px 0 13px;margin-bottom:18px}
/* full-bleed opaque backdrop: spans the WHOLE viewport width (not just the
   1040px content column) and caps the gap above (to the topbar) and below
   (the margin), so a scrolling card and its box-shadow are fully hidden
   behind the pinned header on every side and it blends into the page bg */
.cls-sticky::before{content:"";position:absolute;top:-10px;bottom:-18px;left:50%;margin-left:-50vw;width:100vw;background:var(--cream);z-index:-1}
.cls-sticky .cls-title{margin:0 0 12px}
.cls-title-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 12px}
.cls-title-row .cls-title,.cls-sticky .cls-title-row .cls-title{margin:0}
.cls-title-row .draft-pill{margin:0}
.cls-sticky .prog{margin:0}
/* search-term highlighting */
mark.hl{background:#ffe27a;color:#222a3a;border-radius:3px;padding:0 2px;box-shadow:0 0 0 1px rgba(220,29,38,.25)}
html[data-theme="dark"] mark.hl,html[data-theme="dark"] .tr-count{background:#e3b733;color:#1d2331}
.hl-banner{margin-top:10px;font-size:12.5px;font-weight:600;color:var(--navy-soft);display:flex;align-items:center;gap:8px}
.hl-clear{background:transparent;border:1px solid var(--line);border-radius:7px;padding:3px 10px;font-size:12px;
  font-weight:600;color:var(--navy);cursor:pointer}
.hl-clear:hover{background:var(--cream)}
/* single-column sectioned layout */
.sec{margin-top:38px;padding-top:30px;border-top:1px solid var(--line)}
.sec-h{display:flex;align-items:center;gap:9px;font-family:'Source Serif 4',serif;font-weight:600;
  font-size:22px;color:var(--navy);margin:0 0 16px}
.sec-opt{font-family:'Inter',sans-serif;font-size:11px;font-weight:600;color:var(--muted);text-transform:none;
  letter-spacing:0;background:var(--cream);border:1px solid var(--line);border-radius:20px;padding:3px 10px}
.vactions{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:4px 0 20px}
.panel.reslist{padding:8px 18px}
.cls-video{margin-top:6px}
/* Quick-access study materials under the video (always available, even after CE) */
.vstudy{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0 0}
.vstudy+.panel{margin-top:18px}
.study-btn{display:inline-flex;align-items:center;gap:8px;background:var(--paper);border:1.5px solid var(--line);
  border-radius:10px;padding:10px 15px;font:inherit;font-size:14px;font-weight:600;color:var(--navy);cursor:pointer;
  transition:border-color .12s,background .12s}
.study-btn:hover{border-color:var(--navy-soft);background:var(--cream)}
.study-btn svg{width:19px;height:19px;color:var(--navy);flex-shrink:0}
.vwrap{position:relative;width:100%;aspect-ratio:16/9;background:#0c1020;border-radius:12px;overflow:hidden;
  box-shadow:var(--shadow);margin-bottom:8px}
.vwrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.vposter{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.vempty{display:flex;align-items:center;justify-content:center;text-align:center;padding:24px;
  background:repeating-linear-gradient(45deg,#0c1020,#0c1020 12px,#11162a 12px,#11162a 24px)}
.vempty-big{color:#e6e9f0;font-size:17px;font-weight:600;margin-bottom:6px}
.vempty-sub{color:#9aa2b6;font-size:13px;font-style:italic;max-width:440px;margin:0 auto;line-height:1.5}
.vplay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:82px;height:56px;border-radius:14px;
  background:rgba(52,63,86,.78);border:none;cursor:pointer;z-index:3;
  display:flex;align-items:center;justify-content:center;transition:background .15s,transform .15s}
.vplay:hover{background:rgba(246,246,233,.62);transform:translate(-50%,-50%) scale(1.05)}
.vplay svg{width:32px;height:32px;fill:#F6F6E9;margin-left:3px;transition:fill .15s}
.vplay:hover svg{fill:#343F56}
.vplay.hide{display:none}
.vlabel{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.09em;font-size:13.5px;
  font-weight:700;color:var(--navy-soft);margin:18px 0 8px}
.qa-section{margin-top:28px;padding-top:24px;border-top:1px solid var(--line)}
.qa-section .vlabel{margin-top:0}
.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;
  margin-bottom:16px}
.panel h3{font-family:'Source Serif 4',serif;color:var(--navy);font-size:18px;margin:0 0 10px}
.panel p{font-size:14.5px;line-height:1.6;margin:0 0 10px;text-align:justify}
.panel ul{margin:0;padding-left:20px}
.panel li{font-size:14px;line-height:1.55;margin:0 0 6px;text-align:justify}
.admin-h4{font-family:'Source Serif 4',serif;color:var(--navy);font-size:15.5px;margin:20px 0 6px}
/* collapsible platform-access sections */
.admin-sec{border-top:1px solid var(--line)}
.admin-sec:first-child{border-top:none}

/* member activity: last active + who's online (admin) */
.ma-online{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:0 0 14px;margin:0 0 6px;border-bottom:1px solid var(--line)}
.ma-online-n{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--navy)}
.ma-live-dot{width:9px;height:9px;border-radius:50%;background:#2e9e4f;box-shadow:0 0 0 3px rgba(46,158,79,.18);flex:none}
.ma-chips{display:flex;flex-wrap:wrap;gap:7px}
.ma-chip{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:3px 11px 3px 3px}
.ma-chip-av{width:20px;height:20px;border-radius:50%;background:var(--navy);color:var(--paper);font-size:9.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.ma-none{font-size:13.5px;color:var(--muted)}
.ma-list{display:flex;flex-direction:column}
.ma-row{display:flex;align-items:center;gap:13px;padding:11px 0;border-bottom:1px solid var(--line)}
.ma-row:last-child{border-bottom:0}
.ma-av{flex:none;width:36px;height:36px;border-radius:50%;background:var(--navy);color:var(--paper);font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;position:relative}
.ma-av.on::after{content:"";position:absolute;right:-1px;bottom:-1px;width:11px;height:11px;border-radius:50%;background:#2e9e4f;border:2px solid var(--paper)}
.ma-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ma-em{font-size:14px;color:var(--ink);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ma-since{font-size:12px;color:var(--muted)}
.ma-act{flex:none;font-size:12.5px;color:var(--muted);white-space:nowrap;text-align:right}
.ma-act.on{color:#2e9e4f;font-weight:700}
.admin-sec-head{display:flex;align-items:center;gap:9px;width:100%;text-align:left;background:none;border:none;cursor:pointer;padding:13px 2px;font-family:'Source Serif 4',serif;color:var(--navy);font-size:15.5px}
.admin-caret{color:var(--navy-soft);transition:transform .15s ease;flex-shrink:0}
.admin-sec-head.open .admin-caret{transform:rotate(90deg)}
.admin-sec-title{font-weight:600}
.admin-sec-n{margin-left:auto;font-family:'Inter',system-ui,sans-serif;font-size:12px;font-weight:600;color:var(--navy-soft);background:var(--cream);border-radius:20px;padding:2px 10px;min-width:22px;text-align:center}
.admin-sec-body{padding:0 0 14px 22px}
.admin-sec-body .admin-emails{margin-top:0}
.admin-emails{list-style:none;margin:6px 0 4px;padding:0;columns:2;column-gap:26px}
.admin-emails li{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;color:var(--navy-soft);padding:3px 0;margin:0;break-inside:avoid}
.admin-exp{font-family:'Inter',system-ui,sans-serif;font-size:11px;color:var(--navy-soft);opacity:.7;margin-left:6px}
.admin-exp-past{color:var(--red)}
.seat-admin{border:1px solid var(--line,#e2e3ea);border-radius:10px;padding:11px 14px;margin:0 0 10px}
.seat-admin-master{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;color:var(--navy);font-weight:600;margin-bottom:5px}
.seat-admin-master .admin-exp{font-weight:400}
.seat-admin-list{columns:1;margin:2px 0 0}
.seat-admin-list li{padding:2px 0}
.seat-admin-none{margin:2px 0 0;font-size:12px;color:var(--navy-soft)}
@media(max-width:560px){.admin-emails{columns:1}}
/* ---- member feedback: submit form + admin inbox ---- */
.fb-form{display:flex;flex-direction:column;gap:12px}
.fb-msg{width:100%;box-sizing:border-box;font:inherit;font-size:14.5px;line-height:1.5;color:var(--navy);background:var(--paper,#fff);border:1px solid var(--line,#d9dbe4);border-radius:9px;padding:10px 12px;resize:vertical;min-height:96px}
.fb-msg:focus{outline:none;border-color:var(--navy)}
.fb-file-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fb-drop{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;text-align:center;
  border:1.5px dashed var(--line,#d9dbe4);border-radius:10px;padding:15px 18px;cursor:pointer;
  color:var(--navy-soft);font-weight:600;font-size:14px;background:var(--paper,#fff);
  transition:border-color .15s,background .15s,color .15s}
.fb-drop:hover{border-color:var(--navy-soft)}
.fb-drop:focus-visible{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(52,63,86,.15)}
.fb-drop.drag{border-color:var(--red);background:rgba(220,29,38,.05);color:var(--navy)}
.fb-drop.has-file{border-style:solid;border-color:#2f9e63}
.fb-drop-ic{width:20px;height:20px;fill:currentColor;flex:none}
.fb-shot-name{font-size:12.5px;color:var(--navy-soft);word-break:break-all}
.fb-actions{display:flex;align-items:center;gap:12px}
.fb-status{font-size:12.5px}
.fb-thanks{padding:8px 2px 4px}
.fb-thanks h3{margin:0 0 6px;font-family:'Source Serif 4',serif;color:var(--navy);font-size:19px}
.fb-thanks p{margin:0;color:var(--navy-soft);font-size:14px;line-height:1.55}
.fb-count{font-family:'Inter',system-ui,sans-serif;font-size:11.5px;font-weight:600;color:var(--red);background:rgba(220,29,38,.1);border-radius:20px;padding:2px 9px;margin-left:8px;vertical-align:middle}
.fb-item{border:1px solid var(--line,#e2e3ea);border-radius:11px;padding:13px 15px;margin:0 0 12px;background:var(--paper,#fff)}
.fb-status{font-family:'Roboto Condensed',sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  font-size:10px;padding:2px 8px;border-radius:20px}
.fb-status-open{color:#c98a10;background:rgba(201,138,16,.12)}
.fb-status-replied{color:#2f9e63;background:rgba(47,158,99,.12)}
.fb-status-resolved{color:var(--navy-soft);background:var(--cream)}
.fb-reply{margin:10px 0 0;padding:10px 12px;border-left:3px solid #2f9e63;background:rgba(47,158,99,.06);
  border-radius:0 8px 8px 0;font-size:13.5px;line-height:1.5;color:var(--navy)}
.fb-reply-lbl{display:block;font-weight:700;color:#2f9e63;font-size:12px;margin-bottom:4px}
.fb-reply-box{display:flex;gap:8px;align-items:flex-end;margin-top:10px}
.fb-reply-input{flex:1;border:1px solid var(--line);border-radius:9px;padding:8px 11px;font:inherit;font-size:14px;
  color:var(--navy);background:var(--cream);resize:vertical;min-height:40px}
.fb-reply-input:focus{outline:none;border-color:var(--navy-soft)}
.fb-send{flex-shrink:0;background:var(--red);color:#fff;border:0;border-radius:9px;padding:9px 16px;font:inherit;
  font-size:13.5px;font-weight:700;cursor:pointer;white-space:nowrap}
.fb-send:hover{background:#b8171f}
.fb-send:disabled{opacity:.6;cursor:default}
.fb-item.fb-done{opacity:.6}
.fb-item-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:7px}
.fb-from{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;color:var(--navy);font-weight:600}
.fb-time{font-size:11.5px;color:var(--navy-soft)}
.fb-resolve{margin-left:auto;font:inherit;font-size:12px;font-weight:600;color:var(--navy);background:none;border:1px solid var(--line,#d9dbe4);border-radius:7px;padding:4px 11px;cursor:pointer}
.fb-resolve:hover{border-color:var(--navy)}
.fb-body{font-size:14px;line-height:1.55;color:var(--navy);white-space:normal;margin-bottom:8px}
.fb-shot-link{display:inline-block;max-width:260px;border:1px solid var(--line,#e2e3ea);border-radius:8px;overflow:hidden}
.fb-shot-link img{display:block;max-width:100%;height:auto}
.fb-meta{margin-top:8px;font-size:11px;color:var(--navy-soft);word-break:break-all;opacity:.75}
@media(max-width:560px){.fb-shot-link{max-width:100%}}
.cebar{display:inline-flex;align-items:center;gap:8px;background:rgba(47,111,79,.12);color:#2f6f4f;
  font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;border-radius:8px;padding:8px 12px;margin:0}
html[data-theme="dark"] .cebar{background:rgba(126,224,171,.18);color:#7ee0ab}
.impl-btn{display:inline-flex;align-items:center;gap:8px;background:var(--paper);border:1px solid var(--line);
  border-radius:9px;padding:9px 14px;font-size:13.5px;font-weight:600;color:var(--navy);cursor:pointer;
  margin:0;transition:background .12s,border-color .12s}
.impl-btn:hover{background:var(--cream);border-color:var(--navy-soft)}
.impl-btn svg{width:15px;height:15px;fill:var(--red)}
.tr-link{display:inline-flex;align-items:center;gap:8px;background:var(--paper);border:1px solid var(--line);
  border-radius:9px;padding:9px 14px;font-size:13.5px;font-weight:600;color:var(--navy);cursor:pointer;
  margin:0;transition:background .12s,border-color .12s}
.tr-link:hover{background:var(--cream);border-color:var(--navy-soft)}
.tr-link svg{width:15px;height:15px;fill:var(--red)}
.impl-time{font-weight:700;color:var(--navy-soft)}
/* Phones: keep the CE tag + Forms + Transcript on one row (drop the timestamp, tighten). Placed
   AFTER the base .cebar/.impl-btn/.tr-link so these overrides actually win the cascade. */
@media(max-width:480px){
  .vactions{gap:6px;flex-wrap:nowrap}
  .cebar,.impl-btn,.tr-link{padding:7px 9px;font-size:12px;gap:5px;white-space:nowrap}
  .cebar{letter-spacing:0}
  .impl-btn svg,.tr-link svg{width:13px;height:13px}
  .impl-time{display:none}
}
.tr-count{display:inline-flex;align-items:center;background:#ffe27a;color:#222a3a;font-size:11px;
  font-weight:700;letter-spacing:.02em;border-radius:999px;padding:2px 8px;margin-left:2px;
  box-shadow:0 0 0 1px rgba(220,29,38,.25)}
.impl-time{color:var(--muted);font-weight:500}
/* sidebar */
.side .panel{padding:15px 16px}
.side h4{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.08em;font-size:11px;
  font-weight:700;color:var(--navy-soft);margin:0 0 10px}
.res{display:flex;align-items:center;gap:9px;padding:8px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.res:last-child{border-bottom:none}
.res .ricon{width:22px;height:22px;border-radius:5px;background:var(--red);color:#fff;font-size:8px;font-weight:800;
  display:flex;align-items:center;justify-content:center;flex-shrink:0}
.res a{flex:1;color:var(--navy);font-weight:500}
.res.off{opacity:.4}
.res.off .ricon{background:var(--muted)}
/* No border-top here: the preceding item's border-bottom is the divider, so a top border
   would double it. Just space the header away from the group above. */
.cs-group{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.07em;
  font-size:10.5px;font-weight:700;color:var(--navy-soft);margin:16px 0 4px;padding-top:6px}
.cs-group:first-child{margin-top:0;padding-top:2px}
/* unified resource cards (Loom walkthroughs, downloadable PDFs, sheet links) */
.rcards{display:flex;flex-direction:column;gap:16px}
.rcard{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:16px 18px}
.rcard-h{display:flex;align-items:center;gap:9px;margin-bottom:12px}
.rcard-ic{display:flex;align-items:center;line-height:1;flex-shrink:0;color:var(--navy-soft)}
.rcard-t{font-family:'Source Serif 4',serif;font-size:17px;font-weight:600;color:var(--navy);line-height:1.2}
.loom-wrap{position:relative;width:100%;aspect-ratio:16/9;background:#0c1020;border-radius:12px;overflow:hidden;margin-bottom:12px}
.loom-wrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.rcard-desc{font-size:14px;color:var(--ink);line-height:1.55}
.rcard-desc p{margin:0 0 8px}
.rcard-desc p:last-child{margin-bottom:0}
.rcard-desc ul{margin:6px 0 8px;padding-left:20px}
.rcard-res{margin-top:12px;padding:2px 0 0}
.rcard-disc{margin-top:14px;padding-top:13px;border-top:1px solid var(--line);
  font-size:12.5px;font-style:italic;color:var(--muted);line-height:1.5;text-align:justify}
.rcard-disc-lbl{font-weight:700;font-style:normal;color:var(--navy-soft);letter-spacing:.02em}
/* literal navy (not var(--navy), which inverts to near-white in dark mode and
   hides the white arrow); white arrow stays visible in both themes */
.res .ricon.link{background:#343F56;color:#fff;font-size:12px}
.res .ricon.doc{background:#4a73d6}
.rcard-img{display:block;width:100%;padding:0;border:1px solid var(--line);background:#0c1020;
  border-radius:12px;overflow:hidden;cursor:zoom-in;margin-bottom:12px;line-height:0}
.rcard-img img{display:block;width:100%;height:auto;min-height:60px}
.rcard-img + .rcard-img{margin-top:-2px}
.res-ext{flex:1;color:var(--navy);font-weight:600}
.res-ext:hover{text-decoration:underline}
.srcs .src-row{display:block;padding:8px 0;border-bottom:1px dashed var(--line)}
.srcs .src-row:last-child{border-bottom:none}
.src-cite{display:block;font-size:14.5px;color:var(--red);font-weight:700;line-height:1.3;letter-spacing:.01em}
.src-name{display:block;font-size:12.5px;font-weight:500;color:var(--navy-soft);line-height:1.4;margin-top:3px}
.srcs .src-row:hover .src-cite{text-decoration:underline}
.srcs button.src-row{width:100%;text-align:left;background:none;border-top:none;border-left:none;border-right:none;font:inherit;cursor:pointer}
.exam-btn{display:inline-flex;align-items:center;background:var(--red);color:#fff;border-radius:10px;
  padding:12px 26px;font-weight:700;font-size:14px;margin-top:14px}
.exam-btn:hover{filter:brightness(1.07);text-decoration:none}

/* progress tracking */
.prog{display:flex;align-items:center;gap:11px;margin:0 0 26px;padding-top:24px}
.prog-track{position:relative;flex:1;height:11px;background:var(--line);border-radius:20px}
.prog-fill{position:absolute;left:0;top:0;height:100%;width:0;background:linear-gradient(90deg,#e0a93b,#f2c34e);
  border-radius:20px;transition:width .35s ease,background .25s ease}
.prog.ready .prog-fill,.prog.full .prog-fill{background:linear-gradient(90deg,#2f9e63,#34c178)}
.prog-marker{position:absolute;top:-3px;bottom:-3px;width:0;border-left:2px dashed #9aa1b0;display:none;z-index:2;transform:translateX(-1px)}
html[data-theme="dark"] .prog-marker{border-left-color:#717a8d}
.prog-mlbl{position:absolute;bottom:100%;left:0;transform:translateX(-50%);margin-bottom:9px;white-space:nowrap;
  font-family:'Roboto Condensed',sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  font-size:11px;color:#9aa1b0}
html[data-theme="dark"] .prog-mlbl{color:#717a8d}
.prog.ready .prog-mlbl{color:#2f9e63}
html[data-theme="dark"] .prog.ready .prog-mlbl{color:#56c88f}
.prog-pct{font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:14px;color:#c98a10;min-width:38px;text-align:right}
.prog-lbl{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-weight:700;color:var(--muted)}
.prog.ready .prog-pct,.prog.full .prog-pct{color:#2f9e63}
html[data-theme="dark"] .prog.ready .prog-pct,html[data-theme="dark"] .prog.full .prog-pct{color:#56c88f}
.prog.ready .prog-lbl,.prog.full .prog-lbl{color:#2f9e63}
html[data-theme="dark"] .prog.ready .prog-lbl,html[data-theme="dark"] .prog.full .prog-lbl{color:#56c88f}
.vlabel-row{display:flex;align-items:center;gap:10px}
.sec-h .chk,.vlabel-row .chk{margin-left:auto}
.chk{width:28px;height:28px;border-radius:50%;border:2px solid var(--line);background:transparent;cursor:pointer;
  flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:0;transition:background .15s,border-color .15s}
.chk svg{width:16px;height:16px;fill:var(--muted);opacity:.45;transition:fill .15s,opacity .15s}
.chk:hover{border-color:#2f9e63}
.chk:hover svg{opacity:.8}
.chk.on{background:#2f9e63;border-color:#2f9e63}
.chk.on svg{fill:#fff;opacity:1}
.chk.ro{cursor:default}
.chk.ro:hover{border-color:var(--line)}
.vlabel-row .chk{width:26px;height:26px}
/* Labeled "Mark done" button (every section except the read-only exam status). Reads as
   an action, and flips to a green "Done" when the section is opened or the button tapped. */
.chk-mark{width:auto;height:auto;border-radius:20px;padding:6px 13px 6px 11px;gap:7px;border-width:1.5px}
.chk-mark svg{width:15px;height:15px}
.chk-txt{font-family:'Inter',system-ui,sans-serif;font-size:12.5px;font-weight:700;letter-spacing:.01em;color:var(--muted);white-space:nowrap;transition:color .15s}
.chk-mark:hover{background:rgba(47,158,99,.07)}
.chk-mark:hover .chk-txt{color:#2f9e63}
.chk-mark.on{background:#2f9e63;border-color:#2f9e63}
.chk-mark.on .chk-txt{color:#fff}
.chk-mark.on:hover{background:#2a8f59}
.sec-h{flex-wrap:wrap}
/* exam passed card */
.exam-pass{background:rgba(47,158,99,.08);border:1px solid rgba(47,158,99,.35);border-radius:var(--radius);padding:16px 18px}
html[data-theme="dark"] .exam-pass{background:rgba(86,200,143,.1);border-color:rgba(86,200,143,.32)}
.ep-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ep-badge{background:#2f9e63;color:#fff;font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.05em;
  font-size:12px;font-weight:700;border-radius:20px;padding:4px 12px}
.ep-score{font-weight:700;color:var(--navy);font-size:15px}
.ep-date{color:var(--muted);font-size:13.5px}
.ep-note{font-size:13.5px;color:var(--ink);margin:10px 0 0}
.ep-cert{display:inline-block;margin-top:10px;font-size:13.5px;font-weight:700;color:var(--red)}
.exam-sec{margin:22px 0 34px;padding-top:0;border-top:none}
.exam-locked{display:none;align-items:center;gap:9px;background:var(--cream);border:1px dashed var(--line);
  border-radius:var(--radius);padding:14px 18px;font-size:14px;font-weight:600;color:var(--muted)}
.exam-sec.locked .exam-locked{display:flex}
.exam-sec.locked .exam-btn{display:none}
.exam-sec.locked .chk{opacity:.5}

/* in-page PDF viewer */
body.modal-open{overflow:hidden}
.pdf-modal{position:fixed;inset:0;z-index:100;background:rgba(12,15,24,.8);display:none;
  align-items:center;justify-content:center;padding:24px;overscroll-behavior:contain}
.pdf-modal.show{display:flex}
.pdf-frame{overscroll-behavior:contain}
.pdf-box{background:var(--paper);width:min(980px,100%);height:min(92vh,100%);border-radius:14px;
  overflow:hidden;display:flex;flex-direction:column;box-shadow:0 24px 70px rgba(0,0,0,.55)}
.pdf-head{display:flex;align-items:center;gap:12px;padding:11px 14px 11px 18px;background:var(--paper);
  border-bottom:1px solid var(--line)}
.pdf-title{flex:1;font-weight:700;color:var(--navy);font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pdf-close{width:34px;height:34px;border-radius:8px;border:1px solid var(--line);background:transparent;
  color:var(--navy);font-size:15px;cursor:pointer}
.pdf-close:hover{background:var(--cream)}
.pdf-full{width:34px;height:34px;border-radius:8px;border:1px solid var(--line);background:transparent;
  color:var(--navy);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.pdf-full:hover{background:var(--cream)}
/* white paper search button — matches the full-screen button exactly */
.pdf-search-btn{width:34px;height:34px;border-radius:8px;border:1px solid var(--line);background:transparent;
  color:var(--navy);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.pdf-search-btn:hover{background:var(--cream)}
/* white paper outline button — matches the search + full-screen buttons */
.pdf-outline-btn{width:34px;height:34px;border-radius:8px;border:1px solid var(--line);background:transparent;
  color:var(--navy);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.pdf-outline-btn:hover{background:var(--cream)}
/* white paper outline / bookmark panel — slides in from the left over the reader */
.wp-outline-backdrop{position:absolute;inset:0;z-index:6;background:rgba(20,26,40,.28);
  opacity:0;transition:opacity .22s ease}
.wp-outline-backdrop.open{opacity:1}
.wp-outline-backdrop[hidden]{display:none}
.wp-outline{position:absolute;top:0;left:0;bottom:0;z-index:7;width:330px;max-width:86%;
  background:var(--paper);border-right:1px solid var(--line);box-shadow:6px 0 26px rgba(20,26,40,.16);
  display:flex;flex-direction:column;transform:translateX(-102%);transition:transform .24s cubic-bezier(.22,.61,.36,1)}
.wp-outline.open{transform:translateX(0)}
.wp-outline[hidden]{display:none}
.wp-outline-head{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;
  padding:14px 16px;border-bottom:1px solid var(--line)}
.wp-outline-title{font-family:'Roboto Condensed',sans-serif;font-weight:700;text-transform:uppercase;
  letter-spacing:.11em;font-size:12.5px;color:var(--navy-soft)}
.wp-outline-x{width:28px;height:28px;border-radius:7px;border:1px solid var(--line);background:transparent;
  color:var(--navy);cursor:pointer;font-size:14px;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.wp-outline-x:hover{background:var(--cream)}
.wp-outline-list{flex:1;overflow-y:auto;padding:8px 10px 16px}
.wp-outline-part{font-family:'Roboto Condensed',sans-serif;font-weight:700;text-transform:uppercase;
  letter-spacing:.09em;font-size:11px;color:var(--red);padding:14px 8px 5px;margin-top:4px}
.wp-outline-part:first-child{margin-top:0;padding-top:4px}
.wp-outline-item{display:flex;gap:10px;align-items:baseline;width:100%;text-align:left;
  background:transparent;border:0;border-radius:8px;padding:9px 10px;cursor:pointer;
  color:var(--navy);font:inherit;line-height:1.35}
.wp-outline-item:hover{background:var(--cream)}
.wp-outline-num{flex-shrink:0;min-width:20px;font-family:'Roboto Condensed',sans-serif;font-weight:700;
  font-size:12.5px;color:var(--navy-soft)}
.wp-outline-q{font-size:13.5px;color:var(--navy)}
@media (max-width:560px){.wp-outline{width:300px}}
/* white paper in-document find bar */
.wp-searchbar{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--paper);
  border-bottom:1px solid var(--line)}
.wp-searchbar[hidden]{display:none}
.wp-search-ic{color:var(--navy-soft);flex-shrink:0}
.wp-search-input{flex:1;min-width:0;border:1px solid var(--line);border-radius:8px;padding:7px 10px;
  font-size:14px;color:var(--navy);background:var(--cream);outline:none}
.wp-search-input::placeholder{color:var(--muted)}
.wp-search-input:focus{border-color:var(--navy-soft)}
.wp-search-count{font-size:12px;font-weight:700;color:var(--navy-soft);white-space:nowrap;min-width:52px;text-align:right}
.wp-search-prev,.wp-search-next,.wp-search-x{width:30px;height:30px;border-radius:7px;border:1px solid var(--line);
  background:transparent;color:var(--navy);cursor:pointer;font-size:17px;line-height:1;display:inline-flex;
  align-items:center;justify-content:center}
.wp-search-prev:hover,.wp-search-next:hover,.wp-search-x:hover{background:var(--cream)}
.wp-hl{background:#ffe27a;color:#222a3a;border-radius:3px;padding:0 1px}
.wp-hl.active{background:#ffc400;box-shadow:0 0 0 2px rgba(220,29,38,.45)}
.pdf-dl{width:34px;height:34px;border-radius:8px;border:1px solid var(--line);background:transparent;
  color:var(--navy);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.pdf-dl:hover{background:var(--cream)}
/* green spreadsheet badge (xlsx) */
.res .ricon.xls{background:#21a366}
/* inline spreadsheet viewer (SheetJS) */
.xls-view{display:flex;flex-direction:column;height:100%;background:var(--paper);overflow:hidden}
.xls-tabs{display:flex;gap:4px;padding:8px 10px;border-bottom:1px solid var(--line);flex-wrap:wrap;flex:none}
.xls-tab{border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:6px;
  padding:4px 10px;font-size:12px;font-weight:600;cursor:pointer}
.xls-tab.on{background:var(--navy);color:#F6F6E9;border-color:var(--navy)}
html[data-theme="dark"] .xls-tab.on{color:var(--cream)}
.xls-body{flex:1;overflow:auto;padding:12px}
.xls-sheet{display:none}
.xls-sheet.on{display:block}
.xls-sheet table{border-collapse:collapse;font-size:12px;color:var(--navy)}
.xls-sheet td,.xls-sheet th{border:1px solid var(--line);padding:3px 8px;white-space:nowrap;background:var(--paper)}
.xls-sheet tr:first-child td{background:var(--cream);font-weight:700}
.pdf-box:fullscreen{width:100%;height:100%;border-radius:0;background:var(--paper)}
/* CSS fullscreen fallback for browsers without the Fullscreen API on elements (iOS Safari):
   fill the visual viewport. 100dvh tracks the dynamic toolbar so nothing is cut off. */
.pdf-box.pdf-box-cssfs{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;border-radius:0;z-index:200}
/* Slide nav (tap arrows + swipe) — presentation only, so it appears ONLY in fullscreen
   (native or the CSS fallback). In windowed mode it's hidden so scroll + pinch-zoom work. */
.pdf-nav-ov{display:none}
.pdf-box:fullscreen .pdf-nav-ov,.pdf-box.pdf-box-cssfs .pdf-nav-ov{display:block;position:absolute;inset:0;z-index:6}
.pdf-nav-btn{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:70px;border:none;border-radius:12px;
  background:rgba(52,63,86,.5);color:#fff;font-size:32px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;
  -webkit-tap-highlight-color:transparent}
.pdf-nav-btn:active{background:rgba(52,63,86,.8)}
.pdf-nav-prev{left:10px}
.pdf-nav-next{right:10px}
.pdf-frame{flex:1;width:100%;border:0;background:#525659}
/* admin view of a just-aired class with no content built yet */
.proc-review{max-width:640px;margin:48px auto;text-align:center;padding:0 20px}
.back-lite{background:transparent;border:1px solid var(--line);border-radius:8px;padding:6px 12px;
  color:var(--navy);font-size:13px;font-weight:600;cursor:pointer;margin-bottom:18px}
.back-lite:hover{background:var(--cream)}

/* ---- branded HTML transcript viewer (highlight + jump) ---- */
.tr-nav{display:inline-flex;align-items:center;gap:6px}
.tr-nav button{width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:transparent;
  color:var(--navy);font-size:17px;line-height:1;cursor:pointer}
.tr-nav button:hover{background:var(--cream)}
.tr-pos{font-size:12.5px;font-weight:700;color:var(--muted);min-width:54px;text-align:center;font-variant-numeric:tabular-nums}
.tr-scroll{flex:1;min-height:0;overflow:auto;background:#525659;padding:26px 18px}
.tr-doc{max-width:760px;margin:0 auto;background:#fff;color:#1d2330;border:2px solid #343F56;
  border-radius:2px;padding:30px 48px 40px;box-shadow:0 10px 40px rgba(0,0,0,.4);font-size:15px;line-height:1.62}
.tr-masthead{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;
  padding-bottom:8px;border-bottom:2px solid #343F56;margin-bottom:16px}
.tr-masthead img{height:37px;display:block}
.tr-docid{text-align:right;font-weight:700;font-size:9px;letter-spacing:.16em;color:#343F56;line-height:1.5}
.tr-eyebrow{font-weight:700;font-size:11px;letter-spacing:.18em;color:#DC1D26;margin-bottom:7px}
.tr-title{font-family:'Source Serif 4',Georgia,serif;font-weight:600;font-size:26px;line-height:1.14;
  color:#343F56;margin:0 0 20px}
.tr-paras p{margin:0 0 12px;text-align:justify}
.tr-ts{font-weight:700;font-size:12px;letter-spacing:.02em;color:#343F56;margin-right:8px;white-space:nowrap}
/* every keyword highlight (page + transcript, active or not) is the same yellow */
.tr-hl,.tr-hl.active{background:#ffe27a;color:#222a3a;border-radius:3px;padding:0 2px;box-shadow:0 0 0 1px rgba(220,29,38,.25)}
@media (max-width:560px){ .tr-doc{padding:26px 20px} .tr-scroll{padding:14px 8px} }
/* White paper reader body (continuous, no page breaks) — shares the .tr-doc page */
.wp-body{color:#1d2330;line-height:1.5}
.wp-body h2{font-family:'Source Serif 4',Georgia,serif;font-weight:600;font-size:18px;line-height:1.2;
  color:#343F56;margin:26px 0 8px;padding-top:12px;border-top:1px solid #e6e8ee}
.wp-body h2:first-child{margin-top:6px;padding-top:0;border-top:none}
/* "Part N:" — major section divider, deliberately more prominent than a Q: question */
.wp-body h2.wp-part{font-family:'Source Serif 4',Georgia,serif;font-weight:700;font-size:23px;line-height:1.18;
  color:#343F56;margin:40px 0 16px;padding-top:22px;border-top:3px solid #343F56}
.wp-body h2.wp-part:first-child{margin-top:8px;padding-top:0;border-top:none}
.wp-body h3{font-weight:700;font-size:13px;letter-spacing:.01em;color:#343F56;margin:16px 0 5px}
.wp-body p{margin:0 0 11px;text-align:justify}
.wp-body ul,.wp-body ol{margin:0 0 12px;padding-left:22px}
.wp-body li{margin:0 0 5px;text-align:justify}
.wp-body a{color:#DC1D26;text-decoration:none;font-weight:600}
.wp-body a:hover{text-decoration:underline}
.wp-body a.cite,.wp-body span.cite{font-size:.78em;vertical-align:super;font-weight:700;color:#DC1D26;line-height:0}
.wp-body p.wpref-label{font-style:italic;color:#DC1D26;text-align:left;margin:14px 0 6px}
.wp-body p.wpref{color:#DC1D26;font-weight:700;text-align:left;margin:2px 0 6px}
.wp-body p.wpref a{color:inherit;font-weight:inherit;text-decoration:none}
.wp-body p.wpref a:hover{text-decoration:underline}
.wp-body p.wpref .cite{font-size:1em;vertical-align:baseline;line-height:inherit;margin-right:4px}
.wp-body table.wk{border-collapse:collapse;width:100%;margin:6px 0 14px;font-size:13px}
.wp-body table.wk th,.wp-body table.wk td{border:1px solid #c9cdd8;padding:5px 8px;text-align:left;vertical-align:top}
.wp-body table.wk th{background:#f0f2f6;color:#343F56}
html[data-theme="dark"] .wp-body h2{border-top-color:#e6e8ee}

/* ---------- top nav ---------- */
.topnav{display:flex;gap:22px;margin-left:14px}
.navlink{background:transparent;border:none;font-family:'Inter',sans-serif;font-size:14px;font-weight:600;
  color:var(--muted);cursor:pointer;padding:6px 0;border-radius:0;transition:color .12s;white-space:nowrap}
.navlink:hover{color:var(--navy)}
.navlink.on{color:var(--navy)}
.navlink::after{content:"";display:block;height:2.5px;border-radius:2px;margin-top:6px;background:transparent}
.navlink.on::after{background:var(--red)}

/* ---------- calendar ---------- */
/* the timezone note rides with the calendar's controls now that the header is the
   shared title/hairline row, so it keeps no left margin of its own */
.cal-tz{display:inline-block;font-size:12px;color:var(--navy-soft);font-weight:600}
.cal-switch{display:inline-flex;background:var(--paper);border:1px solid var(--line);border-radius:10px;
  padding:3px;flex-shrink:0}
.cal-tab{background:transparent;border:none;font-size:13px;font-weight:600;color:var(--muted);cursor:pointer;
  padding:7px 16px;border-radius:7px;transition:background .12s,color .12s}
.cal-tab.on{background:var(--navy);color:#F6F6E9}
html[data-theme="dark"] .cal-tab.on{color:var(--cream)}
.cal-tab:not(.on):hover{color:var(--navy)}

.cal-nav{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.cal-month{font-family:'Source Serif 4',serif;font-size:21px;font-weight:600;color:var(--navy);min-width:170px}
.cal-arrow{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--paper);
  color:var(--navy);font-size:20px;line-height:1;cursor:pointer;transition:background .12s}
.cal-arrow:hover{background:var(--cream)}
.cal-today{margin-left:auto;border:1px solid var(--line);background:var(--paper);color:var(--navy);
  font-size:13px;font-weight:600;border-radius:9px;padding:7px 15px;cursor:pointer}
.cal-today:hover{background:var(--cream)}

.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:12px;overflow:hidden}
.cal-wd{background:var(--paper);text-align:center;font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;
  letter-spacing:.08em;font-size:11px;font-weight:700;color:var(--navy-soft);padding:10px 0}
.cal-cell{background:var(--paper);min-height:104px;min-width:0;padding:6px 7px;display:flex;flex-direction:column;gap:4px}
.cal-cell.out{background:var(--cream);opacity:.5}
.cal-day{font-size:13px;font-weight:600;color:var(--ink);width:26px;height:26px;display:flex;
  align-items:center;justify-content:center;border-radius:50%}
.cal-day.is-today{background:var(--red);color:#fff}
.cal-ev{display:block;width:100%;max-width:100%;text-align:left;border:none;cursor:pointer;background:var(--red);color:#fff;
  font-size:11.5px;font-weight:600;line-height:1.3;border-radius:6px;padding:4px 7px;
  white-space:normal;overflow-wrap:anywhere;transition:filter .12s}
.cal-ev:hover{filter:brightness(1.08)}
.cal-ev .ev-t{font-weight:800}
.cal-ev.alt{background:#343F56;color:#F6F6E9}
.cal-ev.past{opacity:.4;filter:grayscale(.5)}
.cal-ev.past:hover{opacity:.65;filter:grayscale(.3)}

/* card / list view */
.evcard{display:flex;gap:18px;justify-content:space-between;background:var(--paper);border:1px solid var(--line);
  border-radius:var(--radius);padding:18px 20px;margin-bottom:14px;cursor:pointer;
  transition:transform .12s,box-shadow .12s,border-color .12s}
.evcard:hover{transform:translateY(-2px);border-color:var(--navy-soft);box-shadow:0 8px 22px rgba(52,63,86,.14)}
.evc-l{flex:1;min-width:0}
.evc-when{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.06em;font-size:12.5px;
  font-weight:700;color:var(--red);margin-bottom:5px}
.evc-title{font-family:'Source Serif 4',serif;font-size:21px;color:var(--navy);line-height:1.2;margin-bottom:9px}
.evc-meta{display:flex;align-items:center;gap:9px;margin-bottom:13px;flex-wrap:wrap}
.evc-series{font-size:12px;color:var(--muted);font-weight:600}
.evc-zoom{display:inline-flex;align-items:center;gap:8px;background:#343F56;color:#F6F6E9;border-radius:9px;
  padding:9px 16px;font-size:13.5px;font-weight:700}
.evc-zoom:hover{text-decoration:none;filter:brightness(1.18)}
.evc-zoom svg{width:17px;height:17px;fill:#F6F6E9}
html[data-theme="dark"] .evc-zoom{background:#46536f}
.evc-r{flex-shrink:0;width:190px}
.evc-img{width:190px;height:107px;border-radius:10px;object-fit:cover;display:block;border:1px solid var(--line)}
.evc-ph{background:linear-gradient(135deg,#343F56,#46536f);display:flex;flex-direction:column;align-items:center;
  justify-content:center;text-align:center;padding:14px 12px;gap:8px;border-color:#46536f}
/* The cover is 190x107 here and 100%x170 on a phone, but the logo and title used to be
   fixed px — so the artwork stayed the same size while the cover grew, leaving a tiny
   logo adrift on mobile (Bobby, 2026-07-28). Everything inside now scales with the cover
   instead: the logo is a share of the cover's height, and the title/pill follow. Same
   proportions at both sizes, and the logo is bigger at both than it was. */
.evc-ph-logo{height:27px;opacity:.92}
.evc-ph-title{font-family:'Source Serif 4',serif;font-size:13px;color:#F6F6E9;line-height:1.2;padding:0 6px}
.evc-ph-ce{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.06em;font-size:10px;
  font-weight:700;color:#7ee0ab;border:1px solid rgba(126,224,171,.5);border-radius:20px;padding:2px 9px;
  display:inline-flex;align-items:center;gap:4px}

/* session detail modal — branded card (mirrors the Skool event popup) */
.sess-box{width:min(420px,100%);border-radius:18px;overflow:hidden;position:relative;
  box-shadow:0 24px 70px rgba(0,0,0,.55);background:var(--paper)}
.sess-box .pdf-close{position:absolute;top:12px;right:12px;z-index:3;background:rgba(0,0,0,.25);border:none;
  color:#F6F6E9;width:30px;height:30px;border-radius:50%}
.sess-box .pdf-close:hover{background:rgba(0,0,0,.45)}
.sess-head{background:linear-gradient(135deg,#343F56,#46536f);padding:30px 26px 24px;text-align:center;position:relative;overflow:hidden}
.sess-ribbon{position:absolute;top:16px;left:-42px;transform:rotate(-45deg);background:var(--red);color:#fff;
  font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.08em;font-size:10.5px;font-weight:700;
  padding:4px 48px;box-shadow:0 2px 6px rgba(0,0,0,.3)}
.sess-logo{height:46px;margin:0 auto 14px;display:block}
.sess-series{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.12em;
  font-size:12px;font-weight:700;color:rgba(246,246,233,.78);margin-bottom:14px}
.sess-chip{background:#F6F6E9;color:#343F56;font-weight:600;font-size:14.5px;border-radius:8px;padding:9px 14px;display:inline-block;max-width:100%}
.sess-body{padding:22px 24px 26px}
.sess-title{font-family:'Source Serif 4',serif;font-size:23px;color:var(--navy);line-height:1.18;margin:0 0 16px}
.sess-row{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px}
.sess-ic{width:20px;height:20px;fill:var(--navy-soft);flex-shrink:0;margin-top:1px}
.sess-ic.zic{fill:#2D8CFF}
.sess-when{font-size:15px;font-weight:600;color:var(--ink);line-height:1.3}
.sess-sub{font-size:13px;color:var(--muted)}
.sess-zoom{text-decoration:none;align-items:center}
.sess-zoom .sess-link{font-size:14.5px;color:#2D8CFF;font-weight:600;line-height:1.35}
.sess-zoom:hover .sess-link{text-decoration:underline}
.sess-add{width:100%;margin-top:8px;display:flex;align-items:center;justify-content:center;gap:9px;
  background:#343F56;color:#F6F6E9;border:none;border-radius:11px;padding:13px;font-size:14.5px;font-weight:700;cursor:pointer}
.sess-add:hover{filter:brightness(1.18)}
.sess-add svg{width:18px;height:18px;fill:#F6F6E9}
html[data-theme="dark"] .sess-add{background:#46536f}
.sess-subhint{display:block;width:100%;margin-top:12px;background:transparent;border:none;cursor:pointer;
  color:var(--navy-soft);font-size:12.5px;font-weight:600;text-align:center;line-height:1.4;padding:4px;text-decoration:underline;text-underline-offset:2px}
.sess-subhint:hover{color:var(--navy)}
.sess-lib{width:100%;margin-top:10px;background:transparent;border:1px solid var(--line);border-radius:10px;
  padding:11px;font-size:14px;font-weight:600;color:var(--navy);cursor:pointer}
.sess-lib:hover{background:var(--cream)}

/* subscribe modal */
.sub-box{background:var(--paper);width:min(460px,100%);border-radius:18px;padding:30px 30px 30px;position:relative;
  box-shadow:0 24px 70px rgba(0,0,0,.55)}
.sub-box .pdf-close{position:absolute;top:16px;right:16px;width:32px;height:32px;border-radius:8px;
  border:1px solid var(--line);background:transparent;color:var(--navy);cursor:pointer}
.sub-box .pdf-close:hover{background:var(--cream)}
.sub-h{font-family:'Source Serif 4',serif;font-size:23px;color:var(--navy);margin:0 6px 8px 0;line-height:1.2}
.sub-sub{font-size:13.5px;color:var(--muted);line-height:1.55;margin:0 0 20px}
.sub-opts{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}
.sub-opt{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:11px;padding:13px 16px;
  font-size:14.5px;font-weight:600;color:var(--navy);background:var(--paper);transition:background .12s,border-color .12s}
.sub-opt:hover{text-decoration:none;background:var(--cream);border-color:var(--navy-soft)}
.sub-ic{width:9px;height:9px;border-radius:50%;background:var(--red);flex-shrink:0}
.sub-url{display:flex;gap:8px}
.sub-url input{flex:1;min-width:0;border:1px solid var(--line);border-radius:9px;padding:10px 12px;font-size:12.5px;
  color:var(--muted);background:var(--cream);font-family:'Roboto Condensed',monospace}
.sub-copy{border:none;background:#343F56;color:#F6F6E9;border-radius:9px;padding:10px 16px;
  font-size:13px;font-weight:700;cursor:pointer;flex-shrink:0}
.sub-copy:hover{filter:brightness(1.18)}
html[data-theme="dark"] .sub-copy{background:#46536f}
.sub-note{font-size:12px;color:var(--muted);line-height:1.5;margin:16px 0 0;padding-top:14px;border-top:1px solid var(--line)}

/* calendar header actions — wraps, or the timezone + Subscribe + view tabs push the
   page sideways on a phone (measured 447px against a 390px viewport) */
.cal-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end;margin-left:auto}
.cal-sub{display:inline-flex;align-items:center;gap:8px;background:var(--red);color:#fff;border:none;border-radius:10px;
  padding:9px 16px;font-size:13.5px;font-weight:700;cursor:pointer;box-shadow:var(--shadow)}
.cal-sub:hover{filter:brightness(1.07)}
.cal-sub svg{width:16px;height:16px;fill:#fff}

@media (max-width:820px){
  .layout{grid-template-columns:1fr}
  .cls-title{font-size:24px}
  .pdf-modal{padding:0}
  .pdf-box{height:100%;border-radius:0}
  .topnav{margin-left:0;gap:0}
  .navlink{padding:7px 9px;font-size:13px}
  .cal-cell{min-height:74px;padding:4px}
  .cal-ev{font-size:10px;padding:3px 5px}
  .cal-day{width:22px;height:22px;font-size:12px}
  .evcard{flex-direction:column-reverse;gap:12px}
  .evc-r,.evc-img,.evc-ph{width:100%}
  .evc-img{height:170px}
  /* cover is ~1.6x taller here than on desktop, so the artwork scales with it */
  .evc-ph{padding:18px 16px;gap:12px}
  .evc-ph-logo{height:43px}
  .evc-ph-title{font-size:19px;padding:0 8px}
  .evc-ph-ce{font-size:12px;padding:3px 12px}
}

/* ---- login states + messages (magic link) ---- */
.login-msg{font-size:12.5px;line-height:1.5;margin:12px 0 0}
.login-msg.err{color:var(--red)}
.login-msg.ok{color:#2e7d46}
.login-state{text-align:center}
.login-state h2{font-family:'Source Serif 4',serif;color:var(--navy);font-size:19px;margin:8px 0 8px}
.login-state p{color:var(--muted);font-size:13.5px;line-height:1.6;margin:0 0 6px}
.login-state .btn-primary{display:inline-block;width:auto;padding:11px 30px;margin-top:0}

/* ---- gated PDF viewer body (loading / error states) ---- */
.pdf-body{flex:1;min-height:0;display:flex;flex-direction:column;background:#525659;position:relative;overflow:hidden}
/* Deck viewer: bottom progress bar + slide counter (windowed = scroll position,
   fullscreen presentation = current slide) */
.pdf-box-pres{position:relative}
.pdf-pres{display:block;position:absolute;left:0;right:0;bottom:0;z-index:3;pointer-events:none}
.pdf-pres.at-top{top:var(--head-h,52px);bottom:auto}
.pdf-pres.at-top .pdf-counter{display:none}
.pdf-counter{position:absolute;right:14px;bottom:12px;background:rgba(52,63,86,.92);color:#F6F6E9;font-size:12px;font-weight:600;letter-spacing:.03em;padding:4px 11px;border-radius:20px;box-shadow:0 1px 6px rgba(0,0,0,.3)}
.pdf-progress{height:5px;width:100%;background:rgba(255,255,255,.16)}
.pdf-progress-fill{height:100%;width:0;background:#DC1D26;transition:width .28s ease}
.pdf-loading,.pdf-err{margin:auto;text-align:center;padding:30px;color:#fff;font-size:14.5px;line-height:1.6;max-width:440px}
.pdf-err{color:#ffd9db}

/* ---- account / settings ---- */
.acct-form{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.acct-form label{display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--navy-soft);margin:0 0 5px}
.acct-form input{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--line);border-radius:9px;font-size:14.5px;background:#fff;color:#343F56;font-family:inherit}
.acct-form input::placeholder{color:#8893a8}
.acct-form input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(52,63,86,.12)}
.acct-form input:disabled{background:var(--cream);color:var(--muted)}
.acct-hint{display:block;margin-top:5px;font-size:11px;color:var(--muted);line-height:1.4}
.acct-form-actions{grid-column:1/-1;display:flex;align-items:center;gap:14px}
.acct-form-actions .btn-primary{width:auto;margin-top:0;padding:11px 28px}
.acct-savemsg{font-size:13px}.acct-savemsg.ok{color:#2e7d46}.acct-savemsg.err{color:var(--red)}
.acct-ce-wrap{overflow-x:auto}
.acct-ce{width:100%;min-width:520px;border-collapse:collapse;font-size:13.5px}
.acct-ce th{text-align:left;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:0 10px 9px;border-bottom:1px solid var(--line)}
.acct-ce td{padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:middle;color:var(--ink)}
.acct-ce tr:last-child td{border-bottom:none}
.ce-pid{color:var(--muted);font-size:10.5px}
.ce-cert{color:var(--red);font-weight:700;white-space:nowrap}
.acct-links{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:22px}
.acct-link{display:block;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;color:var(--ink);text-decoration:none}
.acct-link:hover{border-color:var(--navy);text-decoration:none}
.acct-link:hover .al-h,.acct-link:hover .al-p,.acct-link:hover .al-cta{text-decoration:none}
.al-h{font-family:'Source Serif 4',serif;color:var(--navy);font-size:16px;font-weight:600;margin:0 0 5px}
.al-p{font-size:13px;color:var(--muted);line-height:1.45;margin:0 0 10px}
.al-cta{font-size:13px;font-weight:700;color:var(--red)}
@media(max-width:620px){.acct-form{grid-template-columns:1fr}.acct-links{grid-template-columns:1fr}}

/* ---- upcoming (scheduled, not-yet-recorded) classes ---- */
.up-note{color:var(--muted);font-size:13px;margin:-4px 0 14px;line-height:1.5}
.card.upcoming{cursor:pointer;opacity:.8;transition:opacity .15s,transform .15s,box-shadow .15s}
.card.upcoming:hover{opacity:1}
.card.upcoming .card-tile{filter:saturate(.8) brightness(.96);position:relative}
.up-sec{margin-bottom:20px}
.up-tags{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.pill.scheduled{background:transparent;color:var(--navy-soft);border:1px solid var(--line)}
.up-when{display:flex;align-items:center;gap:7px;font-weight:600;color:var(--navy-soft);white-space:nowrap}
.card-when2{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted);margin-top:5px;line-height:1.35}
.up-cal{width:14px;height:14px;fill:currentColor;flex:none}
.pill.sched{background:#e7eaf0;color:#46536f}
[data-theme=dark] .pill.sched{background:#2a3346;color:#aeb7cc}

/* ===========================================================================
   PHONE LAYOUT (<=600px) — app-like home-screen experience.
   Primary nav drops to a fixed bottom tab bar (the way Skool's app feels);
   the top bar slims to just the brand + log out. Fixes the horizontal
   overflow caused by the desktop top bar not fitting phone width.
   =========================================================================== */
@media (max-width:600px){
  /* --- slim top bar: brand + log out only --- */
  .topbar-in{padding:10px 15px;gap:10px}
  .topbar-logo{height:26px}
  .who{display:none}                         /* email shown on the Account tab instead */
  .btn-ghost{padding:7px 12px;font-size:12.5px}
  .acct-pop{min-width:226px;max-width:calc(100vw - 20px)}   /* never overflow the phone viewport */

  /* --- primary nav -> fixed bottom tab bar --- */
  .topnav{position:fixed;left:0;right:0;bottom:0;z-index:50;margin:0;gap:0;
    display:flex;justify-content:space-around;align-items:stretch;
    background:var(--paper);border-top:1px solid var(--line);
    padding:7px 4px calc(7px + env(safe-area-inset-bottom));
    box-shadow:0 -2px 14px rgba(52,63,86,.12)}
  .navlink{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:2px;padding:5px 2px;font-size:11px;line-height:1.15;text-align:center;
    white-space:normal;color:var(--muted)}
  /* Monochrome line icons (masked SVG, so they inherit the label's color and
     turn brand red with the active tab). Emoji were multi-colored and clashed
     with the palette; the account menu stays text-only. */
  .navlink::before{content:"";width:21px;height:21px;flex:none;background:currentColor;
    -webkit-mask:var(--ic) center/contain no-repeat;mask:var(--ic) center/contain no-repeat}
  #navLibrary::before{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%207v14%22%2F%3E%3Cpath%20d%3D%22M3%2018a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1h5a4%204%200%200%201%204%204%204%204%200%200%201%204-4h5a1%201%200%200%201%201%201v13a1%201%200%200%201-1%201h-6a3%203%200%200%200-3%203%203%203%200%200%200-3-3z%22%2F%3E%3C%2Fsvg%3E")}
  #navTemplates::before{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M15%202H6a2%202%200%200%200-2%202v16a2%202%200%200%200%202%202h12a2%202%200%200%200%202-2V7z%22%2F%3E%3Cpath%20d%3D%22M14%202v4a2%202%200%200%200%202%202h4%22%2F%3E%3Cpath%20d%3D%22M9%2013h6%22%2F%3E%3Cpath%20d%3D%22M9%2017h4%22%2F%3E%3C%2Fsvg%3E")}
  #navCalendar::before{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M8%202v4%22%2F%3E%3Cpath%20d%3D%22M16%202v4%22%2F%3E%3Crect%20x%3D%223%22%20y%3D%224%22%20width%3D%2218%22%20height%3D%2218%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M3%2010h18%22%2F%3E%3C%2Fsvg%3E")}
  #navAnnounce::before{--ic:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%2011v3a1%201%200%200%200%20.8%201L21%2019V6L3.8%2010A1%201%200%200%200%203%2011z%22%2F%3E%3Cpath%20d%3D%22M11.6%2016.8a3%203%200%201%201-5.8-1.6%22%2F%3E%3C%2Fsvg%3E")}
  .navlink.on{color:var(--red)}
  .navlink::after{display:none}            /* underline doesn't belong in the mobile tab bar */

  /* --- give content room above the bottom bar + lift the theme toggle --- */
  main{padding:18px 14px calc(86px + env(safe-area-inset-bottom))}
  .theme-toggle{bottom:calc(78px + env(safe-area-inset-bottom));width:38px;height:38px;font-size:16px}
  .foot{display:none}                         /* redundant with the tab bar on phone */

  /* --- single-column cards, comfortable tap targets --- */
  /* minmax(0,1fr) (not 1fr) so a grid item can't keep its intrinsic min-width
     and push the page wider than the phone viewport */
  .grid{grid-template-columns:minmax(0,1fr);gap:14px}
  .lib-h{font-size:22px}
  .lib-sub{margin-bottom:18px}
  .lib-search{min-width:0}
  .lib-search input{min-width:0}             /* let the search field shrink below its text width */
  /* The library and templates icons stay beside the title and hard right, same as
     desktop (Bobby, 2026-07-28). */

  /* The calendar's three controls can't fit the title row on a phone (measured 447px
     against 390px), and stacking them all down the left leaves the right half empty and
     looks thrown together. Two balanced rows instead, using the full width:
        Class Calendar          [ Subscribe ]
        All times Central Time  [ Calendar | Cards ]
     .cal-actions goes display:contents so its three children become grid items of the
     header row itself, which is what lets Subscribe sit up beside the title. */
  .cal-headrow{display:grid;grid-template-columns:1fr auto;gap:14px 12px;align-items:center;
    padding-bottom:14px}
  .cal-headrow .cal-actions{display:contents}
  .cal-headrow .lib-h{grid-column:1;grid-row:1}
  .cal-headrow .cal-sub{grid-column:2;grid-row:1;justify-self:end}
  .cal-headrow .cal-tz{grid-column:1;grid-row:2}
  .cal-headrow .cal-switch{grid-column:2;grid-row:2;justify-self:end}
  .card-logo{width:64%}

  /* --- class page: align the pinned header to the slimmer top bar --- */
  .cls-sticky{top:46px}
  .cls-title{font-size:23px}
  .sec-h{font-size:20px}

  /* --- calendar: default to the readable list view feel; keep month usable --- */
  .cal-month{min-width:0;font-size:19px}
  .cal-grid{font-size:11px}
  .cal-cell{min-height:62px;padding:3px}
  .cal-ev{font-size:9.5px;padding:2px 4px}

  /* --- account: let the CE table scroll instead of squishing --- */
  .acct-ce{font-size:12.5px}
  .acct-ce th,.acct-ce td{padding:9px 7px}
}

/* ---- "How to earn your CE" steps card ---- */
.ce-steps{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:15px 20px 13px;margin:0 0 22px}
.ce-steps-h{font-family:'Source Serif 4',serif;font-size:16.5px;font-weight:600;color:var(--navy);margin:0 0 9px}
.ce-steplist{list-style:none;margin:0;padding:0}
.cstep{display:flex;align-items:center;gap:11px;padding:5px 0;font-size:14.5px;color:var(--ink)}
.cstep-ic{width:23px;height:23px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:700;line-height:1}
.cstep-ic::before{content:attr(data-n)}
.cstep.todo .cstep-ic{background:var(--cream);border:1.5px solid var(--line);color:var(--navy-soft)}
.cstep.ready .cstep-ic{background:var(--red);color:#fff}
.cstep.done .cstep-ic{background:#3a9d68;color:#fff}
.cstep.done .cstep-ic::before{content:'✓'}
.cstep.done{color:var(--muted)}
.cstep.locked .cstep-ic{background:var(--cream);border:1.5px solid var(--line)}
.cstep.locked .cstep-ic::before{content:'';width:11px;height:11px;background:var(--navy-soft);
  -webkit-mask:var(--ic-lock) center/contain no-repeat;mask:var(--ic-lock) center/contain no-repeat}
.cstep.locked{color:var(--muted)}
.ce-steps-foot{font-size:12.5px;color:var(--muted);margin-top:9px;border-top:1px solid var(--line);padding-top:9px}
/* Draft (staff-only, not yet live to members) */
.pill.draft{background:#f0b429;color:#3a2c00;font-weight:700;letter-spacing:.3px}
.card-draft{outline:2px dashed #f0b429;outline-offset:-3px}
/* Draft = admin-only. Gold pill (admin color) with a blinking dot, like TEST SITE.
   Solid gold in both themes so anything admin-only reads the same at a glance. */
.draft-pill{display:inline-flex;align-items:center;gap:8px;background:#f0b429;color:#3a2c00;font-weight:700;font-size:13px;letter-spacing:.02em;padding:8px 15px;border-radius:20px;margin:0 0 16px;line-height:1}
.draft-dot{width:7px;height:7px;border-radius:50%;background:#3a2c00;flex:none;animation:draftBlink 1.4s ease-in-out infinite}
@keyframes draftBlink{0%,100%{opacity:1}50%{opacity:.22}}
html[data-theme="dark"] .pill.draft{background:#e3b733;color:#1d2331}
/* CE exam embedded full-screen in the portal */
.exam-overlay{position:fixed;inset:0;z-index:1000;background:var(--bg)}
.exam-frame{width:100%;height:100%;border:0;display:block}
/* Interactive review-questions launcher (in CE Materials) */
.rq-ricon{background:#343F56!important;color:#fff}
.rq-launch{flex:1;display:inline-flex;align-items:center;gap:9px;background:none;border:0;padding:0;
  font:inherit;font-size:15px;color:var(--navy);cursor:pointer;text-align:left}
.rq-launch:hover{text-decoration:underline}
.rq-tag{font-family:'Roboto Condensed',sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  font-size:9.5px;color:#fff;background:var(--red);border-radius:20px;padding:2px 8px}
/* Review-questions quiz overlay */
.rq-overlay{position:fixed;inset:0;z-index:1000;background:rgba(20,26,40,.55);display:flex;
  align-items:center;justify-content:center;padding:20px;overscroll-behavior:contain}
.rq-box{width:100%;max-width:600px;max-height:92vh;display:flex;flex-direction:column;
  background:var(--paper);border-radius:16px;box-shadow:0 24px 70px rgba(20,26,40,.4);overflow:hidden}
.rq-head{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line);flex-shrink:0}
.rq-h-title{font-family:'Source Serif 4',serif;font-weight:600;font-size:18px;color:var(--navy)}
.rq-h-count{font-family:'Roboto Condensed',sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:.08em;
  font-size:11.5px;color:var(--navy-soft);margin-left:auto}
.rq-h-x{width:32px;height:32px;border-radius:8px;border:1px solid var(--line);background:transparent;color:var(--navy);
  cursor:pointer;font-size:15px;display:inline-flex;align-items:center;justify-content:center}
.rq-h-x:hover{background:var(--cream)}
.rq-content{padding:22px 20px;overflow-y:auto}
.rq-stem{font-size:17px;line-height:1.5;color:var(--navy);font-weight:600;margin:0 0 18px}
.rq-opts{display:flex;flex-direction:column;gap:10px}
.rq-opt{display:flex;align-items:flex-start;gap:12px;width:100%;text-align:left;background:var(--cream);
  border:1.5px solid var(--line);border-radius:12px;padding:13px 15px;cursor:pointer;font:inherit;
  font-size:15px;line-height:1.45;color:var(--navy);transition:border-color .12s,background .12s}
.rq-opt:hover:not(:disabled){border-color:var(--navy-soft)}
.rq-opt:disabled{cursor:default}
.rq-let{flex-shrink:0;width:24px;height:24px;border-radius:50%;background:var(--navy);color:#fff;
  font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:13px;display:inline-flex;
  align-items:center;justify-content:center}
/* Dark mode: the badge background (var(--navy)) flips light, so its letter needs dark text
   to stay legible; the answered green/red badges keep white text in both modes. */
html[data-theme="dark"] .rq-let{color:#1d2331}
.rq-opt.correct{border-color:#2f9e63;background:rgba(47,158,99,.12)}
.rq-opt.correct .rq-let{background:#2f9e63;color:#fff}
.rq-opt.wrong{border-color:var(--red);background:rgba(220,29,38,.08)}
.rq-opt.wrong .rq-let{background:var(--red);color:#fff}
.rq-fb{margin-top:16px}
.rq-fb-line{display:block;font-weight:700;font-size:15px}
.rq-fb.ok .rq-fb-line{color:#2f9e63}
.rq-fb.no .rq-fb-line{color:var(--red)}
.rq-why{display:block;margin-top:8px;font-size:14px;font-weight:500;line-height:1.55;color:var(--navy-soft)}
.rq-actions{padding:14px 20px 20px;display:flex;justify-content:flex-end;flex-shrink:0}
.rq-next{background:var(--red);color:#fff;border:0;border-radius:10px;padding:12px 22px;font-family:inherit;
  font-size:15px;font-weight:700;cursor:pointer;transition:background .12s}
.rq-next:hover{background:#b8171f}
.rq-done{text-align:center;padding:20px 6px}
.rq-done-ic{width:56px;height:56px;border-radius:50%;background:#2f9e63;color:#fff;font-size:30px;
  display:inline-flex;align-items:center;justify-content:center;margin-bottom:14px}
.rq-done-h{font-family:'Source Serif 4',serif;font-size:22px;color:var(--navy);margin:0 0 8px}
.rq-done-p{font-size:14.5px;line-height:1.6;color:var(--navy-soft);max-width:420px;margin:0 auto}
@media (max-width:560px){.rq-box{max-height:100vh;border-radius:0}.rq-overlay{padding:0}.rq-stem{font-size:16px}}
/* Monochrome content-type icon in resource rows (replaces the red "PDF" chip) */
.res .mat-ic{width:24px;height:24px;color:var(--navy);flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}
.res .mat-ic svg{width:22px;height:22px}
.res.off .mat-ic{opacity:.4}
/* "Complete for CE" panel — the required steps, one clear area */
.cereq{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:20px 22px;margin:22px 0}
.cereq-top{display:flex;align-items:center;gap:12px;margin-bottom:13px}
/* Collapsed-when-complete: the panel shrinks to just the header (title, CE-complete,
   certificate, expand toggle); the caret reveals the steps if the member wants them. */
.cereq-toggle{display:none;width:30px;height:30px;border-radius:8px;border:1px solid var(--line);
  background:transparent;color:var(--navy);cursor:pointer;align-items:center;justify-content:center;flex-shrink:0}
.cereq-toggle:hover{background:var(--cream)}
.cereq.is-complete .cereq-toggle{display:inline-flex}
.cereq-toggle svg{transition:transform .2s}
.cereq:not(.collapsed) .cereq-toggle svg{transform:rotate(180deg)}
.cereq.collapsed .cereq-top{margin-bottom:0}
.cereq.collapsed .cereq-bar,.cereq.collapsed .cereq-list{display:none}
.cereq-hd-cert{display:inline-flex;align-items:center}
.cereq-hd-cert .cereq-cert{font-size:13.5px}
.cereq-title{font-family:'Source Serif 4',serif;font-weight:600;font-size:20px;color:var(--navy);margin:0}
.cereq-count{margin-left:auto;font-family:'Roboto Condensed',sans-serif;font-weight:700;text-transform:uppercase;
  letter-spacing:.07em;font-size:12px;color:var(--navy-soft);white-space:nowrap}
.cereq.is-complete .cereq-count{color:#2f9e63}
.cereq-bar{height:6px;border-radius:6px;background:var(--cream);overflow:hidden;margin-bottom:14px}
.cereq-fill{height:100%;background:#c9a227;border-radius:6px;transition:width .3s}
.cereq.is-complete .cereq-fill{background:#2f9e63}
.cereq-list{list-style:none;margin:0;padding:0}
.cereq-row{display:flex;align-items:center;gap:13px;padding:13px 4px;border-top:1px solid var(--line)}
.cereq-row:first-child{border-top:none}
.cereq-n{flex-shrink:0;width:23px;height:23px;border-radius:50%;border:1.5px solid var(--line);color:var(--navy-soft);
  font-family:'Roboto Condensed',sans-serif;font-weight:700;font-size:12.5px;display:inline-flex;align-items:center;justify-content:center}
.cereq-row.done .cereq-n{background:#2f9e63;border-color:#2f9e63;color:#fff}
/* Optional (Q&A) row: a dashed separator sets it apart from the required 4; its marker is an
   empty circle (no number, no premature check) that fills to a green check only once reviewed. */
.cereq-row.cereq-optional{border-top:1.5px dashed var(--navy-soft);margin-top:7px}
.cereq-n-opt{color:var(--muted)}
.cereq-row.done .cereq-n-opt::after{content:"✓"}
/* Contextual "reviewed" checkbox under the Q&A video (mirrors the panel's optional Q&A row). */
.qa-review{display:inline-flex;align-items:center;gap:10px;margin:12px 0 0;font-size:14.5px;font-weight:600;color:var(--navy);cursor:pointer;user-select:none}
.qa-review input{width:19px;height:19px;accent-color:#2f9e63;cursor:pointer;flex-shrink:0;margin:0}
.cereq-ic{flex-shrink:0;width:24px;height:24px;color:var(--navy);display:inline-flex;align-items:center;justify-content:center}
.cereq-ic svg{width:22px;height:22px}
.cereq-label{flex:1;min-width:0;font-size:15.5px;font-weight:600;color:var(--navy);display:flex;flex-direction:column;gap:2px}
.cereq-sub{font-weight:500;font-size:12px;color:var(--muted)}
.cereq-attest{font-weight:500;font-size:12px;color:var(--navy-soft);text-decoration:underline;cursor:pointer}
.cereq-attest:hover{color:var(--red)}
.cereq-row.done .cereq-attest{display:none}   /* already watched -> no need to self-attest */
.cereq-status{flex-shrink:0;display:flex;align-items:center;gap:8px}
.cereq-ok{color:#2f9e63;font-weight:700;font-size:14px;white-space:nowrap}
.cereq-lock{color:var(--muted);font-weight:600;font-size:13px;white-space:nowrap;display:inline-flex;align-items:center;gap:5px}
.cereq-lock svg{width:14px;height:14px;flex-shrink:0}
.cereq-btn{background:transparent;border:1.5px solid var(--navy);color:var(--navy);border-radius:9px;padding:8px 14px;
  font:inherit;font-size:13.5px;font-weight:700;cursor:pointer;white-space:nowrap;transition:background .12s,color .12s;
  display:inline-flex;align-items:center;gap:7px}
.cereq-btn svg{width:15px;height:15px;flex-shrink:0}
.cereq-btn:hover{background:var(--navy);color:var(--paper)}
.cereq-btn.primary{background:var(--red);border-color:var(--red);color:#fff}
.cereq-btn.primary:hover{background:#b8171f}
.cereq-row.locked{opacity:.55}
.cereq-cert{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:#2f9e63;font-weight:700;text-decoration:none;white-space:nowrap}
.cereq-cert svg{flex-shrink:0}
.cereq-cert:hover{text-decoration:underline}
/* Optional "Class Resources" sub-labels */
.res-sub{font-family:'Roboto Condensed',sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:.08em;
  font-size:12px;color:var(--navy-soft);margin:20px 0 6px}
@media (max-width:560px){.cereq{padding:16px 15px}.cereq-label{font-size:14.5px}.cereq-btn{padding:7px 12px;font-size:13px}}
/* Once CE is earned: the panel becomes a small, light-green "complete" chip (matches the IRS CE tag green). */
.cereq.is-complete{background:rgba(47,111,79,.10);border-color:rgba(47,111,79,.34)}
html[data-theme="dark"] .cereq.is-complete{background:rgba(126,224,171,.11);border-color:rgba(126,224,171,.28)}
.cereq.is-complete.collapsed{padding:13px 18px;border-radius:12px}
.cereq.is-complete .cereq-title{color:#2f6f4f;font-size:16.5px}
html[data-theme="dark"] .cereq.is-complete .cereq-title{color:#7ee0ab}
.cereq.is-complete .cereq-title::before{content:"✓ ";font-weight:800}
.cereq.is-complete .cereq-cert{color:#2f6f4f}   /* Certificate text+icon match the title green */
html[data-theme="dark"] .cereq.is-complete .cereq-cert{color:#7ee0ab}
.exam-ov-close{position:fixed;top:12px;right:14px;z-index:1001;background:#343F56;color:#F6F6E9;border:1px solid rgba(246,246,233,.28);border-radius:8px;padding:9px 16px;font-size:13px;font-weight:600;cursor:pointer;box-shadow:0 2px 14px rgba(0,0,0,.45)}
.exam-ov-close:hover{opacity:.92}
body.exam-open{overflow:hidden}
/* Processing (aired, content not yet published) */
.pill.proc{background:#f0b429;color:#3a2c00;font-weight:700;letter-spacing:.2px;display:inline-flex;align-items:center;gap:5px}
.proc-gear{font-size:14px;line-height:1;display:inline-block}
.card-proc{outline:1px solid rgba(240,180,41,.45);outline-offset:-1px}
.card-proc[data-processing] .card-tile{filter:saturate(.85) brightness(.97)}
/* Staff-only draft class card: identical ADMIN ONLY border + corner tag as the admin panels */
.card.card-admin{outline:none;border:1.5px solid rgba(240,180,41,.55);overflow:visible;position:relative}
.card.card-admin .card-tile{border-radius:var(--radius) var(--radius) 0 0}
.card.card-admin .card-body{border-radius:0 0 var(--radius) var(--radius)}
.card.card-admin::before{content:'ADMIN ONLY';position:absolute;top:-10px;left:18px;z-index:3;background:#f0b429;color:#3a2c00;font:800 9.5px/1 system-ui,-apple-system,sans-serif;letter-spacing:.12em;padding:5px 10px;border-radius:6px}
.proc-modal-bg{position:fixed;inset:0;z-index:1100;background:rgba(20,24,33,.62);display:flex;align-items:center;justify-content:center;padding:20px}
.proc-modal{background:var(--paper);border:1px solid var(--line);border-radius:16px;max-width:430px;padding:32px 30px;text-align:center;box-shadow:0 16px 50px rgba(0,0,0,.42)}
.proc-ic{font-size:34px;margin-bottom:8px}
.proc-modal h3{font-family:'Source Serif 4',serif;color:var(--navy);font-size:21px;margin:0 0 10px}
.proc-modal p{color:var(--muted);font-size:14px;line-height:1.55;margin:0 0 22px;text-wrap:balance}
.proc-modal .proc-ok{background:var(--red);color:#fff;border:0;border-radius:8px;padding:11px 26px;font-size:14px;font-weight:700;cursor:pointer}
.proc-modal .proc-ok:hover{filter:brightness(1.05)}
/* Staff member-lookup result */
.ml-box{border-radius:10px;padding:14px 16px;border:1px solid}
.ml-box.ml-ok{background:rgba(34,160,90,.10);border-color:rgba(34,160,90,.45)}
.ml-box.ml-warn{background:rgba(240,180,41,.12);border-color:rgba(240,180,41,.55)}
.ml-box.ml-err{background:rgba(220,29,38,.08);border-color:rgba(220,29,38,.40)}
.ml-label{font-weight:800;font-size:15px;letter-spacing:.3px;margin-bottom:5px;color:var(--ink)}
.ml-msg{font-size:13.5px;line-height:1.5;color:var(--ink)}
.ml-meta{font-size:12.5px;color:var(--muted);margin-top:8px}
/* Consultations */
.consult-rate{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:22px 24px;margin:6px 0 24px}
.consult-rate-head{display:flex;align-items:baseline;gap:14px;margin-bottom:12px}
.consult-rate-big{font-family:'Source Serif 4',serif;font-size:40px;font-weight:700;color:var(--navy);line-height:1;white-space:nowrap}
.consult-rate-big span{font-size:16px;font-weight:600;color:var(--muted)}
.consult-rate-was{font-size:18px;color:var(--muted)}
.consult-rate-note{font-size:14px;line-height:1.6;color:var(--ink);margin:0}
.consult-photo{width:90px;height:90px;border-radius:50%;object-fit:cover;display:block;margin:0 auto 14px;border:3px solid var(--paper);box-shadow:0 2px 12px rgba(0,0,0,.16)}
.consult-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:18px}
.consult-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:26px 24px;text-align:center}
.consult-name{font-family:'Source Serif 4',serif;font-size:20px;font-weight:700;color:var(--navy)}
.consult-role{font-size:13px;color:var(--muted);margin:2px 0 16px}
.consult-card .btn-primary{width:100%}
.consult-soon{opacity:.7}
.consult-pay{font-size:13px;color:var(--muted);text-align:center;margin:0 0 6px}
/* Admin-mode toggle (staff only) — explicit colors so it never goes invisible in dark mode */
/* No banner in member view: it must look EXACTLY like a member's account, and
   a member has no stripe across the top bar. The gold stripe marks admin mode
   only. The body.member-preview class stays available for future use, but must
   never add anything a member would not see. */
body.admin-mode .topbar{box-shadow:inset 0 3px 0 #f0b429}
#logout,.btn-ghost{white-space:nowrap}
/* account menu (email + log out live here so the nav tabs never wrap) */
.acct{position:relative;display:flex;align-items:center}
.acct-btn{width:38px;height:38px;border-radius:50%;border:1.5px solid var(--line);background:var(--paper);color:var(--navy);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
.notif{position:relative;display:inline-flex;align-items:center}
.notif-bell{position:relative;width:38px;height:38px;border-radius:50%;border:1.5px solid var(--line);background:var(--paper);color:var(--navy-soft);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
.notif-bell:hover{color:var(--navy);border-color:var(--navy-soft)}
.notif-badge{position:absolute;top:-3px;right:-3px;min-width:12px;height:16px;padding:0 4px;border-radius:9px;background:#DC1D26;color:#fff;font:700 10px/16px system-ui,-apple-system,sans-serif;text-align:center;border:2px solid var(--paper)}
.notif-pop{position:absolute;top:calc(100% + 8px);right:0;width:326px;max-width:calc(100vw - 20px);background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 34px rgba(0,0,0,.18);padding:6px;z-index:60;max-height:70vh;overflow-y:auto}
.notif-head{font:700 10.5px/1 system-ui,-apple-system,sans-serif;letter-spacing:.09em;text-transform:uppercase;color:var(--navy-soft);padding:9px 10px 7px}
.notif-item{display:flex;gap:9px;align-items:flex-start;width:100%;text-align:left;background:none;border:none;padding:9px 10px;border-radius:8px;cursor:pointer}
.notif-item:hover{background:var(--cream)}
.notif-idot{width:8px;height:8px;border-radius:50%;background:#DC1D26;margin-top:4px;flex-shrink:0}
.notif-item-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.notif-item-title{font-size:13.5px;font-weight:600;color:var(--navy);line-height:1.3}
.notif-item-when{font-size:11.5px;color:var(--navy-soft)}
.notif-empty{padding:20px 12px;text-align:center;color:var(--navy-soft);font-size:13px}
.acct-btn:hover{border-color:var(--navy)}
/* min-width fits "Continuing Education" on one line now that every row carries an icon */
.acct-pop{position:absolute;top:calc(100% + 8px);right:0;background:var(--paper);border:1px solid var(--line);border-radius:11px;box-shadow:0 12px 32px rgba(0,0,0,.16);padding:8px;min-width:226px;z-index:60}
.acct-email{font-size:12.5px;color:var(--muted);padding:8px 10px;word-break:break-all;border-bottom:1px solid var(--line);margin-bottom:6px}
.acct-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:none;padding:9px 10px;border-radius:7px;font-size:14px;font-weight:600;color:var(--navy);cursor:pointer}
.acct-ic{display:flex;color:var(--muted);flex:none}
.acct-item:hover{background:var(--bg)}
.acct-item.acct-admin{border:1.5px solid rgba(240,180,41,.6);border-radius:8px;margin:2px 0}
.consult-fine{font-size:12.5px;margin-top:6px}
@media(max-width:620px){.consult-grid{grid-template-columns:1fr}}
/* Refer & Earn */
.ref-hero{display:flex;gap:24px;align-items:center;flex-wrap:wrap;margin:6px 0 22px}
.ref-amt{font-family:'Source Serif 4',serif;font-size:64px;font-weight:700;color:var(--navy);line-height:1;white-space:nowrap}
.ref-amt span{display:block;font-size:14px;font-weight:600;color:var(--muted);letter-spacing:.3px}
.ref-pitch{font-size:15px;line-height:1.6;color:var(--ink);flex:1;min-width:260px;margin:0}
.ref-benefits{flex:1;min-width:280px}
.ref-bn{font-size:16.5px;line-height:1.5;color:var(--ink);margin:0 0 10px;padding-left:27px;position:relative}
.ref-bn::before{content:"\2713";position:absolute;left:0;top:1px;color:var(--red);font-weight:800;font-size:15px}
.ref-bn b{color:var(--navy);font-weight:700}
.ref-bn-note{font-size:13.5px;color:var(--muted);margin:3px 0 0;padding-left:27px}
.ref-steps{margin:10px 0 18px;padding-left:20px}
.ref-steps li{margin-bottom:10px;line-height:1.5}
.ref-w9link{color:var(--red);font-weight:700;white-space:nowrap}
.ref-line{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ref-code{font-family:monospace;font-size:22px;font-weight:700;color:var(--navy);background:var(--bg);border:1px dashed var(--line);border-radius:8px;padding:8px 16px;letter-spacing:1px}
.ref-linkbox{flex:1;min-width:240px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;font-size:13px;background:var(--bg);color:var(--ink)}
.ref-warn{margin-top:14px;font-size:13.5px;line-height:1.55;color:var(--ink);background:rgba(220,29,38,.08);border:1px solid rgba(220,29,38,.28);border-radius:9px;padding:12px 14px}
.ref-stats{display:flex;gap:14px;flex-wrap:wrap;margin-top:18px;margin-bottom:16px}
.ref-stat{flex:1;min-width:130px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;text-align:center}
.ref-stat-n{font-family:'Source Serif 4',serif;font-size:30px;font-weight:700;color:var(--navy);line-height:1}
.ref-stat-l{font-size:12.5px;color:var(--muted);margin-top:5px;letter-spacing:.3px}
.ref-msg{font-size:13px;color:var(--muted)}
.ref-staff-tag{display:inline-block;background:#f0b429;color:#3a2c00;font:800 10px/1 system-ui,-apple-system,sans-serif;letter-spacing:.12em;padding:6px 11px;border-radius:6px;vertical-align:middle;margin-left:12px;position:relative;top:-3px}
#refImport{width:100%;min-height:90px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:13px;font-family:monospace;resize:vertical;background:var(--bg);color:var(--ink)}
.ref-tablewrap{overflow-x:auto}
.ref-table{width:100%;border-collapse:collapse;font-size:13px}
.ref-table th{text-align:left;color:var(--muted);font-size:11.5px;letter-spacing:.4px;text-transform:uppercase;padding:0 12px 8px;border-bottom:1px solid var(--line)}
.ref-table td{padding:11px 12px;border-bottom:1px solid var(--line)}
.ref-w9no{color:var(--red);font-weight:600}
.ref-jotform{width:100%;height:640px;border:1px solid var(--line);border-radius:8px;background:#fff;display:block}
.ref-update{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}
.ref-update summary{cursor:pointer;font-size:14px;font-weight:600;color:var(--navy);list-style:none}
.ref-update summary::-webkit-details-marker{display:none}
.ref-update summary::before{content:"+ ";color:var(--red);font-weight:800}
.ref-update[open] summary::before{content:"\2212 "}
.ref-update[open] summary{margin-bottom:12px}
@media(max-width:620px){.ref-amt{font-size:50px}.ref-jotform{height:560px}}
/* Refer & Earn — join + dashboard + admin extras */
.ref-w9wrap{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff;margin:6px 0 4px}
.ref-w9head{background:#343F56;color:#F6F6E9;font-size:12px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;padding:9px 14px}
.ref-w9wrap .ref-jotform{border:0;border-radius:0;display:block}
.ref-waiting{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:14px;font-size:13.5px;color:var(--muted)}
.ref-spin{width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--red);border-radius:50%;display:inline-block;animation:refspin .8s linear infinite;flex:none}
@keyframes refspin{to{transform:rotate(360deg)}}
.ref-checklink{background:none;border:none;color:var(--red);font-weight:700;font-size:13.5px;cursor:pointer;padding:0;text-decoration:underline}
.ref-1099{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.ref-1099row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 14px;border:1px solid var(--line);border-radius:9px;background:var(--bg)}
.ref-1099yr{font-weight:600;color:var(--ink)}
.ref-1099none{font-size:13px;color:var(--muted)}
.ref-linkbtn{background:none;border:none;color:var(--red);font-weight:700;cursor:pointer;padding:0;text-decoration:underline;font-size:13px}
.ref-paybtn{background:#DC1D26;color:#fff;border:none;border-radius:7px;padding:5px 12px;font-size:12.5px;font-weight:700;cursor:pointer;white-space:nowrap}
.ref-w9actions{margin-bottom:16px}
.ref-paybtn:hover{filter:brightness(1.12)}
.ref-modal-ov{position:fixed;inset:0;background:rgba(20,24,34,.55);display:flex;align-items:center;justify-content:center;z-index:200;padding:18px}
.ref-modal{background:var(--paper);border-radius:14px;max-width:560px;width:100%;max-height:86vh;display:flex;flex-direction:column;box-shadow:0 18px 50px rgba(0,0,0,.35)}
.ref-modal-wide{max-width:900px}
.ref-w9pdf{width:100%;height:72vh;border:1px solid var(--line);border-radius:8px;background:#fff;display:block}
.ref-modal-h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 20px;border-bottom:1px solid var(--line);color:var(--navy)}
.ref-modal-x{background:none;border:none;font-size:24px;line-height:1;color:var(--muted);cursor:pointer}
.ref-modal-b{padding:18px 20px;overflow-y:auto;overflow-x:hidden}
.ref-w9tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.ref-w9tbl th{text-align:left;color:var(--muted);font-weight:600;padding:8px 12px 8px 0;vertical-align:top;width:48%}
.ref-w9tbl td{padding:8px 0;color:var(--ink);border-bottom:1px solid var(--line)}
.ref-fld{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600;color:var(--ink);margin-bottom:14px}
.ref-fld input{border:1px solid var(--line);border-radius:8px;padding:9px 11px;font-size:14px;font-weight:400;background:var(--bg);color:var(--ink)}
.ref-connect{min-height:60px}
.seat-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.seat-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;border:1px solid var(--line);border-radius:9px;background:var(--bg)}
.seat-email{font-weight:600;color:var(--ink);word-break:break-all}
.seat-revoke{background:none;border:none;color:var(--red);font-weight:700;cursor:pointer;font-size:13px}
.acct-btn{overflow:hidden}
.acct-avatar{width:100%;height:100%;object-fit:cover;display:block}
.acct-photo-row{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.acct-photo-prev{width:104px;height:104px;border-radius:50%;overflow:hidden;background:var(--bg);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--muted);flex:none}
.acct-photo-prev img{width:100%;height:100%;object-fit:cover;display:block}
.acct-photo-prev svg{width:44px;height:44px}
.acct-photo-actions{display:flex;flex-direction:column;gap:12px}
.acct-photo-btns{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.acct-photo-btns .btn-primary,.acct-photo-btns .btn-ghost{width:auto;flex:none}
.seat-open{border:none;background:none;padding:0;gap:10px}
.seat-input{flex:1;min-width:0;padding:10px 12px;border:1px solid var(--line);border-radius:8px;font-size:14px;background:var(--paper);color:var(--ink)}
.seat-open .btn-primary{width:auto;flex:none}
.seat-add{margin-top:14px}
/* branded confirm modal (purchase / important actions) */
.bc-modal-ov{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:3000;display:flex;align-items:center;justify-content:center;padding:20px}
.bc-modal{background:var(--paper);border:1px solid var(--line);border-radius:14px;max-width:420px;width:100%;padding:24px 24px 20px;box-shadow:0 24px 64px rgba(0,0,0,.45)}
.bc-modal h3{margin:0 0 12px}
.bc-modal-body{font-size:14px;line-height:1.6;color:var(--ink)}
.bc-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}
.bc-modal-actions .btn-primary,.bc-modal-actions .btn-ghost{width:auto;flex:none}
/* admin/staff-only panels: visibly distinct so it's clear normal members never see them */
/* Admin notices: emailed to the partners only, never to members. Gold edge,
   the same signal every other admin-only block on the site uses. */
.ann-staff-list .ann-card{border-color:rgba(240,180,41,.55)}
.panel.staff-only{border:1.5px solid rgba(240,180,41,.55);background:var(--paper);position:relative}
.panel.staff-only::before{content:'ADMIN ONLY';position:absolute;top:-10px;left:18px;background:#f0b429;color:#3a2c00;font:800 9.5px/1 system-ui,-apple-system,sans-serif;letter-spacing:.12em;padding:5px 10px;border-radius:6px}
/* admin-tool action buttons sit content-width (like the Save details button), never full-width */
.panel.staff-only .btn-primary{width:auto;margin-top:0;padding:11px 28px}
.acct-photo-ctrl{position:relative;display:inline-block}
.acct-photo-pop{position:absolute;top:calc(100% + 8px);left:0;z-index:50;width:280px;background:var(--paper);border:1px solid var(--line);border-radius:11px;padding:12px;box-shadow:0 12px 34px rgba(0,0,0,.3)}
.acct-photo-drop{border:1.5px dashed var(--line);border-radius:9px;padding:18px 12px;text-align:center;font-size:13px;color:var(--muted);cursor:pointer}
.acct-photo-drop.hot{border-color:var(--red);background:rgba(220,29,38,.08);color:var(--ink)}
.acct-photo-remove{display:block;width:100%;margin-top:10px;background:none;border:none;color:var(--red);font-weight:700;font-size:13px;cursor:pointer;padding:7px}
.acct-photo-remove:hover{text-decoration:underline}
.acct-photo-ctrl .btn-primary{width:auto}
.ce-viewall{margin-top:14px}
.ce-viewall a{color:var(--red);font-weight:700;font-size:14px;text-decoration:none}
.ce-back{color:var(--muted);font-size:15px;font-weight:600;text-decoration:none;margin-right:6px}
.ce-back:hover{color:var(--ink)}
.ce-irs{font-size:11px;color:var(--muted)}
.ce-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.ce-yr{padding:7px 15px;border:1px solid var(--line);border-radius:999px;background:none;color:var(--ink);font-size:13px;font-weight:600;cursor:pointer}
.ce-yr.on{background:var(--navy);color:var(--paper);border-color:var(--navy)}
.ce-total{font-size:15px;color:var(--ink);margin-bottom:16px}
.ce-total-sub{color:var(--muted);font-weight:400;font-size:13px}

/* --- announcements --- */
.ann-list{display:flex;flex-direction:column;gap:16px;max-width:760px}
.ann-card{padding:22px 24px}
.ann-t{font-family:'Source Serif 4',serif;color:var(--navy);font-size:20px;margin:0 0 4px}
.ann-by{font-size:13px;color:var(--muted);margin-bottom:12px}

/* posted announcements: collapsed rows, click header to expand the full message */
.ann-post{padding:0;overflow:hidden}
.ann-head{display:flex;align-items:flex-start;gap:14px;width:100%;text-align:left;background:transparent;
  border:0;cursor:pointer;padding:20px 22px;font-family:inherit;color:inherit;transition:background .15s ease}
.ann-head:hover{background:rgba(52,63,86,.035)}
html[data-theme="dark"] .ann-head:hover{background:rgba(255,255,255,.04)}
.ann-head-txt{flex:1;min-width:0}
.ann-post .ann-t{display:block;margin:0 0 3px}
.ann-post .ann-by{display:block;margin:0 0 6px}
.ann-snip{display:block;font-size:14px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ann-post.open .ann-snip{display:none}
.ann-chev{flex:none;width:20px;height:20px;margin-top:3px;color:var(--muted);transition:transform .18s ease}
.ann-post.open .ann-chev{transform:rotate(180deg)}
.ann-full{display:none;padding:0 22px 20px}
.ann-post.open .ann-full{display:block}
/* the expanded announcement IS the email: full width, sized to its content, no inner
   scrollbar, and no border of its own — the email brings its own frame */
.ann-email-frame{display:block;width:100%;border:0;background:transparent;overflow:hidden}
.ann-email-wait{font-size:13.5px;color:var(--muted);padding:10px 0}
@media (max-width:560px){
  .ann-head{padding:16px 16px}
  .ann-full{padding:0 16px 16px}
}
.ann-b p{font-size:14.5px;line-height:1.65;margin:0 0 10px;text-align:left}
.ann-b p:last-child{margin-bottom:0}
.ann-tip{background:var(--cream);border-left:3px solid var(--red);border-radius:0 8px 8px 0;
  padding:14px 17px 15px;margin:16px 0 10px}
.ann-tip:last-child{margin-bottom:0}
.ann-tip-k{display:block;font-family:'Roboto Condensed',sans-serif;font-size:10.5px;font-weight:700;
  letter-spacing:.18em;text-transform:uppercase;color:var(--red);margin-bottom:6px}
.ann-tip p{margin:0}
.ann-sent{margin-top:12px;padding-top:10px;border-top:1px solid var(--line);font-size:12.5px;color:var(--muted)}
.ann-empty{border-style:dashed;background:transparent;box-shadow:none;text-align:center;padding:22px 20px;color:var(--muted);font-size:14px}
.ann-comp{max-width:760px;margin:14px 0 22px}
.ann-in,.ann-ta,.ann-sel{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:9px;
  padding:10px 12px;font-size:14.5px;font-family:inherit;background:var(--bg);color:var(--ink)}
.ann-in{margin-bottom:10px;font-weight:600}
.ann-ta{resize:vertical;min-height:120px;line-height:1.55}
.ann-row{display:flex;gap:10px;align-items:center;margin-top:12px;flex-wrap:wrap}
.ann-sel{flex:1;min-width:220px;width:auto}
.ann-btns{display:flex;gap:10px;margin-left:auto}
.ann-send.btn-primary{width:auto;margin-top:0;padding:10px 18px;font-size:14px}
.ann-msg{font-size:13.5px;margin:10px 0 0;min-height:18px;color:var(--muted)}
.ann-msg.ok{color:#2e7d43}
.ann-msg.err{color:var(--red)}
@media (max-width:560px){
  .ann-row{flex-direction:column;align-items:stretch}
  .ann-sel{width:100%}
  .ann-btns{margin-left:0;flex-direction:column}
  .ann-btns .btn-ghost,.ann-send.btn-primary{width:100%;padding:12px}
  .ann-card{padding:18px 16px}
}

/* --- announcements v2: upcoming queue + live email preview --- */
.ann-h2{font-family:'Source Serif 4',serif;color:var(--navy);font-size:19px;margin:26px 0 12px;display:flex;align-items:center;gap:8px}
.ann-h2-n{background:var(--navy);color:var(--paper);font-family:'Inter',sans-serif;font-size:12px;font-weight:700;
  border-radius:999px;padding:2px 9px;line-height:1.4}
.ann-q-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.ann-badge{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;border-radius:999px;padding:3px 10px}
.ann-badge-reminder{background:rgba(52,63,86,.12);color:var(--navy)}
.ann-badge-content{background:rgba(46,125,67,.14);color:#2e7d43}
.ann-badge-manual{background:rgba(220,29,38,.1);color:var(--red)}
.ann-badge-auto{background:rgba(47,111,79,.12);color:#2f6f4f}
html[data-theme="dark"] .ann-badge-auto{background:rgba(126,224,171,.18);color:#7ee0ab}
.ann-q-when{font-size:13px;font-weight:600;color:var(--muted)}
.ann-mode{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--navy-soft);margin:2px 0 4px;cursor:pointer}
.ann-mode input{width:16px;height:16px;cursor:pointer;flex:none}
.ann-q-btns{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}
.ann-q-btns .btn-primary{width:auto;margin-top:0;padding:9px 16px;font-size:13.5px}
.ann-danger{color:var(--red);border-color:rgba(220,29,38,.4)}
.ann-err{margin-top:12px;padding:10px 12px;border:1px solid rgba(220,29,38,.35);border-radius:9px;
  background:rgba(220,29,38,.06);color:var(--red);font-size:13px;line-height:1.5}
.ann-prev{margin-top:14px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#F6F6E9}
.ann-prev-sub{padding:9px 14px;font-size:13px;font-weight:600;color:var(--navy);background:var(--paper);
  border-bottom:1px solid var(--line);min-height:17px}
.ann-prev-frame{display:block;width:100%;height:440px;border:0;background:#F6F6E9}
.ann-new.btn-primary{width:auto;margin-top:0;padding:11px 18px;font-size:14px;white-space:nowrap}
.ann-comp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.ann-comp-head h3{margin:0}
.ann-x{background:transparent;border:none;color:var(--muted);font-size:24px;line-height:1;cursor:pointer;padding:0 4px;border-radius:6px}
.ann-x:hover{color:var(--red)}
.ann-e-when{margin-bottom:0;flex:1;min-width:200px;font-weight:400}
@media (max-width:560px){
  .ann-new.btn-primary{width:100%}
  .ann-prev-frame{height:520px}
  .ann-q-btns{flex-direction:column}
  .ann-q-btns .btn-ghost,.ann-q-btns .btn-primary{width:100%;padding:12px}
}

/* --- announcements: formatting toolbar + rich body --- */
.ann-tools{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap}
.ann-tools button{background:var(--bg);border:1px solid var(--line);border-radius:7px;color:var(--ink);
  padding:5px 11px;font-size:13px;cursor:pointer;font-family:inherit;line-height:1.3}
.ann-tools button:hover{border-color:var(--red);color:var(--red)}
.ann-b a{color:var(--red)}
.ann-b ul,.ann-b ol{margin:0 0 10px;padding-left:22px}
.ann-b li{font-size:14.5px;line-height:1.6;margin:0 0 6px}

/* --- announcements: light/dark side-by-side email preview --- */
.ann-prev-panes{display:flex;gap:1px;background:var(--line)}
.ann-prev-pane{flex:1;min-width:0;background:#F6F6E9}
.ann-prev-lab{padding:7px 12px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--muted);background:var(--paper);border-bottom:1px solid var(--line)}
.ann-q .ann-prev{margin-top:14px}
@media (max-width:900px){
  .ann-prev-panes{flex-direction:column}
}

/* ---- Template Terms of Use gate (click-wrap modal) ---- */
.terms-modal{position:fixed;inset:0;z-index:80;display:none;align-items:center;justify-content:center;
  background:rgba(20,24,34,.55);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding:20px}
.terms-modal.show{display:flex}
.terms-box{background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:16px;
  width:100%;max-width:540px;max-height:88vh;overflow:auto;box-shadow:0 24px 60px rgba(0,0,0,.35)}
.terms-head{background:var(--navy);color:#fff;font-family:'Source Serif 4',serif;font-weight:700;font-size:18px;
  padding:15px 22px;border-radius:16px 16px 0 0;border-bottom:3px solid var(--red)}
html[data-theme="dark"] .terms-head{color:#0f1420}
.terms-body{padding:20px 22px}
.terms-lead{margin:0 0 12px;font-size:15px;color:var(--ink)}
.terms-text{font-size:13.5px;line-height:1.6;color:var(--ink)}
.terms-text p{margin:0 0 8px}
.terms-text ol{margin:0;padding-left:20px}
.terms-text li{margin:6px 0}
.terms-text .terms-updated{margin:14px 0 0;font-size:12.5px;color:var(--muted)}
.terms-check{display:flex;gap:10px;align-items:flex-start;margin-top:16px;padding:12px 14px;
  background:var(--cream);border:1px solid var(--line);border-radius:10px;font-size:14px;font-weight:600;
  color:var(--navy);cursor:pointer}
.terms-check input{margin-top:1px;width:18px;height:18px;accent-color:var(--red);flex:none;cursor:pointer}
.terms-foot{display:flex;justify-content:flex-end;gap:10px;padding:4px 22px 20px}
.terms-btn{border:none;border-radius:10px;padding:11px 22px;font-size:14px;font-weight:700;cursor:pointer;font-family:inherit}
.terms-cancel{background:transparent;color:var(--muted);border:1px solid var(--line)}
.terms-cancel:hover{color:var(--navy);border-color:var(--navy-soft)}
.terms-dl{background:var(--red);color:#fff}
.terms-dl:disabled{opacity:.45;cursor:not-allowed}
.terms-dl:not(:disabled):hover{background:#b0151d}
@media (max-width:520px){ .terms-foot{flex-direction:column-reverse} .terms-btn{width:100%} }
/* "Terms of Use" link inside a template card's disclaimer (white on the dark card; navy in light theme) */
.terms-link{color:var(--navy);font-weight:700;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.terms-link:hover{opacity:.82}
html[data-theme="dark"] .terms-link{color:#fff}

/* ---- Templates library ---- */
.tpl-disc{background:var(--paper);border:1px solid var(--line);border-left:3px solid var(--red);border-radius:10px;
  padding:12px 16px;font-size:13px;line-height:1.55;color:var(--ink);margin:0 0 16px}
.tpl-disc-lbl{font-weight:700;color:var(--navy)}
.tpl-disc .terms-link{white-space:nowrap}
.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-top:16px}
/* The whole card is the link to its class (the Download button inside stops the click),
   so it gets the affordance: pointer + a lift on hover (Bobby, 2026-07-27). */
.tpl-card{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:16px 18px;display:flex;flex-direction:column;
  cursor:pointer;transition:border-color .12s,box-shadow .12s,transform .12s}
.tpl-card:hover{border-color:var(--navy-soft);box-shadow:var(--shadow);transform:translateY(-1px)}
.tpl-card:focus-visible{outline:2px solid var(--navy);outline-offset:2px}
.tpl-h{display:flex;align-items:flex-start;gap:10px;margin-bottom:9px}
.tpl-name{font-family:'Source Serif 4',serif;font-size:16px;font-weight:600;color:var(--navy);line-height:1.25}
/* colored file-type badges (match the class resource cards) */
.tpl-h .ricon{width:26px;height:26px;border-radius:6px;background:var(--red);color:#fff;font-size:8.5px;font-weight:800;
  display:flex;align-items:center;justify-content:center;flex:none}
.tpl-h .ricon.doc{background:#4a73d6}
.tpl-h .ricon.xls{background:#21a366}
.tpl-h .ricon.link{background:#343F56;font-size:13px}
/* Google Docs/Sheets badges match the DOC/XLS/PDF badge box exactly, in both contexts */
.tpl-h .tpl-gic,.res .tpl-gic{flex:none;line-height:0}
.tpl-h .tpl-gic svg,.res .tpl-gic svg{display:block;width:100%;height:100%}
.tpl-h .tpl-gic{width:26px;height:26px;border-radius:6px;overflow:hidden}
.res .tpl-gic{width:22px;height:22px;border-radius:5px;overflow:hidden}
/* series pill + the class it came from, side by side */
.tpl-tags{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:11px}
.tpl-from-tag{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.07em;
  font-size:10.5px;font-weight:700;padding:3px 10px;border-radius:20px;color:var(--navy-soft);
  border:1px solid var(--line);background:transparent}
.tpl-series{align-self:flex-start;font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.07em;
  font-size:10.5px;font-weight:700;padding:3px 10px;border-radius:20px;color:#fff}
.tpl-series.sp-re{background:#21a366}
.tpl-series.sp-sc{background:#343F56}
.tpl-series.sp-1040{background:#DC1D26}
.tpl-series.sp-special{background:#8a6d3b}
.tpl-desc{font-size:13.5px;color:var(--ink);line-height:1.5;margin-bottom:12px;flex:1}
/* the class link moved up into .tpl-tags, so the footer is just the action */
.tpl-foot{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:auto;padding-top:11px;border-top:1px solid var(--line)}
/* Outlined and icon-only, not a heavy filled block: the card is the primary target and
   the action sits quietly inside it (Bobby, 2026-07-27). A fixed square with the icon
   centred on both axes — the glyph must sit dead centre, so no padding asymmetry and no
   text baseline to drag it off. The action is named in the tooltip and aria-label. */
.tpl-get{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;
  padding:0;margin:0;flex:none;border-radius:8px;cursor:pointer;
  background:transparent;border:1px solid var(--red);color:var(--red);
  transition:background .12s,color .12s}
.tpl-get:hover{background:var(--red);color:#fff}
.tpl-get .tpl-btn-ic{display:block;flex:none;width:16px;height:16px}
/* The button and the card behind it go to different places, so only one may look active
   at a time: hovering the button cancels the card's hover underneath. The button's own
   hover is the platform's standard brightness lift from .btn-primary — no special
   treatment (Bobby, 2026-07-27: the red glow was wrong). */
.tpl-card:has(.tpl-get:hover){border-color:var(--line);box-shadow:none;transform:none}
/* no margin: the icon is alone in a square button and must sit dead centre.
   (This used to space it from the word "Download", which the button no longer carries.) */
.tpl-btn-ic{margin-right:0}
/* highlight the resource card you jumped to from Templates */
.rcard-flash{animation:rcardflash 1.6s ease}
@keyframes rcardflash{0%,100%{box-shadow:0 0 0 0 rgba(220,29,38,0)}20%,60%{box-shadow:0 0 0 3px rgba(220,29,38,.5)}}

/* ---- LIVE class banner: class on the air (start -> end, Central) ---- */
/* Every color below is an explicit pair (text + background), so the banner
   renders identically in light and dark themes (universal rule 75). */
.live-sec{margin-bottom:20px}
.live-h{display:flex;align-items:center;gap:9px;color:#DC1D26!important}
.live-dot{width:9px;height:9px;border-radius:50%;background:#DC1D26;display:inline-block;flex:0 0 auto;animation:bncLiveBlink 1.1s steps(1) infinite}
.live-h .live-dot{width:11px;height:11px}
.live-dot.lg{width:16px;height:16px}
@keyframes bncLiveBlink{50%{opacity:.15}}
.card.live-card{cursor:pointer;border:2px solid #DC1D26;animation:bncLivePulse 1.7s ease-in-out infinite}
@keyframes bncLivePulse{0%,100%{box-shadow:0 0 0 0 rgba(220,29,38,.45)}50%{box-shadow:0 0 0 12px rgba(220,29,38,0)}}
.pill.live{background:#DC1D26;color:#fff;display:inline-flex;align-items:center;gap:6px}
.pill.live .live-dot{background:#fff;width:7px;height:7px}
.live-join{margin-top:12px;background:#DC1D26;color:#fff;font-weight:700;text-align:center;border-radius:8px;padding:11px 14px;font-size:14px;letter-spacing:.02em}
.card.live-card:hover .live-join{background:#b81720}
.live-modal .live-modal-ic{display:flex;justify-content:center;margin-bottom:6px}
.proc-modal a.proc-ok.live-go{display:inline-block;text-decoration:none;background:#DC1D26;color:#fff}
.proc-modal a.proc-ok.live-go:hover{background:#b81720}
.live-later{display:block;margin:10px auto 0;background:none;border:none;color:#8a91a3;cursor:pointer;font:inherit;font-size:13px}
.live-later:hover{color:#DC1D26}

/* late-added resource marker: brand red on white text reads in both themes */
/* ---- Class Updates (Bobby, 2026-08-13) ------------------------------------
   New authoritative guidance on a topic we already taught attaches to its class
   as its OWN section, high on the page, never buried in Tools & Resources. The
   tag is GOLD: same tint treatment as .pill.new, hue only. A class with no
   updates renders exactly as before - nothing here applies to it. */
.pill.upd-gold{background:rgba(202,138,4,.16);color:#b07d12}
html[data-theme="dark"] .pill.upd-gold{background:rgba(227,178,72,.18);color:#e3b248}
.upd-pill{display:inline-block;margin-left:8px;padding:3px 9px;border-radius:20px;
  background:rgba(202,138,4,.16);color:#b07d12;font-size:10.5px;font-weight:700;
  letter-spacing:.04em;text-transform:uppercase;vertical-align:2px}
html[data-theme="dark"] .upd-pill{background:rgba(227,178,72,.18);color:#e3b248}
.upd-sec{margin:22px 0 0}
.upd-sec .sec-h .bic{color:#b07d12}
html[data-theme="dark"] .upd-sec .sec-h .bic{color:#e3b248}
.upd-item{background:var(--paper);border:1px solid var(--line);border-left:3px solid #b07d12;
  border-radius:12px;padding:16px 18px 15px}
html[data-theme="dark"] .upd-item{border-left-color:#e3b248}
.upd-item + .upd-item{margin-top:12px}
.upd-meta{display:flex;align-items:center;gap:9px;margin:0 0 7px;flex-wrap:wrap}
.upd-date{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.09em;
  font-size:10.5px;font-weight:700;color:var(--muted)}
.upd-item-t{font-family:'Source Serif 4',serif;font-size:17px;font-weight:600;color:var(--navy);
  line-height:1.25;margin:0 0 7px}
.upd-item-b{font-size:14px;color:var(--ink);line-height:1.55;margin:0 0 4px}
.upd-item-b p{margin:0 0 8px;text-align:justify}
.upd-item-b p:last-child{margin-bottom:0}
.upd-supersedes{font-size:12.5px;color:var(--muted);margin:8px 0 0;line-height:1.5;text-align:justify}
.upd-res{margin-top:11px}
@media (max-width:600px){
  .upd-item{padding:14px 15px 13px}
  .upd-item-t{font-size:16px}
}

/* Same look as the class-card NEW pill (.pill.new) - Bobby, 2026-08-08: every
   NEW tag on the portal is the tinted light-red pill, never a solid dark one. */
.new-pill{display:inline-block;margin-left:8px;padding:3px 9px;border-radius:20px;background:rgba(220,29,38,.12);color:#DC1D26;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;vertical-align:2px}
html[data-theme="dark"] .new-pill{background:rgba(255,138,143,.16);color:#ff8a8f}


/* ---- demo site: the one box a visitor meets at every locked thing ---- */
.demo-join-ov{position:fixed;inset:0;z-index:900;display:flex;align-items:center;justify-content:center;
  padding:24px;background:rgba(20,24,34,.58);backdrop-filter:blur(2px)}
.demo-join{width:100%;max-width:420px;background:var(--paper);color:var(--ink);
  border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:26px 26px 22px;text-align:center}
.demo-join-h{font-family:'Roboto Condensed',sans-serif;text-transform:uppercase;letter-spacing:.06em;
  font-size:13px;font-weight:700;color:var(--red);margin-bottom:10px}
.demo-join-p{margin:0 0 20px;font-size:15px;line-height:1.55;color:var(--ink)}
.demo-join-cta{display:inline-block;background:var(--red);color:#fff;text-decoration:none;
  font-weight:700;font-size:14.5px;padding:11px 26px;border-radius:10px;transition:filter .12s}
.demo-join-cta:hover{filter:brightness(1.07)}
.demo-join-x{display:block;margin:14px auto 0;background:none;border:0;cursor:pointer;
  font-family:'Inter',sans-serif;font-size:13px;color:var(--navy-soft);text-decoration:underline}
@media (max-width:480px){.demo-join{padding:22px 18px 18px}.demo-join-cta{display:block}}

/* The Preview pill is the single most important signal on the demo: it is how a
   stranger tells an openable class from a locked one. Amber, at a heavier tint
   than the status pills, so it reads first without colliding with the red NEW
   pill or the green CE pill that sit beside it on the same card. */
.pill.demo{background:rgba(202,138,4,.30);color:#7d5504;box-shadow:inset 0 0 0 1px rgba(202,138,4,.45)}
html[data-theme="dark"] .pill.demo{background:rgba(240,193,75,.26);color:#f5cd67;box-shadow:inset 0 0 0 1px rgba(240,193,75,.40)}
/* The heading over the pinned demo classes. */
.series-h-demo{color:#8a5f06}
html[data-theme="dark"] .series-h-demo{color:#f0c14b}
