/* =============================================================
   Draco Learning v2 — Design System
   Replicates the visual language of the original Draco Learning hub:
   navy gradient hero w/ animated orbs + floating icons + wave divider,
   gradient program cards, accent-underlined section titles, CTA banner.
   ============================================================= */

:root {
  /* Navy primary palette */
  --c-navy-950:#0a1628;
  --c-navy-900:#0f2439;
  --c-navy-800:#132d47;
  --c-navy-700:#162f4d;
  --c-navy-600:#1a3a5c;
  --c-navy-500:#1e3a5f;
  --c-blue-500:#2c5282;
  --c-blue-400:#2d5a87;
  --c-blue-300:#4a7eb0;
  /* Cyan accent (muted slate-cyan — was bright sky cyan, now professional) */
  --c-cyan-400:#5b9bb8;
  --c-cyan-300:#8db8cc;
  --c-cyan-bright:#38bdf8;   /* Legacy bright cyan — kept for hero-accent gradient text only */
  --c-teal-700:#047857;
  --c-teal-600:#059669;

  /* Neutrals */
  --c-slate-50:#f8fafc;
  --c-slate-100:#f1f5f9;
  --c-slate-150:#eef2f7;
  --c-slate-200:#e2e8f0;
  --c-slate-300:#cbd5e1;
  --c-slate-400:#94a3b8;
  --c-slate-500:#64748b;
  --c-slate-600:#475569;
  --c-slate-700:#334155;
  --c-slate-900:#0f172a;

  --c-text:#1a2332;
  --c-text-muted:#64748b;

  --radius-sm:6px;
  --radius:10px;
  --radius-lg:16px;

  --shadow-sm:0 2px 6px rgba(10,22,40,.08);
  --shadow:0 6px 20px rgba(10,22,40,.10);
  --shadow-lg:0 14px 40px rgba(30,58,95,.16);
}

/* ---------- Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
html{scroll-behavior:smooth}
html{background:#0a1628}
body{
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;
  color:var(--c-text);
  background:#0a1628;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  min-height:100vh;
  display:flex;
  flex-direction:column;
  overflow-x:hidden; /* Belt + suspenders: never allow horizontal scroll at any width */
}
/* Stop any rogue child from blowing out the viewport */
img,svg,table,video,canvas,iframe{max-width:100%}
.dl-footer{margin-top:auto}
img{max-width:100%;display:block}
/* No underlines anywhere — platform standard */
a, a:hover, a:visited, a:active{text-decoration:none}
button{text-decoration:none}
a{color:var(--c-blue-400)}
a:hover{color:var(--c-navy-700)}
h1,h2,h3,h4,h5,h6{color:var(--c-navy-900);letter-spacing:-.02em;line-height:1.18;margin:0 0 .6em}
h1{font-weight:800}
h2,h3{font-weight:700}
.container{max-width:1200px;margin:0 auto;padding:0 24px}

/* ---------- Topbar (dark navy, matches hero) ---------- */
.dl-topbar{
  /* v0.36.22 — z-index bumped from 50 → 1050 so the sticky header always
     stays on top of:
       • the page watermark (z-index:1000, mix-blend-mode:multiply)
       • the contact page's elevated form container (z-index:1002, which
         had to be > the watermark to prevent the blend from tinting the
         form fields).
     Still below the toast container (1100), modal (1200), and drawer
     (1300) so overlays continue to win over the topbar. */
  position:sticky;top:0;z-index:1050;
  background:linear-gradient(180deg,#0a1628 0%,#0f2439 100%);
  border-bottom:1px solid rgba(255,255,255,.06);
  box-shadow:0 2px 10px rgba(0,0,0,.18);
}
.dl-topbar__inner{display:flex;align-items:center;justify-content:space-between;height:68px;gap:1rem}
/* v0.41.7 — brand never wraps; prevents the iPad-tier ugly two-line "Draco Learning" we saw at 1024px before the hamburger kicked in. */
.dl-brand{display:flex;align-items:center;gap:10px;font-weight:800;color:#fff;font-size:1.05rem;letter-spacing:-.01em;white-space:nowrap;flex-shrink:0}
.dl-brand:hover{color:#fff}
.dl-brand img{height:32px;width:auto;flex-shrink:0}
.dl-nav{display:flex;gap:2px;align-items:center}
.dl-nav a{
  display:inline-flex;align-items:center;gap:6px;
  padding:8px 14px;border-radius:8px;
  color:rgba(255,255,255,.78);font-weight:500;font-size:.92rem;
  transition:background .15s ease,color .15s ease;
}
.dl-nav a:hover{background:rgba(255,255,255,.08);color:#fff}
.dl-nav a.is-active{color:#fff;background:rgba(255,255,255,.1)}
.dl-nav a i{color:var(--c-cyan-400);font-size:.85rem}
.dl-nav .dl-btn{margin-left:8px}
.dl-nav .dl-btn i{color:inherit}

/* Seamless transition from topbar into hero/pagehead */
.dl-topbar + .dl-hero,
.dl-topbar + .dl-pagehead{border-top:0}

/* ---------- User chip (profile dropdown in topbar) ---------- */
.dl-userchip-wrap{position:relative;margin-left:6px}
.dl-userchip{
  display:inline-flex;align-items:center;gap:.55rem;
  height:42px;padding:0 .65rem 0 .35rem;border-radius:999px;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);
  color:rgba(255,255,255,.92);font-weight:600;font-size:.9rem;
  cursor:pointer;font-family:inherit;
  transition:background .15s ease,border-color .15s ease,color .15s ease;
}
.dl-userchip:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.28);color:#fff}
.dl-userchip[aria-expanded="true"]{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.3);color:#fff}
.dl-userchip__avatar{
  width:30px;height:30px;border-radius:50%;
  background:linear-gradient(135deg,var(--c-blue-400),var(--c-navy-500));
  color:#fff;font-weight:800;font-size:.82rem;
  display:inline-flex;align-items:center;justify-content:center;
  border:1px solid rgba(255,255,255,.18);box-shadow:0 2px 6px rgba(0,0,0,.18);
  flex-shrink:0;
}
.dl-userchip__avatar--lg{width:42px;height:42px;font-size:1.05rem}
.dl-userchip__name{max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dl-userchip__chev{font-size:.7rem;opacity:.7;transition:transform .2s}
.dl-userchip[aria-expanded="true"] .dl-userchip__chev{transform:rotate(180deg);opacity:1}

.dl-userchip__menu{
  position:absolute;top:calc(100% + 8px);right:0;min-width:260px;
  background:#fff;border:1px solid var(--c-slate-200);border-radius:12px;
  box-shadow:0 20px 50px -16px rgba(10,22,40,.28), 0 4px 10px rgba(10,22,40,.08);
  padding:.4rem;overflow:hidden;z-index:60;
  opacity:0;transform:translateY(-6px) scale(.97);transform-origin:top right;
  transition:opacity .18s ease,transform .18s ease,visibility .18s;
  visibility:hidden;
}
.dl-userchip__menu[aria-hidden="false"],
.dl-userchip__menu.is-open{opacity:1;transform:none;visibility:visible}

.dl-userchip__menu-head{
  display:flex;align-items:center;gap:.7rem;padding:.7rem .8rem .8rem;border-bottom:1px solid var(--c-slate-100);margin-bottom:.3rem;
}
.dl-userchip__menu-id{min-width:0}
.dl-userchip__menu-name{font-weight:700;color:var(--c-navy-900);font-size:.95rem;letter-spacing:-.005em}
.dl-userchip__menu-email{font-size:.78rem;color:var(--c-slate-500);margin-top:.1rem;word-break:break-all}
.dl-userchip__menu a{
  display:flex;align-items:center;gap:.65rem;
  padding:.55rem .75rem;border-radius:8px;
  color:var(--c-navy-900);font-weight:600;font-size:.92rem;
  transition:background .12s ease,color .12s ease;
}
.dl-userchip__menu a:hover{background:var(--c-slate-50);color:var(--c-navy-900)}
.dl-userchip__menu a i{color:var(--c-blue-400);width:1.1rem;text-align:center;font-size:.92rem}
.dl-userchip__menu .dl-userchip__danger{color:#991b1b}
.dl-userchip__menu .dl-userchip__danger i{color:#dc2626}
.dl-userchip__menu .dl-userchip__danger:hover{background:#fdecec;color:#991b1b}
.dl-userchip__divider{height:1px;background:var(--c-slate-100);margin:.3rem .2rem}

/* Tablet + mobile: collapse user chip into the hamburger drawer.
   v0.41.7 — bumped from 768px to 1024px so iPad portrait (820px) and
   landscape (1024px) both get the hamburger flow instead of a crammed
   horizontal nav that wraps the brand to two lines. */
@media (max-width:1024px){
  .dl-userchip-wrap{display:none}
}

/* ---------- Hamburger button (mobile only) ---------- */
.dl-hamburger{
  display:none;
  width:44px;height:44px;
  background:transparent;border:1px solid rgba(255,255,255,.18);border-radius:8px;
  cursor:pointer;padding:0;
  align-items:center;justify-content:center;
  flex-direction:column;gap:5px;
  transition:background .15s ease,border-color .15s ease;
}
.dl-hamburger:hover{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.3)}
.dl-hamburger span{
  display:block;width:22px;height:2px;background:#fff;border-radius:2px;
  transition:transform .25s ease,opacity .2s ease;transform-origin:center;
}
.dl-hamburger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.dl-hamburger[aria-expanded="true"] span:nth-child(2){opacity:0}
.dl-hamburger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ---------- Drawer (mobile menu) ---------- */
.dl-drawer-backdrop{
  position:fixed;inset:0;z-index:90;
  background:rgba(10,22,40,.55);backdrop-filter:blur(2px);
  opacity:0;transition:opacity .25s ease;
  pointer-events:none;
}
.dl-drawer-backdrop.is-open{opacity:1;pointer-events:auto}

.dl-drawer{
  position:fixed;top:0;right:0;bottom:0;z-index:95;
  width:min(340px, 86vw);
  background:linear-gradient(180deg,#0a1628 0%,#0f2439 100%);
  color:#fff;
  transform:translateX(100%);
  transition:transform .3s cubic-bezier(.16,1,.3,1);
  display:flex;flex-direction:column;
  box-shadow:-12px 0 32px rgba(0,0,0,.35);
  overflow-y:auto;
}
.dl-drawer.is-open{transform:translateX(0)}
.dl-drawer__head{
  display:flex;align-items:center;justify-content:space-between;
  padding:1rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.08);
}
.dl-drawer__head .dl-brand{color:#fff;font-size:1rem}
.dl-drawer__head .dl-brand img{height:28px}
.dl-drawer__close{
  width:40px;height:40px;border:1px solid rgba(255,255,255,.18);border-radius:8px;
  background:transparent;color:#fff;cursor:pointer;font-size:1.1rem;
  display:flex;align-items:center;justify-content:center;
  transition:background .15s,border-color .15s;
}
.dl-drawer__close:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.3)}

.dl-drawer__user{
  display:flex;align-items:center;gap:.85rem;
  padding:1.2rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.08);
  background:rgba(255,255,255,.03);
}
.dl-drawer__avatar{
  width:44px;height:44px;border-radius:50%;
  background:linear-gradient(135deg,var(--c-blue-400),var(--c-navy-500));
  color:#fff;font-weight:800;font-size:1.05rem;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  border:1px solid rgba(255,255,255,.15);
}
.dl-drawer__user-name{font-weight:700;color:#fff;font-size:.97rem;line-height:1.2}
.dl-drawer__user-role{font-size:.78rem;color:rgba(255,255,255,.6);text-transform:uppercase;letter-spacing:.08em;margin-top:.2rem;font-weight:600}

.dl-drawer__nav{display:flex;flex-direction:column;padding:.8rem .5rem;flex:1}
.dl-drawer__nav a{
  display:flex;align-items:center;gap:.85rem;
  padding:.85rem 1rem;border-radius:8px;margin:.1rem 0;
  color:rgba(255,255,255,.85);font-weight:600;font-size:1rem;
  text-decoration:none;
  transition:background .15s,color .15s;
}
.dl-drawer__nav a i{color:var(--c-cyan-400);font-size:1rem;width:1.2rem;text-align:center}
.dl-drawer__nav a:hover{background:rgba(255,255,255,.07);color:#fff}
.dl-drawer__nav a.is-active{background:rgba(56,189,248,.12);color:#fff;border-left:3px solid var(--c-cyan-400);padding-left:calc(1rem - 3px)}
.dl-drawer__navlabel{font-size:.7rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.45);padding:.9rem 1rem .35rem;margin-top:.5rem;border-top:1px solid rgba(255,255,255,.08)}
.dl-drawer__nav form{padding:.4rem 1rem 0}

.dl-drawer__foot{
  padding:1.2rem 1.25rem;border-top:1px solid rgba(255,255,255,.08);
  display:flex;flex-direction:column;gap:.85rem;
}
.dl-drawer__meta{font-size:.78rem;color:rgba(255,255,255,.45);text-align:center}

body.dl-drawer-open{overflow:hidden}

/* ============================================================
   Toasts — branded with Draco mark + status icon
   ============================================================ */
.dl-toast-container{
  position:fixed;top:88px;right:20px;z-index:1100;
  display:flex;flex-direction:column;gap:.75rem;
  max-width:400px;width:calc(100vw - 40px);
  pointer-events:none;
}
.dl-toast{
  pointer-events:auto;position:relative;overflow:hidden;
  display:grid;grid-template-columns:auto 1fr auto;align-items:flex-start;gap:.85rem;
  padding:1rem 1.1rem 1.1rem;
  background:#fff;color:var(--c-slate-700);
  border:1px solid var(--c-slate-200);
  border-radius:14px;
  box-shadow:0 20px 40px -16px rgba(10,22,40,.28), 0 4px 10px rgba(10,22,40,.08);
  opacity:0;transform:translateX(40px) scale(.97);
  transition:opacity .28s ease, transform .28s cubic-bezier(.16,1,.3,1);
  font-size:.92rem;line-height:1.5;
}
.dl-toast::before{
  content:'';position:absolute;left:0;top:0;bottom:0;width:4px;
  background:var(--c-blue-400);
}
.dl-toast.is-visible{opacity:1;transform:none}
.dl-toast.is-leaving{opacity:0;transform:translateX(40px) scale(.97)}

/* Draco brand mark on the left */
.dl-toast__brand{
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  width:38px;height:38px;border-radius:10px;
  background:linear-gradient(135deg,#f8fafc 0%,#eef2f7 100%);
  border:1px solid var(--c-slate-200);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5);
}
.dl-toast__brand img{display:block;width:22px;height:22px}

.dl-toast__content{min-width:0;display:flex;flex-direction:column;gap:.2rem;padding-top:.05rem}
.dl-toast__header{display:flex;align-items:center;gap:.5rem;min-width:0}
.dl-toast__status-icon{flex-shrink:0;font-size:.95rem;color:var(--c-blue-400)}
.dl-toast__title{font-weight:700;color:var(--c-navy-900);font-size:.94rem;letter-spacing:-.005em}
.dl-toast__body{color:var(--c-slate-700);word-wrap:break-word;font-size:.9rem}

.dl-toast__close{
  background:transparent;border:0;cursor:pointer;color:var(--c-slate-400);
  width:28px;height:28px;border-radius:6px;
  display:flex;align-items:center;justify-content:center;font-size:.88rem;
  transition:background .15s,color .15s;flex-shrink:0;margin-top:.1rem;
}
.dl-toast__close:hover{background:var(--c-slate-100);color:var(--c-navy-900)}

.dl-toast__progress{position:absolute;left:0;right:0;bottom:0;height:3px;background:transparent}
.dl-toast__bar{height:100%;background:var(--c-blue-400);width:100%;border-bottom-left-radius:14px;border-bottom-right-radius:14px}

/* Tone variants */
.dl-toast--success::before,
.dl-toast--success .dl-toast__bar{background:var(--c-teal-600)}
.dl-toast--success .dl-toast__status-icon{color:var(--c-teal-600)}

.dl-toast--error::before,
.dl-toast--error .dl-toast__bar{background:#dc2626}
.dl-toast--error .dl-toast__status-icon{color:#dc2626}

.dl-toast--warn::before,
.dl-toast--warn .dl-toast__bar{background:#d97706}
.dl-toast--warn .dl-toast__status-icon{color:#d97706}

.dl-toast--info::before,
.dl-toast--info .dl-toast__bar{background:var(--c-blue-400)}
.dl-toast--info .dl-toast__status-icon{color:var(--c-blue-400)}

@media (max-width:520px){
  .dl-toast-container{top:76px;right:12px;left:12px;width:auto;max-width:none}
  .dl-toast{padding:.85rem .9rem 1rem;font-size:.9rem;gap:.7rem}
  .dl-toast__brand{width:34px;height:34px;border-radius:8px}
  .dl-toast__brand img{width:20px;height:20px}
}

/* ============================================================
   Modals (alert / confirm replacement)
   ============================================================ */
.dl-modal-backdrop{
  position:fixed;inset:0;z-index:1200;
  background:rgba(10,22,40,.55);backdrop-filter:blur(4px);
  display:flex;align-items:center;justify-content:center;
  padding:1.5rem 1rem;
  opacity:0;transition:opacity .22s ease;
}
.dl-modal-backdrop.is-open{opacity:1}
.dl-modal{
  width:100%;max-width:480px;
  background:#fff;border-radius:14px;
  box-shadow:0 24px 60px rgba(0,0,0,.28);
  transform:translateY(12px) scale(.98);opacity:0;
  transition:transform .25s cubic-bezier(.16,1,.3,1), opacity .25s ease;
  overflow:hidden;display:flex;flex-direction:column;
  max-height:calc(100vh - 3rem);
}
.dl-modal--sm{max-width:380px}
.dl-modal-backdrop.is-open .dl-modal{transform:none;opacity:1}

.dl-modal__head{
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.9rem;
  padding:1.1rem 1.3rem;color:#fff;position:relative;
}
.dl-modal__head--info   {background:linear-gradient(135deg,#1e3a5f,#2d5a87)}
.dl-modal__head--success{background:linear-gradient(135deg,#047857,#059669)}
.dl-modal__head--warn   {background:linear-gradient(135deg,#b45309,#d97706)}
.dl-modal__head--danger {background:linear-gradient(135deg,#991b1b,#b91c1c)}
.dl-modal__icon{
  width:40px;height:40px;border-radius:10px;flex-shrink:0;
  background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.22);
  display:flex;align-items:center;justify-content:center;font-size:1.05rem;color:#fff;
}
.dl-modal__title-wrap{min-width:0}
.dl-modal__eyebrow{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.78);font-weight:700;margin-bottom:.15rem}
.dl-modal__title{font-size:1.1rem;color:#fff;font-weight:700;line-height:1.25;letter-spacing:-.01em}
.dl-modal__close{
  width:34px;height:34px;border-radius:8px;
  background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);
  color:#fff;cursor:pointer;font-size:.95rem;
  display:flex;align-items:center;justify-content:center;
  transition:background .15s;
}
.dl-modal__close:hover{background:rgba(255,255,255,.22)}

.dl-modal__body{padding:1.3rem 1.4rem;color:var(--c-slate-700);font-size:.97rem;line-height:1.6;overflow-y:auto}
.dl-modal__body p{margin:0 0 .8rem}
.dl-modal__body p:last-child{margin-bottom:0}

.dl-modal__foot{
  display:flex;gap:.65rem;justify-content:flex-end;flex-wrap:wrap;
  padding:1rem 1.4rem 1.2rem;border-top:1px solid var(--c-slate-100);
  background:var(--c-slate-50);
}
.dl-modal__foot .dl-btn{min-width:110px;justify-content:center}

body.dl-modal-open{overflow:hidden}

/* ============================================================
   Admin shell — fixed sidebar + main content
   ============================================================ */
.dl-admin-shell{
  background:#f4f6fb;
  flex:1;
  position:relative;
}
/* Sidebar — fixed in viewport so it always shows the full nav */
.dl-admin-sidebar{
  position:fixed;top:68px;left:0;bottom:0;width:240px;z-index:20;
  background:linear-gradient(180deg,#0a1628 0%,#0f2439 100%);
  color:#fff;
  display:flex;flex-direction:column;
  border-right:1px solid rgba(0,0,0,.1);
  overflow-y:auto;overflow-x:hidden;
}
.dl-admin-sidebar__head{
  display:flex;align-items:center;justify-content:space-between;gap:.5rem;
  padding:.85rem 1rem;border-bottom:1px solid rgba(255,255,255,.06);
}
.dl-admin-sidebar__brand{
  display:inline-flex;align-items:center;gap:.5rem;
  color:rgba(255,255,255,.65);font-weight:700;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;
}
.dl-admin-sidebar__brand i{color:var(--c-cyan-400);font-size:.78rem}
.dl-admin-nav{display:flex;flex-direction:column;padding:.65rem .55rem;flex:1}
.dl-admin-nav__section-label{
  font-size:.66rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(255,255,255,.35);
  padding:.85rem .85rem .35rem;
}
.dl-admin-nav__section-label:first-child{padding-top:.35rem}
.dl-admin-nav a{
  display:flex;align-items:center;gap:.75rem;
  padding:.7rem .85rem;margin:.1rem 0;border-radius:8px;
  color:rgba(255,255,255,.72);font-weight:600;font-size:.93rem;
  transition:background .15s ease,color .15s ease;
  position:relative;
}
.dl-admin-nav a > i{color:rgba(255,255,255,.5);font-size:.95rem;width:1.15rem;text-align:center;transition:color .15s}
.dl-admin-nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.dl-admin-nav a:hover > i{color:var(--c-cyan-400)}
.dl-admin-nav a.is-active{
  background:rgba(56,189,248,.12);color:#fff;
  padding-left:calc(.85rem + 3px); /* keep icon column aligned across active/inactive items */
}
.dl-admin-nav a.is-active::before{
  /* Active-item left bar — anchored inside the anchor so it never causes overflow */
  content:'';position:absolute;left:0;top:.5rem;bottom:.5rem;width:3px;
  background:var(--c-cyan-400);border-radius:0 3px 3px 0;
}
.dl-admin-nav a.is-active > i{color:var(--c-cyan-400)}
.dl-admin-sidebar__foot{
  padding:.85rem 1rem 1rem;border-top:1px solid rgba(255,255,255,.06);
  display:flex;flex-direction:column;gap:.7rem;
}
.dl-admin-sidebar__meta{
  display:flex;align-items:center;justify-content:space-between;
  font-size:.74rem;color:rgba(255,255,255,.45);
}
.dl-admin-sidebar__meta a{color:rgba(255,255,255,.6);font-weight:500}
.dl-admin-sidebar__meta a:hover{color:#fff}

/* Main */
.dl-admin-main{
  margin-left:240px;
  min-height:calc(100vh - 68px);
  background:#f4f6fb;
  display:flex;flex-direction:column;
}
/* Admin sub-header — navy pagehead style, matches public pages */
.dl-admin-head{
  position:relative;overflow:hidden;
  background:linear-gradient(160deg,#0a1628 0%,#0f2439 30%,#162f4d 70%,#1a3a5c 100%);
  color:#fff;
}
.dl-admin-head::before{
  content:'';position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.03) 1px,transparent 0);
  background-size:40px 40px;
}
.dl-admin-head__inner{
  position:relative;z-index:1;
  /* v0.36.4 — admin shell widened so the content fills more of large monitors. */
  max-width:1680px;margin:0 auto;
  display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap;
  padding:1.4rem 1.6rem 1.6rem;
}
.dl-admin-head__text{min-width:0}
.dl-admin-head__text .dl-crumbs{padding:0 0 .35rem}
.dl-admin-head h1{
  color:#fff;
  font-size:clamp(1.4rem,2.3vw,1.85rem);
  font-weight:800;letter-spacing:-.01em;
  margin:0;line-height:1.2;
}
.dl-admin-head h1 i{color:var(--c-cyan-400);margin-right:.5rem;font-size:.92em}
.dl-admin-head p{color:rgba(255,255,255,.82);font-size:.96rem;margin:.3rem 0 0;line-height:1.5}
.dl-admin-head__actions{display:flex;gap:.5rem;flex-wrap:wrap}

.dl-admin-content{
  /* v0.36.4 — widened from 1200 to 1680px so admin tables aren't sandwiched
     between huge empty side margins on desktop. */
  max-width:1680px;margin:0 auto;width:100%;
  padding:1.2rem 1.6rem 2.2rem;
  flex:1;
}

/* Card pattern inside admin shell — flatter than .dl-program-block,
   meant to be the only kind of "card" on admin pages so it reads as
   organized panels rather than nested boxes. */
.dl-panel{
  /* v0.36.4 — stronger panel border + soft drop shadow so the panel pops off
     the slate page background instead of blending into it. */
  background:#fff;border:1px solid #cbd5e1;border-radius:12px;
  box-shadow:0 1px 3px rgba(15,23,42,.05),0 4px 14px rgba(15,23,42,.05);
  overflow:hidden;
}
.dl-panel + .dl-panel{margin-top:1.1rem}
.dl-panel__head{
  display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap;
  padding:.95rem 1.3rem;border-bottom:1px solid var(--c-slate-100);
}
.dl-panel__head h2{font-size:.98rem;color:var(--c-navy-900);font-weight:700;letter-spacing:-.005em;margin:0;display:flex;align-items:center;gap:.55rem}
.dl-panel__head h2 i{color:var(--c-blue-400);font-size:.9rem}
.dl-panel__more{font-size:.85rem;font-weight:600;color:var(--c-blue-400);display:inline-flex;align-items:center;gap:.4rem}
.dl-panel__body{padding:1.2rem 1.3rem}
.dl-panel__body--flush{padding:0}

/* Two-column admin grid (used on the dashboard) */
.dl-admin-cols{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:1.1rem;align-items:start}
.dl-admin-cols--equal{grid-template-columns:1fr 1fr}

/* Tighten KPI inside admin shell — fewer columns by default, denser */
.dl-admin-content .dl-kpis{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}

/* Watermark suppression inside admin shell — admin should feel clean, not have
   a brand mark floating behind every page. */
.dl-admin-shell .dl-section::after{display:none}

/* ---- Mobile: sidebar becomes a horizontal pill bar at top of content ---- */
/* ≤1024px (matches the global hamburger breakpoint): the single global
   drawer becomes the only nav — the admin section links are folded into it
   in includes/header.php. The admin sidebar (and its old ugly horizontal-
   scroll strip) is removed entirely, so there is ONE coherent menu instead
   of two redundant ones. Desktop (>1024) keeps the polished vertical
   sidebar. */
@media (max-width:1024px){
  .dl-admin-sidebar{display:none}
  .dl-admin-main{margin-left:0}
  .dl-admin-head{position:static}
  .dl-admin-head__inner{padding:1.4rem 1.2rem 1.6rem}
  .dl-admin-head h1{font-size:1.3rem}
  .dl-admin-head p{font-size:.88rem}
  .dl-admin-content{padding:1.2rem 1.2rem 1.8rem}
  .dl-admin-cols{grid-template-columns:1fr}
}
@media (max-width:520px){
  .dl-admin-head__inner{padding:.85rem 1rem .8rem}
  .dl-admin-content{padding:1rem 1rem 1.5rem}
  .dl-panel__head{padding:.85rem 1rem}
  .dl-panel__body{padding:1rem}
}

/* ============================================================
   Admin dashboard — KPI strip + two-column layout
   ============================================================ */
.dl-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.75rem;margin-bottom:1.1rem}
.dl-kpi{
  --kpi-accent:#2d5a87;
  /* v0.36.5 — Stronger tinted background so a row of KPIs reads as
     visually distinct cards. 18% accent wash + colored top stripe +
     soft accent ring. Falls back gracefully on older browsers without
     color-mix (Chrome 111+, Safari 16.2+; ~98% of users today). */
  background:
    linear-gradient(180deg,
      color-mix(in srgb, var(--kpi-accent) 22%, #fff) 0%,
      color-mix(in srgb, var(--kpi-accent)  6%, #fff) 100%);
  border:1px solid color-mix(in srgb, var(--kpi-accent) 38%, #e2e8f0);
  border-radius:12px;
  padding:.8rem 1rem .75rem;
  box-shadow:0 1px 3px rgba(10,22,40,.05),0 4px 10px rgba(10,22,40,.04);
  position:relative;overflow:hidden;
  transition:box-shadow .2s ease,border-color .2s ease,transform .2s ease;
  display:flex;flex-direction:column;
}
.dl-kpi::before{
  /* Colored top bar instead of a left stripe — more visible against the
     tinted background, and matches the platform's other panel headers. */
  content:'';position:absolute;left:0;right:0;top:0;height:3px;background:var(--kpi-accent);
}
.dl-kpi:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(10,22,40,.10),0 12px 28px rgba(10,22,40,.06);border-color:color-mix(in srgb,var(--kpi-accent) 55%,#e2e8f0)}
.dl-kpi__row{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-bottom:.45rem}
.dl-kpi__label{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--c-slate-500)}
.dl-kpi__icon{
  width:32px;height:32px;border-radius:8px;
  background:color-mix(in srgb, var(--kpi-accent) 14%, transparent);
  color:var(--kpi-accent);
  display:flex;align-items:center;justify-content:center;font-size:.92rem;
}
.dl-kpi__value{font-size:2rem;font-weight:800;color:var(--c-navy-900);letter-spacing:-.025em;line-height:1;margin-bottom:.5rem}
.dl-kpi__sub{display:flex;flex-wrap:wrap;gap:.4rem .9rem;color:var(--c-slate-500);font-size:.86rem;margin-bottom:.85rem}
.dl-kpi__sub > span:first-child{color:var(--c-slate-700);font-weight:600}
.dl-kpi__delta{display:inline-flex;align-items:center;gap:.3rem;color:#15803d;font-weight:600}
.dl-kpi__delta i{font-size:.7rem}
.dl-kpi__delta--warn{color:#a16207}
.dl-kpi__link{
  margin-top:auto;font-size:.85rem;font-weight:600;color:var(--c-blue-400);
  display:inline-flex;align-items:center;gap:.4rem;
}
.dl-kpi__link:hover{color:var(--c-navy-800)}
.dl-kpi__link i{font-size:.78rem;transition:transform .15s}
.dl-kpi__link:hover i{transform:translateX(2px)}

.dl-admin-grid{
  display:grid;grid-template-columns:minmax(0, 2fr) minmax(0, 1fr);gap:1.2rem;
  align-items:start;
}
.dl-admin-panel{
  background:#fff;border:1px solid var(--c-slate-200);border-radius:14px;
  box-shadow:0 4px 14px rgba(10,22,40,.05);
  overflow:hidden;
}
.dl-admin-panel__head{
  display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap;
  padding:1rem 1.3rem;border-bottom:1px solid var(--c-slate-100);
}
.dl-admin-panel__head h2{font-size:1rem;color:var(--c-navy-900);font-weight:700;letter-spacing:-.005em;margin:0;display:flex;align-items:center;gap:.55rem}
.dl-admin-panel__head h2 i{color:var(--c-blue-400);font-size:.92rem}
.dl-admin-panel__more{font-size:.85rem;font-weight:600;color:var(--c-blue-400);display:inline-flex;align-items:center;gap:.4rem}
.dl-admin-panel__more:hover{color:var(--c-navy-800)}
.dl-admin-panel--accent{
  background:linear-gradient(135deg,#0a1628 0%,#162f4d 100%);
  border-color:rgba(255,255,255,.08);color:#fff;
  padding:1.4rem 1.4rem 1.3rem;
}
.dl-admin-panel--accent h3{
  color:#fff;font-size:1rem;font-weight:700;margin:0 0 .5rem;
  display:flex;align-items:center;gap:.55rem;letter-spacing:-.005em;
}
.dl-admin-panel--accent h3 i{color:var(--c-cyan-400)}
.dl-admin-panel--accent p{color:rgba(255,255,255,.78);font-size:.88rem;line-height:1.55;margin:0 0 1rem}

.dl-admin-rail{display:flex;flex-direction:column;gap:1.2rem}

/* Activity feed */
.dl-feed{list-style:none;margin:0;padding:.4rem 0}
.dl-feed__item{display:flex;align-items:flex-start;gap:.85rem;padding:.85rem 1.3rem;border-bottom:1px solid var(--c-slate-100)}
.dl-feed__item:last-child{border-bottom:0}
.dl-feed__icon{width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:.92rem}
.dl-feed__body{min-width:0;flex:1}
.dl-feed__line{display:flex;align-items:baseline;gap:.55rem;flex-wrap:wrap}
.dl-feed__event{font-weight:700;color:var(--c-navy-900);font-size:.94rem;text-transform:capitalize}
.dl-feed__detail{font-family:Menlo,Consolas,monospace;font-size:.78rem;color:var(--c-slate-600);background:var(--c-slate-100);padding:.1rem .45rem;border-radius:4px}
.dl-feed__meta{font-size:.78rem;color:var(--c-slate-500);margin-top:.2rem;display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}
.dl-feed__sep{color:var(--c-slate-300)}
.dl-feed__empty{padding:1.4rem;color:var(--c-text-muted);text-align:center;font-size:.92rem}

/* Status list */
.dl-status-list{padding:.5rem 0}
.dl-status{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.7rem 1.3rem;border-bottom:1px solid var(--c-slate-100)}
.dl-status:last-child{border-bottom:0}
.dl-status__label{font-size:.84rem;color:var(--c-slate-600);font-weight:500}
.dl-status__value{font-size:.85rem;font-weight:600;color:var(--c-navy-900)}

/* Pills (used inside admin status + KPI delta) */
.dl-pill{
  display:inline-flex;align-items:center;gap:.32rem;
  padding:.22rem .55rem;border-radius:999px;
  font-size:.72rem;font-weight:700;letter-spacing:.04em;
  border:1px solid transparent;
}
.dl-pill--teal {background:#dff5e6;color:#15803d;border-color:#b9e5c8}
.dl-pill--blue {background:#dbeafe;color:#1e40af;border-color:#93c5fd}
.dl-pill--amber{background:#fff4d6;color:#7a5b00;border-color:#f0d889}
.dl-pill--slate{background:#f1f5f9;color:#334155;border-color:#cbd5e1}

/* Vertical quicklinks */
.dl-quicklinks{list-style:none;margin:0;padding:.4rem 0}
.dl-quicklinks li{border-bottom:1px solid var(--c-slate-100)}
.dl-quicklinks li:last-child{border-bottom:0}
.dl-quicklinks a{
  display:flex;align-items:center;gap:.7rem;
  padding:.8rem 1.3rem;color:var(--c-navy-900);font-weight:600;font-size:.93rem;
  transition:background .15s ease;
}
.dl-quicklinks a:hover{background:var(--c-slate-50);color:var(--c-navy-900)}
.dl-quicklinks a > i{color:var(--c-blue-400);width:1.1rem;text-align:center}
.dl-quicklinks__hint{margin-left:auto;font-weight:500;font-size:.76rem;color:var(--c-slate-500);text-align:right}

@media (max-width:880px){
  .dl-admin-grid{grid-template-columns:1fr}
}
@media (max-width:520px){
  .dl-kpi{padding:1rem 1.1rem .9rem}
  .dl-kpi__value{font-size:1.7rem}
  .dl-admin-panel__head{padding:.85rem 1rem}
  .dl-feed__item{padding:.75rem 1rem}
  .dl-status{padding:.65rem 1rem}
  .dl-quicklinks a{padding:.7rem 1rem}
  .dl-quicklinks__hint{display:none}
}

/* ============================================================
   Admin "view as student" preview banner
   ============================================================ */
.dl-preview-bar{
  background:linear-gradient(135deg,#7a5b00,#a16207);
  color:#fff;border-bottom:1px solid rgba(0,0,0,.18);
  font-size:.92rem;font-weight:500;
}
.dl-preview-bar .container{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding-top:.6rem;padding-bottom:.6rem;flex-wrap:wrap;
}
.dl-preview-bar__label{display:flex;align-items:center;gap:.6rem}
.dl-preview-bar__label i{color:#fef3c7}
.dl-preview-bar__hint{color:rgba(255,255,255,.78);font-weight:400;margin-left:.3rem}
@media (max-width:520px){
  .dl-preview-bar .container{padding-top:.55rem;padding-bottom:.55rem}
  .dl-preview-bar__hint{display:none}
  .dl-preview-bar__label{font-size:.85rem}
}

/* ============================================================
   Stripe mode option cards (admin settings)
   ============================================================ */
.dl-stripe-option{
  position:relative;display:block;cursor:pointer;
  background:#fff;border:2px solid var(--c-slate-200);border-radius:12px;
  padding:1rem 1.1rem;
  transition:border-color .2s ease,box-shadow .2s ease;
}
.dl-stripe-option:hover{border-color:#c7d2e0;box-shadow:0 6px 18px rgba(10,22,40,.08)}
.dl-stripe-option input{position:absolute;opacity:0;pointer-events:none}
.dl-stripe-option.is-active,
.dl-stripe-option:has(input:checked){
  border-color:var(--c-blue-400);box-shadow:0 0 0 3px rgba(74,126,176,.18),0 6px 18px rgba(10,22,40,.08);
}
.dl-stripe-option__title{font-weight:800;color:var(--c-navy-900);font-size:.98rem;letter-spacing:-.005em}
.dl-stripe-option__sub{font-size:.85rem;color:var(--c-slate-600);margin-top:.25rem;line-height:1.5}
.dl-stripe-option__status{font-size:.8rem;color:var(--c-slate-700);margin-top:.6rem;font-weight:600}
@media (max-width:520px){
  .dl-stripe-option__title{font-size:.94rem}
}

/* ============================================================
   Hide Google reCAPTCHA v3 badge (silent protection).
   Note: Google's terms require alternative attribution in the
   user flow when the badge is hidden. Add that text wherever it
   makes sense to expose it.
   ============================================================ */
.grecaptcha-badge{visibility:hidden !important;opacity:0 !important;pointer-events:none !important}

@media (max-width:520px){
  .dl-modal__foot{flex-direction:column-reverse}
  .dl-modal__foot .dl-btn{width:100%}
}

/* =====================================================================
   Buttons — platform standard (v0.38.4, DESIGN_STANDARDS §3)
   ─────────────────────────────────────────────────────────────────────
   The 16 hard rules: gradient bg + subtle border + drop shadow + WHITE
   text/icon, hover background change only (no transform/size/padding),
   38 px default height, Inter .875 rem weight 500, no underlines, no
   emoji, no orange/yellow/pink/gold/brown, subdued palette only.
   `.dl-button` is the canonical class. `.dl-btn--*` are kept as aliases.
   ===================================================================== */
.dl-button,
.dl-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.45rem;
  height:38px;padding:0 .95rem;border-radius:8px;
  font-family:inherit;font-weight:500;font-size:.875rem;line-height:1;
  letter-spacing:-.005em;
  color:#fff;text-decoration:none;
  border:1px solid transparent;cursor:pointer;white-space:nowrap;
  background:linear-gradient(135deg,#475569 0%,#334155 100%); /* default = slate */
  box-shadow:0 2px 6px rgba(0,0,0,.12);
  transition:background .18s ease,filter .18s ease,box-shadow .18s ease,border-color .18s ease,opacity .15s ease;
}
.dl-button > i,
.dl-btn i{color:#fff;font-size:.95em;line-height:1}
.dl-button:hover,
.dl-btn:hover{filter:brightness(1.10);box-shadow:0 4px 10px rgba(0,0,0,.16);color:#fff}
.dl-button:focus-visible,
.dl-btn:focus-visible{outline:2px solid rgba(56,189,248,.55);outline-offset:2px}
.dl-button:disabled,.dl-button[disabled],.dl-button.is-disabled,
.dl-btn:disabled,.dl-btn[disabled],.dl-btn.is-disabled{opacity:.55;cursor:not-allowed;filter:none}

/* Size modifiers */
.dl-button--compact,.dl-btn--compact{height:32px;padding:0 .7rem;font-size:.82rem}
.dl-button--touch,  .dl-btn--touch  {height:44px;padding:0 1.1rem;font-size:.92rem}
.dl-button--block,  .dl-btn--block  {width:100%}
.dl-btn--lg{height:38px;padding:0 .95rem} /* legacy alias */

/* ── Color palette (subdued only — never orange/yellow/pink/gold/brown) ── */

.dl-button--navy, .dl-btn--navy{
  background:linear-gradient(135deg,#1e3a5f 0%,#2c5282 100%);
  border-color:#1e3a5f;
}
.dl-button--cyan, .dl-btn--cyan{
  background:linear-gradient(135deg,#0e7490 0%,#155e75 100%);
  border-color:#155e75;
}
.dl-button--teal, .dl-btn--teal{
  background:linear-gradient(135deg,#0f766e 0%,#115e59 100%);
  border-color:#115e59;
}
.dl-button--slate, .dl-btn--slate, .dl-btn--ghost{
  background:linear-gradient(135deg,#475569 0%,#334155 100%);
  border-color:#334155;
}
.dl-button--stone, .dl-btn--stone{
  background:linear-gradient(135deg,#57534e 0%,#44403c 100%);
  border-color:#44403c;
}
.dl-button--plum, .dl-btn--plum{
  background:linear-gradient(135deg,#6b21a8 0%,#581c87 100%);
  border-color:#581c87;
}
.dl-button--emerald, .dl-btn--emerald{
  background:linear-gradient(135deg,#047857 0%,#065f46 100%);
  border-color:#065f46;
}
.dl-button--red, .dl-btn--red{
  background:linear-gradient(135deg,#b91c1c 0%,#991b1b 100%);
  border-color:#991b1b;
}

/* Ghost-light — semi-transparent white surface for use ON dark backgrounds
   (topbar Sign out, hero CTA). NOT for use on light page backgrounds —
   would violate rule #1 (must be a gradient on light surfaces). */
.dl-button--ghost-light, .dl-btn--ghost-light{
  background:rgba(255,255,255,.10);color:#fff;border-color:rgba(255,255,255,.24);
  box-shadow:none;
}
.dl-button--ghost-light:hover,.dl-btn--ghost-light:hover{
  background:rgba(255,255,255,.20);border-color:rgba(255,255,255,.42);color:#fff;
  filter:none;
}

/* Tooltips: a single canonical [data-tip] system lives further down
   ("---------- Tooltips (data-tip="…") ----------"). The legacy block
   that used to sit here defined a SECOND, conflicting [data-tip]
   implementation whose `data-tip-pos="bottom"` rule inverted the
   position (it placed the tip ABOVE the trigger). Because its
   :hover-qualified selector out-specified the canonical system, the
   header "Sign in" tip rendered above the topbar and was clipped.
   Removed in v0.45.15 so there is exactly one tooltip system and
   `data-tip-pos="bottom"` reliably means "below the trigger". */

/* Enforce no underlines on any button or button-styled link */
.dl-button,.dl-button:hover,.dl-button:focus,
.dl-btn,.dl-btn:hover,.dl-btn:focus{text-decoration:none !important}

/* ---------- Hero ---------- */
.dl-hero{
  position:relative;overflow:hidden;color:#fff;
  background:linear-gradient(160deg,#0a1628 0%,#0f2439 25%,#162f4d 50%,#1a3a5c 75%,#132d47 100%);
  padding:6.5rem 0 8rem;min-height:560px;
}
.dl-hero .container{position:relative;z-index:5;text-align:center}
.dl-hero h1{
  font-size:clamp(2.1rem,4.6vw,3.4rem);
  font-weight:800;line-height:1.08;letter-spacing:-.025em;
  margin:0 0 1.4rem;color:#fff;
}
.dl-hero p.lead{
  font-size:clamp(1rem,1.4vw,1.18rem);line-height:1.75;font-weight:400;
  color:rgba(255,255,255,.9);max-width:680px;margin:0 auto 2rem;
}
.dl-hero__badge{
  display:inline-flex;align-items:center;gap:.5rem;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);
  border-radius:999px;padding:.4rem 1rem .4rem .8rem;
  font-size:.78rem;font-weight:600;letter-spacing:.04em;
  color:rgba(255,255,255,.9);margin-bottom:1.4rem;
  backdrop-filter:blur(8px);
}
.dl-hero__badge i{color:var(--c-cyan-400);font-size:.85rem}
.dl-hero__accent{
  background:linear-gradient(110deg,#38bdf8 0%,#7dd3fc 25%,#a5f3fc 50%,#7dd3fc 75%,#38bdf8 100%);
  background-size:200% auto;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  animation:accentShimmer 6s ease-in-out infinite;
}
@keyframes accentShimmer{0%,100%{background-position:200% center}50%{background-position:-200% center}}

.dl-hero__cta{display:flex;flex-wrap:wrap;gap:.9rem;justify-content:center;margin-top:.5rem}

.dl-hero__trust{
  display:flex;flex-wrap:wrap;justify-content:center;gap:1.4rem;
  margin-top:2.4rem;font-size:.82rem;letter-spacing:.02em;
}
.dl-hero__trust span{display:inline-flex;align-items:center;gap:.45rem;color:rgba(255,255,255,.78)}
.dl-hero__trust i{color:var(--c-cyan-400);font-size:.9rem}

.dl-hero__stats{
  display:flex;flex-wrap:wrap;justify-content:center;gap:2.5rem;
  margin-top:2.2rem;padding-top:2rem;
  border-top:1px solid rgba(255,255,255,.1);
}
.dl-hero__stat{text-align:center;min-width:90px}
.dl-hero__stat .v{font-size:1.85rem;font-weight:800;color:#fff;line-height:1;margin-bottom:.3rem}
.dl-hero__stat .l{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:rgba(255,255,255,.6);font-weight:600}

/* Hero background layers */
.dl-hero::before{
  content:'';position:absolute;inset:0;z-index:2;pointer-events:none;
  background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.035) 1px,transparent 0);
  background-size:40px 40px;
}
/* Hero no longer renders its own white Draco watermark — the platform
   draco_b.png watermark (pinned to the viewport via .dl-section::after) is the
   single source of brand mark across every page. */
.dl-hero::after{content:none}
.dl-orb{position:absolute;border-radius:50%;filter:blur(80px);z-index:1;pointer-events:none;will-change:transform}
.dl-orb--1{width:600px;height:600px;background:radial-gradient(circle,rgba(59,130,246,.18),transparent 70%);top:-20%;right:-10%;animation:orb1 28s ease-in-out infinite}
.dl-orb--2{width:400px;height:400px;background:radial-gradient(circle,rgba(56,189,248,.14),transparent 70%);bottom:-30%;left:5%;animation:orb2 32s ease-in-out infinite}
.dl-orb--3{width:300px;height:300px;background:radial-gradient(circle,rgba(16,185,129,.10),transparent 70%);top:20%;left:-10%;animation:orb3 24s ease-in-out infinite}
@keyframes orb1{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(-50px,35px) scale(1.12)}66%{transform:translate(25px,-25px) scale(.92)}}
@keyframes orb2{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(40px,-30px) scale(1.08)}66%{transform:translate(-30px,20px) scale(.88)}}
@keyframes orb3{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(45px,30px) scale(1.15)}}

.dl-float-icons{position:absolute;inset:0;pointer-events:none;z-index:1;overflow:hidden}
.dl-float-icon{
  position:absolute;color:rgba(255,255,255,.045);font-size:1.7rem;
  animation:iconRise linear infinite;
}
@keyframes iconRise{
  0%{transform:translateY(0) rotate(0);opacity:0}
  5%{opacity:1}
  95%{opacity:1}
  100%{transform:translateY(-820px) rotate(180deg);opacity:0}
}

.dl-wave{position:absolute;bottom:-1px;left:0;width:100%;z-index:4;line-height:0}
.dl-wave svg{display:block;width:100%;height:auto}

/* ---------- Sections ---------- */
.dl-section{padding:5rem 0;position:relative}
.dl-section--mist{background:linear-gradient(180deg,#f8fafc 0%,#eef2f7 100%)}
.dl-section--gray{background:var(--c-slate-100)}
.dl-section--white{background:#fff}
/* ---------- Platform watermark (v0.36.9 — one real DOM element) ----------
   `<div class="dl-watermark">` is emitted once per page right after `<body>`
   (see includes/header.php). It sits position:fixed at the viewport center,
   on top of every section, and uses mix-blend-mode:multiply so the dark
   draco logo tints whatever color is below it — visible on light bg
   sections AND through alpha-translucent dark navy bands.

   Because it's a real DOM node (not a per-section pseudo-element),
   there is GUARANTEED to be exactly one watermark on screen at all
   times, regardless of how many .dl-section blocks the page has and
   regardless of any ancestor's transform/filter quirks. */
.dl-watermark{
  position:fixed;top:50%;left:50%;
  transform:translate(-50%,-50%);
  width:min(520px,70vw);height:min(520px,70vw);
  background:url('/assets/images/draco_b.png') no-repeat center/contain;
  /* v0.36.11 — Opacity dropped .10 → .05 so the watermark stops competing
     with body copy on white sections. With mix-blend-mode:multiply at .05
     the dragon is still visible as a faint silhouette but text underneath
     stays comfortably readable. */
  opacity:.05;mix-blend-mode:multiply;
  pointer-events:none;
  /* z-index 1000 — above section content (z-index 1) but below the topbar
     (z-index 1100), drawer (1200), modal/toast (1300+) so overlays don't
     get tinted by the multiply blend when they open. */
  z-index:1000;
}
@media (max-width:640px){
  .dl-watermark{width:min(320px,82vw);height:min(320px,82vw);opacity:.04}
}
@media print{
  .dl-watermark{display:none}
}

.dl-section{position:relative;overflow:hidden}
.dl-section > .container{position:relative;z-index:1}
.dl-auth-wrap,.dl-404{position:relative;overflow:hidden}
.dl-auth-wrap > *,.dl-404 > *{position:relative;z-index:1}
.dl-section--watermark{} /* legacy modifier, kept for back-compat — no longer needed */

.dl-section__title{text-align:center;max-width:920px;margin:0 auto 3.5rem;padding:0 1rem}
.dl-section__title h2{font-weight:800;font-size:clamp(1.6rem,2.6vw,2.2rem);color:var(--c-navy-900);letter-spacing:-.02em;margin:0 0 .9rem}
.dl-section__title p{color:var(--c-text-muted);font-size:1.04rem;line-height:1.65;margin:0}
.dl-section__title .dl-accent{
  display:block;width:56px;height:3px;
  background:linear-gradient(90deg,var(--c-navy-500),var(--c-cyan-400));
  border-radius:2px;margin:1.2rem auto 0;
}

/* ---------- Program cards (path-card style) ---------- */
.dl-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1.5rem}
.dl-card{
  /* Translucent so the platform watermark behind shows clearly through the body
     as the page scrolls. Light blur preserves the mark's edges. */
  background:rgba(255,255,255,.78);
  -webkit-backdrop-filter:blur(2px);
  backdrop-filter:blur(2px);
  border:1px solid rgba(226,232,240,.7);border-radius:var(--radius-lg);overflow:hidden;
  height:100%;display:flex;flex-direction:column;
  box-shadow:0 4px 16px rgba(0,0,0,.05);
  transition:transform .3s ease,box-shadow .3s ease,border-color .3s ease;
}
.dl-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:#c7d2e0}

.dl-card__head{
  position:relative;overflow:hidden;padding:2rem 2rem 1.6rem;color:#fff;
}
/* v0.36.9 — Solid dark navy gradient matching .dl-cta. The page-level
   .dl-watermark sits on top via mix-blend-mode:multiply, so the dragon
   reads through naturally. */
.dl-card__head--navy{
  background:linear-gradient(160deg,#0a1628 0%,#0f2439 30%,#1a3a5c 60%,#162f4d 100%);
}
.dl-card__head--teal{background:linear-gradient(135deg,#0e7490,#0891b2)}
.dl-card__head--slate{background:linear-gradient(135deg,#334155,#475569)}
.dl-card__head h3{color:#fff;font-weight:700;font-size:1.4rem;margin:0 0 .4rem;position:relative;z-index:2}
.dl-card__head p{color:rgba(255,255,255,.92);font-size:.92rem;margin:0;line-height:1.5;position:relative;z-index:2}
.dl-card__head::after{
  content:'';position:absolute;top:-30%;right:-10%;width:200px;height:200px;
  background:rgba(255,255,255,.06);border-radius:50%;pointer-events:none;
}
.dl-card__head-icon{position:absolute;bottom:-10px;right:18px;font-size:4rem;opacity:.14;z-index:1;color:#fff}
.dl-card__eyebrow{
  font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;
  color:rgba(255,255,255,.7);font-weight:700;margin-bottom:.4rem;
}

.dl-card__body{padding:1.75rem 2rem 2rem;display:flex;flex-direction:column;gap:1rem;flex:1}
.dl-card__body ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.55rem}
.dl-card__body li{
  display:flex;align-items:flex-start;gap:.6rem;
  font-size:.93rem;color:var(--c-slate-600);line-height:1.5;
}
.dl-card__body li i{color:var(--c-teal-600);font-size:.82rem;margin-top:.34rem;flex-shrink:0;width:14px}
.dl-card__foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding-top:.5rem;flex-wrap:wrap}

/* Featured card variant — richer body for the home-page program tile */
.dl-card--featured .dl-card__head{padding:1.85rem 2rem 1.45rem}
.dl-card--featured .dl-card__head h3{font-size:1.45rem;letter-spacing:-.015em}
.dl-card--featured .dl-card__body{padding:1.5rem 2rem 1.75rem;gap:1.2rem}
.dl-card__meta{
  display:flex;flex-wrap:wrap;gap:.4rem .5rem;margin-top:.85rem;position:relative;z-index:2;
}
.dl-card__chip{
  display:inline-flex;align-items:center;gap:.4rem;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.20);
  color:#fff;font-size:.74rem;font-weight:600;letter-spacing:.02em;
  padding:.32rem .65rem;border-radius:999px;
  backdrop-filter:blur(4px);
}
.dl-card__chip i{color:rgba(255,255,255,.85);font-size:.78rem}

.dl-card__what-label{
  font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;font-weight:700;
  color:var(--c-slate-500);margin-bottom:.6rem;
}
.dl-card__what ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.5rem}
.dl-card__what li{display:flex;align-items:flex-start;gap:.55rem;font-size:.94rem;color:var(--c-slate-700);line-height:1.45}
.dl-card__what li i{color:var(--c-teal-600);font-size:.82rem;margin-top:.3rem;flex-shrink:0;width:14px}

.dl-card__price{
  background:linear-gradient(135deg,#f8fafc 0%,#eef2f7 100%);
  border:1px solid var(--c-slate-200);border-radius:10px;
  padding:1rem 1.1rem;
  display:flex;flex-direction:column;gap:.55rem;
}
.dl-card__price-main{display:flex;align-items:baseline;gap:.45rem;flex-wrap:wrap}
.dl-card__price-amount{font-size:1.85rem;font-weight:800;color:var(--c-navy-900);letter-spacing:-.02em;line-height:1}
.dl-card__price-currency{font-size:.78rem;font-weight:600;color:var(--c-slate-500);text-transform:uppercase;letter-spacing:.08em}
.dl-card__price-once{font-size:.78rem;color:var(--c-slate-500);font-weight:500;margin-left:.25rem}
.dl-card__price-disc{
  display:flex;align-items:center;gap:.5rem;
  background:#dff5e6;border:1px solid #b9e5c8;
  color:#15803d;font-size:.84rem;font-weight:600;
  padding:.4rem .65rem;border-radius:8px;line-height:1.3;
}
.dl-card__price-disc i{font-size:.85rem}
.dl-card__price-disc strong{color:#0f5132;font-weight:800}

.dl-card__cta{display:flex;gap:.5rem;flex-wrap:wrap}
@media (max-width:520px){
  .dl-card--featured .dl-card__head{padding:1.4rem 1.4rem 1.15rem}
  .dl-card--featured .dl-card__body{padding:1.25rem 1.4rem 1.5rem}
  .dl-card--featured .dl-card__head h3{font-size:1.25rem}
  .dl-card__price-amount{font-size:1.55rem}
  .dl-card__foot{flex-direction:column;align-items:stretch;gap:.7rem}
  .dl-card__foot .dl-badge{align-self:flex-start}
  .dl-card__cta{width:100%}
  .dl-card__cta .dl-btn{flex:1;min-width:0}
}

/* Badges */
.dl-badge{
  display:inline-flex;align-items:center;gap:.35rem;
  padding:.3rem .7rem;border-radius:999px;
  font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
}
.dl-badge--soon{background:#fff4d6;color:#7a5b00;border:1px solid #f0d889}
.dl-badge--open{background:#dff5e6;color:#15803d;border:1px solid #86efac}
.dl-badge--active{background:#dbeafe;color:#1e40af;border:1px solid #93c5fd}

/* ---------- Feature row ---------- */
.dl-features{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.2rem}
.dl-feature{
  --feat-accent:#2d5a87;
  background:#fff;border:1px solid var(--c-slate-200);border-radius:var(--radius);
  padding:1.6rem;text-align:left;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.dl-feature:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:#c7d2e0}
.dl-feature__icon{
  width:44px;height:44px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--feat-accent),color-mix(in srgb,var(--feat-accent) 70%, #0a1628));
  color:#fff;font-size:1.1rem;margin-bottom:.9rem;
}
/* v0.36.11 — Subdued tint variation for feature cards that are NOT a
   sequence. Pale 6% wash + slightly-tinted border so each card reads as
   distinct without overwhelming the page. Sequence cards (.dl-step) are
   intentionally NOT tinted — they must remain uniform to read as steps.
   Six accents cycle so any card count picks up varied colors. */
.dl-features > .dl-feature:nth-child(6n+1){--feat-accent:#2d5a87} /* navy */
.dl-features > .dl-feature:nth-child(6n+2){--feat-accent:#059669} /* emerald */
.dl-features > .dl-feature:nth-child(6n+3){--feat-accent:#0891b2} /* cyan */
.dl-features > .dl-feature:nth-child(6n+4){--feat-accent:#d97706} /* amber */
.dl-features > .dl-feature:nth-child(6n+5){--feat-accent:#7c3aed} /* violet */
.dl-features > .dl-feature:nth-child(6n+6){--feat-accent:#be185d} /* magenta */
/* Public-site default — pale 6% wash + 22% accent border. The
   `.dl-admin-shell .dl-feature` block further down in this file overrides
   this with its stronger admin-specific treatment via cascade order. */
.dl-features > .dl-feature{
  background:linear-gradient(180deg,
    color-mix(in srgb,var(--feat-accent) 6%,#fff) 0%,
    #fff 90%);
  border-color:color-mix(in srgb,var(--feat-accent) 22%,#e2e8f0);
}
.dl-feature h4{font-size:1.05rem;color:var(--c-navy-900);margin:0 0 .35rem;font-weight:700}
.dl-feature p{margin:0;color:var(--c-text-muted);font-size:.92rem;line-height:1.5}

/* ---------- CTA banner ----------
   v0.36.9 — Solid dark navy gradient. The single page-level .dl-watermark
   sits on top with mix-blend-mode:multiply, so the dragon is visible
   through this band without needing the band itself to be alpha. */
.dl-cta{
  position:relative;overflow:hidden;padding:5rem 0;color:#fff;text-align:center;
  background:linear-gradient(160deg,#0a1628 0%,#0f2439 30%,#1a3a5c 60%,#162f4d 100%);
}
.dl-cta::before{content:'';position:absolute;inset:0;background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.025) 1px,transparent 0);background-size:40px 40px;z-index:0;pointer-events:none}
.dl-cta .container{position:relative;z-index:2}
.dl-cta .dl-orb{z-index:1}
.dl-cta .dl-orb--1{width:300px;height:300px;background:rgba(59,130,246,.14);top:-20%;right:10%;animation:none}
.dl-cta .dl-orb--2{width:200px;height:200px;background:rgba(16,185,129,.10);bottom:-15%;left:15%;animation:none}
.dl-cta .container{position:relative;z-index:1}
.dl-cta h2{color:#fff;font-weight:800;font-size:clamp(1.6rem,2.8vw,2.25rem);margin:0 0 .7rem;letter-spacing:-.02em}
.dl-cta p{color:rgba(255,255,255,.9);font-size:1.08rem;max-width:600px;margin:0 auto 2rem;line-height:1.65}
.dl-cta__buttons{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center}
@media (max-width:480px){.dl-cta__buttons{flex-direction:column;align-items:stretch}.dl-cta__buttons .dl-btn{width:100%}}

/* ---------- Auth (single-column centered card) ---------- */
.dl-auth-wrap{
  flex:1;display:flex;align-items:center;justify-content:center;
  padding:3rem 1.25rem;
  background:
    radial-gradient(900px 600px at 80% -10%, rgba(56,189,248,.08), transparent 60%),
    radial-gradient(700px 500px at -10% 110%, rgba(45,90,135,.10), transparent 60%),
    linear-gradient(180deg,#f8fafc 0%, #eef2f7 100%);
}
.dl-auth-card{
  width:100%;max-width:440px;
  /* v0.36.4 — bumped translucency from .92 → .78 so the platform draco
     watermark behind the Welcome Back form clearly bleeds through. The
     backdrop-filter blur keeps form text crisp despite the alpha. */
  background:rgba(255,255,255,.78);
  -webkit-backdrop-filter:blur(8px) saturate(1.05);
  backdrop-filter:blur(8px) saturate(1.05);
  border:1px solid rgba(226,232,240,.85);border-radius:var(--radius-lg);
  box-shadow:0 14px 36px rgba(10,22,40,.10);
  padding:2.4rem 2.2rem;
}
.dl-auth-card .dl-auth-mark{
  display:flex;align-items:center;justify-content:center;gap:.55rem;
  margin-bottom:1.6rem;font-weight:800;color:var(--c-navy-950);font-size:1.05rem;
}
.dl-auth-card .dl-auth-mark img{height:30px;width:auto}
.dl-auth-card h1{
  margin:0 0 .35rem;font-size:1.55rem;font-weight:800;
  color:var(--c-navy-900);letter-spacing:-.01em;text-align:center;
}
.dl-auth-card p.sub{margin:0 0 1.8rem;color:var(--c-text-muted);font-size:.95rem;text-align:center}
.dl-auth-card .dl-backlink{margin:-1rem 0 .5rem;display:inline-flex}

@media (max-width:520px){
  .dl-auth-wrap{padding:2rem .9rem}
  .dl-auth-card{padding:1.85rem 1.4rem;border-radius:12px;box-shadow:0 8px 22px rgba(10,22,40,.08)}
  .dl-auth-card h1{font-size:1.35rem}
}

/* ---------- (legacy split-layout panel — kept for safe rollback, no longer rendered) ---------- */
.dl-auth-panel{display:contents}
.dl-auth-brand--hidden{display:none}
.dl-auth-brand{
  position:relative;overflow:hidden;
  background:linear-gradient(160deg,#0a1628 0%,#0f2439 25%,#162f4d 50%,#1a3a5c 75%,#132d47 100%);
  color:#fff;padding:4rem 3rem;
  display:flex;flex-direction:column;justify-content:space-between;
  min-height:calc(100vh - 68px);
}
.dl-auth-brand::before{
  content:'';position:absolute;inset:0;z-index:1;pointer-events:none;
  background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.035) 1px,transparent 0);
  background-size:40px 40px;
}
.dl-auth-brand::after{
  content:'';position:absolute;top:55%;left:50%;transform:translate(-50%,-50%);
  width:480px;height:480px;
  background:url('/assets/images/draco_w.png') no-repeat center/contain;
  opacity:.05;z-index:1;pointer-events:none;
}
.dl-auth-brand > *{position:relative;z-index:2}
.dl-auth-brand__top{display:flex;align-items:center;gap:.6rem;font-weight:800;font-size:1.1rem;color:#fff}
.dl-auth-brand__top img{height:34px}
.dl-auth-brand__hero{max-width:480px;margin:auto 0}
.dl-auth-brand__hero .dl-hero__badge{margin-bottom:1.2rem}
.dl-auth-brand__hero h2{
  color:#fff;font-size:clamp(1.6rem,2.6vw,2.2rem);font-weight:800;
  line-height:1.15;letter-spacing:-.02em;margin:0 0 1rem;
}
.dl-auth-brand__hero h2 .dl-hero__accent{display:inline}
.dl-auth-brand__hero p{color:rgba(255,255,255,.85);font-size:1.05rem;line-height:1.65;margin:0 0 2rem}
.dl-auth-brand__values{display:flex;flex-direction:column;gap:.85rem}
.dl-auth-brand__value{display:flex;align-items:flex-start;gap:.75rem;color:rgba(255,255,255,.92)}
.dl-auth-brand__value i{
  width:34px;height:34px;border-radius:8px;background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.16);
  display:flex;align-items:center;justify-content:center;
  color:var(--c-cyan-400);font-size:.95rem;flex-shrink:0;
}
.dl-auth-brand__value strong{display:block;color:#fff;font-weight:700;font-size:.97rem;margin-bottom:.1rem}
.dl-auth-brand__value span{color:rgba(255,255,255,.7);font-size:.88rem;line-height:1.45;display:block}
.dl-auth-brand__foot{font-size:.82rem;color:rgba(255,255,255,.55)}

/* Right: form panel */
.dl-auth-panel{
  display:flex;align-items:center;justify-content:center;
  padding:3rem 2rem;background:#fff;
}
.dl-auth-card{
  width:100%;max-width:440px;
  background:#fff;border:1px solid var(--c-slate-200);border-radius:var(--radius-lg);
  box-shadow:0 4px 14px rgba(10,22,40,.06);padding:2.4rem 2.2rem;
}
.dl-auth-card .dl-auth-mark{
  display:none; /* hidden on split layout — brand panel handles it */
}
.dl-auth-card h1{margin:0 0 .3rem;font-size:1.6rem;font-weight:800;color:var(--c-navy-900);letter-spacing:-.01em}
.dl-auth-card p.sub{margin:0 0 1.8rem;color:var(--c-text-muted);font-size:.95rem}

/* Auth responsive: stack at 880px */
@media (max-width:880px){
  .dl-auth-wrap{grid-template-columns:1fr}
  .dl-auth-brand{min-height:auto;padding:2.4rem 1.5rem 3.2rem}
  .dl-auth-brand__hero{margin:1.6rem 0}
  .dl-auth-brand__hero h2{font-size:1.55rem}
  .dl-auth-brand__hero p{font-size:.98rem;margin-bottom:1.4rem}
  .dl-auth-brand__foot{display:none}
  .dl-auth-panel{padding:2.4rem 1.25rem 3rem}
  .dl-auth-card{padding:2rem 1.6rem}
  .dl-auth-card .dl-auth-mark{display:flex;align-items:center;gap:.5rem;margin-bottom:1.4rem;font-weight:800;color:var(--c-navy-950)}
  .dl-auth-card .dl-auth-mark img{height:28px}
}
.dl-field{display:block;margin-bottom:1rem}
.dl-field label{display:block;font-size:.85rem;font-weight:600;color:var(--c-slate-700);margin-bottom:.4rem}
.dl-field__hint{display:block;margin-top:.4rem;font-size:.78rem;color:var(--c-slate-500);line-height:1.45}
.dl-field__hint i{font-size:.75rem;margin-right:.3rem;color:var(--c-slate-400)}
.dl-field__counter{float:right;font-variant-numeric:tabular-nums;font-weight:500;color:var(--c-slate-400)}
.dl-field__counter.is-near{color:#d97706}
.dl-field__counter.is-full{color:#dc2626}

/* Password strength meter */
.dl-pw-meter{
  height:4px;background:var(--c-slate-100);border-radius:2px;overflow:hidden;
  margin-top:.45rem;
}
.dl-pw-meter__bar{
  height:100%;width:0;background:#dc2626;border-radius:2px;
  transition:width .25s ease,background .25s ease;
}
.dl-pw-hint{margin-top:.35rem}

/* Account page grid */
/* =====================================================================
   LMS — student classroom styles (v0.37.0)
   /learn/ dashboard · /learn/program.php · /learn/lesson.php · /learn/quiz.php
   ===================================================================== */
.dl-learn-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.1rem}
.dl-learn-card{
  display:flex;flex-direction:column;gap:.6rem;
  background:#fff;border:1px solid var(--c-slate-200);border-radius:14px;
  padding:1.1rem 1.25rem 1rem;color:inherit;text-decoration:none;
  box-shadow:0 2px 8px rgba(10,22,40,.04);
  transition:box-shadow .2s ease,border-color .2s ease,transform .2s ease;
}
.dl-learn-card:hover{box-shadow:0 6px 18px rgba(10,22,40,.08);border-color:#c7d2e0;transform:translateY(-1px)}
.dl-learn-card__head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}
.dl-learn-card__eyebrow{font-size:.7rem;font-weight:700;color:var(--c-navy-700);letter-spacing:.14em;text-transform:uppercase}
.dl-learn-card__status{font-size:.7rem;font-weight:700;color:var(--c-teal-600);text-transform:uppercase;letter-spacing:.1em;background:#dcfce7;padding:.18rem .5rem;border-radius:999px}
.dl-learn-card__title{margin:0;font-size:1.1rem;color:var(--c-navy-900);font-weight:700;letter-spacing:-.01em}
.dl-learn-card__tagline{margin:0;color:var(--c-text-muted);font-size:.88rem;line-height:1.5}
.dl-learn-card__progress{margin-top:auto}
.dl-learn-card__progress-bar{position:relative;height:8px;background:#e2e8f0;border-radius:999px;overflow:hidden}
.dl-learn-card__progress-bar > span{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,#1e3a5f,#2c5282);border-radius:999px;transition:width .3s ease}
.dl-learn-card__progress-text{margin-top:.35rem;font-size:.78rem;color:var(--c-slate-600)}
.dl-learn-card__cta{margin-top:.35rem}
.dl-learn-card__cta .dl-btn{width:100%}

/* ─── Classroom overview page (v0.38.9) — full-width chrome
   Replaces the old dark .dl-pagehead with an integrated header that
   matches the lesson/quiz pages. */
.dl-section.dl-learn-overview{padding:clamp(1.4rem, 3vw, 2.4rem) 0 clamp(2.4rem, 4vw, 4rem)}
.dl-learn-overview__container{max-width:none;padding:0 clamp(1.2rem, 3.5vw, 3rem)}
.dl-learn-overview__head{
  display:grid;grid-template-columns:auto 1fr;gap:1.2rem;align-items:center;
  margin:1.2rem 0 1.6rem;padding:1.4rem clamp(1.2rem, 2.5vw, 1.8rem);
  background:#fff;border:1px solid var(--c-slate-200);border-radius:14px;
  box-shadow:0 2px 8px rgba(10,22,40,.04);
}
.dl-learn-overview__head-icon{
  width:56px;height:56px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#1e3a5f 0%,#0f2439 100%);
  color:#fff;border-radius:12px;font-size:1.5rem;
  box-shadow:0 4px 12px rgba(15,23,42,.18);
}
.dl-learn-overview__eyebrow{
  font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--c-blue-400);margin:0 0 .25rem;
}
.dl-learn-overview__title{
  font-family:Georgia,"Iowan Old Style","Charter",serif;
  font-size:clamp(1.5rem,2.6vw,2rem);font-weight:700;
  color:var(--c-navy-900);letter-spacing:-.02em;line-height:1.2;
  margin:0 0 .35rem;
}
.dl-learn-overview__tagline{
  margin:0;font-size:.95rem;color:var(--c-slate-700);line-height:1.5;
}
@media (max-width:520px){
  .dl-learn-overview__head{grid-template-columns:1fr;gap:.75rem}
  .dl-learn-overview__head-icon{width:48px;height:48px;font-size:1.3rem}
}

/* Program hero (progress + Continue CTA stacked across two columns) */
.dl-learn-hero{
  display:grid;grid-template-columns:minmax(0,1.5fr) auto;gap:1.25rem;align-items:center;
  background:#fff;border:1px solid var(--c-slate-200);border-radius:14px;
  padding:1.2rem 1.4rem;box-shadow:0 2px 8px rgba(10,22,40,.04);
}
@media (max-width:760px){.dl-learn-hero{grid-template-columns:1fr}}
.dl-learn-hero__pct{font-size:2.2rem;font-weight:800;color:var(--c-navy-900);line-height:1;margin-bottom:.4rem}
.dl-learn-hero__bar{position:relative;height:10px;background:#e2e8f0;border-radius:999px;overflow:hidden;margin-bottom:.5rem}
.dl-learn-hero__bar > span{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,#1e3a5f,#2c5282);border-radius:999px}
.dl-learn-hero__meta{display:flex;gap:1rem;flex-wrap:wrap;color:var(--c-slate-600);font-size:.85rem}
.dl-learn-hero__meta i{color:var(--c-blue-400);margin-right:.2rem}

/* Module + lesson list (numbered) */
.dl-modulelist{list-style:none;padding:0;margin:1.6rem 0 0;display:flex;flex-direction:column;gap:1rem}
.dl-modulelist__item{background:#fff;border:1px solid var(--c-slate-200);border-radius:12px;overflow:hidden;box-shadow:0 1px 3px rgba(10,22,40,.04)}
.dl-modulelist__head{display:flex;align-items:center;gap:1rem;padding:1rem 1.25rem;border-bottom:1px solid var(--c-slate-100);background:#f8fafc}
.dl-modulelist__num{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#1e3a5f,#2c5282);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;flex-shrink:0}
.dl-modulelist__title{flex:1;min-width:0}
.dl-modulelist__title h3{margin:0 0 .15rem;font-size:1.05rem;color:var(--c-navy-900);font-weight:700}
.dl-modulelist__title p{margin:0;color:var(--c-text-muted);font-size:.85rem;line-height:1.5}
.dl-modulelist__progress{display:flex;align-items:center;gap:.6rem;flex-shrink:0}
.dl-modulelist__pct{font-weight:700;color:var(--c-navy-700);font-size:.85rem;min-width:36px;text-align:right}

.dl-lessonlist{list-style:none;padding:0;margin:0}
.dl-lessonlist__item{
  display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;gap:.85rem;
  padding:.85rem 1.25rem;border-top:1px solid var(--c-slate-100);
  color:inherit;text-decoration:none;
  transition:background .12s ease;
}
.dl-lessonlist__item:hover{background:#f1f5f9}
.dl-lessonlist__status{font-size:1.05rem;display:inline-flex;align-items:center;justify-content:center;width:22px}
.dl-lessonlist__type{font-size:.85rem;color:var(--c-blue-400);width:22px;text-align:center}
.dl-lessonlist__title{color:var(--c-navy-900);font-weight:600;font-size:.94rem;min-width:0}
.dl-lessonlist__item--complete .dl-lessonlist__title{color:var(--c-slate-600)}
.dl-lessonlist__est{color:var(--c-slate-500);font-size:.78rem;white-space:nowrap}

/* Lesson view */
.dl-lesson-container{max-width:880px}
.dl-lesson{background:#fff;border:1px solid var(--c-slate-200);border-radius:14px;padding:1.6rem 1.8rem;box-shadow:0 2px 8px rgba(10,22,40,.04)}
.dl-lesson__video{margin:-1.6rem -1.8rem 1.4rem}
.dl-lesson__video video{display:block;width:100%;background:#000}
.dl-lesson__body{font-size:1rem;line-height:1.7;color:var(--c-text)}
.dl-lesson__body h2,.dl-lesson__body h3{margin:1.5rem 0 .6rem;color:var(--c-navy-900)}
.dl-lesson__body p{margin:0 0 1rem}
.dl-lesson__body ul,.dl-lesson__body ol{margin:.5rem 0 1.2rem;padding-left:1.6rem}
.dl-lesson__body li{margin:.3rem 0;line-height:1.6}
.dl-lesson__body strong{color:var(--c-navy-900)}
.dl-lesson__body blockquote{margin:1.2rem 0;padding:.85rem 1.1rem;background:#f1f5f9;border-left:3px solid var(--c-blue-400);border-radius:6px;color:var(--c-slate-700)}
.dl-lesson__quiz-cta{
  display:flex;align-items:center;gap:1rem;
  margin-top:1.5rem;padding:1.1rem 1.3rem;
  background:linear-gradient(135deg,#ecfeff,#fff);border:1px solid #a5f3fc;border-radius:12px;
}
.dl-lesson__quiz-cta > i{font-size:1.6rem;color:#0891b2}
.dl-lesson__quiz-cta > div{flex:1}
.dl-lesson__quiz-cta h3{margin:0 0 .25rem;font-size:1rem}
.dl-lesson__quiz-cta p{margin:0;font-size:.88rem;color:var(--c-slate-700)}
.dl-lesson__footnav{display:flex;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-top:1.4rem}

/* =====================================================================
   Quiz page (v0.38.6 — premium polish to match the lesson page)
   ─────────────────────────────────────────────────────────────────────
   Three phases, three modules:
     1. .quiz-landing   — landing card with stats + Start
     2. .quiz-page      — sticky bar + palette + one question at a time
     3. .quiz-report    — hero with animated %, review cards
   Shared: .dl-quiz-kind chip, .quiz-result-pill, .quiz-celebrate overlay.
   ===================================================================== */

/* v0.38.6 — global guard so the `hidden` attribute is honored even
   when a class-based `display:` rule would otherwise win on specificity.
   Without this, `<button class="dl-button" hidden>` still renders. */
[hidden]{display:none !important}

/* ─── Dashboard enrollment-card enhancements (v0.38.9) ───────────
   Progress strip, next-lesson row, and meta list inside each `.dl-card`
   that wraps an active enrollment. Designed to make the "what's next?"
   action zero-friction for returning students. */
.dl-enroll-card__progress{margin:0 0 .85rem}
.dl-enroll-card__progress-head{
  display:flex;align-items:baseline;gap:.55rem;
  margin:0 0 .35rem;
}
.dl-enroll-card__pct{
  font-size:1.25rem;font-weight:800;line-height:1;
  color:var(--c-navy-900);letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;
}
.dl-enroll-card__progress-meta{
  font-size:.78rem;color:var(--c-slate-600);font-weight:600;
}
.dl-enroll-card__bar{
  position:relative;height:5px;background:#e2e8f0;border-radius:999px;overflow:hidden;
}
.dl-enroll-card__bar > span{
  position:absolute;left:0;top:0;bottom:0;border-radius:999px;
  background:linear-gradient(90deg,var(--c-blue-400),var(--c-cyan-400));
  transition:width .45s cubic-bezier(.4,0,.2,1);
}

.dl-enroll-card__nextlesson{
  display:grid;grid-template-columns:1fr auto;gap:.25rem .85rem;
  margin:0 0 1rem;padding:.75rem .9rem;
  background:linear-gradient(135deg,#eff6ff 0%,#e0f2fe 100%);
  border:1px solid #bfdbfe;border-radius:10px;
  text-decoration:none;color:inherit;
  transition:transform .12s ease, box-shadow .12s ease, border-color .12s ease;
}
.dl-enroll-card__nextlesson:hover{
  border-color:var(--c-blue-400);
  box-shadow:0 4px 12px rgba(74,126,176,.15);
  transform:translateY(-1px);
}
.dl-enroll-card__nextlabel{
  grid-column:1 / -1;
  font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--c-blue-400);
}
.dl-enroll-card__nexttitle{
  display:flex;align-items:center;gap:.5rem;
  font-size:.92rem;font-weight:700;color:var(--c-navy-900);
  line-height:1.35;
  min-width:0;overflow:hidden;text-overflow:ellipsis;
}
.dl-enroll-card__nexttitle i{
  color:var(--c-blue-400);font-size:.85rem;flex-shrink:0;
}
.dl-enroll-card__nextmeta{
  grid-column:2;
  align-self:center;
  font-size:.72rem;color:var(--c-slate-600);font-weight:600;
  white-space:nowrap;
}
@media (max-width:520px){
  .dl-enroll-card__nextlesson{grid-template-columns:1fr}
  .dl-enroll-card__nextmeta{grid-column:1;margin-top:.15rem}
}

.dl-enroll-card__meta{
  list-style:none;padding:0;margin:0 0 1rem;
  display:flex;gap:1rem;flex-wrap:wrap;
  font-size:.78rem;color:var(--c-slate-600);
}
.dl-enroll-card__meta li{display:inline-flex;align-items:center;gap:.4rem;margin:0}
.dl-enroll-card__meta li i{color:var(--c-slate-400);font-size:.75rem}

/* Legacy chip (kept for any non-rewritten consumers) */
.dl-quiz-kind{display:inline-block;padding:.18rem .55rem;border-radius:999px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em}
.dl-quiz-kind--practice  {background:#dbeafe;color:#1e40af}
.dl-quiz-kind--graded    {background:#fef3c7;color:#92400e}
.dl-quiz-kind--final_exam{background:#fce7f3;color:#9d174d}

/* ── Landing ────────────────────────────────────────────────────── */
/* Full-width landing chrome (v0.38.8). The `.container` base would
   normally cap at 1200px — `none` releases it so the landing matches
   the edge-to-edge feel of the lesson and quiz-attempt chrome.
   Also dial back the default 5rem .dl-section vertical padding — that
   was too generous when the content spans the full viewport. */
.dl-section.quiz-landing,
.dl-section.quiz-report{padding:clamp(1.4rem, 3vw, 2.4rem) 0 clamp(2rem, 4vw, 3.5rem)}
.quiz-landing__container{max-width:none;padding:0 clamp(1.2rem, 3.5vw, 3rem)}

/* v0.44.4 — Quiz landing head card. Soft gradient background +
   stronger title size + more breathing room. The subtle top-left
   tint gives the page a "quiz starting" feel without being loud. */
.quiz-landing__head{
  position:relative;
  background:
    radial-gradient(900px 320px at 0% 0%, rgba(74,126,176,.07), transparent 60%),
    linear-gradient(180deg,#ffffff 0%,#fafbfd 100%);
  border:1px solid var(--c-slate-200);border-radius:16px;
  padding:2.4rem clamp(1.5rem, 3vw, 2.8rem) 1.8rem;margin-top:1.2rem;
  box-shadow:0 4px 14px rgba(10,22,40,.05);
  overflow:hidden;
}
.quiz-landing__head-body{max-width:1100px}
.quiz-landing__chip{
  display:inline-flex;align-items:center;gap:.4rem;
  padding:.3rem .7rem;border-radius:999px;
  background:#eff6ff;color:var(--c-blue-400);border:1px solid #bfdbfe;
  font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  margin:0 0 .9rem;
}
.quiz-landing__chip i{font-size:.7rem}
.quiz-landing__chip--graded{background:#fef3c7;color:#92400e;border-color:#fcd34d}
.quiz-landing__chip--final_exam{background:#fce7f3;color:#9d174d;border-color:#f9a8d4}
.quiz-landing__title{
  font-family:Georgia,"Iowan Old Style","Charter",serif;
  font-size:clamp(1.9rem,2.9vw,2.5rem);font-weight:700;
  color:var(--c-navy-900);letter-spacing:-.02em;line-height:1.18;
  margin:0 0 1rem;
}
.quiz-landing__instructions{
  margin:0;font-size:1rem;line-height:1.65;color:var(--c-slate-700);
  max-width:78ch; /* keep prose lines readable when the chrome is full width */
}
.quiz-landing__instructions p{margin:0 0 .55rem}
.quiz-landing__instructions p:last-child{margin-bottom:0}

/* v0.44.4 — Stat cards as a quick-glance summary strip. Tile-style,
   light gradient borders, hover-lift, the best-score tile picks up an
   emerald accent so a passing best-score reads as "you've got this." */
.quiz-landing__stats{
  display:grid;grid-template-columns:repeat(auto-fit, minmax(150px, 1fr));
  gap:.85rem;margin-top:1.5rem;
}
.quiz-landing__stat{
  background:#fff;border:1px solid var(--c-slate-200);border-radius:12px;
  padding:1.05rem 1.15rem;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
  transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;
}
.quiz-landing__stat:hover{
  transform:translateY(-1px);
  box-shadow:0 4px 12px rgba(15,23,42,.07);
  border-color:#cbd5e1;
}
.quiz-landing__stat--accent{
  background:linear-gradient(135deg,#f0fdf4 0%,#fff 70%);
  border-color:#bbf7d0;
}
.quiz-landing__stat--accent:hover{border-color:#86efac}
.quiz-landing__stat-num{
  font-size:1.9rem;font-weight:800;line-height:1;color:var(--c-navy-900);
  letter-spacing:-.03em;font-variant-numeric:tabular-nums;
}
.quiz-landing__stat-of{font-size:1rem;color:var(--c-slate-400);font-weight:700;margin-left:.1rem}
.quiz-landing__stat-label{
  margin-top:.45rem;font-size:.74rem;color:var(--c-slate-600);font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;
}

.quiz-landing__cta{
  display:flex;gap:.65rem;flex-wrap:wrap;align-items:center;
  margin-top:1.5rem;
}
.quiz-landing__exhausted{
  display:flex;gap:.85rem;align-items:flex-start;
  padding:.9rem 1.1rem;border-radius:10px;
  background:#fef3c7;border:1px solid #fcd34d;color:#854d0e;
  font-size:.92rem;line-height:1.5;flex:1;
}
.quiz-landing__exhausted i{font-size:1.1rem;flex-shrink:0;margin-top:1px;color:#b45309}

.quiz-landing__history-title{
  margin:2.2rem 0 .8rem;font-size:1.05rem;font-weight:700;color:var(--c-navy-900);
  display:flex;align-items:center;gap:.45rem;
}
.quiz-landing__history-title i{color:var(--c-slate-500);font-size:.95rem}

/* Result pill (used in history + report) */
.quiz-result-pill{
  display:inline-flex;align-items:center;gap:.32rem;
  padding:.22rem .55rem;border-radius:999px;
  font-size:.72rem;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;
}
.quiz-result-pill i{font-size:.75rem}
.quiz-result-pill--pass    {background:#dcfce7;color:#166534}
.quiz-result-pill--fail    {background:#fee2e2;color:#991b1b}
.quiz-result-pill--progress{background:#fef9c3;color:#854d0e}

/* ── Attempt phase: sticky bar + layout ────────────────────────── */
.quiz-page{
  background:#f6f8fb;
  min-height:calc(100vh - 67px);
  position:relative;isolation:isolate;
}
body.has-quiz-page{background:#f6f8fb}

.quiz-bar{
  position:sticky;top:67px;z-index:40;
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.9rem;
  padding:.55rem .95rem;
  background:#fff;
  border-bottom:1px solid var(--c-slate-200);
  box-shadow:0 1px 3px rgba(15,23,42,.04);
  height:49px;
}
.quiz-bar__exit{
  width:34px;height:34px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#475569 0%,#334155 100%);
  border:1px solid #1e293b;color:#fff;border-radius:7px;
  text-decoration:none;
  box-shadow:0 1px 2px rgba(15,23,42,.12);
  transition:filter .12s ease;
}
.quiz-bar__exit:hover{filter:brightness(1.12)}
.quiz-bar__crumb{
  display:flex;align-items:center;gap:.45rem;
  font-size:.86rem;min-width:0;overflow:hidden;
}
.quiz-bar__program{
  color:var(--c-slate-700);font-weight:600;text-decoration:none;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;
}
.quiz-bar__program:hover{color:var(--c-navy-900)}
.quiz-bar__sep{color:var(--c-slate-300);user-select:none}
.quiz-bar__title{
  color:var(--c-navy-900);font-weight:700;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;
}
.quiz-bar__right{display:flex;align-items:center;gap:.7rem}
.quiz-bar__pos{
  display:inline-flex;align-items:baseline;gap:.18rem;
  padding:.3rem .65rem;border-radius:7px;
  background:#f1f5f9;border:1px solid var(--c-slate-200);
  font-variant-numeric:tabular-nums;line-height:1;
}
.quiz-bar__pos-num{font-size:.95rem;font-weight:700;color:var(--c-navy-900)}
.quiz-bar__pos-sep{color:var(--c-slate-400);font-size:.78rem;margin:0 .05rem}
.quiz-bar__pos-total{font-size:.78rem;color:var(--c-slate-500);font-weight:600}
.quiz-bar__timer{
  display:inline-flex;align-items:center;gap:.4rem;
  padding:.3rem .65rem;border-radius:7px;
  background:#fff;border:1px solid var(--c-slate-200);
  font-size:.82rem;color:var(--c-slate-700);font-weight:600;
  font-variant-numeric:tabular-nums;
}
.quiz-bar__timer i{color:var(--c-slate-500);font-size:.78rem}
.quiz-bar__progress{
  position:absolute;left:0;right:0;bottom:-1px;height:3px;
  background:transparent;
}
.quiz-bar__progress > span{
  display:block;height:100%;width:0%;
  background:linear-gradient(90deg,var(--c-blue-400),var(--c-cyan-400));
  transition:width .35s cubic-bezier(.4,0,.2,1);
}

/* Layout: full-width chrome (matches lesson page). Question card fills
   the main column; palette stays pinned to the right rail at ≥1080px. */
.quiz-layout{
  display:grid;grid-template-columns:minmax(0, 1fr) 280px;
  gap:clamp(1.2rem, 3vw, 2.4rem);
  padding:clamp(1.4rem, 3vw, 2.4rem) clamp(1.2rem, 3.5vw, 3rem) 5rem;
}
@media (max-width:1079px){
  .quiz-layout{grid-template-columns:1fr;gap:1.2rem;padding-top:1.2rem}
}

.quiz-main{min-width:0}
.quiz-card{
  background:#fff;border:1px solid var(--c-slate-200);border-radius:14px;
  padding:2.2rem clamp(1.5rem, 3.5vw, 3rem) 1.8rem;
  box-shadow:0 4px 18px rgba(10,22,40,.06);
}
/* On very wide viewports, cap the card width so 80-char lines don't
   sprawl across the page — this matches the lesson article's 1100px cap. */
@media (min-width:1480px){
  .quiz-card{max-width:1240px}
}

.quiz-questions{list-style:none;padding:0;margin:0}
.quiz-question{padding:0}
.quiz-question[hidden]{display:none !important}

.quiz-question__eyebrow{
  display:flex;align-items:center;justify-content:space-between;gap:.85rem;
  margin:0 0 1rem;
}
.quiz-question__num{
  font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--c-slate-500);
}
.quiz-question__flag{
  display:inline-flex;align-items:center;gap:.35rem;
  padding:.32rem .65rem;border-radius:7px;
  background:#fff;border:1px solid var(--c-slate-200);
  color:var(--c-slate-600);font-size:.74rem;font-weight:600;
  cursor:pointer;transition:all .12s ease;
}
.quiz-question__flag:hover{border-color:#fcd34d;color:#92400e;background:#fffbeb}
.quiz-question__flag i{font-size:.72rem}
.quiz-question.is-flagged .quiz-question__flag{
  background:#fef3c7;border-color:#fcd34d;color:#92400e;
}
.quiz-question.is-flagged .quiz-question__flag i{color:#b45309}

.quiz-question__stem{
  font-family:Georgia,"Iowan Old Style","Charter",serif;
  font-size:clamp(1.2rem,1.8vw,1.45rem);font-weight:700;
  color:var(--c-navy-900);letter-spacing:-.01em;line-height:1.35;
  margin:0 0 1.4rem;
}

/* v0.44.4 — Choice buttons: bigger letter circle (38px → reads more
   like a tappable tile), more vertical padding, stronger hover lift,
   stronger "selected" treatment with a left-edge color stripe so the
   chosen answer is obvious at any zoom level. */
.quiz-question__choices{display:flex;flex-direction:column;gap:.6rem}
.quiz-choice{
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;
  padding:1.05rem 1.25rem;
  background:#fff;border:1.5px solid var(--c-slate-200);border-radius:12px;
  cursor:pointer;position:relative;
  transition:border-color .15s ease, background .15s ease, transform .12s ease, box-shadow .15s ease;
}
.quiz-choice:hover{
  border-color:var(--c-blue-300);background:#f8fafc;
  box-shadow:0 4px 12px rgba(15,23,42,.07);
  transform:translateY(-1px);
}
.quiz-choice input[type=radio]{
  position:absolute;opacity:0;pointer-events:none;
}
.quiz-choice__letter{
  width:38px;height:38px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  background:linear-gradient(180deg,#f8fafc 0%,#f1f5f9 100%);
  border:1px solid var(--c-slate-200);border-radius:8px;
  color:var(--c-slate-700);font-weight:800;font-size:.96rem;
  letter-spacing:-.005em;
  transition:all .15s ease;
}
.quiz-choice__text{
  color:var(--c-text);line-height:1.55;font-size:1.02rem;font-weight:500;
}
.quiz-choice__mark{
  width:26px;height:26px;flex-shrink:0;border-radius:50%;
  background:#fff;border:1.5px solid var(--c-slate-300);
  display:inline-flex;align-items:center;justify-content:center;
  color:transparent;font-size:.74rem;
  transition:all .15s ease;
}
.quiz-choice:has(input[type=radio]:checked){
  background:linear-gradient(180deg,#eff6ff 0%,#dbeafe 100%);
  border-color:var(--c-blue-400);
  box-shadow:0 0 0 4px rgba(74,126,176,.14), 0 2px 6px rgba(74,126,176,.16);
  /* Subtle left-edge color stripe — extra "this is selected" signal. */
  background-image:linear-gradient(90deg,var(--c-blue-400) 0,var(--c-blue-400) 4px,transparent 4px),linear-gradient(180deg,#eff6ff 0%,#dbeafe 100%);
}
.quiz-choice:has(input[type=radio]:checked) .quiz-choice__letter{
  background:linear-gradient(135deg,var(--c-blue-400) 0%,var(--c-navy-700) 100%);
  border-color:var(--c-navy-700);color:#fff;
  box-shadow:0 2px 4px rgba(30,58,95,.2);
}
.quiz-choice:has(input[type=radio]:checked) .quiz-choice__mark{
  background:var(--c-blue-400);border-color:var(--c-blue-400);color:#fff;
}
.quiz-choice input[type=radio]:focus-visible ~ .quiz-choice__letter{
  outline:2px solid var(--c-blue-300);outline-offset:2px;
}

.quiz-question.is-unanswered .quiz-question__choices{
  outline:2px solid #fca5a5;outline-offset:4px;border-radius:12px;
  animation:quizShake .35s ease;
}
@keyframes quizShake{
  0%, 100%{transform:translateX(0)}
  20%{transform:translateX(-4px)}
  50%{transform:translateX(4px)}
  80%{transform:translateX(-2px)}
}
.quiz-question__hint{
  display:flex;align-items:center;gap:.5rem;
  margin-top:.85rem;padding:.55rem .85rem;border-radius:8px;
  background:#fef2f2;border:1px solid #fecaca;
  color:#991b1b;font-size:.85rem;font-weight:600;
}
.quiz-question__hint i{font-size:.85rem}

.quiz-nav{
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;
  margin-top:1.6rem;padding-top:1.4rem;border-top:1px solid var(--c-slate-100);
}
.quiz-nav__hint{
  font-size:.74rem;color:var(--c-slate-500);text-align:center;
}
.quiz-nav__hint kbd{
  display:inline-block;padding:.05rem .35rem;border-radius:4px;
  background:#f1f5f9;border:1px solid var(--c-slate-200);border-bottom-width:1.5px;
  font-family:inherit;font-size:.7rem;font-weight:600;color:var(--c-slate-700);
  margin:0 .05rem;
}
@media (max-width:640px){
  .quiz-nav{grid-template-columns:1fr 1fr;gap:.55rem}
  .quiz-nav__hint{display:none}
  .quiz-nav .dl-button{flex:1}
}

/* ── Question palette (right rail) ──────────────────────────────── */
.quiz-palette{
  background:#fff;border:1px solid var(--c-slate-200);border-radius:14px;
  padding:1.1rem 1rem 1.2rem;
  position:sticky;top:calc(67px + 49px + 1rem);
  align-self:start;
  box-shadow:0 1px 3px rgba(15,23,42,.04);
}
.quiz-palette__title{
  font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--c-slate-500);margin:0 0 .7rem;
}
.quiz-palette__grid{
  list-style:none;padding:0;margin:0;
  display:grid;grid-template-columns:repeat(5, minmax(0, 1fr));gap:.4rem;
}
.quiz-palette__grid > li{margin:0;padding:0}
.quiz-palette__cell{
  position:relative;width:100%;aspect-ratio:1/1;min-height:38px;
  display:inline-flex;align-items:center;justify-content:center;
  background:#fff;border:1.5px solid var(--c-slate-200);border-radius:8px;
  color:var(--c-slate-600);font-weight:700;font-size:.82rem;
  cursor:pointer;transition:all .12s ease;
  font-variant-numeric:tabular-nums;
}
.quiz-palette__cell:hover{border-color:var(--c-blue-300);color:var(--c-navy-900);transform:translateY(-1px)}
.quiz-palette__num{display:block;line-height:1}
.quiz-palette__flag{
  position:absolute;top:-3px;right:-3px;
  width:14px;height:14px;border-radius:50%;
  background:#f59e0b;color:#fff;font-size:.55rem;
  display:none;align-items:center;justify-content:center;
  border:2px solid #fff;
}
.quiz-palette__cell.is-flagged .quiz-palette__flag{display:inline-flex}
.quiz-palette__cell.is-answered{
  background:#dbeafe;border-color:var(--c-blue-400);color:var(--c-navy-900);
}
.quiz-palette__cell.is-current{
  background:linear-gradient(135deg,var(--c-blue-400) 0%,var(--c-navy-700) 100%);
  border-color:var(--c-navy-700);color:#fff;
  box-shadow:0 0 0 3px rgba(74,126,176,.18);
}
.quiz-palette__cell.is-current.is-answered{background:linear-gradient(135deg,var(--c-blue-400) 0%,var(--c-navy-700) 100%);color:#fff}

.quiz-palette__legend{
  display:grid;grid-template-columns:repeat(2, 1fr);gap:.35rem .8rem;
  margin-top:1rem;padding-top:.85rem;border-top:1px solid var(--c-slate-100);
  font-size:.72rem;color:var(--c-slate-600);
}
.quiz-palette__legend > div{display:flex;align-items:center;gap:.4rem}
.quiz-palette__swatch{
  width:12px;height:12px;border-radius:3px;display:inline-block;flex-shrink:0;
  background:#fff;border:1.5px solid var(--c-slate-300);
}
.quiz-palette__swatch--answered{background:#dbeafe;border-color:var(--c-blue-400)}
.quiz-palette__swatch--current{background:linear-gradient(135deg,var(--c-blue-400) 0%,var(--c-navy-700) 100%);border-color:var(--c-navy-700)}
.quiz-palette__swatch--unanswered{background:#fff;border-color:var(--c-slate-300)}
.quiz-palette__swatch--flagged{background:#f59e0b;border-color:#d97706}

.quiz-palette__counts{
  display:flex;justify-content:space-between;gap:.5rem;
  margin-top:.85rem;padding-top:.85rem;border-top:1px solid var(--c-slate-100);
  font-size:.78rem;color:var(--c-slate-600);
}
.quiz-palette__counts strong{color:var(--c-navy-900);font-size:.95rem;font-weight:700}

@media (max-width:1079px){
  .quiz-palette{position:static;order:-1}
  .quiz-palette__grid{grid-template-columns:repeat(auto-fit, minmax(40px, 1fr))}
  .quiz-palette__legend{display:none}
  .quiz-palette__counts{display:none}
  .quiz-palette__title{display:none}
}

/* ── Inline toast (replaces alert()) ────────────────────────────── */
.quiz-toast{
  position:fixed;top:calc(67px + 49px + 12px);left:50%;
  transform:translate(-50%, -8px);
  z-index:1300;
  display:inline-flex;align-items:center;gap:.55rem;
  padding:.65rem 1rem;border-radius:10px;
  background:#7f1d1d;color:#fff;
  font-size:.86rem;font-weight:600;
  box-shadow:0 12px 32px rgba(127,29,29,.35);
  opacity:0;transition:transform .25s cubic-bezier(.4,0,.2,1), opacity .25s ease;
  pointer-events:none;
}
.quiz-toast i{font-size:.92rem;color:#fca5a5}
.quiz-toast.is-show{opacity:1;transform:translate(-50%, 0)}

/* ── Celebration overlay (re-used for attempt-submit + pass) ────── */
.quiz-celebrate{
  position:fixed;inset:0;z-index:1400;
  display:none;align-items:center;justify-content:center;
  background:rgba(10,22,40,.55);backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
  pointer-events:none;
}
.quiz-celebrate.is-on{display:flex;animation:quizCeleFade .25s ease-out;pointer-events:auto}
.quiz-celebrate.is-fading{opacity:0;transition:opacity .35s ease}
.quiz-celebrate__ring{
  position:absolute;
  width:140px;height:140px;border-radius:50%;
  border:3px solid #5b9bb8;
  opacity:0;transform:scale(.4);
  animation:quizCeleRing .85s cubic-bezier(.2,.65,.4,1) forwards;
}
.quiz-celebrate--pass .quiz-celebrate__ring{border-color:#22c55e}
.quiz-celebrate__check{
  position:absolute;
  width:96px;height:96px;border-radius:50%;
  background:linear-gradient(135deg,#4a7eb0 0%,#1e3a5f 100%);
  color:#fff;font-size:2.2rem;
  display:inline-flex;align-items:center;justify-content:center;
  box-shadow:0 10px 30px rgba(30,58,95,.45);
  opacity:0;transform:scale(.4);
  animation:quizCeleCheck .55s cubic-bezier(.2,.65,.4,1) .12s forwards;
}
.quiz-celebrate--pass .quiz-celebrate__check{
  background:linear-gradient(135deg,#22c55e 0%,#15803d 100%);
  box-shadow:0 10px 30px rgba(21,128,61,.45);
}
.quiz-celebrate__text{
  position:absolute;top:calc(50% + 80px);left:0;right:0;
  text-align:center;
  font-family:Georgia,"Iowan Old Style","Charter",serif;
  font-size:1.45rem;font-weight:700;color:#fff;letter-spacing:-.01em;
  opacity:0;transform:translateY(8px);
  animation:quizCeleText .4s ease .35s forwards;
  text-shadow:0 1px 12px rgba(0,0,0,.35);
}
@keyframes quizCeleFade{from{opacity:0}to{opacity:1}}
@keyframes quizCeleRing{
  0%   {opacity:0;transform:scale(.4)}
  35%  {opacity:1}
  100% {opacity:0;transform:scale(2.4)}
}
@keyframes quizCeleCheck{
  0%   {opacity:0;transform:scale(.4) rotate(-8deg)}
  60%  {opacity:1;transform:scale(1.08) rotate(0deg)}
  100% {opacity:1;transform:scale(1) rotate(0deg)}
}
@keyframes quizCeleText{
  to{opacity:1;transform:translateY(0)}
}
@media (prefers-reduced-motion:reduce){
  .quiz-celebrate__ring,.quiz-celebrate__check,.quiz-celebrate__text{animation-duration:.01ms;animation-delay:0s}
}

/* ── Report phase ──────────────────────────────────────────────── */
/* Full-width report chrome (v0.38.8) — see landing comment above. */
.quiz-report__container{max-width:none;padding:0 clamp(1.2rem, 3.5vw, 3rem)}
/* v0.44.4 — Report hero: stronger pass/fail distinction. Pass gets a
   deeper emerald gradient + a subtle laurel-style glow; fail gets an
   amber-tinted gradient (warmer, less punishing than red — the user
   is trying again). Bigger score number for clear hierarchy. */
.quiz-report__hero{
  display:grid;grid-template-columns:1fr auto;align-items:center;gap:1.6rem;
  margin-top:1.2rem;padding:1.85rem 1.85rem;border-radius:16px;
  background:
    radial-gradient(800px 320px at 100% 0%, rgba(21,128,61,.08), transparent 60%),
    linear-gradient(135deg,#f0fdf4 0%,#fff 75%);
  border:1px solid #bbf7d0;
  box-shadow:0 6px 22px rgba(21,128,61,.10), 0 1px 3px rgba(21,128,61,.06);
}
.quiz-report__hero.is-fail{
  background:
    radial-gradient(800px 320px at 100% 0%, rgba(180,83,9,.08), transparent 60%),
    linear-gradient(135deg,#fffbeb 0%,#fff 75%);
  border-color:#fde68a;
  box-shadow:0 6px 22px rgba(180,83,9,.10), 0 1px 3px rgba(180,83,9,.06);
}
.quiz-report__hero-left{display:flex;align-items:center;gap:1.4rem}
.quiz-report__pct{
  font-size:clamp(3rem,5vw,3.8rem);font-weight:800;color:var(--c-navy-900);line-height:1;
  letter-spacing:-.04em;font-variant-numeric:tabular-nums;
}
.quiz-report__status{
  display:flex;flex-direction:row;align-items:center;gap:.5rem;
  font-size:1.3rem;font-weight:800;color:#166534;
  letter-spacing:-.005em;
}
.quiz-report__hero.is-fail .quiz-report__status{color:#854d0e}
.quiz-report__status i{font-size:1.65rem}

.quiz-report__hero-right{
  display:grid;grid-template-columns:repeat(auto-fit, minmax(90px, 1fr));gap:.65rem;
  min-width:280px;
}
.quiz-report__stat{
  background:rgba(255,255,255,.7);
  border:1px solid rgba(15,23,42,.06);
  border-radius:9px;padding:.6rem .7rem;
  display:flex;flex-direction:column;gap:.15rem;
  text-align:center;
}
.quiz-report__stat-val{font-size:1rem;font-weight:700;color:var(--c-navy-900);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.quiz-report__stat-lbl{font-size:.7rem;color:var(--c-slate-600);font-weight:600;letter-spacing:.02em;text-transform:uppercase}

@media (max-width:680px){
  .quiz-report__hero{grid-template-columns:1fr;text-align:center}
  .quiz-report__hero-left{flex-direction:column;gap:.4rem}
  .quiz-report__status{flex-direction:column}
  .quiz-report__hero-right{min-width:0}
}

.quiz-report__cta{
  display:flex;gap:.65rem;flex-wrap:wrap;
  margin-top:1.4rem;
}

.quiz-report__review-title{
  margin:2.4rem 0 .9rem;font-size:1.1rem;font-weight:700;color:var(--c-navy-900);
  display:flex;align-items:center;gap:.5rem;
}
.quiz-report__review-title i{color:var(--c-slate-500);font-size:.95rem}

/* v0.44.4 — Review cards: thicker left-edge stripe + subtle tinted
   background so correct / wrong reads clearly at a glance, plus a
   small lift on hover. */
.quiz-review{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:1rem}
.quiz-review__item{
  background:#fff;border:1px solid var(--c-slate-200);border-radius:12px;
  padding:1.2rem 1.4rem;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
  border-left:6px solid var(--c-slate-300);
  transition:box-shadow .15s ease,transform .12s ease;
}
.quiz-review__item:hover{
  box-shadow:0 6px 18px rgba(15,23,42,.07);
  transform:translateY(-1px);
}
.quiz-review__item.is-correct{
  border-left-color:#16a34a;
  background:linear-gradient(90deg,#f0fdf4 0%,#fff 6%);
}
.quiz-review__item.is-wrong{
  border-left-color:#dc2626;
  background:linear-gradient(90deg,#fef2f2 0%,#fff 6%);
}
.quiz-review__head{
  display:flex;align-items:center;gap:.6rem;
  margin:0 0 .7rem;
}
.quiz-review__qno{
  display:inline-block;
  font-size:.72rem;font-weight:700;letter-spacing:.06em;color:var(--c-slate-500);
  text-transform:uppercase;
}
.quiz-review__verdict{
  display:inline-flex;align-items:center;gap:.32rem;
  padding:.22rem .55rem;border-radius:999px;
  font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
}
.quiz-review__verdict.is-correct{background:#dcfce7;color:#166534}
.quiz-review__verdict.is-wrong  {background:#fee2e2;color:#991b1b}
.quiz-review__verdict i{font-size:.78rem}
.quiz-review__stem{
  font-family:Georgia,"Iowan Old Style","Charter",serif;
  font-size:1.08rem;font-weight:700;color:var(--c-navy-900);
  letter-spacing:-.005em;line-height:1.4;
  margin:0 0 1rem;
}
.quiz-review__choices{list-style:none;padding:0;margin:0 0 .8rem;display:flex;flex-direction:column;gap:.35rem}
.quiz-review__choices > li{
  display:flex;align-items:center;gap:.55rem;
  padding:.55rem .7rem;border-radius:8px;
  background:#f8fafc;color:var(--c-slate-700);font-size:.93rem;line-height:1.5;
  border:1px solid transparent;
}
.quiz-review__choices > li.is-correct-choice{
  background:#dcfce7;border-color:#86efac;color:#14532d;font-weight:600;
}
.quiz-review__choices > li.is-student-wrong{
  background:#fee2e2;border-color:#fca5a5;color:#7f1d1d;font-weight:600;
}
.quiz-review__letter{
  display:inline-flex;align-items:center;justify-content:center;
  width:24px;height:24px;border-radius:6px;
  background:#fff;border:1px solid var(--c-slate-300);
  color:var(--c-slate-700);font-weight:700;font-size:.78rem;flex-shrink:0;
}
.quiz-review__choices > li.is-correct-choice .quiz-review__letter{background:#15803d;border-color:#15803d;color:#fff}
.quiz-review__choices > li.is-student-wrong .quiz-review__letter{background:#b91c1c;border-color:#b91c1c;color:#fff}
.quiz-review__choice-text{flex:1;min-width:0}
.quiz-review__tag{
  margin-left:auto;flex-shrink:0;
  font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  padding:.18rem .5rem;border-radius:999px;
  background:rgba(0,0,0,.06);color:inherit;
}
.quiz-review__tag--correct{background:#15803d;color:#fff}
.quiz-review__choices > li.is-student-wrong .quiz-review__tag{background:#7f1d1d;color:#fff}
.quiz-review__rationale{
  display:flex;gap:.6rem;align-items:flex-start;
  margin-top:.6rem;padding:.8rem 1rem;
  background:#fffbeb;border:1px solid #fde68a;border-radius:8px;
  font-size:.9rem;line-height:1.55;color:#713f12;
}
.quiz-review__rationale i{color:#b45309;font-size:.95rem;flex-shrink:0;margin-top:2px}
.quiz-review__rationale strong{color:#78350f;font-weight:700}

/* Hide the lesson-page footer ONLY for the attempt phase (which uses
   a sticky bar and would otherwise leave a stale footer at the
   bottom). The landing + report still get the standard footer.
   C3 fix (v0.45.14): the quiz pages render `.dl-footer-min`, not
   `footer.dl-footer`, so the old selector never matched. Scope it to
   the real element and actually hide it during the attempt. */
body.has-quiz-page .dl-footer-min{display:none}

/* =====================================================================
   Lesson page (v0.38.2 — premium polish)
   ─────────────────────────────────────────────────────────────────────
   Design language:
     - Clean white surfaces, slate page bg, cyan/navy accent.
     - Restrained typography — Inter for chrome, Charter/Iowan-style
       Georgia for the lesson title for an editorial feel.
     - 4/8/12/16/24/32/48/64 spacing scale.
     - 1.5px borders, 6/8/10/14 radii.
     - Subtle micro-interactions: 150ms cubic-bezier on all state changes.
   ===================================================================== */
/* On lesson pages, dim the platform watermark hard so it never
   competes with body copy. Targets the global .dl-watermark element. */
.lesson-page{background:#fff;min-height:calc(100vh - 68px)}
body:has(.lesson-page) .dl-watermark{opacity:.018 !important}

/* ── Sticky header bar ───────────────────────────────────────────── */
.lesson-bar{
  position:sticky;top:67px;margin-top:-1px;z-index:1010;
  display:flex;align-items:center;gap:.85rem;
  padding:.55rem clamp(.85rem, 2vw, 1.5rem);
  background:rgba(255,255,255,.92);
  -webkit-backdrop-filter:blur(12px) saturate(1.6);
  backdrop-filter:blur(12px) saturate(1.6);
  border-bottom:1px solid rgba(15,23,42,.08);
  box-shadow:0 1px 0 rgba(15,23,42,.03);
  font-size:.88rem;color:var(--c-slate-700);
}

/* v0.43.0 — When the centered progress widget is in the bar, give the
   bar a touch more vertical space so the widget breathes properly.
   The breadcrumb on the left and the right-cluster compete for the
   remaining flex room; the widget itself doesn't stretch. */
.lesson-bar--with-progress{padding-top:.7rem;padding-bottom:.7rem}
.lesson-bar--with-progress .lesson-bar__crumb,
.lesson-bar--with-progress .lesson-bar__spacer{flex:1 1 0;min-width:0}
.lesson-bar__spacer{height:1px}
/* C8 (v0.45.20) — reader text-size control, right-aligned in the bar
   (the flex spacer pushes it to the edge so the centered progress
   widget keeps its position). */
.lesson-textsize{display:inline-flex;align-items:center;gap:2px;flex-shrink:0;
  background:var(--c-slate-100,#f1f5f9);border-radius:8px;padding:2px}
.lesson-textsize__btn{
  border:0;background:transparent;cursor:pointer;
  font-weight:700;color:var(--c-slate-600);
  padding:.25rem .5rem;border-radius:6px;line-height:1;
  font-size:.8rem;font-family:inherit;transition:background .12s,color .12s}
.lesson-textsize__btn:hover{background:#fff;color:var(--c-navy-900)}
.lesson-textsize__btn:disabled{opacity:.4;cursor:default;background:transparent}
.lesson-textsize__btn#dlTextDown{font-size:.72rem}
.lesson-textsize__btn#dlTextUp{font-size:.92rem}
@media (max-width:760px){ .lesson-textsize{display:none} }
.lesson-bar__progress-mini{
  display:flex;align-items:center;gap:.7rem;
  padding:.3rem .75rem;
  background:linear-gradient(180deg,#f8fafc 0%,#eef2f7 100%);
  border:1px solid #e2e8f0;border-radius:999px;
  flex:0 0 auto;
  font-variant-numeric:tabular-nums;
}
.lesson-bar__progress-pct{
  font-size:.92rem;font-weight:800;color:var(--c-navy-900);
  letter-spacing:-.01em;line-height:1;
}
.lesson-bar__progress-track{
  position:relative;height:6px;width:clamp(80px, 16vw, 200px);
  background:#e2e8f0;border-radius:999px;overflow:hidden;
  flex-shrink:0;
}
.lesson-bar__progress-fill{
  position:absolute;left:0;top:0;bottom:0;border-radius:999px;
  background:linear-gradient(90deg,var(--c-blue-400),var(--c-cyan-400));
  transition:width .4s cubic-bezier(.4,0,.2,1);
}
.lesson-bar__progress-time{
  font-size:.78rem;font-weight:600;color:var(--c-slate-600);
  letter-spacing:.005em;white-space:nowrap;
}

/* Responsive — at tablet widths drop the breadcrumb to make room for
   the centered widget; at phone widths drop the time-left label and
   shrink the track; the percentage alone is the irreducible signal. */
@media (max-width:980px){
  .lesson-bar--with-progress .lesson-bar__crumb{display:none}
}
@media (max-width:640px){
  .lesson-bar__progress-time{display:none}
  .lesson-bar__progress-track{width:80px}
  .lesson-bar__progress-mini{padding:.25rem .55rem;gap:.5rem}
}
@media (max-width:420px){
  .lesson-bar__progress-track{display:none}
}
/* Hamburger — slate gradient (icon-only → needs tooltip; uses title attr) */
.lesson-bar__hamburger{
  background:linear-gradient(135deg,#475569 0%,#334155 100%);
  border:1px solid #334155;border-radius:8px;
  width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;
  color:#fff;cursor:pointer;flex-shrink:0;
  box-shadow:0 2px 6px rgba(0,0,0,.12);
  transition:filter .18s ease,box-shadow .18s ease;
}
.lesson-bar__hamburger > i{color:#fff;font-size:.85rem}
.lesson-bar__hamburger:hover{filter:brightness(1.10);box-shadow:0 4px 10px rgba(0,0,0,.16)}
.lesson-bar__hamburger:focus-visible{outline:2px solid rgba(56,189,248,.55);outline-offset:2px}

.lesson-bar__crumb{
  flex:1;min-width:0;display:flex;align-items:center;gap:.45rem;
  overflow:hidden;white-space:nowrap;
}
.lesson-bar__program{
  color:var(--c-navy-700);font-weight:600;text-decoration:none;
  flex-shrink:1;min-width:0;overflow:hidden;text-overflow:ellipsis;
  transition:color .12s ease;
}
.lesson-bar__program:hover{color:var(--c-blue-400)}
.lesson-bar__sep{color:var(--c-slate-300);flex-shrink:0;user-select:none}
.lesson-bar__module{
  color:var(--c-slate-600);min-width:0;overflow:hidden;text-overflow:ellipsis;
  flex-shrink:1;
}

/* See consolidated responsive lesson-bar block further below (after
   the reading-progress fill) — it's the single source of truth for the
   720/520/480 breakpoints. */

.lesson-bar__right{display:flex;align-items:center;gap:.55rem;flex-shrink:0}
.lesson-bar__pos{
  display:inline-flex;align-items:center;gap:.2rem;
  padding:.3rem .55rem;
  background:#f1f5f9;border-radius:7px;
  font-size:.78rem;font-weight:700;color:var(--c-slate-600);
  font-variant-numeric:tabular-nums;
}
.lesson-bar__pos-num{color:var(--c-navy-900)}
.lesson-bar__pos-sep{opacity:.5}

.lesson-bar__timer{
  display:inline-flex;align-items:center;gap:.4rem;
  padding:.35rem .65rem;
  background:#f8fafc;border:1px solid var(--c-slate-200);border-radius:7px;
  font-size:.82rem;color:var(--c-slate-600);
  position:relative;
}
.lesson-bar__timer i{color:var(--c-slate-500);font-size:.78rem}
.lesson-bar__timer-val{
  font-family:Menlo,Consolas,monospace;font-weight:700;
  color:var(--c-navy-900);min-width:38px;text-align:right;
  font-variant-numeric:tabular-nums;
}
/* v0.45.70 — Visible 2-minute reading countdown. Unlike the old elapsed
   timer this is functionally important (it gates the Next button), so it
   stays visible at every width — amber while counting, emerald "Ready"
   when Next unlocks. */
.lesson-bar__countdown{
  display:inline-flex;align-items:center;gap:.4rem;
  padding:.35rem .65rem;border-radius:7px;white-space:nowrap;
  background:#fff7ed;border:1px solid #fed7aa;
  font-size:.82rem;color:#b45309;transition:background .25s,border-color .25s,color .25s;
}
.lesson-bar__countdown i{font-size:.78rem;color:#d97706}
.lesson-bar__countdown-val{
  font-family:Menlo,Consolas,monospace;font-weight:700;
  font-variant-numeric:tabular-nums;min-width:34px;text-align:right;color:#9a3412;
}
.lesson-bar__countdown.is-ready{ background:#ecfdf5;border-color:#a7f3d0;color:#047857; }
.lesson-bar__countdown.is-ready i{ color:#059669 }
.lesson-bar__countdown.is-ready .lesson-bar__countdown-val{ color:#047857;min-width:0 }
@media (max-width:520px){
  .lesson-bar__countdown{padding:.28rem .5rem;font-size:.78rem;gap:.3rem}
}
.lesson-bar__save{
  position:absolute;top:-3px;right:-3px;
  width:14px;height:14px;border-radius:50%;
  background:#fff;border:1.5px solid var(--c-slate-200);
  display:flex;align-items:center;justify-content:center;
  color:var(--c-slate-400);font-size:.5rem;
  transition:all .25s ease;
}
.lesson-bar__save.is-saving{
  background:var(--c-teal-600);border-color:var(--c-teal-600);color:#fff;
  transform:scale(1.15);
}

.lesson-bar__form{margin:0}
/* Mark complete — emerald gradient (rule #1+4+13: gradient + white + weight 500).
   Adjacent to hamburger (slate) and timer (no bg) → no color clash. */
.lesson-bar__btn{
  display:inline-flex;align-items:center;gap:.4rem;
  height:32px;padding:0 .85rem;
  background:linear-gradient(135deg,#047857 0%,#065f46 100%);color:#fff;
  border:1px solid #065f46;border-radius:7px;
  font-family:inherit;font-size:.82rem;font-weight:500;cursor:pointer;letter-spacing:-.005em;
  box-shadow:0 2px 6px rgba(0,0,0,.12);
  transition:filter .18s ease,box-shadow .18s ease;
}
.lesson-bar__btn > i{color:#fff}
.lesson-bar__btn:hover:not(:disabled){filter:brightness(1.10);box-shadow:0 4px 10px rgba(0,0,0,.16)}
.lesson-bar__btn:focus-visible{outline:2px solid rgba(56,189,248,.55);outline-offset:2px}
.lesson-bar__btn:disabled{cursor:default;opacity:.55;filter:none}
/* Completed state — switch to a darker stone gradient so it visually
   reads as "done" without becoming a different look entirely. */
.lesson-bar__btn.is-done{
  background:linear-gradient(135deg,#57534e 0%,#44403c 100%);
  border-color:#44403c;color:#fff;
  box-shadow:0 2px 6px rgba(0,0,0,.12);
}

/* Reading-progress fill — 2px line pinned to bottom edge of bar */
.lesson-bar__progress{
  position:absolute;left:0;right:0;bottom:0;height:2px;
  background:transparent;pointer-events:none;
}
.lesson-bar__progress > span{
  display:block;height:100%;width:0%;
  background:linear-gradient(90deg,var(--c-blue-400),var(--c-cyan-400));
  transition:width .12s linear;
}

/* v0.41.7 — Lesson bar tightens below 720px. We keep the module title
   (it's the active lesson context) and drop the program crumb plus the
   "1 / N" position counter; the lesson page already shows the position
   inside the TOC drawer. Below 520px the timer hides as well. */
@media (max-width:720px){
  .lesson-bar__program,
  .lesson-bar__sep,
  .lesson-bar__pos{display:none}
  .lesson-bar{gap:.55rem;padding:.5rem .85rem;font-size:.84rem}
  .lesson-bar__timer{padding:.3rem .5rem}
  .lesson-bar__timer-val{min-width:32px}
  .lesson-bar__btn{height:30px;padding:0 .7rem;font-size:.78rem}
}
@media (max-width:520px){
  .lesson-bar__btn-label,
  .lesson-bar__btn span{display:none}
  .lesson-bar__btn{padding:0 .55rem;width:32px;justify-content:center}
}
@media (max-width:480px){
  .lesson-bar__timer{display:none}
}

/* ── Three-column layout (TOC | main | on-page) ─────────────────── */
.lesson-layout{
  display:grid;grid-template-columns:288px minmax(0, 1fr);
  position:relative;
  transition:grid-template-columns .25s cubic-bezier(.4,0,.2,1);
}
.lesson-layout.is-toc-collapsed{grid-template-columns:0 minmax(0, 1fr)}
.lesson-layout.is-toc-collapsed .lesson-toc{overflow:hidden;border-right:none;padding:0;width:0;visibility:hidden}
/* Wide viewports: add 3rd column for the right-margin within-lesson TOC */
@media (min-width:1280px){
  .lesson-layout{grid-template-columns:288px minmax(0, 1fr) 232px}
  .lesson-layout.is-toc-collapsed{grid-template-columns:0 minmax(0, 1fr) 232px}
}
@media (max-width:880px){
  .lesson-layout,
  .lesson-layout.is-toc-collapsed{grid-template-columns:1fr}
  .lesson-layout.is-toc-collapsed .lesson-toc{
    width:300px;visibility:visible;overflow:auto;
    padding:1.4rem;
  }
}

/* ── Sidebar ────────────────────────────────────────────────────── */
.lesson-toc{
  padding:1.5rem 1.25rem 2rem;
  border-right:1px solid var(--c-slate-200);
  position:sticky;top:calc(67px + 49px);
  align-self:start;
  max-height:calc(100vh - 67px - 49px);overflow-y:auto;
  /* v0.38.3 — Darker tint so the sidebar visibly separates from the
     white reading column. */
  background:#eef2f7;
}
.lesson-toc::-webkit-scrollbar{width:6px}
.lesson-toc::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}
.lesson-toc::-webkit-scrollbar-thumb:hover{background:#94a3b8}

/* Summary header */
.lesson-toc__summary{
  margin-bottom:1.5rem;padding:.9rem 1rem 1rem;
  background:#fff;border:1px solid var(--c-slate-200);border-radius:10px;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
}
.lesson-toc__summary-head{
  display:flex;align-items:center;gap:.85rem;margin-bottom:.7rem;
}
.lesson-toc__pct{
  font-size:1.8rem;font-weight:800;line-height:1;
  color:var(--c-navy-900);letter-spacing:-.04em;
  font-variant-numeric:tabular-nums;
}
.lesson-toc__pct span{font-size:.9rem;color:var(--c-slate-500);font-weight:700;margin-left:.1rem;letter-spacing:0}
.lesson-toc__summary-meta{font-size:.78rem;line-height:1.45;color:var(--c-slate-600)}
.lesson-toc__summary-meta strong{color:var(--c-navy-900);font-weight:700}
.lesson-toc__summary-meta span{color:var(--c-slate-500)}
.lesson-toc__progress-bar{
  position:relative;height:4px;background:#e2e8f0;border-radius:999px;overflow:hidden;
}
.lesson-toc__progress-bar > span{
  position:absolute;left:0;top:0;bottom:0;border-radius:999px;
  background:linear-gradient(90deg,var(--c-blue-400),var(--c-cyan-400));
  transition:width .4s cubic-bezier(.4,0,.2,1);
}

/* v0.42.3 — Running total of time-on-program. Sits just under the
   progress-bar inside the .lesson-toc__summary card. The hover title
   on the row explains that the topbar timer is per-lesson and THIS
   number is the cross-program aggregate, so the student isn't left
   wondering why those two numbers don't match. */
.lesson-toc__time-spent{
  display:flex;align-items:center;gap:.4rem;
  margin-top:.7rem;padding-top:.6rem;
  border-top:1px solid var(--c-slate-100);
  font-size:.78rem;color:var(--c-slate-500);
  line-height:1.3;
}
.lesson-toc__time-spent i{color:var(--c-slate-400);font-size:.78rem}
.lesson-toc__time-spent-lbl{font-weight:500;letter-spacing:.01em}
.lesson-toc__time-spent strong{
  color:var(--c-navy-900);font-weight:700;
  font-variant-numeric:tabular-nums;letter-spacing:.01em;
}

/* v0.43.0 — Minimal "Course outline" heading where the summary card
   used to sit. Frames the module list without re-stating the progress
   numbers (those are in the centered topbar widget now). */
.lesson-toc__heading{
  display:flex;align-items:center;gap:.5rem;
  margin:0 .35rem 1rem;padding:.2rem 0;
  font-size:.72rem;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;
  color:var(--c-slate-500);
}
.lesson-toc__heading i{font-size:.78rem;color:var(--c-slate-400)}

/* ── Module card (v0.41.9 redesign) ─────────────────────────────────
   Each module is its own white card on the tinted sidebar background so
   modules read as distinct units. The active module gets a navy
   left-edge stripe + slightly stronger shadow. A 2px progress fill sits
   between the header and the lesson list so per-module progress is
   visible at a glance without a separate badge. */
.lesson-toc__module{
  background:#fff;
  border:1px solid var(--c-slate-200);
  border-radius:12px;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
  overflow:hidden;
  transition:box-shadow .18s ease,border-color .18s ease;
}
.lesson-toc__module + .lesson-toc__module{margin-top:.85rem}
.lesson-toc__module.is-current{
  border-color:#cbd5e1;
  box-shadow:0 4px 14px rgba(15,23,42,.08),inset 3px 0 0 var(--c-blue-400);
}
.lesson-toc__module.is-complete .lesson-toc__modnum{
  background:linear-gradient(135deg,#15803d 0%,#166534 100%);
  border-color:#15803d;
}
.lesson-toc__module.is-complete .lesson-toc__modnum i{font-size:.78rem;color:#fff}

.lesson-toc__modhead{
  display:flex;align-items:flex-start;gap:.7rem;
  padding:.75rem .85rem .6rem;
  background:linear-gradient(180deg,#fafbfd 0%,#fff 100%);
}
.lesson-toc__modnum{
  width:30px;height:30px;flex-shrink:0;
  background:linear-gradient(135deg,#1e3a5f 0%,#0f2439 100%);
  color:#fff;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:8px;font-size:.86rem;font-weight:700;
  font-variant-numeric:tabular-nums;
  box-shadow:0 1px 2px rgba(15,23,42,.18);
  border:1px solid #0f2439;
  margin-top:.05rem;
}
.lesson-toc__modmeta{flex:1;min-width:0}
.lesson-toc__modeyebrow{
  display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;
  font-size:.6rem;font-weight:700;
  color:var(--c-slate-500);letter-spacing:.14em;
  text-transform:uppercase;line-height:1;margin-bottom:.22rem;
}
/* v0.43.1 — Per-module status tag. Replaces the "Locked" suffix from
   v0.43.0 and adds explicit "In progress" / "Complete" pills so each
   module's state reads at a glance without parsing the counter. */
.lesson-toc__modeyebrow-tag{
  display:inline-flex;align-items:center;
  padding:.12rem .42rem;border-radius:4px;
  font-size:.58rem;font-weight:800;letter-spacing:.1em;
  background:#f1f5f9;color:var(--c-slate-500);
  border:1px solid #e2e8f0;
}
.lesson-toc__modeyebrow-tag.is-current{
  background:#eff6ff;color:#1e3a5f;border-color:#bfdbfe;
}
.lesson-toc__modeyebrow-tag.is-complete{
  background:#dcfce7;color:#15803d;border-color:#bbf7d0;
}
.lesson-toc__modtitle{
  font-size:.86rem;font-weight:700;color:var(--c-navy-900);
  line-height:1.32;
  letter-spacing:-.005em;
  overflow:hidden;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
}
/* v0.43.1 — New subtitle line under the module title with lesson count
   + estimated reading time. Helps students plan: "Module 3 is 8
   lessons, about 75 minutes — I can finish this on the bus." */
.lesson-toc__modsub{
  font-size:.7rem;font-weight:500;color:var(--c-slate-500);
  margin-top:.25rem;line-height:1.3;letter-spacing:.005em;
  font-variant-numeric:tabular-nums;
  display:flex;align-items:center;gap:.32rem;
}
.lesson-toc__modsub-dot{color:var(--c-slate-300);font-weight:400}
.lesson-toc__modstats{
  font-size:.78rem;color:var(--c-navy-900);font-weight:700;
  font-variant-numeric:tabular-nums;
  background:#fff;border:1px solid var(--c-slate-200);
  padding:.22rem .45rem;border-radius:7px;
  flex-shrink:0;letter-spacing:.005em;
  align-self:flex-start;margin-top:.05rem;
}
.lesson-toc__modstats-of{
  color:var(--c-slate-400);font-weight:600;
}
.lesson-toc__module.is-current .lesson-toc__modstats{
  background:#eff6ff;border-color:#bfdbfe;color:#1e3a5f;
}
.lesson-toc__module.is-current .lesson-toc__modstats .lesson-toc__modstats-of{color:#7daedb}
.lesson-toc__module.is-complete .lesson-toc__modstats{
  background:#dcfce7;border-color:#bbf7d0;color:#15803d;
}
.lesson-toc__module.is-complete .lesson-toc__modstats .lesson-toc__modstats-of{color:#86c596}

/* Hair-line per-module progress bar — visible immediately under the
   header so each module shows its completion percentage without a
   separate label. */
.lesson-toc__modprogress{
  height:2px;background:#f1f5f9;position:relative;overflow:hidden;
}
.lesson-toc__modprogress > span{
  position:absolute;left:0;top:0;bottom:0;
  background:linear-gradient(90deg,var(--c-blue-400),var(--c-cyan-400));
  transition:width .4s cubic-bezier(.4,0,.2,1);
}
.lesson-toc__module.is-complete .lesson-toc__modprogress > span{
  background:linear-gradient(90deg,#16a34a,#22c55e);
}

/* Lesson rows */
.lesson-toc__lessons{
  list-style:none;padding:.35rem .45rem .5rem;margin:0;
  display:flex;flex-direction:column;gap:1px;
}
.lesson-toc__lesson{
  display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.6rem;
  padding:.5rem .55rem;border-radius:7px;
  color:var(--c-slate-700);text-decoration:none;
  font-size:.84rem;line-height:1.35;
  transition:background .12s ease,color .12s ease,padding .12s ease;
}
.lesson-toc__lesson:hover{background:#f1f5f9;color:var(--c-navy-900)}
.lesson-toc__lesson:focus-visible{outline:2px solid var(--c-blue-300);outline-offset:1px}
.lesson-toc__status{
  width:22px;height:22px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  background:#fff;border:1.5px solid var(--c-slate-200);
  color:var(--c-slate-500);font-size:.64rem;
  flex-shrink:0;transition:all .15s ease;
}
.lesson-toc__lesson.is-complete .lesson-toc__status{
  background:#15803d;border-color:#15803d;color:#fff;
}
.lesson-toc__lesson.is-in_progress .lesson-toc__status{
  background:#fff;border-color:var(--c-blue-400);color:var(--c-blue-400);
}
/* Lesson title — allow 2-line wrap so long titles like
   "Welcome to the RNA Program" are fully visible. */
.lesson-toc__title{
  min-width:0;
  font-weight:500;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;
  word-break:break-word;
}
.lesson-toc__lesson.is-complete .lesson-toc__title{
  color:var(--c-slate-500);
}
/* Legacy time-estimate chip (kept for back-compat; hidden in v0.41.9). */
.lesson-toc__est{display:none}
.lesson-toc__lesson.is-current{
  background:linear-gradient(135deg,#eff6ff 0%,#e0f2fe 100%);
  color:var(--c-navy-900);font-weight:600;
  box-shadow:inset 3px 0 0 var(--c-blue-400);
  padding-left:.4rem;
}
.lesson-toc__lesson.is-current .lesson-toc__title{font-weight:700}
.lesson-toc__lesson.is-current .lesson-toc__status{
  background:var(--c-blue-400);border-color:var(--c-blue-400);color:#fff;
}

/* v0.43.0 — Locked lessons. Rendered as <span> (no <a>) so clicking
   does nothing. Lock icon replaces the type icon, text is muted, the
   row reads "this exists but you can't get to it yet." Hover does not
   tint — there's nothing to invite. */
.lesson-toc__lesson.is-locked{
  cursor:not-allowed;
  color:var(--c-slate-400);
  opacity:.7;
  pointer-events:none;
}
.lesson-toc__lesson.is-locked .lesson-toc__status{
  background:#f1f5f9;border-color:#e2e8f0;color:#94a3b8;
}
.lesson-toc__lesson.is-locked .lesson-toc__title{
  color:var(--c-slate-400);font-weight:500;
}

/* Locked module card — gets a lock icon in the number badge, a quiet
   "Locked" eyebrow, and slightly reduced opacity. The module header
   still renders because students need to see *what's coming* — they
   just can't enter it yet. */
.lesson-toc__module.is-locked{
  opacity:.78;
}
.lesson-toc__module.is-locked .lesson-toc__modnum{
  background:linear-gradient(135deg,#94a3b8 0%,#64748b 100%);
  box-shadow:none;
}
.lesson-toc__module.is-locked .lesson-toc__modnum i{
  color:#fff;font-size:.78rem;
}
.lesson-toc__module.is-locked .lesson-toc__modeyebrow{
  color:#94a3b8;
}
.lesson-toc__module.is-locked .lesson-toc__modtitle{
  color:var(--c-slate-500);
}
.lesson-toc__module.is-locked .lesson-toc__modstats{
  background:#f1f5f9;border-color:#e2e8f0;color:#94a3b8;
}

.lesson-toc__back{
  display:inline-flex;align-items:center;gap:.45rem;
  margin-top:1.6rem;padding-top:1rem;border-top:1px solid var(--c-slate-100);
  font-size:.82rem;color:var(--c-slate-600);text-decoration:none;
  transition:color .12s ease,gap .12s ease;
}
.lesson-toc__back:hover{color:var(--c-blue-400);gap:.7rem}

/* Mobile drawer */
.lesson-toc__backdrop{display:none;position:fixed;inset:0;background:rgba(10,22,40,.50);z-index:55;backdrop-filter:blur(2px)}
@media (max-width:880px){
  .lesson-toc{
    position:fixed;top:0;left:0;bottom:0;height:100vh;width:300px;max-width:84vw;
    transform:translateX(-100%);transition:transform .25s ease;
    z-index:60;border-right:1px solid var(--c-slate-200);
    background:#fff;padding-top:1.4rem;
  }
  .lesson-toc.is-open{transform:translateX(0);box-shadow:0 0 32px rgba(10,22,40,.32)}
  .lesson-toc__backdrop.is-open{display:block}
}

/* ── Main reading column ────────────────────────────────────────── */
.lesson-main{padding:2.6rem clamp(1.2rem, 3.5vw, 3rem) 5rem;min-width:0}
/* C2 fix (v0.45.14): on a ~320px phone the clamp() floor of 1.2rem each
   side wastes ~25% of the width on figures/callouts. Tighten below 480px. */
@media (max-width:480px){
  .lesson-main{padding:1.5rem .75rem 3rem}
}
/* v0.38.3 — Article fills the full main column (no fixed max-width).
   Prose lines are still bounded for readability via .lesson-body's own
   inner cap so super-wide screens don't produce 1500-char lines. */
.lesson-article{max-width:1100px;width:100%;margin:0}
.lesson-layout.is-toc-collapsed .lesson-article{margin:0 auto;max-width:1100px}

/* Eyebrow line — chip + breadcrumb */
.lesson-eyebrow{
  display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;
  margin:0 0 1rem;
  font-size:.78rem;font-weight:600;color:var(--c-slate-500);
}
.lesson-eyebrow__chip{
  display:inline-flex;align-items:center;gap:.35rem;
  padding:.25rem .6rem;
  background:#eff6ff;color:var(--c-blue-400);
  border:1px solid #bfdbfe;border-radius:999px;
  font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
}
.lesson-eyebrow__chip i{font-size:.7rem}
.lesson-eyebrow__sep{color:var(--c-slate-300);user-select:none}
.lesson-eyebrow__module{color:var(--c-slate-600);font-weight:600}
.lesson-eyebrow__pos{color:var(--c-slate-500);font-variant-numeric:tabular-nums}

/* Lesson title */
.lesson-title{
  font-family:Georgia,"Iowan Old Style","Charter",serif;
  font-size:clamp(2rem,3.6vw,2.85rem);font-weight:700;
  color:var(--c-navy-900);letter-spacing:-.025em;line-height:1.15;
  margin:0 0 1.1rem;
}

/* Meta line under title */
.lesson-meta{
  display:flex;gap:.85rem;flex-wrap:wrap;align-items:center;
  margin:0 0 2.4rem;padding:0 0 1.6rem;
  border-bottom:1px solid var(--c-slate-100);
  font-size:.88rem;color:var(--c-slate-500);
}
.lesson-meta__item{display:inline-flex;align-items:center;gap:.4rem}
.lesson-meta__item i{color:var(--c-slate-400)}
.lesson-meta__pill{
  display:inline-flex;align-items:center;gap:.35rem;
  padding:.22rem .65rem;border-radius:999px;
  font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
}
.lesson-meta__pill--done{background:#dcfce7;color:#166534}
.lesson-meta__pill--inprogress{background:#fef9c3;color:#854d0e}

/* ── Resume prompt (v0.38.5) ────────────────────────────────────── */
.lesson-resume{
  display:flex;align-items:center;gap:.75rem;
  margin:0 0 1.4rem;padding:.65rem .85rem .65rem 1rem;
  background:linear-gradient(135deg,#eff6ff 0%,#e0f2fe 100%);
  border:1px solid #bfdbfe;border-radius:10px;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
  animation:lessonResumeIn .35s cubic-bezier(.4,0,.2,1);
}
.lesson-resume__icon{
  width:32px;height:32px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  background:#fff;color:var(--c-blue-400);
  border:1px solid #bfdbfe;border-radius:8px;font-size:.95rem;
}
.lesson-resume__text{flex:1;min-width:0;font-size:.86rem;color:var(--c-navy-900);font-weight:600}
.lesson-resume__text small{display:block;font-size:.74rem;color:var(--c-slate-600);font-weight:500;margin-top:.1rem}
.lesson-resume__btn{
  display:inline-flex;align-items:center;gap:.4rem;
  padding:.4rem .8rem;border-radius:7px;border:1px solid #1e3a5f;
  background:linear-gradient(135deg,#2c5282 0%,#1e3a5f 100%);
  color:#fff;font-size:.78rem;font-weight:700;letter-spacing:.01em;
  cursor:pointer;text-decoration:none;
  box-shadow:0 1px 2px rgba(15,23,42,.12);
  transition:filter .12s ease, transform .12s ease;
}
.lesson-resume__btn:hover{filter:brightness(1.08);transform:translateY(-1px)}
.lesson-resume__btn:active{transform:translateY(0)}
.lesson-resume__close{
  width:28px;height:28px;flex-shrink:0;
  background:transparent;border:none;border-radius:6px;cursor:pointer;
  color:var(--c-slate-500);font-size:.85rem;
  display:inline-flex;align-items:center;justify-content:center;
  transition:background .12s ease, color .12s ease;
}
.lesson-resume__close:hover{background:rgba(15,23,42,.06);color:var(--c-navy-900)}
@keyframes lessonResumeIn{
  from{opacity:0;transform:translateY(-6px)}
  to{opacity:1;transform:translateY(0)}
}
@media (max-width:520px){
  .lesson-resume{flex-wrap:wrap;padding:.6rem .7rem}
  .lesson-resume__text{flex-basis:100%;order:2;margin-top:.25rem}
  .lesson-resume__btn{order:3}
}

/* ── Within-lesson "On this page" rail (v0.38.5) ────────────────── */
.lesson-onpage{
  display:none;
  position:sticky;top:calc(67px + 49px + 1.5rem);
  align-self:start;
  padding:1.4rem 1.1rem 2rem 1rem;
  max-height:calc(100vh - 67px - 49px - 3rem);
  overflow-y:auto;
}
.lesson-onpage.is-ready{display:block}
@media (max-width:1279px){
  .lesson-onpage.is-ready{display:none}
}
.lesson-onpage__title{
  font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--c-slate-500);margin:0 0 .65rem;padding:0 .25rem;
}
.lesson-onpage__list{
  list-style:none;padding:0;margin:0;
  border-left:1.5px solid var(--c-slate-200);
  display:flex;flex-direction:column;gap:1px;
}
.lesson-onpage__item{margin:0;padding:0}
.lesson-onpage__link{
  display:block;padding:.32rem .75rem;
  margin-left:-1.5px;border-left:1.5px solid transparent;
  font-size:.82rem;line-height:1.4;color:var(--c-slate-600);
  text-decoration:none;font-weight:500;
  transition:color .12s ease, border-color .12s ease, background .12s ease;
}
.lesson-onpage__link:hover{color:var(--c-navy-900)}
.lesson-onpage__item--h3 .lesson-onpage__link{
  padding-left:1.5rem;font-size:.78rem;color:var(--c-slate-500);
}
.lesson-onpage__item.is-active .lesson-onpage__link{
  color:var(--c-blue-400);font-weight:700;
  border-left-color:var(--c-blue-400);
}
.lesson-onpage::-webkit-scrollbar{width:5px}
.lesson-onpage::-webkit-scrollbar-thumb{background:var(--c-slate-200);border-radius:3px}
.lesson-onpage::-webkit-scrollbar-thumb:hover{background:var(--c-slate-300)}

/* ── C5 (v0.45.14): mobile "Jump to section" — shown ≤1279px where the
   right-rail "On this page" is hidden, so long lessons keep section
   navigation on phones/tablets. JS injects + populates it. ──────── */
.lesson-jump{display:none;margin:0 0 1.6rem;border:1px solid var(--c-slate-200);border-radius:10px;background:#f8fafc;overflow:hidden}
.lesson-jump.is-ready{display:block}
@media (min-width:1280px){ .lesson-jump.is-ready{display:none} }
.lesson-jump__sum{
  cursor:pointer;list-style:none;display:flex;align-items:center;gap:.5rem;
  padding:.7rem .9rem;font-size:.82rem;font-weight:700;color:var(--c-navy-900);
}
.lesson-jump__sum::-webkit-details-marker{display:none}
.lesson-jump__sum i.fa-list-ul{color:var(--c-slate-500);font-size:.8rem}
.lesson-jump__sum i.fa-chevron-down{margin-left:auto;transition:transform .2s;font-size:.72rem;color:var(--c-slate-500)}
.lesson-jump[open] .lesson-jump__sum i.fa-chevron-down{transform:rotate(180deg)}
.lesson-jump__list{list-style:none;margin:0;padding:.15rem .4rem .55rem;display:flex;flex-direction:column;gap:1px;max-height:55vh;overflow-y:auto;border-top:1px solid var(--c-slate-200)}
.lesson-jump__item{margin:0;padding:0}
.lesson-jump__link{display:block;padding:.5rem .6rem;border-radius:7px;font-size:.85rem;line-height:1.35;color:var(--c-slate-500);text-decoration:none}
.lesson-jump__link:hover{background:#fff;color:var(--c-navy-900)}
.lesson-jump__item--h3 .lesson-jump__link{padding-left:1.55rem;font-size:.8rem}

/* ── Mark-complete celebration (v0.38.5) ────────────────────────── */
.lesson-celebrate{
  position:fixed;inset:0;z-index:1400;
  display:none;align-items:center;justify-content:center;
  background:rgba(10,22,40,.55);backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
  pointer-events:none;
}
.lesson-celebrate.is-on{display:flex;animation:lessonCelebrateFade .25s ease-out}
.lesson-celebrate__ring{
  position:absolute;
  width:140px;height:140px;border-radius:50%;
  border:3px solid #22c55e;
  opacity:0;transform:scale(.4);
  animation:lessonCelebrateRing .85s cubic-bezier(.2,.65,.4,1) forwards;
}
.lesson-celebrate__check{
  position:absolute;
  width:96px;height:96px;border-radius:50%;
  background:linear-gradient(135deg,#22c55e 0%,#15803d 100%);
  color:#fff;font-size:2.5rem;
  display:inline-flex;align-items:center;justify-content:center;
  box-shadow:0 10px 30px rgba(21,128,61,.45);
  opacity:0;transform:scale(.4);
  animation:lessonCelebrateCheck .55s cubic-bezier(.2,.65,.4,1) .12s forwards;
}
.lesson-celebrate__text{
  position:absolute;top:calc(50% + 80px);left:0;right:0;
  text-align:center;
  font-family:Georgia,"Iowan Old Style","Charter",serif;
  font-size:1.45rem;font-weight:700;color:#fff;letter-spacing:-.01em;
  opacity:0;transform:translateY(8px);
  animation:lessonCelebrateText .4s ease .35s forwards;
  text-shadow:0 1px 12px rgba(0,0,0,.35);
}
@keyframes lessonCelebrateFade{from{opacity:0}to{opacity:1}}
@keyframes lessonCelebrateRing{
  0%   {opacity:0;transform:scale(.4)}
  35%  {opacity:1}
  100% {opacity:0;transform:scale(2.4)}
}
@keyframes lessonCelebrateCheck{
  0%   {opacity:0;transform:scale(.4) rotate(-8deg)}
  60%  {opacity:1;transform:scale(1.08) rotate(0deg)}
  100% {opacity:1;transform:scale(1) rotate(0deg)}
}
@keyframes lessonCelebrateText{
  to{opacity:1;transform:translateY(0)}
}
@media (prefers-reduced-motion:reduce){
  .lesson-resume{animation:none}
  .lesson-celebrate__ring{animation-duration:.01ms}
  .lesson-celebrate__check{animation-duration:.01ms;animation-delay:0s}
  .lesson-celebrate__text{animation-duration:.01ms;animation-delay:0s}
}

/* Video */
.lesson-video{
  margin:0 0 2.2rem;border-radius:12px;overflow:hidden;background:#000;
  box-shadow:0 8px 28px rgba(10,22,40,.18);
}
.lesson-video video{display:block;width:100%;background:#000}

/* Body content typography */
/* C8 (v0.45.20) — reader text-size control. --dl-fontscale is set on
   .lesson-main by the sticky-bar A−/A/A+ buttons (persisted in
   localStorage); body + headings scale together. */
.lesson-body{font-size:calc(1.08rem * var(--dl-fontscale, 1));line-height:1.78;color:#1e293b}
.lesson-body > * + *{margin-top:1.15rem}
.lesson-body h2{
  font-family:Georgia,"Iowan Old Style","Charter",serif;
  font-size:calc(1.55rem * var(--dl-fontscale, 1));font-weight:700;color:var(--c-navy-900);
  letter-spacing:-.015em;margin:2.6rem 0 .9rem;line-height:1.25;
}
.lesson-body h2:first-child{margin-top:0}
.lesson-body h3{
  font-size:calc(1.2rem * var(--dl-fontscale, 1));font-weight:700;color:var(--c-navy-900);
  margin:2.2rem 0 .8rem;line-height:1.35;letter-spacing:-.005em;
}
.lesson-body p{margin:0}
.lesson-body p:first-of-type{font-size:calc(1.14rem * var(--dl-fontscale, 1));line-height:1.7;color:#0f172a}
.lesson-body ul,.lesson-body ol{margin:0;padding-left:1.8rem}
.lesson-body li{margin:.5rem 0;line-height:1.7;padding-left:.3rem}
.lesson-body li::marker{color:var(--c-blue-400);font-weight:700}
.lesson-body strong{color:var(--c-navy-900);font-weight:700}
.lesson-body em{color:var(--c-navy-800);font-style:italic}
.lesson-body a{
  color:var(--c-blue-400);font-weight:500;
  text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;
  transition:color .12s ease;
}
.lesson-body a:hover{color:var(--c-navy-800);text-decoration-thickness:2px}
.lesson-body blockquote{
  margin:1.8rem 0;padding:1rem 1.2rem;
  background:linear-gradient(135deg,#f0fdfa 0%,#fff 70%);
  border-left:3px solid var(--c-cyan-400);border-radius:0 8px 8px 0;
  color:var(--c-slate-700);font-size:1rem;font-style:italic;
  position:relative;
}
.lesson-body blockquote::before{
  content:'"';position:absolute;top:-8px;left:.8rem;
  font-size:2.4rem;color:var(--c-cyan-400);opacity:.35;font-family:Georgia,serif;line-height:1;
}
.lesson-body code{
  background:#f1f5f9;border-radius:4px;padding:.12em .38em;
  font-family:Menlo,Consolas,monospace;font-size:.92em;color:var(--c-navy-900);
}
.lesson-body hr{
  border:none;border-top:1px solid var(--c-slate-200);
  margin:2.4rem 0;
}

/* Quiz CTA */
.lesson-quiz{
  display:flex;align-items:center;gap:1.1rem;
  margin:2.6rem 0 0;padding:1.2rem 1.4rem;
  background:linear-gradient(135deg,#f8fafc 0%,#eff6ff 100%);
  border:1px solid #bfdbfe;border-radius:12px;
  text-decoration:none;color:inherit;
  transition:all .18s cubic-bezier(.4,0,.2,1);
}
.lesson-quiz:hover{
  border-color:var(--c-blue-400);
  box-shadow:0 6px 20px rgba(74,126,176,.15);
  transform:translateY(-1px);
}
.lesson-quiz__icon{
  width:44px;height:44px;border-radius:10px;flex-shrink:0;
  background:linear-gradient(135deg,#0891b2,#0e7490);color:#fff;
  display:inline-flex;align-items:center;justify-content:center;font-size:1.1rem;
  box-shadow:0 2px 8px rgba(8,145,178,.25);
}
.lesson-quiz__text{flex:1;min-width:0;display:flex;flex-direction:column;gap:.2rem}
.lesson-quiz__text strong{color:var(--c-navy-900);font-size:1rem;font-weight:700;letter-spacing:-.005em}
.lesson-quiz__text span{color:var(--c-slate-600);font-size:.88rem;line-height:1.5}
.lesson-quiz__arrow{color:var(--c-blue-400);font-size:1rem;transition:transform .15s ease}
.lesson-quiz:hover .lesson-quiz__arrow{transform:translateX(3px)}

/* ── Bottom navigation (v0.38.4 — compliant with platform button rules) ─
   Both buttons use gradient backgrounds + white text + subtle border +
   drop shadow. Adjacent buttons use DIFFERENT colors per rule #9:
   Prev = slate, Next = navy. Same 38 px height per rule #7. */
.lesson-nav{
  display:flex;justify-content:space-between;align-items:center;
  gap:.6rem;flex-wrap:wrap;
  margin-top:2.6rem;padding-top:1.6rem;
  border-top:1px solid var(--c-slate-200);
}
/* v0.41.9 — Simplified Back / Next pill buttons. The destination lesson
   title used to live inside the button (making them wide and uneven);
   the title is already visible in the left TOC, so the button is just
   directional. Both buttons match in height + corner radius; Prev is
   slate, Next is navy (rule #9: adjacent buttons must differ in color). */
.lesson-nav__link{
  display:inline-flex;align-items:center;gap:.55rem;
  height:42px;padding:0 1.15rem;
  border-radius:10px;
  border:1px solid transparent;color:#fff;text-decoration:none !important;
  font-weight:600;font-size:.92rem;letter-spacing:-.005em;line-height:1;
  box-shadow:0 2px 6px rgba(0,0,0,.12);
  transition:filter .18s ease,box-shadow .18s ease,transform .12s ease;
  min-width:120px;justify-content:center;
}
.lesson-nav__link:hover{filter:brightness(1.10);box-shadow:0 4px 12px rgba(0,0,0,.18);color:#fff;transform:translateY(-1px)}
.lesson-nav__link:focus-visible{outline:2px solid rgba(56,189,248,.55);outline-offset:2px}
.lesson-nav__chev{
  width:22px;height:22px;border-radius:50%;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:.7rem;background:rgba(255,255,255,.20);color:#fff;
}
.lesson-nav__label{
  font-size:.92rem;font-weight:600;color:#fff;letter-spacing:-.005em;
}

.lesson-nav__link--prev{
  background:linear-gradient(135deg,#475569 0%,#334155 100%);
  border-color:#334155;
}
.lesson-nav__link--next{
  background:linear-gradient(135deg,#1e3a5f 0%,#2c5282 100%);
  border-color:#1e3a5f;
}
/* v0.45.15 — When the module is gated by a chapter quiz the student
   hasn't cleared, the Next button becomes a clear "Start quiz" CTA.
   Muted teal (the platform's established task/quiz accent) so it reads
   as a distinct action and still differs from the slate Back button. */
.lesson-nav__link--quiz{
  background:linear-gradient(135deg,#0e7490 0%,#155e75 100%);
  border-color:#0e7490;
}

/* v0.44.3 — Back to single-line foot-nav buttons. Clean directional
   pills with one label and a chevron — no destination subtitle. The
   destination lesson title is in the title attribute for hover, and
   the lesson is visible in the TOC for users who want to look it up. */
.lesson-nav__link{
  min-height:auto;height:42px;padding:0 1.15rem;
  gap:.55rem;justify-content:center;min-width:120px;
}
/* When the Next button is rendered as a <button> inside a form (so the
   click commits completion via mark-complete.php), reset the browser's
   default button styling so it matches the <a> variant. */
button.lesson-nav__link{
  font-family:inherit;font-size:inherit;
  cursor:pointer;
}
.lesson-nav__label{
  font-size:.92rem;font-weight:600;color:#fff;letter-spacing:-.005em;
}
.lesson-nav__chev{width:22px;height:22px;font-size:.7rem}
/* Legacy .lesson-nav__col and .lesson-nav__sub were the two-line
   variant (v0.43.1, v0.44.2) — kept hidden so the HTML stays
   backward-compatible if it shows up anywhere else. */
.lesson-nav__col{display:contents}
.lesson-nav__col--right{display:contents;text-align:right}
.lesson-nav__sub{display:none}

/* When the reader has demonstrably finished the lesson (auto-complete
   fired with was_completed=true), the JS stamps .is-ready on the Next
   link. The link gains an emerald gradient + a one-shot pulse animation
   so the student notices it as the obvious next action. */
.lesson-nav__link--next.is-ready{
  background:linear-gradient(135deg,#047857 0%,#059669 100%);
  border-color:#047857;
  animation:lessonNavReadyPulse 2.2s ease-out 1;
}
@keyframes lessonNavReadyPulse{
  0%   { box-shadow:0 0 0 0 rgba(4,120,87,.45), 0 2px 6px rgba(0,0,0,.12); }
  60%  { box-shadow:0 0 0 14px rgba(4,120,87,0), 0 4px 12px rgba(0,0,0,.18); }
  100% { box-shadow:0 0 0 0 rgba(4,120,87,0), 0 2px 6px rgba(0,0,0,.12); }
}
/* v0.45.70 — "Next" stays locked until the 2-minute reading countdown
   ends. Dimmed, non-interactive, no hover/active affordance; the chev
   gets a small lock so it's obvious why it isn't clickable yet. */
.lesson-nav__link--next.is-locked,
.lesson-nav__link--next[disabled]{
  background:#cbd5e1;border-color:#cbd5e1;color:#64748b;
  cursor:not-allowed;opacity:.7;box-shadow:none;pointer-events:none;
  filter:none;transform:none;animation:none;
}
.lesson-nav__link--next.is-locked .lesson-nav__label{color:#475569}
.lesson-nav__link--next.is-locked .lesson-nav__chev::after{
  content:"\f023";font-family:"Font Awesome 6 Free";font-weight:900;
  font-size:.62rem;margin-left:.25rem;opacity:.8;
}

@media (max-width:640px){
  .lesson-nav__link{flex:1;min-width:0;max-width:none}
  .lesson-nav__sub{max-width:14ch}
}

/* v0.43.1 — Quiet reading-time meta under the lesson title. Replaces
   the old eyebrow chip + module + position triple, which all
   duplicated info now visible in the sticky topbar. */
.lesson-readmeta{
  margin:.4rem 0 1.75rem;
  font-size:.85rem;color:var(--c-slate-500);font-weight:500;
  display:inline-flex;align-items:center;gap:.4rem;
}
.lesson-readmeta i{color:var(--c-slate-400);font-size:.82rem}

/* v0.44.3 — Position subtitle above the lesson title — simplified to
   a single short line "Lesson X of Y · Module N". The v0.44.2 version
   had three pieces (module + lesson + global page) which the user
   flagged as cluttered. */
.lesson-position{
  margin:0 0 .35rem;
  font-size:.78rem;font-weight:600;
  color:var(--c-slate-500);
  letter-spacing:.04em;
}

/* Page indicator below the foot nav */
.lesson-pageno{
  margin:1.8rem 0 0;text-align:center;
  font-size:.78rem;letter-spacing:.06em;
  color:var(--c-slate-400);font-weight:600;
  font-variant-numeric:tabular-nums;
}


/* ---------- Admin filter toolbar (v0.36.24) ----------
   Shared pattern for the search/filter bar above admin data tables (Errors,
   Activity, Users, etc). Every interactive control inside the toolbar is
   exactly 42px tall so the row reads as a single horizontal band. Field
   labels sit ABOVE the input; the labels eat their own row inside each
   `.dl-toolbar__field`, but the row uses `align-items:flex-end` so the
   inputs of every field line up with the bottom of any button beside them.
   The "Group similar" checkbox-chip is built as a 42px pill so it visually
   matches its neighbors instead of being a shorter inline element. */
.dl-toolbar{
  padding:1rem 1.2rem;
  display:flex;flex-wrap:wrap;gap:.65rem;
  align-items:flex-end;
  margin-bottom:1.1rem;
}
.dl-toolbar__field{margin:0}
.dl-toolbar__field--sm  {width:130px;flex:0 0 auto}
.dl-toolbar__field--md  {min-width:170px;flex:0 0 auto}
.dl-toolbar__field--lg  {min-width:240px;flex:0 0 auto}
.dl-toolbar__field--grow{min-width:200px;flex:1 1 200px}
.dl-toolbar__field > span{
  display:block;
  font-size:.74rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  color:var(--c-slate-600);
  margin:0 0 .35rem .15rem;line-height:1;
}
.dl-toolbar__field > input,
.dl-toolbar__field > select{margin:0}
/* 42px pill-style checkbox chip that lines up with the .dl-btn and input
   heights. The colored "on" state mirrors the navy button gradient so an
   active filter reads as a clear toggle. */
.dl-toolbar__check{
  display:inline-flex;align-items:center;gap:.5rem;
  height:42px;padding:0 .95rem;
  background:#fff;border:1px solid var(--c-slate-200);border-radius:8px;
  font-size:.88rem;font-weight:600;color:var(--c-slate-700);
  cursor:pointer;user-select:none;
  transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease;
}
.dl-toolbar__check:hover{background:#f8fafc;border-color:var(--c-slate-300)}
.dl-toolbar__check input[type=checkbox]{margin:0;accent-color:var(--c-navy-700)}
.dl-toolbar__check span{display:inline-flex;align-items:center;gap:.4rem}
.dl-toolbar__check span i{font-size:.82rem;color:var(--c-slate-500)}
.dl-toolbar__check.is-on{
  background:linear-gradient(135deg,#1e3a5f,#2c5282);
  border-color:#1e3a5f;color:#fff;
  box-shadow:0 1px 3px rgba(30,58,95,.30);
}
.dl-toolbar__check.is-on span i{color:rgba(255,255,255,.9)}
.dl-toolbar__check.is-on input[type=checkbox]{accent-color:#fff}
.dl-toolbar__summary{
  width:100%;color:var(--c-slate-500);font-size:.82rem;
  margin-top:.15rem;line-height:1.4;
}
.dl-toolbar__summary strong{color:var(--c-navy-900);font-weight:700}

/* v0.36.6 — Account page uses the wide responsive container (matches the
   admin shell at 1680px) and a roomier 1.6 : 1 ratio so the form column
   eats the available space instead of being squeezed against the rail. */
.dl-account-container{max-width:1680px;padding-left:clamp(12px,2.4vw,28px);padding-right:clamp(12px,2.4vw,28px)}
.dl-account-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,.8fr);gap:1.4rem;align-items:start}
.dl-account-rail{display:flex;flex-direction:column;gap:1.2rem}
@media (max-width:980px){.dl-account-grid{grid-template-columns:1fr}}

/* Icon-prefixed input — wrap the input in <span class="dl-field__input"> */
.dl-field__input{position:relative;display:block}
.dl-field__input > .dl-field__icon{
  position:absolute;left:.95rem;top:50%;transform:translateY(-50%);
  color:var(--c-slate-400);font-size:.95rem;pointer-events:none;
  transition:color .15s;
}
.dl-field__input--textarea > .dl-field__icon{top:1.05rem;transform:none}
.dl-field__input > input,
.dl-field__input > textarea{padding-left:2.7rem}
.dl-field__input:focus-within > .dl-field__icon{color:var(--c-blue-400)}
.dl-field input{
  width:100%;height:42px;padding:0 .85rem;font-size:.97rem;
  border:1px solid var(--c-slate-200);border-radius:8px;background:#fff;color:var(--c-text);
  transition:border-color .15s,box-shadow .15s,background .15s;font-family:inherit;
}
.dl-field input:hover{border-color:var(--c-slate-300)}
.dl-field input:focus{outline:none;border-color:var(--c-blue-300);box-shadow:0 0 0 3px rgba(74,126,176,.18)}
.dl-flash{padding:.7rem .95rem;border-radius:8px;font-size:.92rem;margin-bottom:1rem;border:1px solid transparent}
.dl-flash--error{background:#fdecec;color:#8a1f1f;border-color:#f5c2c2}
.dl-flash--ok{background:#e6f5ec;color:#15803d;border-color:#b9e5c8}
.dl-auth-foot{margin-top:1.2rem;text-align:center;font-size:.9rem;color:var(--c-text-muted)}

/* Visually-hidden text (for screen readers) */
.dl-sr-only{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Skip-link (T1-5, WCAG 2.4.1) — off-screen until keyboard focus, then
   pinned top-left above everything. The target is a bare focus anchor. */
.dl-skiplink{
  position:fixed;top:-100px;left:12px;z-index:2000;
  background:var(--c-navy-700,#162f4d);color:#fff;
  padding:.65rem 1rem;border-radius:0 0 8px 8px;
  font-size:.9rem;font-weight:700;text-decoration:none;
  box-shadow:0 8px 24px -8px rgba(0,0,0,.5);
  transition:top .15s ease;
}
.dl-skiplink:focus{top:0;outline:3px solid #fff;outline-offset:-3px}
.dl-skip-anchor{
  display:block;width:0;height:0;overflow:hidden;
}
.dl-skip-anchor:focus{outline:none}

/* ---------- Users table — user cell with avatar ---------- */
.dl-users-table tbody tr td{padding:.7rem 1.1rem}
/* v0.36.5 — Removed the 560px tbody min-height that was stretching the
   gap between two real rows into a wall of empty space. The new
   .dl-panel__body--flush > .dl-table-wrap {max-height:560px} caps the
   wrap at the same height, so the table fills only as much as it needs
   and starts scrolling inside the panel beyond ~10 rows. */
.dl-user-cell{
  display:flex;align-items:center;gap:.75rem;
  text-decoration:none;color:inherit;
}
.dl-user-cell__avatar{
  width:36px;height:36px;border-radius:50%;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-weight:800;font-size:.92rem;letter-spacing:-.02em;
  border:1px solid rgba(0,0,0,.08);box-shadow:0 1px 3px rgba(0,0,0,.06);
}
.dl-user-cell__text{display:flex;flex-direction:column;min-width:0;line-height:1.25}
.dl-user-cell__email{color:var(--c-navy-900);font-weight:700;font-size:.95rem;letter-spacing:-.005em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px}
.dl-user-cell__name{color:var(--c-slate-500);font-size:.8rem;margin-top:.1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px}
.dl-user-cell__id{color:var(--c-slate-400);font-family:Menlo,Consolas,monospace;font-size:.72rem;margin-left:.35rem}
.dl-user-cell:hover .dl-user-cell__email{color:var(--c-blue-400)}

/* ---------- Users filter bar ---------- */
.dl-userfilter{
  display:flex;gap:.55rem;flex-wrap:wrap;align-items:flex-end;
  background:#fff;border:1px solid var(--c-slate-200);border-radius:12px;
  padding:.85rem 1rem;margin-bottom:1.1rem;
}
.dl-userfilter .dl-field{margin:0}
.dl-userfilter__search{flex:1;min-width:280px}
.dl-userfilter__select{min-width:160px}
.dl-userfilter__input-wrap{position:relative;display:block}
.dl-userfilter__input-wrap input{padding-left:2.4rem}
.dl-userfilter__icon{
  position:absolute;left:.85rem;top:50%;transform:translateY(-50%);
  color:var(--c-slate-400);font-size:.92rem;pointer-events:none;
}
@media (max-width:640px){
  .dl-user-cell__email{max-width:180px}
  .dl-user-cell__name{max-width:180px}
}

/* ---------- Row actions menu (admin tables) ---------- */
.dl-row-menu-btn{
  width:32px;height:32px;border-radius:8px;
  border:1px solid var(--c-slate-200);background:#fff;color:var(--c-slate-700);
  display:inline-flex;align-items:center;justify-content:center;
  cursor:pointer;font-size:.85rem;
  transition:background .15s ease,border-color .15s ease,color .15s ease;
}
.dl-row-menu-btn:hover,.dl-row-menu-btn[aria-expanded="true"]{background:var(--c-slate-50);border-color:var(--c-slate-300);color:var(--c-navy-900)}
.dl-row-menu{
  /* v0.44.0 — Switched from position:absolute (which clipped inside tables
     and lived below other stacking contexts) to position:fixed. JS in
     includes/footer.php computes top/left from the button's
     getBoundingClientRect on open, so the menu always escapes table cells
     and overflow:hidden ancestors. z-index above all expected page
     chrome (topbar = 1050, modal = 1200) so it sits above everything. */
  position:fixed;top:0;left:0;min-width:220px;
  background:#fff;border:1px solid var(--c-slate-200);border-radius:10px;
  box-shadow:0 20px 50px -16px rgba(10,22,40,.28), 0 4px 10px rgba(10,22,40,.08);
  padding:.35rem;z-index:1400;
  opacity:0;visibility:hidden;transform:translateY(-4px);
  transition:opacity .15s ease,transform .15s ease,visibility .15s;
  text-align:left;
  pointer-events:none;
}
.dl-row-menu.is-open{opacity:1;visibility:visible;transform:none;pointer-events:auto}
.dl-row-menu > *{display:block;width:100%}
.dl-row-menu a,
.dl-row-menu button{
  display:flex;align-items:center;gap:.6rem;
  padding:.5rem .7rem;border-radius:7px;
  background:transparent;border:0;cursor:pointer;
  color:var(--c-navy-900);font-weight:500;font-size:.88rem;text-align:left;
  font-family:inherit;width:100%;
  transition:background .12s ease,color .12s ease;
}
.dl-row-menu a:hover,
.dl-row-menu button:hover{background:var(--c-slate-50);color:var(--c-navy-900)}
.dl-row-menu a i,
.dl-row-menu button i{color:var(--c-blue-400);width:1rem;text-align:center;font-size:.85rem}
.dl-row-menu__danger,
.dl-row-menu .dl-row-menu__danger{color:#991b1b}
.dl-row-menu__danger:hover{background:#fdecec;color:#991b1b}
.dl-row-menu__danger i,
.dl-row-menu .dl-row-menu__danger i{color:#dc2626}
.dl-row-menu__divider{height:1px;background:var(--c-slate-100);margin:.25rem .25rem}
.dl-row-menu__note{padding:.5rem .7rem;font-size:.78rem;color:var(--c-slate-500);line-height:1.45}

/* ---------- Tables — platform standard ----------
   Every data table must use this base style: zebra-striped rows,
   uppercase column headers, slate dividers. Pair with `.dl-table-toolbar`
   below the table for pagination + view-count controls. */
.dl-table{width:100%;border-collapse:collapse;font-size:.88rem}
.dl-table thead th{
  /* v0.36.4 — denser admin tables (.55rem vs .85rem) — admin rows are
     reference data, not study material; compactness > breathing room. */
  text-align:left;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;
  color:var(--c-slate-600);background:#f1f5f9;padding:.55rem .9rem;
  border-bottom:1px solid #cbd5e1;white-space:nowrap;
}
.dl-table thead th:last-child{text-align:right}
.dl-table tbody td{padding:.5rem .9rem;border-bottom:1px solid var(--c-slate-100);color:var(--c-slate-700);vertical-align:middle;font-size:.82rem}
.dl-table tbody tr:last-child td{border-bottom:0}
.dl-table tbody tr:nth-child(even){background:#fafbfd}    /* zebra-stripe (every other row) */
.dl-table tbody tr:hover{background:#eff6ff}

/* Table toolbar — paginate + view-count + summary, always below the table */
.dl-table-toolbar{
  display:flex;align-items:center;justify-content:space-between;
  gap:.85rem;flex-wrap:wrap;
  padding:.75rem 1.2rem;border-top:1px solid var(--c-slate-200);
  background:var(--c-slate-50);font-size:.85rem;color:var(--c-slate-600);
}
.dl-table-toolbar__info{display:inline-flex;align-items:center;gap:.55rem}
.dl-table-toolbar__info strong{color:var(--c-navy-900);font-weight:700}
.dl-table-toolbar__view{display:inline-flex;align-items:center;gap:.45rem;color:var(--c-slate-600)}
.dl-table-toolbar__view select{
  height:32px;padding:0 1.8rem 0 .65rem;font-size:.85rem;font-family:inherit;
  border:1px solid var(--c-slate-200);border-radius:6px;background:#fff;color:var(--c-navy-900);
  appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'><path fill='%2364748b' d='M5 7L1.5 3h7z'/></svg>");
  background-repeat:no-repeat;background-position:right .55rem center;cursor:pointer;
}
.dl-table-toolbar__pager{display:inline-flex;align-items:center;gap:.3rem}
.dl-table-toolbar__pager .dl-pager-btn{
  display:inline-flex;align-items:center;justify-content:center;
  width:32px;height:32px;border-radius:6px;
  border:1px solid var(--c-slate-200);background:#fff;color:var(--c-slate-700);
  font-size:.8rem;font-weight:600;text-decoration:none;
  transition:background .15s ease,border-color .15s ease,color .15s ease;
}
.dl-table-toolbar__pager .dl-pager-btn:hover:not(.is-disabled){background:var(--c-slate-50);border-color:var(--c-slate-300);color:var(--c-navy-900)}
.dl-table-toolbar__pager .dl-pager-btn.is-active{background:linear-gradient(135deg,#1e3a5f,#2d5a87);border-color:transparent;color:#fff}
.dl-table-toolbar__pager .dl-pager-btn.is-disabled{opacity:.4;cursor:not-allowed;pointer-events:none}
.dl-table-toolbar__pager .dl-pager-ellipsis{padding:0 .35rem;color:var(--c-slate-400);font-weight:700;letter-spacing:.05em}

@media (max-width:520px){
  .dl-table-toolbar{padding:.65rem .85rem;font-size:.8rem;gap:.6rem;justify-content:center}
}

/* ---------- Form grid + textareas/selects ---------- */
.dl-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media (max-width:640px){.dl-form-grid{grid-template-columns:1fr}}
.dl-field textarea,
.dl-field select{
  width:100%;padding:.7rem .85rem;font-size:.97rem;font-family:inherit;
  border:1px solid var(--c-slate-200);border-radius:8px;background:#fff;color:var(--c-text);
  transition:border-color .15s,box-shadow .15s;
}
.dl-field select{height:42px;padding:0 .85rem;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path fill='%2364748b' d='M6 8.5L1.5 4h9z'/></svg>");background-repeat:no-repeat;background-position:right .8rem center;padding-right:2rem}
.dl-field textarea{resize:vertical;min-height:120px;line-height:1.55}
.dl-field textarea:hover,
.dl-field select:hover{border-color:var(--c-slate-300)}
.dl-field textarea:focus,
.dl-field select:focus{outline:none;border-color:var(--c-blue-300);box-shadow:0 0 0 3px rgba(74,126,176,.18)}

/* ---------- Page header (interior pages) ---------- */
.dl-pagehead{
  position:relative;overflow:hidden;color:#fff;padding:1.8rem 0 2rem;
  background:linear-gradient(160deg,#0a1628 0%,#0f2439 30%,#162f4d 70%,#1a3a5c 100%);
}
.dl-pagehead::before{content:'';position:absolute;inset:0;background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.03) 1px,transparent 0);background-size:40px 40px}
.dl-pagehead .container{position:relative;z-index:1}
.dl-pagehead h1{color:#fff;font-weight:800;font-size:clamp(1.4rem,2.3vw,1.85rem);margin:0 0 .3rem;letter-spacing:-.01em;line-height:1.2}
.dl-pagehead h1 i{color:var(--c-cyan-400);margin-right:.5rem;font-size:.92em}
.dl-pagehead p{color:rgba(255,255,255,.82);font-size:.96rem;margin:0;line-height:1.5}

/* ---------- Footer (multi-column) ---------- */
.dl-footer{
  background:linear-gradient(180deg,#0a1628 0%,#070f1e 100%);
  color:#cbd5e1;padding:3.5rem 0 1.5rem;margin-top:0;font-size:.92rem;
  border-top:1px solid rgba(255,255,255,.06);
  position:relative;
}
.dl-footer::before{
  content:'';position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(56,189,248,.35),transparent);
}
.dl-footer__cols{
  display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:2.5rem;
  padding-bottom:2.4rem;
}
.dl-footer__col h5{
  color:#fff;font-size:.78rem;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;
  margin:0 0 1rem;
}
.dl-footer__col ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.55rem}
.dl-footer__col a{color:#cbd5e1;font-size:.92rem;line-height:1.5;text-decoration:none;transition:color .15s}
.dl-footer__col a:hover{color:#fff}

.dl-footer__brand{
  display:inline-flex;align-items:center;gap:10px;
  color:#fff;font-weight:800;font-size:1.05rem;letter-spacing:-.01em;
  margin-bottom:.85rem;text-decoration:none;
}
.dl-footer__brand img{height:28px;width:auto}
.dl-footer__brand:hover{color:#fff}
.dl-footer__about{
  color:rgba(255,255,255,.62);font-size:.9rem;line-height:1.6;
  margin:0 0 1rem;max-width:280px;
}
.dl-footer__col ul.dl-footer__social{
  list-style:none;margin:.4rem 0 0;padding:0;
  display:flex;flex-direction:row;gap:.45rem;flex-wrap:wrap;
}
.dl-footer__social a{
  width:34px;height:34px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);
  color:rgba(255,255,255,.78);font-size:.9rem;
  transition:background .15s ease,border-color .15s ease,color .15s ease;
}
.dl-footer__social a:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.22);color:#fff}

.dl-footer__bottom{
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;
  gap:.85rem 1.4rem;
  padding-top:1.4rem;border-top:1px solid rgba(255,255,255,.06);
  color:#64748b;font-size:.78rem;
}
.dl-footer__copy{color:rgba(255,255,255,.55)}
.dl-footer__meta a{color:rgba(255,255,255,.55);text-decoration:none}
.dl-footer__meta a:hover{color:#cbd5e1}

@media (max-width:880px){
  .dl-footer{padding:2.6rem 0 1.2rem}
  .dl-footer__cols{grid-template-columns:1fr 1fr;gap:1.8rem 1.4rem;padding-bottom:1.8rem}
  .dl-footer__col--brand{grid-column:1 / -1}
  .dl-footer__about{max-width:none}
}
@media (max-width:520px){
  .dl-footer__cols{grid-template-columns:1fr;gap:1.6rem;padding-bottom:1.4rem}
  .dl-footer__bottom{flex-direction:column;align-items:flex-start;text-align:left}
  .dl-footer__bottom > div{width:100%}
}

/* v0.43.0 — Minimal footer for /learn/lesson.php only. One quiet line at
   the bottom of the reading page so the full 4-column marketing footer
   doesn't compete with the lesson content. Wraps gracefully on phones. */
.dl-footer-min{
  margin-top:auto;
  padding:1rem 0;
  background:linear-gradient(180deg,#0a1628 0%,#0e1d35 100%);
  color:rgba(255,255,255,.66);
  font-size:.78rem;
  border-top:1px solid rgba(255,255,255,.06);
}
.dl-footer-min__row{
  display:flex;align-items:center;justify-content:center;
  gap:.65rem;flex-wrap:wrap;line-height:1.4;
}
.dl-footer-min__brand{
  display:inline-flex;align-items:center;gap:.45rem;
  color:#fff;text-decoration:none !important;
  font-weight:700;letter-spacing:-.005em;
}
.dl-footer-min__brand:hover{color:#fff;opacity:.85}
.dl-footer-min__brand img{display:block;width:auto;height:18px}
.dl-footer-min__sep{color:rgba(255,255,255,.25);user-select:none}
.dl-footer-min__copy{color:rgba(255,255,255,.62);font-weight:500}
.dl-footer-min__ver{
  color:rgba(255,255,255,.35);font-weight:600;
  font-variant-numeric:tabular-nums;letter-spacing:.02em;
}
/* C1 fix (v0.45.14): the minimal footer had zero @media rules and got
   cramped on phones. Tighten padding, drop the dot separators (the row
   wraps), keep the font ≥10px per the minimum-font standard. */
@media (max-width:520px){
  .dl-footer-min{padding:.8rem 0}
  .dl-footer-min__row{gap:.25rem .5rem;font-size:.7rem;text-align:center}
  .dl-footer-min__sep{display:none}
  .dl-footer-min__brand img{height:16px}
}

/* ---------- Scroll reveal ---------- */
.dl-reveal{opacity:0;transform:translateY(28px);transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}
.dl-reveal.is-visible{opacity:1;transform:none}
.dl-reveal--d1{transition-delay:.1s}
.dl-reveal--d2{transition-delay:.2s}
.dl-reveal--d3{transition-delay:.3s}

/* ---------- Tooltips (data-tip="…") ---------- */
[data-tip]{position:relative}
[data-tip]::after,
[data-tip]::before{
  position:absolute;pointer-events:none;
  opacity:0;visibility:hidden;
  transition:opacity .18s ease,transform .18s ease,visibility .18s;
  z-index:1300;
}
[data-tip]::after{
  content:attr(data-tip);
  left:50%;bottom:calc(100% + 9px);transform:translate(-50%,4px);
  background:#0a1628;color:#fff;font-size:.78rem;font-weight:500;letter-spacing:.01em;
  padding:.42rem .65rem;border-radius:6px;white-space:nowrap;
  box-shadow:0 6px 18px rgba(10,22,40,.28);
  border:1px solid rgba(255,255,255,.08);
}
[data-tip]::before{
  content:'';
  left:50%;bottom:calc(100% + 4px);transform:translate(-50%,4px);
  border:5px solid transparent;border-top-color:#0a1628;
}
[data-tip]:hover::after,
[data-tip]:focus-visible::after,
[data-tip]:hover::before,
[data-tip]:focus-visible::before{
  opacity:1;visibility:visible;transform:translate(-50%,0);
  transition-delay:.12s;
}
/* Bottom variant — for items near the top of the viewport */
[data-tip][data-tip-pos="bottom"]::after{bottom:auto;top:calc(100% + 9px);transform:translate(-50%,-4px)}
[data-tip][data-tip-pos="bottom"]::before{bottom:auto;top:calc(100% + 4px);border-top-color:transparent;border-bottom-color:#0a1628;transform:translate(-50%,-4px)}
[data-tip][data-tip-pos="bottom"]:hover::after,
[data-tip][data-tip-pos="bottom"]:hover::before{transform:translate(-50%,0)}

/* ---------- Breadcrumbs ---------- */
.dl-crumbs{
  margin:0;padding:.85rem 0;
  display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .45rem;
  font-size:.83rem;color:rgba(255,255,255,.7);
}
.dl-pagehead + section .dl-crumbs{padding-top:1.25rem}
.dl-crumbs__sep{color:rgba(255,255,255,.32);font-size:.62rem;display:inline-flex;align-items:center;margin:0 .15rem}
.dl-crumbs a{color:rgba(255,255,255,.85);font-weight:500;transition:color .15s}
.dl-crumbs a:hover{color:#fff}
.dl-crumbs__current{color:#fff;font-weight:600}
/* Light-background variant (when breadcrumbs sit on a section, not pagehead) */
.dl-crumbs--light{color:var(--c-slate-500)}
.dl-crumbs--light a{color:var(--c-blue-400)}
.dl-crumbs--light a:hover{color:var(--c-navy-800)}
.dl-crumbs--light .dl-crumbs__sep{color:var(--c-slate-400)}
.dl-crumbs--light .dl-crumbs__current{color:var(--c-navy-900)}

/* ---------- Accessibility ---------- */
:focus-visible{outline:3px solid rgba(56,189,248,.55);outline-offset:2px;border-radius:6px}
.dl-btn:focus-visible{outline-offset:3px}
input:focus-visible,textarea:focus-visible,select:focus-visible{outline:none} /* fields use their own focus ring */
/* Avoid huge outline on full-width block links */
.dl-card a:focus-visible,.dl-program-block a:focus-visible{outline-offset:4px}

/* ---------- Programs page (full-width sections) ---------- */
.dl-program-section{padding:4.5rem 0}
.dl-program-hero{
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1.5rem;
  padding:1.75rem 2rem;border-radius:var(--radius-lg);color:#fff;
  position:relative;overflow:hidden;margin-bottom:2.5rem;
  box-shadow:0 6px 24px rgba(10,22,40,.14);
}
/* v0.36.9 — Solid dark navy gradient matching .dl-cta. */
.dl-program-hero--navy {background:linear-gradient(160deg,#0a1628 0%,#0f2439 30%,#1a3a5c 60%,#162f4d 100%)}
.dl-program-hero--teal {background:linear-gradient(135deg,#0e7490,#0891b2)}
.dl-program-hero--slate{background:linear-gradient(135deg,#334155,#475569)}
.dl-program-hero::after{
  content:'';position:absolute;top:-50%;right:-5%;width:280px;height:280px;
  background:rgba(255,255,255,.06);border-radius:50%;pointer-events:none;
}
.dl-program-hero__icon{
  width:72px;height:72px;border-radius:16px;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.2);
  display:flex;align-items:center;justify-content:center;
  font-size:1.9rem;color:#fff;position:relative;z-index:1;flex-shrink:0;
}
.dl-program-hero__text{position:relative;z-index:1;min-width:0}
.dl-program-hero__eyebrow{font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.75);font-weight:700;margin-bottom:.35rem}
.dl-program-hero h2{color:#fff;font-size:clamp(1.5rem,2.6vw,2.1rem);font-weight:800;margin:0 0 .35rem;letter-spacing:-.02em;line-height:1.15}
.dl-program-hero p{color:rgba(255,255,255,.92);margin:0;font-size:1.02rem;line-height:1.5}
.dl-program-hero__status{position:relative;z-index:1;flex-shrink:0}
.dl-program-hero__status .dl-badge{background:rgba(255,255,255,.92);color:var(--c-navy-900);border-color:rgba(255,255,255,.5)}

.dl-program-body{max-width:none}
.dl-lead{font-size:1.1rem;line-height:1.7;color:var(--c-slate-700);margin:0 0 2rem}

.dl-program-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-bottom:1.5rem}
.dl-program-block{background:#fff;border:1px solid var(--c-slate-200);border-radius:var(--radius);padding:1.5rem 1.75rem;box-shadow:0 2px 8px rgba(10,22,40,.04);transition:box-shadow .2s ease,border-color .2s ease}
.dl-program-block:hover{box-shadow:0 4px 14px rgba(10,22,40,.07);border-color:#c7d2e0}
.dl-program-block h3{display:flex;align-items:center;gap:.55rem;font-size:1.1rem;color:var(--c-navy-900);font-weight:700;margin:0 0 .7rem}
.dl-program-block h3 i{color:var(--c-blue-400);font-size:1rem}
.dl-program-block p{margin:0;color:var(--c-slate-600);font-size:.97rem;line-height:1.65}

.dl-checklist{list-style:none;margin:.5rem 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:.6rem 1.4rem}
.dl-checklist li{display:flex;align-items:flex-start;gap:.6rem;font-size:.95rem;color:var(--c-slate-700);line-height:1.5}
.dl-checklist li i{color:var(--c-teal-600);font-size:.85rem;margin-top:.32rem;flex-shrink:0;width:14px}
.dl-checklist li span{flex:1;min-width:0}

.dl-program-actions{margin-top:2rem;display:flex;gap:.75rem;flex-wrap:wrap;align-items:center}

/* Program format breakdown (online theory + clinical) */
.dl-format{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:0 0 1.5rem}
.dl-format__item{
  background:#fff;border:1px solid var(--c-slate-200);border-radius:var(--radius);
  padding:1.25rem 1.4rem;display:flex;align-items:flex-start;gap:.95rem;
  box-shadow:0 2px 8px rgba(10,22,40,.04);
  transition:box-shadow .2s ease,border-color .2s ease;
}
.dl-format__item:hover{box-shadow:0 6px 18px rgba(10,22,40,.07);border-color:#c7d2e0}
.dl-format__icon{
  width:44px;height:44px;border-radius:10px;flex-shrink:0;
  background:linear-gradient(135deg,var(--c-blue-400),var(--c-navy-500));
  color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.05rem;
  box-shadow:0 6px 14px rgba(30,58,95,.2);
}
.dl-format__body{min-width:0}
.dl-format__title{font-size:1.05rem;font-weight:700;color:var(--c-navy-900);letter-spacing:-.005em;margin-bottom:.15rem}
.dl-format__meta{font-size:.78rem;color:var(--c-blue-400);font-weight:700;letter-spacing:.04em;text-transform:uppercase;margin-bottom:.45rem}
.dl-format__desc{margin:0;font-size:.92rem;color:var(--c-slate-600);line-height:1.55}
@media (max-width:640px){.dl-format{grid-template-columns:1fr;gap:.7rem}}

.dl-program-price{
  display:grid;grid-template-columns:1fr auto;align-items:center;gap:1rem 1.4rem;
  margin-bottom:1.5rem;background:#fff;border-left:4px solid var(--c-teal-600);
}
.dl-program-price__num{
  font-size:2.4rem;font-weight:800;color:var(--c-navy-900);letter-spacing:-.02em;
  line-height:1;display:flex;align-items:baseline;gap:.4rem;
}
.dl-program-price__sub{font-size:.85rem;font-weight:600;color:var(--c-text-muted);letter-spacing:.06em;text-transform:uppercase}
.dl-program-price__discount{
  grid-column:1 / -1;
  display:flex;align-items:center;gap:.6rem;
  padding-top:.85rem;border-top:1px dashed var(--c-slate-200);
  color:var(--c-slate-700);font-size:.95rem;
}
@media (max-width:520px){
  .dl-program-price{grid-template-columns:1fr}
  .dl-program-price__num{font-size:1.9rem}
}

/* Program section responsive */
@media (max-width:840px){
  .dl-program-hero{grid-template-columns:auto 1fr;padding:1.4rem 1.4rem}
  .dl-program-hero__status{grid-column:1 / -1;margin-top:.4rem}
  .dl-program-hero__icon{width:60px;height:60px;font-size:1.55rem;border-radius:12px}
  .dl-program-grid-2{grid-template-columns:1fr;gap:1rem}
  .dl-checklist{grid-template-columns:1fr}
  .dl-program-block{padding:1.25rem 1.4rem}
  .dl-lead{font-size:1.05rem}
}
@media (max-width:480px){
  .dl-program-section{padding:3rem 0}
  .dl-program-hero{padding:1.2rem;gap:1rem}
  .dl-program-hero__icon{width:52px;height:52px;font-size:1.35rem}
  .dl-program-hero h2{font-size:1.35rem}
  .dl-program-hero p{font-size:.95rem}
}

/* ---------- "Built for" audience grid ---------- */
.dl-audience{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.4rem}
.dl-audience__item{
  --aud-accent:#2d5a87;
  background:linear-gradient(180deg,
    color-mix(in srgb,var(--aud-accent) 6%,#fff) 0%,
    #fff 90%);
  border:1px solid color-mix(in srgb,var(--aud-accent) 22%,#e2e8f0);
  border-radius:var(--radius);
  padding:1.6rem;box-shadow:0 2px 8px rgba(10,22,40,.04);
  transition:box-shadow .2s ease,border-color .2s ease;
}
.dl-audience__item:hover{box-shadow:0 8px 22px rgba(10,22,40,.08);border-color:color-mix(in srgb,var(--aud-accent) 40%,#e2e8f0)}
/* v0.36.11 — Subdued tint variation for the 3 audience cards (CNA /
   aspiring CNA / facility) so they read as distinct cards. Not a sequence
   so varied colors are appropriate. */
.dl-audience > .dl-audience__item:nth-child(6n+1){--aud-accent:#2d5a87} /* navy */
.dl-audience > .dl-audience__item:nth-child(6n+2){--aud-accent:#0891b2} /* cyan */
.dl-audience > .dl-audience__item:nth-child(6n+3){--aud-accent:#059669} /* emerald */
.dl-audience > .dl-audience__item:nth-child(6n+4){--aud-accent:#d97706} /* amber */
.dl-audience > .dl-audience__item:nth-child(6n+5){--aud-accent:#7c3aed} /* violet */
.dl-audience > .dl-audience__item:nth-child(6n+6){--aud-accent:#be185d} /* magenta */
.dl-audience__icon{
  width:48px;height:48px;border-radius:12px;
  background:linear-gradient(135deg,var(--aud-accent),color-mix(in srgb,var(--aud-accent) 70%, #0a1628));
  color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.1rem;
  margin-bottom:1rem;
  box-shadow:0 6px 16px rgba(30,58,95,.22);
}
.dl-audience__item h4{font-size:1.05rem;color:var(--c-navy-900);margin:0 0 .4rem;font-weight:700;letter-spacing:-.005em}
.dl-audience__item p{margin:0;color:var(--c-slate-600);font-size:.94rem;line-height:1.55}
.dl-audience__item p a{color:var(--c-blue-400);font-weight:600}
.dl-audience__item p a:hover{color:var(--c-navy-800)}

/* ---------- FAQ disclosure ---------- */
.dl-faq{display:flex;flex-direction:column;gap:.75rem}
.dl-faq__item{
  background:#fff;border:1px solid var(--c-slate-200);border-radius:12px;
  box-shadow:0 2px 8px rgba(10,22,40,.04);
  transition:box-shadow .2s ease,border-color .2s ease;
  overflow:hidden;
}
.dl-faq__item:hover{box-shadow:0 6px 18px rgba(10,22,40,.07);border-color:#c7d2e0}
.dl-faq__item[open]{border-color:#c7d2e0;box-shadow:0 8px 22px rgba(30,58,95,.10);border-left:3px solid var(--c-blue-400)}
.dl-faq__item summary{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:1.05rem 1.3rem;cursor:pointer;list-style:none;
  font-weight:700;color:var(--c-navy-900);font-size:1rem;line-height:1.4;
  user-select:none;
}
.dl-faq__item summary::-webkit-details-marker{display:none}
.dl-faq__item summary::marker{content:''}
.dl-faq__q{flex:1;min-width:0}
.dl-faq__chev{
  width:30px;height:30px;border-radius:50%;
  background:var(--c-slate-100);color:var(--c-slate-600);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:.75rem;
  transition:transform .25s ease,background .15s,color .15s;
}
.dl-faq__item[open] .dl-faq__chev{transform:rotate(180deg);background:var(--c-blue-400);color:#fff}
.dl-faq__a{
  padding:0 1.3rem 1.2rem;color:var(--c-slate-600);font-size:.97rem;line-height:1.65;
}
@media (max-width:520px){
  .dl-faq__item summary{padding:.95rem 1rem;font-size:.95rem}
  .dl-faq__a{padding:0 1rem 1rem;font-size:.93rem}
}

/* ---------- Reviews carousel (right-to-left marquee) ---------- */
.dl-reviews-marquee{
  position:relative;overflow:hidden;
  margin:1.4rem 0 .4rem;
  --review-gap:1rem;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 60px,#000 calc(100% - 60px),transparent 100%);
          mask-image:linear-gradient(90deg,transparent 0,#000 60px,#000 calc(100% - 60px),transparent 100%);
}
.dl-reviews-marquee__track{
  display:flex;gap:var(--review-gap);
  width:max-content;
  animation:dl-marquee 60s linear infinite;
  padding:.5rem 0;
}
.dl-reviews-marquee:hover .dl-reviews-marquee__track{animation-play-state:paused}
@keyframes dl-marquee{
  0%   { transform: translateX(0); }
  100% { transform: translateX(calc(-50% - var(--review-gap) / 2)); }
}
@media (prefers-reduced-motion: reduce){
  .dl-reviews-marquee__track{animation:none}
}

.dl-review-card{
  flex:0 0 320px;
  background:#fff;border:1px solid var(--c-slate-200);border-radius:12px;
  padding:1.1rem 1.2rem;
  box-shadow:0 4px 14px rgba(10,22,40,.05);
  display:flex;flex-direction:column;gap:.6rem;
}
.dl-review-card__head{display:flex;align-items:center;gap:.7rem}
.dl-review-card__avatar{
  width:36px;height:36px;border-radius:50%;
  background:linear-gradient(135deg,#2d5a87,#1e3a5f);
  color:#fff;font-weight:800;font-size:.92rem;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.dl-review-card__meta{min-width:0}
.dl-review-card__name{font-weight:700;color:var(--c-navy-900);font-size:.92rem;letter-spacing:-.005em}
.dl-review-card__when{font-size:.76rem;color:var(--c-slate-500);margin-top:.1rem}
.dl-review-card__stars{display:flex;gap:.15rem;font-size:.82rem}
.dl-review-card__text{
  margin:0;color:var(--c-slate-700);font-size:.92rem;line-height:1.55;
  display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;
}
@media (max-width:520px){
  .dl-review-card{flex-basis:280px;padding:1rem}
}

/* Empty state (shown until real reviews exist) */
.dl-reviews-empty{
  background:linear-gradient(135deg,#f8fafc 0%,#eef2f7 100%);
  border:1px solid var(--c-slate-200);border-radius:14px;
  padding:2.2rem 1.6rem;text-align:center;
  box-shadow:0 4px 14px rgba(10,22,40,.04);
}
.dl-reviews-empty__icon{
  width:56px;height:56px;border-radius:14px;
  background:linear-gradient(135deg,var(--c-blue-400),var(--c-navy-500));
  color:#fff;display:inline-flex;align-items:center;justify-content:center;
  font-size:1.3rem;margin-bottom:1rem;
  box-shadow:0 8px 20px rgba(30,58,95,.25);
}
.dl-reviews-empty h3{font-size:1.2rem;color:var(--c-navy-900);margin:0 0 .4rem;font-weight:700}
.dl-reviews-empty p{color:var(--c-text-muted);font-size:.96rem;line-height:1.6;margin:0 auto 1.2rem;max-width:520px}

/* ---------- "How it works" timeline ---------- */
.dl-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.4rem;counter-reset:dl-step}
.dl-step{position:relative;padding:1.6rem 1.6rem 1.6rem 4.2rem;background:#fff;border:1px solid var(--c-slate-200);border-radius:var(--radius);box-shadow:0 2px 8px rgba(10,22,40,.04);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.dl-step:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:#c7d2e0}
.dl-step::before{
  counter-increment:dl-step;content:counter(dl-step);
  position:absolute;top:1.4rem;left:1.4rem;
  width:2.1rem;height:2.1rem;border-radius:50%;
  background:linear-gradient(135deg,var(--c-blue-400),var(--c-navy-500));
  color:#fff;font-weight:800;font-size:1rem;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 12px rgba(30,58,95,.3);
}
.dl-step h4{font-size:1.05rem;margin:0 0 .35rem;color:var(--c-navy-900);font-weight:700}
.dl-step p{margin:0;color:var(--c-text-muted);font-size:.92rem;line-height:1.55}

/* ---------- Detail content block (RNA program copy etc.) ---------- */
.dl-detail{margin-top:1rem}
.dl-detail h4{font-size:1.05rem;color:var(--c-navy-900);font-weight:700;margin:1.4rem 0 .5rem}
.dl-detail ul{margin:.5rem 0;padding-left:1.1rem}
.dl-detail ul li{margin:.3rem 0;color:var(--c-slate-600);font-size:.95rem;line-height:1.55}
.dl-detail p{margin:.5rem 0;color:var(--c-slate-600);font-size:.95rem;line-height:1.65}

/* ---------- Contact page ---------- */
/* v0.36.15 — Lift the contact section's CONTAINER above the page watermark
   (z-index:1000). The container already has `position:relative;z-index:1`
   from the default rule, which traps any child z-index inside its own
   stacking context. Bumping the container to z-index:1002 escapes that
   trap so the form-wrap and pagehead beneath it paint ABOVE the watermark
   instead of below it. `isolation:isolate` prevents the watermark's
   mix-blend-mode from reaching into this section's contents. */
.dl-contact-elevate{z-index:1002 !important;isolation:isolate}

.dl-contact__form-wrap{
  /* Backdrop-filter blurs whatever paints behind the form. With the
     container now elevated above the watermark, this also softens the
     section-bg gradient peeking through the rounded corners. */
  background:rgba(255,255,255,.96);
  -webkit-backdrop-filter:blur(14px) saturate(1.08);
  backdrop-filter:blur(14px) saturate(1.08);
  border:1px solid #e2e8f0;border-radius:var(--radius-lg);
  box-shadow:0 18px 40px -22px rgba(10,22,40,.22), 0 2px 6px rgba(10,22,40,.04);
  padding:2.2rem 2.2rem 2rem;
  position:relative;overflow:hidden;
}
.dl-contact__form-wrap::before{
  content:'';position:absolute;left:0;right:0;top:0;height:3px;
  background:linear-gradient(90deg,var(--c-navy-500) 0%,var(--c-blue-400) 50%,var(--c-cyan-400) 100%);
  border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg);
}
/* Single-column contact card with a photographic header band (v0.45.50).
   Replaces the v0.45.49 side-by-side layout. Image-forward, fully
   responsive — same proven pattern as .dl-section-illus. */
.dl-contact__cover{
  margin:0 0 1.5rem;border-radius:12px;overflow:hidden;
  box-shadow:0 8px 20px -12px rgba(10,22,40,.30);background:#0f2439;
}
.dl-contact__cover img{
  display:block;width:100%;height:auto;
  aspect-ratio:21 / 9;max-height:210px;object-fit:cover;object-position:center 28%;
}
.dl-contact__intro{text-align:center;margin-bottom:1.6rem}
.dl-contact__intro h2{margin:0 0 .4rem;font-size:1.4rem;color:var(--c-navy-900);letter-spacing:-.01em}
.dl-contact__intro p{margin:0 auto;max-width:440px;color:var(--c-text-muted);font-size:.95rem;line-height:1.6}
.dl-contact__footnote{
  margin-top:1rem;text-align:center;
  color:var(--c-slate-500);font-size:.78rem;line-height:1.55;
}
.dl-contact__footnote i{margin-right:.35rem;color:var(--c-teal-600)}
@media (max-width:520px){
  .dl-contact__form-wrap{padding:1.5rem 1.2rem 1.35rem;border-radius:12px;box-shadow:0 10px 28px -18px rgba(10,22,40,.18)}
  .dl-contact__cover{margin-bottom:1.2rem;border-radius:10px}
  .dl-contact__cover img{aspect-ratio:16 / 9;max-height:165px}
  .dl-contact__intro h2{font-size:1.2rem}
}

/* ---------- Certificate verification (/verify.php, v0.45.57) ---------- */
.dl-verify-card{
  background:#fff;border:1px solid #e2e8f0;border-radius:var(--radius-lg);
  padding:2rem 1.8rem;text-align:center;margin-bottom:1.4rem;
  box-shadow:0 14px 34px -22px rgba(10,22,40,.22);
}
.dl-verify-card__icon{font-size:2.6rem;line-height:1;margin-bottom:.6rem}
.dl-verify-card--ok{border-color:#bbf7d0;background:linear-gradient(180deg,#f0fdf4,#fff)}
.dl-verify-card--ok .dl-verify-card__icon{color:#15803d}
.dl-verify-card--bad{border-color:#fecaca;background:linear-gradient(180deg,#fef2f2,#fff)}
.dl-verify-card--bad .dl-verify-card__icon{color:#b91c1c}
.dl-verify-card--warn{border-color:#fde68a;background:linear-gradient(180deg,#fffbeb,#fff)}
.dl-verify-card--warn i{color:#b45309;font-size:1.6rem}
.dl-verify-card h2{margin:.2rem 0 .35rem;font-size:1.3rem;color:var(--c-navy-900)}
.dl-verify-card p{margin:0 auto;max-width:46ch;color:var(--c-text-muted);font-size:.95rem;line-height:1.6}
.dl-verify-card__sub{margin-bottom:1.2rem!important}
.dl-verify-meta{
  display:grid;gap:.55rem;margin:0 auto 1rem;max-width:380px;
  text-align:left;border-top:1px solid #e2e8f0;padding-top:1rem;
}
.dl-verify-meta>div{display:flex;justify-content:space-between;gap:1rem;align-items:baseline}
.dl-verify-meta dt{margin:0;font-size:.72rem;font-weight:700;letter-spacing:.07em;
  text-transform:uppercase;color:var(--c-slate-500)}
.dl-verify-meta dd{margin:0;font-size:.95rem;font-weight:600;color:var(--c-navy-900);text-align:right}
.dl-verify-mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.02em}
.dl-verify-note{margin-top:.4rem!important;font-size:.82rem!important;color:var(--c-slate-500)!important}
.dl-verify-note i{color:var(--c-slate-400);margin-right:.3rem}
.dl-verify-form{
  background:#fff;border:1px solid #e2e8f0;border-radius:var(--radius-lg);
  padding:1.6rem;box-shadow:0 10px 28px -20px rgba(10,22,40,.18);
}
.dl-verify-form .dl-field{margin-bottom:1rem}
.dl-verify-form input{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase}
.dl-verify-help{
  margin:.9rem 0 0;text-align:center;color:var(--c-slate-500);
  font-size:.78rem;line-height:1.55;
}
.dl-verify-help i{margin-right:.3rem;color:var(--c-teal-600)}
@media (max-width:520px){
  .dl-verify-card{padding:1.6rem 1.2rem}
  .dl-verify-meta>div{flex-direction:column;gap:.1rem}
  .dl-verify-meta dd{text-align:left}
}

/* ---------- Back link (auth pages, 404) ---------- */
.dl-backlink{
  display:inline-flex;align-items:center;gap:.45rem;
  font-size:.88rem;color:var(--c-slate-500);font-weight:500;
  padding:.4rem .7rem;border-radius:6px;margin-bottom:1rem;
}
.dl-backlink:hover{color:var(--c-navy-700);background:var(--c-slate-50)}

/* ---------- Trust ribbon (secure-by line) ---------- */
.dl-trust{
  display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.3rem;
  padding:.85rem 1rem;background:#fff;border:1px solid var(--c-slate-200);border-radius:var(--radius);
  color:var(--c-slate-600);font-size:.86rem;
  margin:1rem 0;
}
.dl-trust__item{display:inline-flex;align-items:center;gap:.45rem}
.dl-trust__item i{color:var(--c-teal-600);font-size:.95rem}
.dl-trust__item strong{color:var(--c-navy-900);font-weight:700}

/* ---------- Checkout layout (enroll.php + pay.php) ---------- */
.dl-checkout-grid{
  display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);
  gap:1.2rem;align-items:start;
}
.dl-checkout-grid__main{min-width:0}
.dl-checkout-grid__side{min-width:0;position:sticky;top:88px}
@media (max-width:880px){
  .dl-checkout-grid{grid-template-columns:1fr}
  .dl-checkout-grid__side{position:static;order:-1}
}

/* ---------- Register page value-prop strip ---------- */
.dl-auth-values{
  list-style:none;margin:0 0 1.6rem;padding:.85rem 1rem;
  background:linear-gradient(135deg,#f8fafc 0%,#eef2f7 100%);
  border:1px solid var(--c-slate-200);border-radius:10px;
  display:flex;flex-direction:column;gap:.5rem;
}
.dl-auth-values li{display:flex;align-items:flex-start;gap:.6rem;font-size:.88rem;color:var(--c-slate-700);line-height:1.45}
.dl-auth-values li i{color:var(--c-teal-600);font-size:.82rem;margin-top:.28rem;flex-shrink:0;width:14px}

/* ---------- Pay-success hero ---------- */
.dl-success-hero{
  background:linear-gradient(160deg,#0a1628 0%,#0f2439 25%,#162f4d 50%,#1a3a5c 75%,#132d47 100%);
  color:#fff;padding:4.5rem 0 5rem;position:relative;overflow:hidden;
}
.dl-success-hero::before{
  content:'';position:absolute;inset:0;
  background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.035) 1px,transparent 0);
  background-size:40px 40px;pointer-events:none;
}
.dl-success-hero__inner{
  position:relative;z-index:1;max-width:760px;margin:0 auto;text-align:center;padding:0 1rem;
}
.dl-success-hero__check{
  width:92px;height:92px;border-radius:50%;
  background:linear-gradient(135deg,#047857,#059669);
  display:inline-flex;align-items:center;justify-content:center;
  color:#fff;font-size:2.4rem;margin-bottom:1.4rem;
  box-shadow:0 14px 36px rgba(4,120,87,.45), 0 0 0 8px rgba(5,150,105,.12);
  animation:dl-success-pop .55s cubic-bezier(.34,1.56,.64,1) .1s both;
}
@keyframes dl-success-pop{
  0%{transform:scale(.5);opacity:0}
  100%{transform:scale(1);opacity:1}
}
.dl-success-hero__eyebrow{
  display:inline-block;
  font-size:.74rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  color:var(--c-cyan-300);margin-bottom:.85rem;
  padding:.3rem .75rem;border:1px solid rgba(56,189,248,.3);border-radius:999px;
  background:rgba(56,189,248,.08);
}
.dl-success-hero h1{
  color:#fff;font-size:clamp(1.6rem,3.2vw,2.4rem);font-weight:800;
  letter-spacing:-.02em;line-height:1.2;margin:0 0 .85rem;
}
.dl-success-hero p{
  color:rgba(255,255,255,.85);font-size:1.05rem;line-height:1.65;max-width:560px;margin:0 auto 1.8rem;
}
.dl-success-hero__signin-note{font-size:.93rem;color:rgba(255,255,255,.72);margin-bottom:1.3rem}
.dl-success-hero__cta{display:flex;gap:.7rem;justify-content:center;flex-wrap:wrap}
@media (max-width:520px){
  .dl-success-hero{padding:3rem 0 3.5rem}
  .dl-success-hero__check{width:76px;height:76px;font-size:1.95rem}
  .dl-success-hero__cta{flex-direction:column;align-items:stretch}
  .dl-success-hero__cta .dl-btn{width:100%}
}

/* ---------- Announcement banner (admin-controlled) ---------- */
.dl-announcement{
  font-size:.9rem;font-weight:500;color:#fff;
  border-bottom:1px solid rgba(0,0,0,.06);
}
.dl-announcement .container{
  display:flex;align-items:center;justify-content:center;gap:.65rem;
  padding-top:.55rem;padding-bottom:.55rem;text-align:center;
}
.dl-announcement i{font-size:.95rem;flex-shrink:0}
.dl-announcement--info   {background:linear-gradient(135deg,#1e3a5f,#2d5a87)}
.dl-announcement--success{background:linear-gradient(135deg,#047857,#059669)}
.dl-announcement--warn   {background:linear-gradient(135deg,#7a5b00,#a16207)}

/* ---------- Maintenance stub page ---------- */
.dl-maint{
  flex:1;display:flex;align-items:center;justify-content:center;
  padding:4rem 1rem;background:linear-gradient(180deg,#f8fafc,#fff);
  text-align:center;
}
.dl-maint .container{max-width:520px}
.dl-maint__icon{
  width:72px;height:72px;border-radius:18px;
  background:linear-gradient(135deg,var(--c-blue-400),var(--c-navy-500));
  color:#fff;display:inline-flex;align-items:center;justify-content:center;
  font-size:1.8rem;margin-bottom:1rem;
  box-shadow:0 12px 28px rgba(30,58,95,.28);
}
.dl-maint h1{font-size:1.7rem;color:var(--c-navy-900);margin:0 0 .4rem}
.dl-maint p{color:var(--c-text-muted);margin:0;font-size:1rem}

/* ---------- OTP boxes ---------- */
.dl-otp{display:flex;gap:.55rem;justify-content:center;flex-wrap:wrap;margin:.3rem 0 0}
.dl-otp__box{
  width:52px;height:60px;
  font-family:Menlo,Consolas,monospace;font-size:1.7rem;font-weight:800;
  text-align:center;color:var(--c-navy-900);
  border:1px solid var(--c-slate-200);border-radius:10px;background:#fff;
  transition:border-color .15s,box-shadow .15s;
}
.dl-otp__box:focus{outline:none;border-color:var(--c-blue-300);box-shadow:0 0 0 3px rgba(74,126,176,.18)}
@media (max-width:520px){
  .dl-otp{gap:.4rem}
  .dl-otp__box{width:44px;height:52px;font-size:1.4rem}
}

/* ---------- Profile header (account.php + admin/user.php) ---------- */
.dl-profile-header{
  background:linear-gradient(135deg,#0a1628 0%,#162f4d 60%,#1a3a5c 100%);
  color:#fff;border-radius:14px;
  padding:1.6rem 1.8rem;
  display:flex;align-items:center;gap:1.4rem;
  box-shadow:0 12px 28px -10px rgba(10,22,40,.25);
  position:relative;overflow:hidden;
}
.dl-profile-header::before{
  content:'';position:absolute;inset:0;
  background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.03) 1px,transparent 0);
  background-size:40px 40px;pointer-events:none;
}
.dl-profile-header__avatar{
  width:84px;height:84px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(135deg,#2d5a87 0%,#1e3a5f 100%);
  color:#fff;font-weight:800;font-size:2rem;letter-spacing:-.02em;
  display:flex;align-items:center;justify-content:center;
  border:3px solid rgba(255,255,255,.12);
  box-shadow:0 8px 20px rgba(0,0,0,.25);
  position:relative;z-index:1;
}
.dl-profile-header__text{min-width:0;position:relative;z-index:1}
.dl-profile-header__text h2{color:#fff;font-size:1.55rem;font-weight:800;margin:0 0 .25rem;letter-spacing:-.015em}
.dl-profile-header__text p{color:rgba(255,255,255,.78);font-size:.95rem;margin:0 0 .85rem;word-break:break-all}
.dl-profile-header__pills{display:flex;flex-wrap:wrap;gap:.4rem}
.dl-profile-header__pills .dl-pill{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.18);color:#fff}
.dl-profile-header__pills .dl-pill i{color:rgba(255,255,255,.85)}
.dl-profile-header__pills .dl-pill--teal {background:rgba(5,150,105,.22);border-color:rgba(5,150,105,.4);color:#a7f3d0}
.dl-profile-header__pills .dl-pill--amber{background:rgba(217,119,6,.22);border-color:rgba(217,119,6,.4);color:#fde68a}
.dl-profile-header__pills .dl-pill--blue {background:rgba(74,126,176,.22);border-color:rgba(74,126,176,.4);color:#cfe1ff}
.dl-profile-header__pills .dl-pill--slate{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.18);color:#e2e8f0}
@media (max-width:640px){
  .dl-profile-header{flex-direction:column;text-align:center;padding:1.4rem 1.2rem}
  .dl-profile-header__avatar{width:72px;height:72px;font-size:1.7rem}
  .dl-profile-header__pills{justify-content:center}
}

/* ---------- Legal pages — TOC + content grid ---------- */
.dl-legal-grid{display:grid;grid-template-columns:240px 1fr;gap:2.2rem;align-items:start}
.dl-legal-toc{
  position:sticky;top:88px;
  background:#fff;border:1px solid var(--c-slate-200);border-radius:12px;
  padding:1.1rem 1.2rem;
  box-shadow:0 2px 8px rgba(10,22,40,.04);
}
.dl-legal-toc__head{
  font-size:.74rem;font-weight:700;color:var(--c-slate-500);
  text-transform:uppercase;letter-spacing:.12em;margin-bottom:.75rem;
  display:flex;align-items:center;gap:.45rem;
}
.dl-legal-toc__head i{color:var(--c-blue-400);font-size:.78rem}
.dl-legal-toc ol{list-style:none;margin:0;padding:0;counter-reset:dl-toc}
.dl-legal-toc li{counter-increment:dl-toc}
.dl-legal-toc a{
  display:block;padding:.4rem .55rem;border-radius:6px;
  color:var(--c-slate-700);font-size:.88rem;line-height:1.4;font-weight:500;
  transition:background .12s ease,color .12s ease;
}
.dl-legal-toc a::before{content:counter(dl-toc) ".";color:var(--c-slate-400);font-weight:600;margin-right:.4rem;font-variant-numeric:tabular-nums}
.dl-legal-toc a:hover{background:var(--c-slate-50);color:var(--c-navy-900)}
.dl-legal-body{min-width:0}
@media (max-width:880px){
  .dl-legal-grid{grid-template-columns:1fr;gap:1.2rem}
  .dl-legal-toc{position:static}
}

/* ---------- Back-to-top floating button ---------- */
.dl-totop{
  position:fixed;right:1.2rem;bottom:1.2rem;z-index:80;
  width:44px;height:44px;border-radius:50%;
  background:linear-gradient(135deg,#1e3a5f,#2d5a87);
  color:#fff;border:1px solid rgba(30,58,95,.4);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;font-size:1rem;
  box-shadow:0 8px 20px rgba(10,22,40,.28);
  opacity:0;visibility:hidden;transform:translateY(8px);
  transition:opacity .2s ease, transform .2s ease, visibility .2s, background .2s;
}
.dl-totop.is-visible{opacity:1;visibility:visible;transform:none}
.dl-totop:hover{background:linear-gradient(135deg,#162d4d,#234876)}

/* ---------- 404 ---------- */
.dl-404{flex:1;min-height:60vh;display:flex;align-items:center;justify-content:center;padding:3rem 1rem;text-align:center;background:linear-gradient(180deg,var(--c-slate-50),#fff)}
.dl-404__code{font-size:clamp(5rem,12vw,9rem);font-weight:900;line-height:1;letter-spacing:-.05em;background:linear-gradient(135deg,var(--c-navy-500),var(--c-cyan-400));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;margin-bottom:.5rem}
.dl-404 h1{font-size:1.7rem;color:var(--c-navy-900);margin:0 0 .5rem}
.dl-404 p{color:var(--c-text-muted);max-width:440px;margin:0 auto 1.5rem}

@media (prefers-reduced-motion: reduce){
  .dl-reveal,.dl-orb,.dl-float-icon,.dl-hero__accent,.dl-card{animation:none !important;transition:none !important}
  .dl-reveal{opacity:1 !important;transform:none !important}
}

/* ---------- Responsive table wrapper ---------- */
.dl-table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.dl-table-wrap::-webkit-scrollbar{height:8px;width:8px}
.dl-table-wrap::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:8px}
.dl-table-wrap::-webkit-scrollbar-thumb:hover{background:#94a3b8}
/* v0.36.5 — In an admin panel the table-wrap caps at ~560px tall and only
   scrolls when content overflows. No artificial padding-below-the-rows
   either: the panel ends right after the last row. min-height is gone. */
/* Data tables are paginated (dl_render_pager), so the old fixed 560px
   inner-scroll box was redundant and produced a nested scrollbar that
   looked broken on short tables (e.g. programs) and on tablets. Let the
   table flow with the page instead. */
.dl-panel__body--flush > .dl-table-wrap{max-height:none;overflow-y:visible}
/* When the wrap actually scrolls, soften the inner scrollbar. */
.dl-panel__body--flush > .dl-table-wrap::-webkit-scrollbar{width:8px;height:8px}
.dl-panel__body--flush > .dl-table-wrap::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:8px}
.dl-panel__body--flush > .dl-table-wrap::-webkit-scrollbar-thumb:hover{background:#94a3b8}

/* v0.36.5 — Diagnostics-style stat cards inside the admin shell need real
   visual differentiation. Cycle the .dl-feature accent through a six-color
   palette via :nth-child so even an all-identical markup list looks varied.
   Also compact the card and the icon tile. */
.dl-admin-shell .dl-features{
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:.75rem;
}
.dl-admin-shell .dl-feature{
  --feat-accent:#2d5a87;
  padding:.9rem 1rem .85rem;
  border:1px solid color-mix(in srgb,var(--feat-accent) 38%,#e2e8f0);
  border-radius:12px;
  background:linear-gradient(180deg,
    color-mix(in srgb,var(--feat-accent) 22%,#fff) 0%,
    color-mix(in srgb,var(--feat-accent)  6%,#fff) 100%);
  box-shadow:0 1px 3px rgba(10,22,40,.05),0 4px 10px rgba(10,22,40,.04);
  position:relative;
}
.dl-admin-shell .dl-feature::before{
  content:'';position:absolute;left:0;right:0;top:0;height:3px;background:var(--feat-accent);
}
.dl-admin-shell .dl-feature__icon{
  width:32px;height:32px;border-radius:8px;font-size:.9rem;margin-bottom:.45rem;
  background:linear-gradient(135deg,var(--feat-accent),color-mix(in srgb,var(--feat-accent) 70%,#000));
}
.dl-admin-shell .dl-feature h4{font-size:1.4rem;font-weight:800;line-height:1;margin:.1rem 0 .15rem;letter-spacing:-.02em}
.dl-admin-shell .dl-feature p{font-size:.72rem;color:var(--c-slate-500);text-transform:uppercase;letter-spacing:.08em;font-weight:700;line-height:1.2;margin:0}

/* Six-step accent cycle — repeats for any number of cards. */
.dl-admin-shell .dl-features > .dl-feature:nth-child(6n+1){--feat-accent:#2d5a87} /* navy */
.dl-admin-shell .dl-features > .dl-feature:nth-child(6n+2){--feat-accent:#059669} /* emerald */
.dl-admin-shell .dl-features > .dl-feature:nth-child(6n+3){--feat-accent:#0891b2} /* cyan */
.dl-admin-shell .dl-features > .dl-feature:nth-child(6n+4){--feat-accent:#d97706} /* amber */
.dl-admin-shell .dl-features > .dl-feature:nth-child(6n+5){--feat-accent:#7c3aed} /* violet */
.dl-admin-shell .dl-features > .dl-feature:nth-child(6n+6){--feat-accent:#be185d} /* magenta */
.dl-table{min-width:560px}

/* ---------- Responsive sweep ---------- */
@media (max-width:991px){
  .dl-hero{padding:5rem 0 6.5rem;min-height:auto}
  .dl-hero__stats{gap:1.6rem;padding-top:1.6rem}
  .dl-pagehead{padding:2.4rem 0 3rem}
  .container{padding:0 20px}
}

/* v0.41.7 — Nav→hamburger swap moved to a dedicated 1024px breakpoint so
   iPad (portrait 820, landscape 1024) gets the drawer instead of trying to
   cram brand + 6 nav links + userchip into one row. Phone-specific layout
   shifts (hero, grids, etc.) stay at 768px below. */
@media (max-width:1024px){
  .dl-nav{display:none}
  .dl-hamburger{display:flex}
}

@media (max-width:768px){
  /* Hero */
  .dl-hero{padding:4.5rem 0 5.5rem}
  .dl-hero::after{width:300px;height:300px;opacity:.04}
  .dl-hero__cta{flex-direction:column;align-items:stretch}
  .dl-hero__cta .dl-btn{justify-content:center}
  .dl-hero__trust{gap:.85rem;justify-content:flex-start;text-align:left}
  .dl-hero__stats{gap:1rem;justify-content:space-between}
  .dl-hero__stat{min-width:0;flex:1}
  .dl-hero__stat .v{font-size:1.5rem}
  /* Section + page header */
  .dl-section{padding:3.5rem 0}
  .dl-section__title{margin-bottom:2rem}
  .dl-pagehead{padding:1.4rem 0 1.6rem}
  .dl-pagehead h1{font-size:1.3rem}
  /* CTA */
  .dl-cta{padding:3.5rem 0}
  /* Cards & feature tiles */
  .dl-grid{grid-template-columns:1fr;gap:1rem}
  .dl-features{grid-template-columns:1fr 1fr;gap:.85rem}
  .dl-card__head{padding:1.5rem 1.5rem 1.2rem}
  .dl-card__body{padding:1.3rem 1.5rem 1.5rem}
  .dl-feature{padding:1.3rem}
  /* Steps */
  .dl-steps{grid-template-columns:1fr;gap:.85rem}
  .dl-step{padding:1.3rem 1.3rem 1.3rem 3.6rem}
  .dl-step::before{top:1.2rem;left:1.1rem;width:1.9rem;height:1.9rem;font-size:.9rem}
  /* Auth */
  .dl-auth-card{padding:2rem 1.5rem}
  /* Watermarks softer on small */
  .dl-section--watermark::after{width:240px;height:240px;opacity:.04}
  /* Footer */
  .dl-footer__row{flex-direction:column;align-items:flex-start;gap:.85rem}
  .dl-footer__links{gap:1rem}
}

@media (max-width:480px){
  body{font-size:.97rem}
  .container{padding:0 14px}
  /* Brand text hidden on very small screens to save space */
  .dl-brand span{display:none}
  .dl-topbar__inner{height:60px}
  /* Hero */
  .dl-hero{padding:3.6rem 0 4.4rem}
  .dl-hero h1{font-size:1.7rem;line-height:1.15}
  .dl-hero p.lead{font-size:.95rem}
  .dl-hero__badge{font-size:.7rem;padding:.32rem .75rem .32rem .6rem}
  .dl-hero__cta .dl-btn{width:100%}
  .dl-hero__trust{font-size:.78rem;gap:.55rem 1rem;margin-top:1.8rem}
  .dl-hero__stats{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;padding-top:1.4rem;margin-top:1.6rem;text-align:center}
  .dl-hero__stat{min-width:0}
  .dl-hero__stat .v{font-size:1.3rem}
  .dl-hero__stat .l{font-size:.64rem}
  /* Features + steps collapse to 1 col */
  .dl-features,.dl-steps{grid-template-columns:1fr}
  /* Buttons */
  .dl-btn{font-size:.92rem;padding:0 1.1rem}
  /* Section title */
  .dl-section__title h2{font-size:1.35rem}
  .dl-section{padding:2.6rem 0}
  .dl-pagehead{padding:1.2rem 0 1.4rem}
  .dl-pagehead h1{font-size:1.2rem;line-height:1.2}
  .dl-pagehead p{font-size:.88rem}
  /* Breadcrumbs */
  .dl-crumbs{font-size:.78rem;padding:.6rem 0}
  /* 404 */
  .dl-404__code{font-size:5rem}
  /* Modal */
  .dl-modal__head{padding:.85rem 1rem;gap:.7rem}
  .dl-modal__icon{width:34px;height:34px;font-size:.95rem}
  .dl-modal__title{font-size:1rem}
  .dl-modal__body{padding:1.1rem 1.1rem;font-size:.94rem}
  .dl-modal__foot{padding:.85rem 1.1rem 1rem}
  /* Back-to-top — smaller on phones */
  .dl-totop{width:40px;height:40px;right:.85rem;bottom:.85rem}
  /* Form grid */
  .dl-form-grid{gap:.6rem}
}

/* Smallest devices (iPhone SE @320px) */
@media (max-width:360px){
  .container{padding:0 12px}
  .dl-hero h1{font-size:1.5rem}
  .dl-hero p.lead{font-size:.9rem}
  .dl-hero__stats{grid-template-columns:repeat(2,1fr);gap:.7rem}
  .dl-hero__stat .v{font-size:1.15rem}
  .dl-hero__trust span{font-size:.74rem}
  .dl-pagehead h1{font-size:1.1rem}
  .dl-program-hero__icon{width:48px;height:48px;font-size:1.2rem;border-radius:10px}
  .dl-program-hero h2{font-size:1.2rem}
  .dl-program-block{padding:1rem 1.1rem}
  .dl-modal__foot .dl-btn{width:100%;min-width:0}
}


/* ===== Register page (single column, fully responsive) ============= */
.dl-register-shell{
  flex:1;
  display:flex;align-items:flex-start;justify-content:center;
  padding:clamp(1.5rem,4vw,3rem) clamp(.9rem,3vw,1.5rem);
  min-height:calc(100vh - 68px);
  background:
    radial-gradient(900px 600px at 80% -10%, rgba(91,155,184,.10), transparent 60%),
    radial-gradient(700px 500px at -10% 110%, rgba(45,90,135,.10), transparent 60%),
    linear-gradient(180deg,#f8fafc 0%, #eef2f7 100%);
}
.dl-register-form{
  width:100%;max-width:540px;
  background:#fff;border:1px solid var(--c-slate-200);border-radius:18px;
  box-shadow:0 14px 36px rgba(10,22,40,.08);
  padding:clamp(1.4rem,3vw,2.4rem) clamp(1.2rem,3vw,2.2rem);
}
.dl-register-form__inner{display:block}
.dl-register-form__head{text-align:center;margin-bottom:1.2rem}
.dl-register-form__mark{
  display:inline-flex;align-items:center;gap:.5rem;
  color:var(--c-navy-900);font-weight:800;font-size:1rem;
  text-decoration:none;margin-bottom:1rem;
}
.dl-register-form__mark img{height:28px;width:auto}
.dl-register-form__head h1{
  margin:0 0 .3rem;font-size:clamp(1.35rem,2.4vw,1.7rem);font-weight:800;
  color:var(--c-navy-900);letter-spacing:-.01em;
}
.dl-register-form__head .sub{margin:0;color:var(--c-text-muted);font-size:.92rem}
.dl-register-form__perks{
  list-style:none;margin:0 0 1.4rem;padding:.7rem .8rem;
  background:linear-gradient(135deg,#f1f5f9 0%,#e2e8f0 100%);
  border:1px solid #e2e8f0;border-radius:12px;
  display:flex;flex-wrap:wrap;gap:.4rem .9rem;justify-content:center;
}
.dl-register-form__perks li{
  display:inline-flex;align-items:center;gap:.4rem;
  font-size:.78rem;font-weight:600;color:var(--c-navy-900);
}
.dl-register-form__perks li i{color:#2d5a87;font-size:.85rem}
.dl-register-form__group{border:0;padding:0;margin:0 0 1.1rem;min-width:0}
.dl-register-form__group legend{
  padding:0;font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--c-slate-500);margin-bottom:.55rem;
}
.dl-register-form__consents{display:flex;flex-direction:column;gap:.5rem;margin:.2rem 0 1.1rem}
.dl-register-form__consent{
  display:flex;align-items:flex-start;gap:.6rem;
  font-size:.86rem;color:var(--c-slate-700);line-height:1.5;
  background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;
  padding:.6rem .8rem;cursor:pointer;
  transition:border-color .15s ease,background .15s ease;
}
.dl-register-form__consent:hover{border-color:#cbd5e1;background:#f1f5f9}
.dl-register-form__consent input[type=checkbox]{margin-top:.18rem;flex-shrink:0}
.dl-register-form__consent em{color:var(--c-slate-500);font-style:normal;font-weight:500}
.dl-register-closed__icon{
  display:flex;align-items:center;justify-content:center;
  width:60px;height:60px;border-radius:50%;background:#f1f5f9;color:#64748b;
  font-size:1.4rem;margin:.3rem auto .8rem;
}

@media (max-width:420px){
  .dl-register-form{border-radius:12px;padding:1.3rem 1.1rem}
  .dl-register-form__perks{padding:.55rem .55rem}
  .dl-register-form__perks li{font-size:.74rem}
}

/* ===== Lesson figures + click-to-fullscreen lightbox (v0.41.8) ======
   Renders an `<figure class="lesson-figure" data-fig="…">` block inside
   lesson body_html. If the underlying <img src=…> 404s (we haven't
   generated that AI image yet), JS adds `.is-pending` to the figure
   and the placeholder treatment shows instead of the broken-image icon.
   The caption is always visible.

   Click the figure → fullscreen lightbox with caption + keyboard nav. */

.lesson-figure{
  margin:1.75rem 0;
  break-inside:avoid;
}
.lesson-figure__open{
  position:relative;display:block;
  width:100%;margin:0;padding:0;
  background:transparent;border:0;cursor:zoom-in;
  overflow:hidden;border-radius:12px;
  box-shadow:0 6px 20px rgba(15,23,42,.10);
  transition:transform .25s ease,box-shadow .25s ease;
}
.lesson-figure__open:hover{
  transform:translateY(-2px);
  box-shadow:0 12px 30px rgba(15,23,42,.16);
}
.lesson-figure__open:focus-visible{
  outline:2px solid rgba(56,189,248,.55);outline-offset:3px;
}
.lesson-figure img{
  display:block;width:100%;height:auto;
  border-radius:12px;background:#f1f5f9;
  font-size:0; /* hide alt text if the img tag itself shows for a moment */
}
.lesson-figure__zoom{
  position:absolute;top:10px;right:10px;
  width:36px;height:36px;border-radius:999px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(15,23,42,.75);color:#fff;font-size:.85rem;
  opacity:0;transition:opacity .2s ease;
  pointer-events:none;
  backdrop-filter:blur(4px);
}
.lesson-figure__open:hover .lesson-figure__zoom,
.lesson-figure__open:focus-visible .lesson-figure__zoom{opacity:1}

.lesson-figure__placeholder{display:none}
.lesson-figure.is-pending img{display:none}
.lesson-figure.is-pending .lesson-figure__open{
  cursor:default;pointer-events:none;
  box-shadow:none;
}
.lesson-figure.is-pending .lesson-figure__open:hover{
  transform:none;box-shadow:none;
}
.lesson-figure.is-pending .lesson-figure__placeholder{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:.6rem;
  aspect-ratio:16/9;
  background:repeating-linear-gradient(45deg,#f8fafc 0 14px,#f1f5f9 14px 28px);
  color:#64748b;border:1px dashed #cbd5e1;border-radius:12px;
  padding:1.2rem;text-align:center;
}
.lesson-figure__placeholder i{font-size:1.6rem;opacity:.65}
.lesson-figure__placeholder-title{font-size:.92rem;font-weight:700;color:#475569}
.lesson-figure__placeholder-alt{
  font-size:.78rem;line-height:1.45;color:#64748b;
  max-width:60ch;font-weight:500;
}
.lesson-figure.is-pending .lesson-figure__zoom{display:none}

.lesson-figure figcaption{
  margin-top:.7rem;
  font-size:.88rem;line-height:1.55;color:var(--c-slate-600);
  text-align:left;
}
.lesson-figure__num{
  font-weight:700;color:var(--c-navy-900);margin-right:.3rem;
  letter-spacing:-.005em;
}

/* Two-up layout when two consecutive .lesson-figure elements are wrapped
   in a .lesson-figure-row. Stacks on mobile. */
.lesson-figure-row{
  display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;
  margin:1.75rem 0;
}
.lesson-figure-row .lesson-figure{margin:0}
@media (max-width:760px){
  .lesson-figure-row{grid-template-columns:1fr;gap:1.25rem}
}

/* ── End-of-lesson glossary (v0.45.71) ───────────────────────────────
   Every new clinical term is bolded + defined inline at first use; the
   lesson then closes with this recap table of those terms. */
.lesson-glossary__title{
  margin:2.6rem 0 0;padding:.9rem 1.15rem;
  background:var(--c-slate-150);
  border:1px solid var(--c-slate-200);border-bottom:none;
  border-radius:12px 12px 0 0;
  font-size:1rem;font-weight:700;color:var(--c-navy-900);
  display:flex;align-items:center;gap:.55rem;
}
.lesson-glossary__title::before{
  content:"\f02d";font-family:"Font Awesome 6 Free";font-weight:900;
  color:var(--c-blue-500);font-size:.95rem;
}
.lesson-glossary{
  width:100%;border-collapse:collapse;margin:0 0 1.6rem;
  font-size:.93rem;background:var(--c-slate-50);
  border:1px solid var(--c-slate-200);border-top:none;
  border-radius:0 0 12px 12px;overflow:hidden;
}
.lesson-glossary thead th{
  background:var(--c-slate-200);color:var(--c-slate-600);
  font-size:.74rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  text-align:left;padding:.6rem 1.15rem;border-bottom:1px solid var(--c-slate-300);
}
.lesson-glossary tbody td{
  padding:.62rem 1.15rem;border-bottom:1px solid var(--c-slate-200);
  vertical-align:top;color:var(--c-slate-700);line-height:1.55;
}
.lesson-glossary tbody tr:last-child td{border-bottom:none}
.lesson-glossary tbody tr:nth-child(even){background:#fff}
.lesson-glossary tbody td:first-child{
  font-weight:700;color:var(--c-navy-900);white-space:nowrap;
  width:1%;padding-right:1.6rem;
}
@media (max-width:560px){
  .lesson-glossary__title{padding:.8rem .95rem;font-size:.95rem}
  .lesson-glossary,.lesson-glossary thead th,.lesson-glossary tbody td{font-size:.86rem}
  .lesson-glossary thead th,.lesson-glossary tbody td{padding-left:.95rem;padding-right:.95rem}
  .lesson-glossary tbody td:first-child{white-space:normal}
}

/* ── Lightbox overlay ─────────────────────────────────────────────── */
.lesson-lightbox{
  position:fixed;inset:0;
  background:rgba(2,6,23,.94);
  display:none;
  z-index:1200;
  align-items:center;justify-content:center;
  padding:2rem clamp(1rem,6vw,5rem);
  opacity:0;transition:opacity .25s ease;
}
.lesson-lightbox.is-open{display:flex;opacity:1}
.lesson-lightbox__stage{
  max-width:1400px;max-height:100%;
  display:flex;flex-direction:column;align-items:center;gap:1rem;
  width:100%;
}
.lesson-lightbox__img{
  max-width:100%;max-height:72vh;height:auto;
  border-radius:8px;box-shadow:0 24px 60px rgba(0,0,0,.5);
  background:#0f172a;display:block;
}
.lesson-lightbox__cap{
  max-width:80ch;
  color:rgba(255,255,255,.92);
  font-size:.95rem;line-height:1.55;
  text-align:center;
  padding:0 1rem;
}
.lesson-lightbox__cap .lesson-figure__num{color:rgba(255,255,255,.7)}
.lesson-lightbox__counter{
  color:rgba(255,255,255,.55);
  font-size:.78rem;font-weight:600;letter-spacing:.04em;
  text-transform:uppercase;
}
.lesson-lightbox__close,
.lesson-lightbox__nav{
  position:absolute;
  width:48px;height:48px;border-radius:999px;
  background:rgba(255,255,255,.10);
  color:#fff;border:1px solid rgba(255,255,255,.18);
  font-size:1rem;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:background .15s ease,border-color .15s ease,transform .15s ease;
}
.lesson-lightbox__close:hover,
.lesson-lightbox__nav:hover{
  background:rgba(255,255,255,.20);
  border-color:rgba(255,255,255,.35);
}
.lesson-lightbox__close:focus-visible,
.lesson-lightbox__nav:focus-visible{
  outline:2px solid rgba(56,189,248,.55);outline-offset:2px;
}
.lesson-lightbox__close{top:1rem;right:1rem}
.lesson-lightbox__nav--prev{left:1rem;top:50%;transform:translateY(-50%)}
.lesson-lightbox__nav--next{right:1rem;top:50%;transform:translateY(-50%)}
.lesson-lightbox__nav--prev:hover{transform:translateY(-50%) scale(1.04)}
.lesson-lightbox__nav--next:hover{transform:translateY(-50%) scale(1.04)}
.lesson-lightbox__nav[hidden]{display:none}

@media (max-width:640px){
  .lesson-lightbox{padding:1rem}
  .lesson-lightbox__nav{width:40px;height:40px}
  .lesson-lightbox__nav--prev{left:.5rem}
  .lesson-lightbox__nav--next{right:.5rem}
  .lesson-lightbox__close{top:.5rem;right:.5rem;width:40px;height:40px}
  .lesson-lightbox__img{max-height:60vh}
  .lesson-lightbox__cap{font-size:.88rem}
}

/* ── Case-study + analogy callouts (v0.41.8) ──────────────────────────
   These are visual treatments for inline pedagogical blocks inside lesson
   body_html. Each block is a <div class="lesson-callout lesson-callout--TYPE">
   with an optional title and required body. */
.lesson-callout{
  margin:1.5rem 0;
  padding:1.1rem 1.25rem 1.1rem 1.4rem;
  border-radius:12px;
  border-left:4px solid;
  background:#f8fafc;
  break-inside:avoid;
}
.lesson-callout__title{
  display:flex;align-items:center;gap:.55rem;
  font-size:.78rem;font-weight:800;
  letter-spacing:.08em;text-transform:uppercase;
  margin:0 0 .55rem;
}
.lesson-callout__title i{font-size:.92rem}
.lesson-callout p{margin:.55rem 0}
.lesson-callout p:first-of-type{margin-top:0}
.lesson-callout p:last-of-type{margin-bottom:0}

.lesson-callout--case{
  border-left-color:#1e40af;background:#eff6ff;
}
.lesson-callout--case .lesson-callout__title{color:#1e40af}
.lesson-callout--example{
  border-left-color:#0e7490;background:#ecfeff;
}
.lesson-callout--example .lesson-callout__title{color:#0e7490}
/* A5 (v0.45.19) — re-tinted from vibrant violet (#7c3aed) to a muted
   slate per the subdued-palette standard; still distinct from the
   blue/teal/green callouts by being grey-toned. */
.lesson-callout--analogy{
  border-left-color:#475569;background:#f1f5f9;
}
.lesson-callout--analogy .lesson-callout__title{color:#475569}
.lesson-callout--remember{
  border-left-color:#047857;background:#ecfdf5;
}
.lesson-callout--remember .lesson-callout__title{color:#047857}
.lesson-callout--warn{
  border-left-color:#b45309;background:#fffbeb;
}
.lesson-callout--warn .lesson-callout__title{color:#b45309}

/* ─── v0.45.0 — Quiz gate: locked lessons, gate-quiz rows, review banner,
   final-exam card (subdued navy/slate palette per design standards) ─────── */
.dl-lessonlist__item--locked{
  opacity:.62;cursor:not-allowed;background:#f8fafc;
  border:1px dashed #cbd5e1;
}
.dl-lessonlist__item--locked .dl-lessonlist__title{color:#64748b}
.dl-lessonlist__item--quiz{
  background:linear-gradient(180deg,#f0f9ff,#eef6fd);
  border:1px solid #bae6fd;font-weight:600;
}
.dl-lessonlist__item--quiz.dl-lessonlist__item--complete{
  background:linear-gradient(180deg,#f0fdf4,#ecfdf3);border-color:#bbf7d0;
}
.dl-lessonlist__item--quiz.dl-lessonlist__item--locked{
  background:#f8fafc;border:1px dashed #cbd5e1;font-weight:500;
}
.dl-modulelist__item--locked .dl-modulelist__num{
  background:#e2e8f0;color:#64748b;
}
.dl-modulelist__item--locked{opacity:.85}

.dl-gate-banner{
  display:flex;gap:.85rem;align-items:flex-start;
  margin:1.25rem 0;padding:1rem 1.15rem;border-radius:12px;
  font-size:.95rem;line-height:1.5;
}
.dl-gate-banner i{font-size:1.35rem;flex:0 0 auto;margin-top:.1rem}
.dl-gate-banner--review{
  background:#fffbeb;border:1px solid #fde68a;color:#92400e;
}
.dl-gate-banner--review i{color:#b45309}

.dl-finalexam{
  display:flex;gap:1.15rem;align-items:center;
  margin:1.75rem 0 .5rem;padding:1.4rem 1.5rem;border-radius:16px;
  border:1px solid #e2e8f0;background:#fff;
}
.dl-finalexam__icon{
  flex:0 0 auto;width:58px;height:58px;border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  font-size:1.6rem;color:#fff;background:linear-gradient(155deg,#334155,#1e293b);
}
.dl-finalexam__body h3{margin:0 0 .3rem;font-size:1.15rem;color:#0f172a}
.dl-finalexam__body p{margin:0 0 .7rem;color:#475569;font-size:.95rem}
.dl-finalexam--ready{
  border-color:#bfdbfe;background:linear-gradient(180deg,#f5f9ff,#eef5fd);
}
.dl-finalexam--ready .dl-finalexam__icon{background:linear-gradient(155deg,#1e3a8a,#1e40af)}
.dl-finalexam--passed{
  border-color:#bbf7d0;background:linear-gradient(180deg,#f3fdf6,#ecfdf3);
}
.dl-finalexam--passed .dl-finalexam__icon{background:linear-gradient(155deg,#15803d,#166534)}
.dl-finalexam--locked{opacity:.9}
.dl-finalexam--locked .dl-finalexam__icon{background:linear-gradient(155deg,#94a3b8,#64748b)}
@media (max-width:560px){
  .dl-finalexam{flex-direction:column;align-items:flex-start;text-align:left}
}

/* ── Study reference page (v0.45.18 — audit A4) ─────────────────── */
.dl-reference__container{max-width:1100px;margin:0 auto;padding:1.5rem 1.1rem 4rem}
.dl-reference__head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap;margin:1rem 0 1.4rem}
.dl-reference__eyebrow{font-size:.74rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--c-slate-500)}
.dl-reference__title{margin:.25rem 0 .35rem;font-size:clamp(1.5rem,3.5vw,2.1rem);color:var(--c-navy-900);letter-spacing:-.02em}
.dl-reference__sub{margin:0;color:var(--c-slate-500);font-size:.92rem}
.dl-reference__actions{display:flex;gap:.5rem;flex-wrap:wrap}
.dl-reference__tabs{display:flex;gap:.4rem;border-bottom:1px solid var(--c-slate-200);margin-bottom:1.4rem}
.dl-reference__tab{display:inline-flex;align-items:center;gap:.45rem;padding:.6rem .95rem;font-size:.88rem;font-weight:600;color:var(--c-slate-500);text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px}
.dl-reference__tab:hover{color:var(--c-navy-900)}
.dl-reference__tab.is-active{color:var(--c-navy-900);border-bottom-color:var(--c-blue-400)}
.dl-reference__panel{display:none}
.dl-reference__panel.is-active{display:block}
.dl-reference__h2{font-size:1.15rem;color:var(--c-navy-900);margin:0 0 .3rem;display:flex;align-items:center;gap:.5rem}
.dl-reference__hint{margin:0 0 1.3rem;color:var(--c-slate-500);font-size:.9rem}
.dl-reference__empty{color:var(--c-slate-400);padding:1.5rem 0}
.dl-reference__alpha{display:flex;gap:1rem;padding:.9rem 0;border-top:1px solid var(--c-slate-100)}
.dl-reference__alpha-letter{flex-shrink:0;width:2rem;font-size:1.1rem;font-weight:800;color:var(--c-blue-400);font-variant-numeric:tabular-nums}
.dl-reference__terms{list-style:none;margin:0;padding:0;flex:1;display:flex;flex-direction:column;gap:.55rem}
.dl-reference__term{display:flex;flex-wrap:wrap;gap:.3rem .7rem;align-items:baseline}
.dl-reference__term-label{font-weight:700;color:var(--c-navy-900);font-size:.95rem}
.dl-reference__term-lessons{font-size:.83rem;color:var(--c-slate-500)}
.dl-reference__term-lessons a{color:var(--c-slate-600);text-decoration:none}
.dl-reference__term-lessons a:hover{color:var(--c-navy-900);text-decoration:underline}
.dl-reference__module{margin:0 0 2rem}
.dl-reference__module-title{font-size:1rem;color:var(--c-navy-900);margin:0 0 .9rem;padding-bottom:.4rem;border-bottom:2px solid var(--c-slate-200)}
.dl-reference__cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}
.dl-refcard{margin:0;border:1px solid var(--c-slate-200);border-radius:10px;overflow:hidden;background:#fff;break-inside:avoid}
.dl-refcard img{display:block;width:100%;height:auto;background:#f1f5f9}
.dl-refcard figcaption{padding:.6rem .75rem;font-size:.8rem;line-height:1.4}
.dl-refcard__cap{display:block;color:var(--c-slate-700)}
.dl-refcard__src{display:inline-block;margin-top:.35rem;font-size:.74rem;color:var(--c-slate-400);text-decoration:none}
.dl-refcard__src:hover{color:var(--c-blue-400)}
@media (max-width:560px){
  .dl-reference__head{align-items:flex-start}
  .dl-reference__cards{grid-template-columns:1fr 1fr}
}
@media print{
  .no-print,.dl-topbar,.dl-footer,.dl-footer-min,.dl-breadcrumbs,.dl-reference__actions,.dl-reference__tabs{display:none !important}
  .dl-reference__panel{display:block !important}
  .dl-section--mist{background:#fff}
  .dl-reference__module{break-before:page}
  .dl-reference__module:first-of-type{break-before:auto}
  .dl-refcard{box-shadow:none}
}
/* Study-reference entry card on the program overview */
.dl-learn-overview__reference{
  display:flex;align-items:center;gap:1rem;
  padding:1rem 1.25rem;margin:0 0 1.4rem;
  border:1px solid var(--c-slate-200);border-radius:12px;
  background:linear-gradient(135deg,#f8fafc 0%,#eef2f7 100%);
  text-decoration:none;color:var(--c-navy-900);transition:border-color .15s,box-shadow .15s,transform .12s}
.dl-learn-overview__reference:hover{border-color:var(--c-blue-400);box-shadow:0 4px 14px rgba(10,22,40,.08);transform:translateY(-1px)}
.dl-learn-overview__reference-icon{flex-shrink:0;width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:#1e3a5f;color:#fff;font-size:1.1rem}
.dl-learn-overview__reference-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem}
.dl-learn-overview__reference-text strong{font-size:1rem}
.dl-learn-overview__reference-text span{font-size:.85rem;color:var(--c-slate-500)}
.dl-learn-overview__reference > .fa-arrow-right{color:var(--c-slate-400);flex-shrink:0}

/* Credential crosswalk (T1-4) — factual "built to these standards" panel */
.dl-crosswalk{
  margin:1.4rem 0 0;border:1px solid #e2e8f0;border-radius:var(--radius-lg);
  background:linear-gradient(180deg,#f8fafc,#fff);overflow:hidden;
  box-shadow:0 12px 30px -24px rgba(10,22,40,.2);
}
.dl-crosswalk__head{display:flex;gap:.9rem;align-items:flex-start;padding:1.2rem 1.3rem .9rem}
.dl-crosswalk__head i{
  flex:0 0 auto;width:38px;height:38px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;
  background:#eef2f7;color:var(--c-blue-500);font-size:1rem;
}
.dl-crosswalk__head h2{margin:0 0 .2rem;font-size:1.05rem;color:var(--c-navy-900)}
.dl-crosswalk__head p{margin:0;color:var(--c-text-muted);font-size:.9rem;line-height:1.55}
.dl-crosswalk__grid{
  list-style:none;margin:0;padding:0 1.3rem 1rem;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.6rem;
}
.dl-crosswalk__grid li{
  background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:.7rem .85rem;
}
.dl-crosswalk__tag{
  display:block;font-size:.84rem;font-weight:800;color:var(--c-navy-900);margin-bottom:.2rem;
}
.dl-crosswalk__desc{display:block;font-size:.82rem;color:var(--c-slate-600);line-height:1.5}
.dl-crosswalk__note{
  margin:0;padding:.7rem 1.3rem 1.1rem;font-size:.78rem;color:var(--c-slate-500);
  border-top:1px solid #eef2f7;background:#fff;line-height:1.5;
}

/* Practice exams (T1-3) — /learn/practice.php */
.dl-practice-hero{
  display:flex;flex-wrap:wrap;gap:1rem;align-items:center;justify-content:space-between;
  margin:1.4rem 0 0;padding:1.4rem 1.5rem;border-radius:var(--radius-lg);
  text-decoration:none;color:#fff;
  background:linear-gradient(135deg,#0f2439 0%,#1a3a5c 100%);
  box-shadow:0 16px 36px -22px rgba(10,22,40,.5);transition:transform .15s ease,box-shadow .15s ease;
}
.dl-practice-hero:hover{transform:translateY(-2px);box-shadow:0 20px 42px -20px rgba(10,22,40,.55)}
.dl-practice-hero__body{flex:1;min-width:240px}
.dl-practice-hero__eyebrow{
  font-size:.74rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:#7fb3cc;margin-bottom:.4rem;
}
.dl-practice-hero__eyebrow i{margin-right:.4rem}
.dl-practice-hero h2{margin:0 0 .35rem;font-size:1.25rem;color:#fff}
.dl-practice-hero p{margin:0;color:rgba(255,255,255,.8);font-size:.9rem;line-height:1.55;max-width:60ch}
.dl-practice-hero__cta{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap}
.dl-practice__best{
  font-size:.8rem;font-weight:700;color:#cfe6f1;
  background:rgba(255,255,255,.12);padding:.3rem .6rem;border-radius:999px;white-space:nowrap;
}
.dl-practice-sec-title{
  margin:2rem 0 .9rem;font-size:.78rem;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--c-slate-500);
}
.dl-practice-grid{
  display:grid;gap:.7rem;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));
}
.dl-practice-card{
  display:block;text-decoration:none;background:#fff;border:1px solid #e2e8f0;
  border-radius:12px;padding:1rem 1.1rem;transition:border-color .15s,box-shadow .15s,transform .15s;
}
.dl-practice-card:hover{
  border-color:var(--c-blue-400,#3b6ea5);transform:translateY(-2px);
  box-shadow:0 14px 30px -22px rgba(10,22,40,.3);
}
.dl-practice-card__top{display:flex;align-items:flex-start;justify-content:space-between;gap:.6rem}
.dl-practice-card__title{font-size:.95rem;font-weight:700;color:var(--c-navy-900);line-height:1.35}
.dl-practice-card .dl-practice__best{
  color:var(--c-slate-600);background:#f1f5f9;font-weight:700;
}
.dl-practice-card__meta{
  display:flex;align-items:center;justify-content:space-between;
  margin-top:.7rem;font-size:.83rem;color:var(--c-slate-500);
}
.dl-practice-card__meta i{margin-right:.3rem}
.dl-practice-card__go{font-weight:700;color:var(--c-blue-500)}
.dl-practice-card__go i{margin-left:.25rem;margin-right:0}
@media (max-width:520px){
  .dl-practice-hero{padding:1.2rem}
  .dl-practice-hero__cta{width:100%}
  .dl-practice-hero__cta .dl-btn{flex:1;justify-content:center}
}
/* A4(c) — inline cross-reference links inside lesson prose */
.lesson-xref{color:var(--c-blue-400);text-decoration:none;font-weight:600;border-bottom:1px dotted currentColor}
.lesson-xref:hover{color:var(--c-navy-900)}

/* ── Quiz report redesign (v0.45.22 — user-requested polish) ─────────
   Centered hero (score + verdict + stat chips + primary CTA), high-
   contrast stat chips, collapsible optional review, CSS confetti. */
.quiz-report__hero{
  display:flex;flex-direction:column;align-items:center;text-align:center;
  grid-template-columns:none;gap:.5rem;
  margin-top:1.2rem;padding:2.4rem 1.6rem;border-radius:18px;
}
.quiz-report__badge{font-size:2.6rem;line-height:1;margin-bottom:.2rem;color:#15803d}
.quiz-report__hero.is-fail .quiz-report__badge{color:#b45309}
.quiz-report__hero .quiz-report__pct{font-size:clamp(3.2rem,7vw,4.6rem);margin:0}
.quiz-report__hero .quiz-report__status{
  display:block;font-size:1.35rem;font-weight:800;color:#15803d;margin-bottom:.4rem}
.quiz-report__hero.is-fail .quiz-report__status{color:#b45309}
.quiz-report__stats{
  display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem;margin:1rem 0 1.4rem}
.quiz-report__hero .quiz-report__stat{
  background:#fff;border:1px solid var(--c-slate-200);
  box-shadow:0 1px 3px rgba(15,23,42,.06);
  border-radius:11px;padding:.7rem 1.1rem;min-width:104px;gap:.2rem}
.quiz-report__hero .quiz-report__stat-val{font-size:1.15rem;color:var(--c-navy-900)}
.quiz-report__hero .quiz-report__stat-lbl{font-size:.68rem;color:var(--c-slate-500)}
.quiz-report__cta{display:flex;flex-direction:column;align-items:center;gap:.7rem;margin:0}
.dl-button--lg{font-size:1.05rem;padding:.85rem 1.8rem;border-radius:12px}
.quiz-report__secondary{
  font-size:.88rem;color:var(--c-slate-500);text-decoration:none;font-weight:600}
.quiz-report__secondary:hover{color:var(--c-navy-900);text-decoration:underline}
/* Collapsible optional review */
.quiz-report__review{margin-top:1.8rem;border-top:1px solid var(--c-slate-200);padding-top:1.2rem}
.quiz-report__review-title{
  cursor:pointer;list-style:none;display:flex;align-items:center;gap:.6rem;
  font-size:1.05rem;font-weight:700;color:var(--c-navy-900)}
.quiz-report__review-title::-webkit-details-marker{display:none}
.quiz-report__review-hint{font-size:.82rem;font-weight:500;color:var(--c-slate-500)}
.quiz-report__review-chev{margin-left:auto;font-size:.85rem;color:var(--c-slate-400);transition:transform .2s}
.quiz-report__review[open] .quiz-report__review-chev{transform:rotate(180deg)}
.quiz-report__review .quiz-review{margin-top:1.2rem}

/* Remediation panel (T1-1) — shown on a failed attempt: weak-area
   breakdown + a concrete next step instead of a dead end. */
.quiz-remediate{
  margin-top:1.6rem;border:1px solid #e2e8f0;border-radius:var(--radius-lg);
  background:linear-gradient(180deg,#f8fafc,#fff);
  box-shadow:0 12px 30px -22px rgba(10,22,40,.22);overflow:hidden;
}
.quiz-remediate__head{display:flex;gap:1rem;align-items:flex-start;padding:1.3rem 1.4rem 1rem}
.quiz-remediate__icon{
  flex:0 0 auto;width:42px;height:42px;border-radius:12px;
  display:flex;align-items:center;justify-content:center;
  background:#eef2f7;color:var(--c-blue-500);font-size:1.05rem;
}
.quiz-remediate__head h3{margin:0 0 .25rem;font-size:1.1rem;color:var(--c-navy-900)}
.quiz-remediate__head p{margin:0;color:var(--c-text-muted);font-size:.92rem;line-height:1.55}
.quiz-remediate__cats{padding:0 1.4rem 1rem}
.quiz-remediate__cats-title{
  font-size:.72rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  color:var(--c-slate-500);margin:.4rem 0 .55rem;
}
.quiz-remediate__cats ul{list-style:none;margin:0;padding:0;display:grid;gap:.4rem}
.quiz-remediate__cats li{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:.55rem .8rem;
}
.quiz-remediate__cat{font-size:.92rem;font-weight:600;color:var(--c-navy-900)}
.quiz-remediate__score{
  font-size:.82rem;font-weight:800;font-variant-numeric:tabular-nums;
  padding:.15rem .5rem;border-radius:999px;
}
.quiz-remediate__score.is-low{background:#fef2f2;color:#b91c1c}
.quiz-remediate__score.is-mid{background:#fff7ed;color:#b45309}
.quiz-remediate__hint{margin:.7rem 0 0;font-size:.86rem;color:var(--c-slate-600);line-height:1.55}
.quiz-remediate__actions{
  display:flex;flex-wrap:wrap;gap:.6rem;
  padding:1rem 1.4rem 1.3rem;border-top:1px solid #eef2f7;background:#fff;
}
@media (max-width:520px){
  .quiz-remediate__head{padding:1.1rem 1.1rem .9rem}
  .quiz-remediate__cats,.quiz-remediate__actions{padding-left:1.1rem;padding-right:1.1rem}
  .quiz-remediate__actions .dl-button{width:100%;justify-content:center}
}

/* CSS confetti — 60 pieces fall + spin once on pass */
.quiz-confetti{position:fixed;inset:0;pointer-events:none;z-index:1399;overflow:hidden}
.quiz-confetti span{
  position:absolute;top:-12vh;width:9px;height:14px;opacity:0;
  left:calc(((var(--i) * 37) % 100) * 1%);
  background:hsl(calc(var(--i) * 47), 72%, 56%);
  border-radius:1px;
  animation:dlConfettiFall 2.6s cubic-bezier(.25,.7,.4,1) forwards;
  animation-delay:calc(var(--i) * 26ms)}
.quiz-confetti span:nth-child(3n){width:7px;height:7px;border-radius:50%}
.quiz-confetti span:nth-child(4n){background:hsl(calc(var(--i) * 23 + 140), 70%, 55%)}
@keyframes dlConfettiFall{
  0%{opacity:0;transform:translateY(0) rotate(0)}
  8%{opacity:1}
  100%{opacity:0;transform:translateY(112vh) rotate(640deg)}
}
@media (prefers-reduced-motion:reduce){
  .quiz-confetti{display:none}
}
@media (max-width:680px){
  .quiz-report__hero .quiz-report__stat{min-width:84px;padding:.6rem .8rem}
  .dl-button--lg{width:100%;justify-content:center}
}

/* ── Certificate of Completion (v0.45.32) ───────────────────────────── */
.dl-cert-wrap{padding:1.6rem 0 3rem}
.dl-cert-actions{display:flex;gap:.6rem;justify-content:center;margin:0 0 1.4rem;flex-wrap:wrap}
.dl-cert{max-width:920px;margin:0 auto;background:#fff;
  box-shadow:0 10px 40px rgba(10,22,40,.14);border-radius:6px}
.dl-cert__frame{
  border:2px solid var(--c-navy-900,#0a1628);
  outline:1px solid var(--c-slate-300,#cbd5e1);outline-offset:7px;
  margin:14px;padding:3rem 3.2rem 2.4rem;text-align:center;
  background:
    radial-gradient(1100px 360px at 50% -8%, rgba(30,58,95,.05), transparent 60%),#fff;
}
.dl-cert__head{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin-bottom:1.4rem}
.dl-cert__logo{display:block;height:42px;width:auto}
.dl-cert__org{font-size:.78rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--c-slate-500,#64748b)}
.dl-cert__title{font-family:Georgia,"Iowan Old Style",serif;font-size:clamp(1.7rem,4vw,2.5rem);
  font-weight:700;color:var(--c-navy-900,#0a1628);letter-spacing:.01em}
.dl-cert__rule{width:88px;height:3px;background:var(--c-blue-400,#38bdf8);margin:.85rem auto 1.6rem;border-radius:2px}
.dl-cert__intro{font-size:.95rem;color:var(--c-slate-500,#64748b);letter-spacing:.04em}
.dl-cert__name{font-family:Georgia,"Iowan Old Style",serif;font-size:clamp(1.6rem,3.6vw,2.2rem);
  font-weight:700;color:var(--c-navy-900,#0a1628);margin:.5rem 0 .2rem;
  border-bottom:1px solid var(--c-slate-200,#e2e8f0);display:inline-block;padding:0 1.4rem .4rem}
.dl-cert__body{max-width:560px;margin:1.3rem auto .4rem;font-size:1rem;line-height:1.7;color:var(--c-slate-700,#334155)}
.dl-cert__program{font-size:1.2rem;font-weight:800;color:var(--c-navy-900,#0a1628);margin:.1rem 0 1.6rem;letter-spacing:-.01em}
.dl-cert__meta{display:flex;justify-content:center;gap:2.4rem;flex-wrap:wrap;margin:1.4rem 0 1.8rem}
.dl-cert__meta-item{display:flex;flex-direction:column;gap:.25rem}
.dl-cert__meta-label{font-size:.66rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--c-slate-500,#64748b)}
.dl-cert__meta-value{font-size:1.02rem;font-weight:700;color:var(--c-navy-900,#0a1628)}
.dl-cert__meta-value--mono{font-family:Menlo,Consolas,monospace;font-size:.92rem;letter-spacing:.02em}
.dl-cert__sign{display:flex;align-items:flex-end;justify-content:space-between;gap:1.5rem;
  max-width:620px;margin:2rem auto .6rem}
.dl-cert__sign-col{flex:1;min-width:0}
.dl-cert__sign-line{font-family:Georgia,serif;font-size:1.02rem;color:var(--c-navy-900,#0a1628);
  border-top:1.5px solid var(--c-slate-400,#94a3b8);padding-top:.45rem}
.dl-cert__sign-cap{font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--c-slate-500,#64748b);margin-top:.25rem}
.dl-cert__seal{flex-shrink:0;width:62px;height:62px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  border:2px solid var(--c-navy-900,#0a1628);color:var(--c-navy-900,#0a1628);
  font-size:1.5rem;background:#fff}
.dl-cert__verify{margin-top:1.6rem;font-size:.74rem;color:var(--c-slate-500,#64748b);letter-spacing:.02em}
@media (max-width:560px){
  .dl-cert__frame{padding:1.8rem 1.2rem;margin:8px}
  .dl-cert__meta{gap:1.2rem}
  .dl-cert__sign{flex-direction:column;align-items:center;gap:1.4rem;text-align:center}
}
@media print{
  .dl-topbar,.dl-footer,.dl-footer-min,.dl-cert-actions,.no-print{display:none !important}
  .dl-section--mist{background:#fff}
  .dl-cert-wrap{padding:0}
  .dl-cert{box-shadow:none;max-width:none;margin:0}
  .dl-cert__frame{margin:0;border-width:2px}
  @page{size:landscape;margin:0.5in}
}

/* ── C7 (v0.45.34) — reader dark mode (lesson chrome only) ──────────── */
.lesson-theme-toggle{
  display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;
  width:30px;height:30px;border:0;border-radius:8px;cursor:pointer;
  background:var(--c-slate-100,#f1f5f9);color:var(--c-slate-600,#475569);
  font-size:.85rem;transition:background .12s,color .12s}
.lesson-theme-toggle:hover{background:#fff;color:var(--c-navy-900,#0a1628)}
.lesson-theme-toggle:focus-visible{outline:2px solid rgba(56,189,248,.55);outline-offset:2px}
@media (max-width:760px){ .lesson-theme-toggle{display:none} }

body.lesson-dark .lesson-bar{background:rgba(17,24,39,.94);border-bottom-color:rgba(255,255,255,.08)}
body.lesson-dark .lesson-bar__program{color:#cbd5e1}
body.lesson-dark .lesson-bar__module,
body.lesson-dark .lesson-bar__pos-num{color:#e8eef6}
body.lesson-dark .lesson-bar__sep{color:#475569}
body.lesson-dark .lesson-bar__progress-mini{background:rgba(255,255,255,.06)}
body.lesson-dark .lesson-bar__progress-pct{color:#e8eef6}
body.lesson-dark .lesson-bar__progress-track{background:rgba(255,255,255,.12)}
body.lesson-dark .lesson-bar__progress-time{color:#94a3b8}
body.lesson-dark .lesson-textsize{background:rgba(255,255,255,.07)}
body.lesson-dark .lesson-textsize__btn{color:#cbd5e1}
body.lesson-dark .lesson-textsize__btn:hover{background:rgba(255,255,255,.12);color:#fff}
body.lesson-dark .lesson-theme-toggle{background:rgba(255,255,255,.07);color:#fbbf24}
body.lesson-dark .lesson-theme-toggle:hover{background:rgba(255,255,255,.14);color:#fde68a}

body.lesson-dark .lesson-layout,
body.lesson-dark .lesson-main{background:#0f172a}
body.lesson-dark .lesson-body{color:#cbd5e1}
body.lesson-dark .lesson-body h1,
body.lesson-dark .lesson-body h2,
body.lesson-dark .lesson-body h3,
body.lesson-dark .lesson-body h4,
body.lesson-dark .lesson-body p:first-of-type{color:#eef3f9}
body.lesson-dark .lesson-body strong{color:#f1f5f9}
body.lesson-dark .lesson-body a{color:#7dd3fc}
body.lesson-dark .lesson-body a:hover{color:#bae6fd}
body.lesson-dark .lesson-body li::marker{color:#38bdf8}
body.lesson-dark .lesson-body blockquote{color:#94a3b8;border-left-color:rgba(255,255,255,.18)}
body.lesson-dark .lesson-body hr{border-color:rgba(255,255,255,.10)}
body.lesson-dark .lesson-body table th,
body.lesson-dark .lesson-body table td{border-color:rgba(255,255,255,.10)}
body.lesson-dark .lesson-body table th{background:rgba(255,255,255,.05);color:#e8eef6}
body.lesson-dark .lesson-xref{color:#7dd3fc}

body.lesson-dark .lesson-toc,
body.lesson-dark .lesson-onpage,
body.lesson-dark .lesson-jump{background:#0c1424;border-color:rgba(255,255,255,.08)}
body.lesson-dark .lesson-toc__module,
body.lesson-dark .lesson-toc__lesson,
body.lesson-dark .lesson-onpage__link,
body.lesson-dark .lesson-jump__link{color:#cbd5e1}
body.lesson-dark .lesson-toc__lesson:hover,
body.lesson-dark .lesson-onpage__link:hover,
body.lesson-dark .lesson-jump__link:hover{color:#fff;background:rgba(255,255,255,.06)}
body.lesson-dark .lesson-onpage__title,
body.lesson-dark .lesson-jump__sum{color:#94a3b8}
body.lesson-dark .lesson-onpage__item.is-active .lesson-onpage__link{color:#7dd3fc;border-left-color:#38bdf8}

body.lesson-dark .lesson-callout{background:#16223a;color:#cbd5e1}
body.lesson-dark .lesson-callout p{color:#cbd5e1}
body.lesson-dark .lesson-callout--analogy{background:#1b2436}
body.lesson-dark .lesson-callout--case{background:#15233f}
body.lesson-dark .lesson-callout--example{background:#102a30}
body.lesson-dark .lesson-callout--remember{background:#10261d}
body.lesson-dark .lesson-callout--warn{background:#2a1d12}
body.lesson-dark .lesson-figure figcaption{color:#94a3b8}
body.lesson-dark .lesson-figure__num{color:#cbd5e1}
body.lesson-dark .lesson-figure__placeholder{background:#16223a;color:#94a3b8;border-color:rgba(255,255,255,.10)}
body.lesson-dark .lesson-resume{background:#16223a;color:#cbd5e1;border-color:rgba(255,255,255,.10)}
body.lesson-dark .lesson-nav__link--prev{background:linear-gradient(135deg,#334155 0%,#1e293b 100%)}
body.lesson-dark .lesson-celebrate__text{color:#e8eef6}
body.lesson-dark .dl-footer-min{background:#0a1424;border-top-color:rgba(255,255,255,.06)}

/* ============================================================
   Programs page imagery (v0.45.44) — text-free photoreal scenes
   generated via Gemini. Scoped so the shared .dl-pagehead is
   unchanged elsewhere. Strong navy gradient over the photo keeps
   the white heading/text well above WCAG AA contrast.
   ============================================================ */
.dl-pagehead--imaged{
  padding:3rem 0 3.25rem;
  background:
    linear-gradient(155deg,rgba(8,18,33,.95) 0%,rgba(13,30,49,.88) 42%,rgba(20,46,74,.62) 100%),
    var(--ph-img) center center / cover no-repeat,
    linear-gradient(160deg,#0a1628 0%,#0f2439 30%,#162f4d 70%,#1a3a5c 100%);
}
/* Keep the existing subtle dot texture above the photo */
.dl-pagehead--imaged::before{opacity:.5}
@media (max-width:600px){
  .dl-pagehead--imaged{padding:2.1rem 0 2.3rem;background-position:center center}
}

.dl-program-showcase{
  margin:-0.5rem 0 2.5rem;
  border-radius:var(--radius-lg);
  overflow:hidden;
  box-shadow:0 10px 30px rgba(10,22,40,.16);
  border:1px solid rgba(10,22,40,.06);
  background:#0f2439;
}
.dl-program-showcase img{
  display:block;width:100%;height:auto;
  aspect-ratio:16 / 9;object-fit:cover;
}
@media (min-width:1100px){
  .dl-program-showcase img{aspect-ratio:21 / 9;max-height:420px}
}
@media (max-width:600px){
  .dl-program-showcase{margin:0 0 1.75rem;border-radius:var(--radius)}
}
@media (prefers-reduced-motion:no-preference){
  .dl-program-showcase img{transition:transform .5s ease}
  .dl-program-showcase:hover img{transform:scale(1.02)}
}

/* ============================================================
   Home hero + login imagery (v0.45.45) — text-free photoreal
   scenes generated via Gemini. Scoped modifiers so the shared
   .dl-hero / .dl-auth-wrap are unchanged elsewhere. Heavy navy
   veil keeps white copy + orbs well above WCAG AA contrast.
   contact.php reuses the existing .dl-pagehead--imaged rule.
   ============================================================ */
.dl-hero--imaged{
  background:
    linear-gradient(160deg,rgba(8,18,33,.93) 0%,rgba(13,30,49,.88) 38%,rgba(20,46,74,.80) 70%,rgba(15,36,57,.86) 100%),
    var(--hero-img) center 28% / cover no-repeat,
    linear-gradient(160deg,#0a1628 0%,#0f2439 25%,#162f4d 50%,#1a3a5c 75%,#132d47 100%);
}

.dl-auth-wrap--imaged{
  background:
    linear-gradient(180deg,rgba(10,22,40,.62) 0%,rgba(13,30,49,.58) 50%,rgba(8,18,33,.70) 100%),
    var(--auth-img) center / cover no-repeat,
    linear-gradient(180deg,#0f2439 0%,#0a1628 100%);
}
.dl-auth-wrap--imaged::before{
  content:'';position:absolute;inset:0;
  background:radial-gradient(800px 520px at 50% 45%,rgba(0,0,0,.28),transparent 70%);
  pointer-events:none;
}
.dl-auth-wrap--imaged .dl-auth-card{
  box-shadow:0 24px 60px rgba(5,12,24,.45),0 2px 8px rgba(5,12,24,.30);
}

/* ============================================================
   Section illustration band (v0.45.46) — small, contained,
   text-free photoreal scene that sits under a centered section
   title and above its grid. Narrower than the container so it
   reads as a tasteful accent, not a hero. Reused on the homepage
   "Built for working CNAs", "Built for working healthcare
   professionals", and "How the RNA program works" sections.
   ============================================================ */
.dl-section-illus{
  margin:0 auto 2.75rem;max-width:940px;
  border-radius:var(--radius-lg);overflow:hidden;
  box-shadow:0 10px 28px rgba(10,22,40,.12);
  border:1px solid rgba(10,22,40,.06);background:#0f2439;
}
.dl-section-illus img{
  display:block;width:100%;height:auto;
  aspect-ratio:21 / 9;max-height:300px;object-fit:cover;
}
@media (max-width:640px){
  .dl-section-illus{max-width:none;margin-bottom:1.9rem;border-radius:var(--radius)}
  .dl-section-illus img{aspect-ratio:16 / 9;max-height:220px}
}
@media (prefers-reduced-motion:no-preference){
  .dl-section-illus img{transition:transform .5s ease}
  .dl-section-illus:hover img{transform:scale(1.02)}
}
