/* mission-modules.css — shared mission-UX styles for Modules 10-14.
   Consolidates pca-module.css, timeseries-module.css, shiny-module.css,
   ethics-module.css, and repro-audit-module.css, which were ~90%
   prefix-renamed clones: a fix to the checkpoint nav previously had to be
   made five times.

   How to edit this file:
   - Selectors stay module-prefixed (.pca-*, .ts-*, .sh-*, .et-*, .ra-*), so
     the five pages and their scripts are unchanged.
   - Structural rules shared by several modules are written ONCE with grouped
     selectors. Where only a value differed per module (an accent, a border,
     a gradient), the value is a var(--mx-…) token; the per-module values
     live in the token blocks at the top, scoped to .X-course and .X-toast
     (the toast is the one element outside <main> on each page).
   - Rules that genuinely differ per module are emitted per module, adjacent
     to their shared siblings.
   - Pre-existing per-module custom properties were unified to --mx-* (their
     values were identical across modules; --ra-gold keeps its prefix
     because its value differs). Three formerly page-global selectors
     (.sh-spark debris from the ethics sheet; .correct/.incorrect from the
     repro sheet) are scoped to their page wrapper so they cannot leak onto
     the other four pages.
   Generated mechanically from the five originals and verified
   declaration-for-declaration per module. */

/* ── Per-module design tokens (extracted from value-level differences) ── */
.pca-course,
.pca-toast {
  --mx-hero-grid-border:1px solid #31546d;
  --mx-hero-grid-background:#0b1d2e;
  --mx-hero-grid-color:#94a3b8;
  --mx-progress-padding:15px;
  --mx-progress-border:1px solid #155e75;
  --mx-progress-border-radius:14px;
  --mx-progress-background:#071727;
  --mx-progress-track-height:9px;
  --mx-progress-track-background:#183047;
  --mx-skill-map-margin:22px 0 30px;
  --mx-skill-map-padding:20px;
  --mx-skill-map-border:1px solid #294b65;
  --mx-skill-map-border-radius:20px;
  --mx-skill-map-background:#0a1829;
  --mx-map-head-align-items:end;
  --mx-skill-grid-margin-top:15px;
  --mx-continue-opacity:.38;
  --mx-math-strip-border-2:1px solid #31546d;
  --mx-math-strip-background-2:#0b1d2e;
  --mx-lab-border:1px solid #31546d;
  --mx-lab-head-color:#2dd4bf;
  --mx-lab-head-border:1px solid #155e75;
  --mx-lab-head-background:#0b2734;
  --mx-lab-head-color-2:#bae6fd;
  --mx-control-panel-gap:13px;
  --mx-detective-win-padding:24px;
  --mx-r-check-margin-top:14px;
  --mx-r-check-padding:15px;
  --mx-r-check-border:1px solid #31546d;
  --mx-r-check-border-radius:13px;
  --mx-r-check-background:#071522;
  --mx-finish-color:#99f6e4;
  --mx-toast-transform:translate(-50%,0);
}
.ts-course,
.ts-toast {
  --mx-hero-grid-border:1px solid #31546d;
  --mx-hero-grid-background:#0b1d2e;
  --mx-hero-grid-color:#94a3b8;
  --mx-progress-padding:15px;
  --mx-progress-border:1px solid #155e75;
  --mx-progress-border-radius:14px;
  --mx-progress-background:#071727;
  --mx-progress-track-height:9px;
  --mx-progress-track-background:#183047;
  --mx-skill-map-margin:22px 0 30px;
  --mx-skill-map-padding:20px;
  --mx-skill-map-border:1px solid #294b65;
  --mx-skill-map-border-radius:20px;
  --mx-skill-map-background:#0a1829;
  --mx-map-head-align-items:end;
  --mx-skill-grid-margin-top:15px;
  --mx-continue-opacity:.38;
  --mx-math-strip-border-2:1px solid #31546d;
  --mx-math-strip-background-2:#0b1d2e;
  --mx-lab-border:1px solid #31546d;
  --mx-lab-head-color:#2dd4bf;
  --mx-lab-head-border:1px solid #155e75;
  --mx-lab-head-background:#0b2734;
  --mx-lab-head-color-2:#bae6fd;
  --mx-control-panel-gap:12px;
  --mx-detective-win-padding:26px;
  --mx-r-check-margin-top:14px;
  --mx-r-check-padding:15px;
  --mx-r-check-border:1px solid #31546d;
  --mx-r-check-border-radius:13px;
  --mx-r-check-background:#071522;
  --mx-finish-color:#99f6e4;
  --mx-toast-transform:translate(-50%,0);
}
.sh-course,
.sh-toast {
  --mx-hero-grid-border:1px solid #384f7a;
  --mx-hero-grid-background:#0d1a31;
  --mx-hero-grid-color:#94a3b8;
  --mx-progress-padding:15px;
  --mx-progress-border:1px solid #265f78;
  --mx-progress-border-radius:14px;
  --mx-progress-background:#071727;
  --mx-progress-track-height:9px;
  --mx-progress-track-background:#1a2d4d;
  --mx-skill-map-margin:22px 0 30px;
  --mx-skill-map-padding:20px;
  --mx-skill-map-border:1px solid #334b75;
  --mx-skill-map-border-radius:20px;
  --mx-skill-map-background:#0a172b;
  --mx-map-head-align-items:end;
  --mx-skill-grid-margin-top:15px;
  --mx-continue-opacity:.38;
  --mx-math-strip-border-2:1px solid #3d5175;
  --mx-math-strip-background-2:#0d1a31;
  --mx-lab-border:1px solid #3a517a;
  --mx-lab-head-color:#2dd4bf;
  --mx-lab-head-border:1px solid #3f5f8d;
  --mx-lab-head-background:#13243d;
  --mx-lab-head-color-2:#7dd3fc;
  --mx-r-check-margin-top:14px;
  --mx-r-check-padding:15px;
  --mx-r-check-border:1px solid #31546d;
  --mx-r-check-border-radius:13px;
  --mx-r-check-background:#071522;
  --mx-finish-color:#99f6e4;
  --mx-toast-transform:translate(-50%,0);
}
.et-course,
.et-toast {
  --mx-hero-grid-border:1px solid #384f7a;
  --mx-hero-grid-background:#0d1a31;
  --mx-hero-grid-color:#94a3b8;
  --mx-progress-padding:15px;
  --mx-progress-border:1px solid #265f78;
  --mx-progress-border-radius:14px;
  --mx-progress-background:#071727;
  --mx-progress-track-height:9px;
  --mx-progress-track-background:#1a2d4d;
  --mx-skill-map-margin:22px 0 30px;
  --mx-skill-map-padding:20px;
  --mx-skill-map-border:1px solid #334b75;
  --mx-skill-map-border-radius:20px;
  --mx-skill-map-background:#0a172b;
  --mx-map-head-align-items:flex-end;
  --mx-skill-grid-margin-top:15px;
  --mx-math-strip-margin:16px 0;
  --mx-math-strip-border:1px solid #3d5175;
  --mx-math-strip-border-radius:12px;
  --mx-math-strip-background:#0d1a31;
  --mx-continue-opacity:.38;
  --mx-lab-border:1px solid #3a517a;
  --mx-lab-head-color:var(--mx-teal);
  --mx-r-check-margin-top:16px;
  --mx-r-check-padding:16px;
  --mx-r-check-border:1px solid #2e456c;
  --mx-r-check-border-radius:14px;
  --mx-r-check-background:#0b182b;
  --mx-toast-transform:translateY(0);
}
.ra-course,
.ra-toast {
  --mx-hero-grid-color:var(--mx-muted);
  --mx-progress-padding:14px;
  --mx-progress-border:1px solid var(--mx-line);
  --mx-progress-border-radius:13px;
  --mx-progress-background:#07111fcc;
  --mx-progress-track-height:8px;
  --mx-progress-track-background:#1c304a;
  --mx-skill-map-margin:16px 0;
  --mx-skill-map-padding:18px;
  --mx-skill-map-border:1px solid var(--mx-line);
  --mx-skill-map-border-radius:16px;
  --mx-skill-map-background:var(--mx-bg);
  --mx-map-head-align-items:center;
  --mx-skill-grid-margin-top:12px;
  --mx-math-strip-margin:15px 0;
  --mx-math-strip-border:1px solid #2d4968;
  --mx-math-strip-border-radius:11px;
  --mx-math-strip-background:#091727;
  --mx-continue-opacity:.42;
  --mx-r-check-margin-top:16px;
  --mx-r-check-padding:16px;
  --mx-r-check-border:1px solid var(--mx-line);
  --mx-r-check-border-radius:14px;
  --mx-r-check-background:#0b182b;
  --mx-finish-color:#bbf7d0;
  --mx-toast-transform:none;
}

/* ── Rules (shared first within each slot, then per-module variants) ── */
:root { --mx-bg:#07111f;--mx-panel:#0d1a2e;--mx-panel2:#101f38;--mx-line:#29405f;--mx-text:#f2f5f7;--mx-muted:#9fb0c7;--mx-teal:#2dd4bf;--mx-blue:#7dd3fc;--mx-good:#22c55e;--mx-bad:#ef4444;--ra-gold:#f6c85f }
/* The rest of the --ra-* set is referenced below but was defined nowhere, so
   each var() rendered its literal fallback. These are those same literals, so
   nothing changes appearance — the names simply become real, and editing the
   reading-area palette is now one place rather than thirteen call sites. */
:root { --ra-card:#f8fafc;--ra-border:#e2e8f0;--ra-heading:#0f172a;--ra-body:#334155;--ra-accent:#0369a1;--ra-muted:#64748b }
.pca-course { --mx-teal:#2dd4bf;--mx-cyan:#7dd3fc;--mx-gold:#fbbf24 }
.ts-course { --mx-teal:#2dd4bf;--mx-cyan:#7dd3fc;--mx-gold:#fbbf24 }
.sh-course { --mx-teal:#2dd4bf;--mx-cyan:#7dd3fc;--mx-gold:#fbbf24 }
.et-course { --mx-teal:#2dd4bf;--mx-silver:#cbd5e1;--mx-cyan:#7dd3fc;--mx-amber:#fbbf24;--mx-green:#22c55e;--mx-red:#f87171;--mx-bg-dark:#07121f;--mx-card-bg:#0d1a31;--mx-border:#334b75 }
.ra-course { color:var(--mx-text) }
.pca-hero { position:relative;overflow:hidden;margin:18px 0 22px;padding:clamp(24px,5vw,48px);border:1px solid #25627a;border-radius:24px;background:radial-gradient(circle at 86% 12%,#164e63 0,#10243a 36%,#071522 78%);box-shadow:0 22px 60px #020617 }
.ts-hero { position:relative;overflow:hidden;margin:18px 0 22px;padding:clamp(24px,5vw,48px);border:1px solid #25627a;border-radius:24px;background:radial-gradient(circle at 88% 12%,#164e63 0,#10243a 34%,#071522 78%);box-shadow:0 22px 60px #020617 }
.sh-hero { position:relative;overflow:hidden;margin:18px 0 22px;padding:clamp(24px,5vw,48px);border:1px solid #25627a;border-radius:24px;background:radial-gradient(circle at 85% 10%,#164e63 0,#10243a 35%,#07121f 78%);box-shadow:0 22px 60px #020617 }
.et-hero { position:relative;overflow:hidden;margin:18px 0 22px;padding:clamp(24px,5vw,48px);border:1px solid #36579a;border-radius:24px;background:radial-gradient(circle at 85% 10%,#1e3a5f 0%,#0d1d36 40%,#061122 80%);box-shadow:0 22px 60px #020617 }
.ra-hero { position:relative;overflow:hidden;margin:18px 0;padding:30px;border:1px solid #27506a;border-radius:22px;background:linear-gradient(145deg,#081527,#0a2531) }
.pca-hero:after { content:"";position:absolute;right:-70px;top:-90px;width:280px;height:280px;border:1px solid #2dd4bf;border-radius:50%;box-shadow:0 0 80px #0e7490;opacity:.2;pointer-events:none }
.ts-hero:after { content:"";position:absolute;right:-20px;top:28px;width:330px;height:150px;background:repeating-linear-gradient(120deg,transparent 0,transparent 23px,#2dd4bf 24px,transparent 26px);clip-path:polygon(0 72%,14% 58%,25% 65%,38% 29%,52% 45%,67% 18%,82% 31%,100% 0,100% 100%,0 100%);opacity:.09;pointer-events:none }
.sh-hero:after { content:"";position:absolute;right:3%;top:15%;width:280px;height:180px;background:linear-gradient(90deg,transparent 48%,#2dd4bf 49%,#2dd4bf 51%,transparent 52%),linear-gradient(transparent 48%,#2dd4bf 49%,#2dd4bf 51%,transparent 52%);background-size:46px 46px;opacity:.07;transform:perspective(300px) rotateX(55deg) rotateZ(-8deg);pointer-events:none }
.et-hero:after { content:"";position:absolute;right:3%;top:15%;width:280px;height:180px;background:linear-gradient(90deg,transparent 48%,#2dd4bf 49%,#2dd4bf 51%,transparent 52%),linear-gradient(transparent 48%,#2dd4bf 49%,#2dd4bf 51%,transparent 52%);background-size:46px 46px;opacity:.07;transform:perspective(300px) rotateX(55deg) rotateZ(-8deg);pointer-events:none }
.ra-hero:after { content:"";position:absolute;width:310px;height:310px;right:-120px;top:-150px;border:1px solid #2dd4bf55;border-radius:50%;box-shadow:0 0 80px #2dd4bf1c }
.pca-kicker { color:var(--mx-teal);font-size:11px;font-weight:900;letter-spacing:.13em;text-transform:uppercase }
.ts-kicker { position:relative;z-index:1;color:var(--mx-teal);font-size:11px;font-weight:900;letter-spacing:.13em;text-transform:uppercase }
.sh-kicker { position:relative;z-index:1;color:var(--mx-teal);font-size:11px;font-weight:900;letter-spacing:.13em;text-transform:uppercase }
.et-kicker { position:relative;z-index:1;color:var(--mx-teal);font-size:11px;font-weight:900;letter-spacing:.13em;text-transform:uppercase }
.ra-kicker,.ra-lab-head span,.ra-stage-head span,.ra-map-head>div>span { color:var(--mx-teal);font-size:12px;font-weight:900;letter-spacing:.09em;text-transform:uppercase }
.pca-hero h1 { max-width:760px;margin:9px 0 10px;color:#fdfdfe;font-size:clamp(36px,7vw,66px);line-height:.98;letter-spacing:-.045em }
.ts-hero h1 { position:relative;z-index:1;max-width:780px;margin:9px 0 10px;color:#fdfdfe;font-size:clamp(36px,7vw,66px);line-height:.98;letter-spacing:-.045em }
.sh-hero h1 { position:relative;z-index:1;max-width:800px;margin:9px 0 10px;color:#fdfdfe;font-size:clamp(36px,7vw,64px);line-height:.98;letter-spacing:-.045em }
.et-hero h1 { position:relative;z-index:1;max-width:800px;margin:9px 0 10px;color:#fdfdfe;font-size:clamp(32px,6.5vw,56px);line-height:1.02;letter-spacing:-.04em }
.ra-hero h1 { max-width:760px;margin:10px 0 8px;font-size:clamp(34px,5vw,62px);line-height:1.02;letter-spacing:-.035em }
.pca-hero .lead { max-width:760px;color:#cbd5e1;font-size:clamp(16px,2.5vw,20px) }
.ts-hero .lead { position:relative;z-index:1;max-width:760px;color:#cbd5e1;font-size:clamp(16px,2.5vw,20px) }
.sh-hero .lead { position:relative;z-index:1;max-width:780px;color:#cbd5e1;font-size:clamp(16px,2.5vw,20px) }
.et-hero .lead { position:relative;z-index:1;max-width:780px;color:var(--mx-silver);font-size:clamp(15px,2.3vw,19px);line-height:1.6 }
.ra-hero .lead { max-width:820px;color:#cbd5e1;font-size:18px;line-height:1.65 }
.pca-hero-grid { display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:24px 0 20px }
.ts-hero-grid { position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:24px 0 20px }
.sh-hero-grid { position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:24px 0 20px }
.et-hero-grid { position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:24px 0 20px }
.ra-hero-grid { display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:22px 0 }
.pca-hero-grid div,
.ts-hero-grid div,
.sh-hero-grid div,
.et-hero-grid div { display:flex;flex-direction:column;min-height:86px;padding:14px;border:var(--mx-hero-grid-border);border-radius:13px;background:var(--mx-hero-grid-background) }
.ra-hero-grid div,.ra-skill-grid article { padding:14px;border:1px solid var(--mx-line);border-radius:13px;background:#0d1a2ebb }
.pca-hero-grid strong { color:#fdfdfe;font-size:22px }
.ts-hero-grid strong { color:#fdfdfe;font-size:22px }
.sh-hero-grid strong { color:#fdfdfe;font-size:22px }
.et-hero-grid strong { color:#fdfdfe;font-size:22px }
.ra-hero-grid strong { display:block;color:var(--mx-teal);font-size:25px }
.pca-hero-grid span,
.ts-hero-grid span,
.sh-hero-grid span,
.et-hero-grid span,
.ra-hero-grid span { color:var(--mx-hero-grid-color);font-size:11px }
.pca-progress,
.ts-progress,
.sh-progress,
.et-progress,
.ra-progress { position:relative;z-index:1;padding:var(--mx-progress-padding);border:var(--mx-progress-border);border-radius:var(--mx-progress-border-radius);background:var(--mx-progress-background) }
.pca-progress>div:first-child { display:flex;justify-content:space-between;color:#bae6fd;font-size:12px }
.ts-progress>div:first-child { display:flex;justify-content:space-between;color:#bae6fd;font-size:12px }
.sh-progress>div:first-child { display:flex;justify-content:space-between;color:#bae6fd;font-size:12px }
.ra-progress>div:first-child { display:flex;justify-content:space-between;font-size:12px }
.et-progress > div:first-child { display:flex;justify-content:space-between;color:#bae6fd;font-size:12px }
.ra-progress p { margin:8px 0 0;color:var(--mx-muted);font-size:12px }
.pca-progress-track,
.ts-progress-track,
.sh-progress-track,
.et-progress-track,
.ra-progress-track { height:var(--mx-progress-track-height);margin-top:8px;overflow:hidden;border-radius:99px;background:var(--mx-progress-track-background) }
.pca-progress-track span { display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#38bdf8,#2dd4bf);transition:width .35s ease }
.ts-progress-track span { display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#38bdf8,#2dd4bf,#fbbf24);transition:width .35s ease }
.sh-progress-track span { display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#0ea5e9,#2dd4bf,#fbbf24);transition:width .35s ease }
.et-progress-track span { display:block;width:0%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#0ea5e9,#2dd4bf,#fbbf24);transition:width .35s ease }
.ra-progress-track span { display:block;width:0;height:100%;background:var(--mx-teal);transition:width .35s ease }
.pca-progress p,
.ts-progress p,
.sh-progress p,
.et-progress p { margin:8px 0 0;color:#94a3b8;font-size:12px }
.pca-start { position:relative;z-index:1;width:100%;margin-top:12px;text-align:center }
.ts-start { position:relative;z-index:1;width:100%;margin-top:12px;text-align:center }
.sh-start { position:relative;z-index:1;width:100%;margin-top:12px;text-align:center }
.et-start { position:relative;z-index:1;width:100%;min-height:48px;margin-top:12px;text-align:center }
.ra-start { position:relative;z-index:1;margin-top:16px }
.pca-nav { position:sticky;top:8px;z-index:25;display:grid;grid-template-columns:repeat(6,1fr);gap:5px;margin:18px 0;padding:8px;border:1px solid #1e4f66;border-radius:14px;background:#07111f;box-shadow:0 12px 30px #020617 }
.ts-nav { position:sticky;top:8px;z-index:25;display:grid;grid-template-columns:repeat(6,1fr);gap:5px;margin:18px 0;padding:8px;border:1px solid #1e4f66;border-radius:14px;background:#07111f;box-shadow:0 12px 30px #020617 }
.sh-nav { position:sticky;top:8px;z-index:25;display:grid;grid-template-columns:repeat(6,1fr);gap:5px;margin:18px 0;padding:8px;border:1px solid #314b78;border-radius:14px;background:#07111f;box-shadow:0 12px 30px #020617 }
.et-nav { position:sticky;top:8px;z-index:25;display:grid;grid-template-columns:repeat(6,1fr);gap:5px;margin:18px 0;padding:8px;border:1px solid #314b78;border-radius:14px;background:#07111f;box-shadow:0 12px 30px #020617 }
.ra-nav { position:sticky;top:8px;z-index:20;display:grid;grid-template-columns:repeat(6,1fr);gap:7px;margin:16px 0;padding:9px;border:1px solid var(--mx-line);border-radius:14px;background:#07111ff2;backdrop-filter:blur(12px) }
.pca-nav a { display:flex;align-items:center;justify-content:center;gap:6px;min-height:48px;border-radius:9px;color:#94a3b8;font-size:11px;font-weight:800;text-decoration:none }
.ts-nav a { display:flex;align-items:center;justify-content:center;gap:6px;min-height:48px;border-radius:9px;color:#94a3b8;font-size:11px;font-weight:800;text-decoration:none }
.sh-nav a { display:flex;align-items:center;justify-content:center;gap:6px;min-height:48px;border-radius:9px;color:#94a3b8;font-size:11px;font-weight:800;text-decoration:none }
.et-nav a { display:flex;align-items:center;justify-content:center;gap:6px;min-height:48px;border-radius:9px;color:#94a3b8;font-size:11px;font-weight:800;text-decoration:none;transition:background .2s,color .2s }
.ra-nav a { display:flex;align-items:center;justify-content:center;gap:6px;min-height:44px;border-radius:9px;color:#9fb0c7;text-decoration:none;font-size:12px;font-weight:800 }
.pca-nav a span { display:grid;place-items:center;width:22px;height:22px;border:1px solid #31546d;border-radius:50% }
.ts-nav a span { display:grid;place-items:center;width:22px;height:22px;border:1px solid #31546d;border-radius:50% }
.sh-nav a span { display:grid;place-items:center;width:22px;height:22px;border:1px solid #455779;border-radius:50% }
.et-nav a span { display:grid;place-items:center;width:22px;height:22px;border:1px solid #455779;border-radius:50%;font-size:11px }
.ra-nav a span { display:grid;place-items:center;width:24px;height:24px;border:1px solid #3a5477;border-radius:50% }
.et-nav a:hover { background:#132342;color:#e2e8f0 }
.pca-nav a.current { background:#102b43;color:#bae6fd }
.ts-nav a.current { background:#102b43;color:#bae6fd }
.sh-nav a.current { background:#0c2a36;color:#7dd3fc }
.et-nav a.current { background:#0c2a36;color:#7dd3fc;border:1px solid #3b82f6 }
.ra-nav a.current { background:#0b3340;color:var(--mx-teal) }
.pca-nav a.done { background:#083a36;color:#99f6e4 }
.ts-nav a.done { background:#083a36;color:#99f6e4 }
.sh-nav a.done { background:#083a36;color:#99f6e4 }
.et-nav a.done { background:#083a36;color:#99f6e4 }
.ra-nav a.done { color:#86efac }
.pca-nav a.done span { border-color:#2dd4bf;background:#115e59 }
.ts-nav a.done span { border-color:#2dd4bf;background:#115e59 }
.sh-nav a.done span { border-color:#2dd4bf;background:#115e59 }
.et-nav a.done span { border-color:#2dd4bf;background:#115e59;color:#2dd4bf }
.ra-nav a.done span { border-color:var(--mx-good);background:#0b3126 }
.pca-skill-map,
.ts-skill-map,
.sh-skill-map,
.et-skill-map,
.ra-skill-map { margin:var(--mx-skill-map-margin);padding:var(--mx-skill-map-padding);border:var(--mx-skill-map-border);border-radius:var(--mx-skill-map-border-radius);background:var(--mx-skill-map-background) }
.pca-map-head,
.ts-map-head,
.sh-map-head,
.et-map-head,
.ra-map-head { display:flex;align-items:var(--mx-map-head-align-items);justify-content:space-between }
.pca-map-head span,
.ts-map-head span,
.sh-map-head span,
.et-map-head span { color:#67e8f9;font-size:10px;font-weight:900;letter-spacing:.12em;text-transform:uppercase }
.pca-map-head h2 { margin:3px 0 }
.ts-map-head h2 { margin:3px 0 }
.sh-map-head h2 { margin:3px 0 }
.et-map-head h2 { margin:3px 0 0;color:#fdfdfe;font-size:22px }
.ra-map-head h2 { margin:3px 0 }
.pca-map-head>strong { padding:7px 10px;border:1px solid #0e7490;border-radius:99px;background:#06363a;color:#99f6e4;font-size:12px }
.ts-map-head>strong { padding:7px 10px;border:1px solid #0e7490;border-radius:99px;background:#06363a;color:#99f6e4;font-size:12px }
.sh-map-head>strong { padding:7px 10px;border:1px solid #0e7490;border-radius:99px;background:#06363a;color:#99f6e4;font-size:12px }
.ra-map-head>strong { color:var(--ra-gold) }
.et-map-head > strong { padding:7px 12px;border:1px solid #0e7490;border-radius:99px;background:#06363a;color:#99f6e4;font-size:12px }
.pca-skill-grid,
.ts-skill-grid,
.sh-skill-grid,
.et-skill-grid,
.ra-skill-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:var(--mx-skill-grid-margin-top) }
.pca-skill-grid article { min-height:96px;padding:13px;border:1px solid #263a54;border-radius:12px;background:#101f34 }
.ts-skill-grid article { min-height:96px;padding:13px;border:1px solid #263a54;border-radius:12px;background:#101f34 }
.sh-skill-grid article { min-height:96px;padding:13px;border:1px solid #2a3d60;border-radius:12px;background:#101d35 }
.et-skill-grid article { min-height:96px;padding:13px;border:1px solid #2a3d60;border-radius:12px;background:#101d35 }
.ra-skill-grid article { min-height:92px }
.pca-skill-grid article>span { display:block;color:#7dd3fc;font-size:10px;font-weight:900 }
.ts-skill-grid article>span { display:block;color:#7dd3fc;font-size:10px;font-weight:900 }
.sh-skill-grid article>span { display:block;color:#7dd3fc;font-size:10px;font-weight:900 }
.ra-skill-grid article>span { color:var(--mx-teal);font-size:11px;font-weight:900 }
.et-skill-grid article > span { display:block;color:#7dd3fc;font-size:10px;font-weight:900 }
.pca-skill-grid strong { display:block;margin:6px 0;color:#f2f5f7;font-size:13px }
.ts-skill-grid strong { display:block;margin:6px 0;color:#f2f5f7;font-size:13px }
.sh-skill-grid strong { display:block;margin:6px 0;color:#f2f5f7;font-size:13px }
.et-skill-grid strong { display:block;margin:6px 0;color:#f2f5f7;font-size:13px;line-height:1.3 }
.pca-skill-grid small,
.ts-skill-grid small,
.sh-skill-grid small,
.et-skill-grid small { color:#94a3b8;font-size:11px } /* Label: AA on the dark panel */
.ra-skill-grid article strong,.ra-skill-grid article small { display:block }
.ra-skill-grid article strong { margin:7px 0;color:#e2e8f0;font-size:13px }
.ra-skill-grid article small { color:#71839d;font-size:11px }
.pca-skill-grid article.evidence { border-color:#0e7490;background:#0b2b3a }
.ts-skill-grid article.evidence { border-color:#0e7490;background:#0b2b3a }
.sh-skill-grid article.evidence { border-color:#0e7490;background:#0b2b3a }
.et-skill-grid article.evidence { border-color:#0e7490;background:#0b2b3a }
.ra-skill-grid article.evidence { border-color:#b58b35 }
.pca-skill-grid article.evidence small,
.ts-skill-grid article.evidence small,
.sh-skill-grid article.evidence small,
.et-skill-grid article.evidence small { color:#67e8f9 }
.pca-skill-grid article.demonstrated { border-color:#16a34a;background:#0a3128;box-shadow:inset 3px 0 #22c55e }
.ts-skill-grid article.demonstrated { border-color:#16a34a;background:#0a3128;box-shadow:inset 3px 0 #22c55e }
.sh-skill-grid article.demonstrated { border-color:#16a34a;background:#0a3128;box-shadow:inset 3px 0 #22c55e }
.et-skill-grid article.demonstrated { border-color:#16a34a;background:#0a3128;box-shadow:inset 3px 0 #22c55e }
.ra-skill-grid article.demonstrated { border-color:var(--mx-good);background:#0b2925 }
.pca-skill-grid article.demonstrated small,
.ts-skill-grid article.demonstrated small,
.sh-skill-grid article.demonstrated small,
.et-skill-grid article.demonstrated small,
.ra-skill-grid article.demonstrated small { color:#86efac }
.pca-stage { scroll-margin-top:88px;margin:26px 0;padding:clamp(20px,4vw,32px);border:1px solid #294b65;border-radius:22px;background:linear-gradient(155deg,#13233a,#0b1728);box-shadow:0 12px 30px #020617 }
.ts-stage { scroll-margin-top:88px;margin:26px 0;padding:clamp(20px,4vw,32px);border:1px solid #294b65;border-radius:22px;background:linear-gradient(155deg,#13233a,#0b1728);box-shadow:0 12px 30px #020617 }
.sh-stage { scroll-margin-top:88px;margin:26px 0;padding:clamp(20px,4vw,32px);border:1px solid #334b75;border-radius:22px;background:linear-gradient(155deg,#14223d,#0b1728);box-shadow:0 12px 30px #020617 }
.et-stage { scroll-margin-top:88px;margin:26px 0;padding:clamp(20px,4vw,32px);border:1px solid #334b75;border-radius:22px;background:linear-gradient(155deg,#14223d,#0b1728);box-shadow:0 12px 30px #020617 }
.ra-stage { scroll-margin-top:92px;margin:20px 0;padding:24px;border:1px solid var(--mx-line);border-radius:18px;background:linear-gradient(145deg,#0d1a2e,#091525) }
.pca-stage.completed { border-color:#0f766e;box-shadow:inset 4px 0 #2dd4bf,0 12px 30px #020617 }
.ts-stage.completed { border-color:#0f766e;box-shadow:inset 4px 0 #2dd4bf,0 12px 30px #020617 }
.sh-stage.completed { border-color:#0f766e;box-shadow:inset 4px 0 #2dd4bf,0 12px 30px #020617 }
.et-stage.completed { border-color:#0f766e;box-shadow:inset 4px 0 #2dd4bf,0 12px 30px #020617 }
.ra-stage.completed { border-color:#1e7459 }
.pca-stage-head { display:flex;justify-content:space-between;color:#67e8f9;font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase }
.ts-stage-head { display:flex;justify-content:space-between;color:#67e8f9;font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase }
.sh-stage-head { display:flex;justify-content:space-between;color:#67e8f9;font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase }
.et-stage-head { display:flex;justify-content:space-between;color:#67e8f9;font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase }
.ra-stage-head { display:flex;justify-content:space-between }
.pca-stage-head strong { color:#94a3b8 }
.ts-stage-head strong { color:#94a3b8 }
.sh-stage-head strong { color:#94a3b8 }
.et-stage-head strong { color:#94a3b8 }
.ra-stage-head strong { color:var(--mx-muted);font-size:12px }
.pca-stage>h2,
.ts-stage>h2,
.sh-stage>h2 { margin:8px 0 6px;color:#fdfdfe;font-size:clamp(25px,4.5vw,34px);line-height:1.08 }
.et-stage > h2 { margin:8px 0 6px;color:#fdfdfe;font-size:clamp(23px,4vw,32px);line-height:1.1 }
.ra-stage h2 { margin:9px 0;font-size:clamp(23px,3vw,35px) }
.pca-stage-intro { max-width:780px;color:#cbd5e1;font-size:15px;line-height:1.75 }
.ts-stage-intro { max-width:780px;color:#cbd5e1;font-size:15px;line-height:1.75 }
.sh-stage-intro { max-width:800px;color:#cbd5e1;font-size:15px;line-height:1.75 }
.et-stage-intro { max-width:800px;color:var(--mx-silver);font-size:15px;line-height:1.7 }
.ra-stage-intro { max-width:900px;color:#b9c6d8;line-height:1.72 }
.et-math-strip,
.ra-math-strip { display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:var(--mx-math-strip-margin) }
.et-math-strip div,
.ra-math-strip div { padding:13px;border:var(--mx-math-strip-border);border-radius:var(--mx-math-strip-border-radius);background:var(--mx-math-strip-background) }
/* Scoped to the label span, NOT every descendant. KaTeX renders a formula as
   nested <span>s, so a descendant selector here set display:block on every
   glyph group and stacked the formula vertically at 10px. The label is always
   `> div > span` with the math in the sibling <strong>. */
.ra-math-strip > div > span,.ra-math-strip > div > strong { display:block }
.et-math-strip > div > span { display:block;color:#7dd3fc;font-size:10px;font-weight:900;text-transform:uppercase }
.ra-math-strip span { color:var(--mx-blue);font-size:10px;font-weight:900;text-transform:uppercase }
.et-math-strip strong { display:block;margin-top:5px;color:#f8fafc;font-size:15px }
.ra-math-strip strong { margin-top:5px;font-size:12px }
.pca-stage .activity,
.ts-stage .activity,
.sh-stage .activity,
.et-stage .activity { margin-top:17px;background:#071522 }
.pca-build-stage { border-color:#0e7490;background:linear-gradient(155deg,#10283b,#08282a) }
.pca-master-stage { border-color:#6d5aac;background:linear-gradient(155deg,#171d3a,#102a31) }
.ts-verify-stage,
.sh-verify-stage,
.et-verify-stage { border-color:#0e7490;background:linear-gradient(155deg,#10283b,#08282a) }
.ts-defend-stage,
.sh-defend-stage,
.et-defend-stage { border-color:#6d5aac;background:linear-gradient(155deg,#171d3a,#102a31) }
.ra-lab { margin:16px 0 !important;padding:18px !important;border:1px solid #34506f !important;border-radius:15px !important;background:#081526 !important }
.ra-lab-head { display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px }
.ra-lab-head strong { display:block;margin-top:3px }
.ra-lab-head>b { padding:7px 10px;border-radius:99px;background:#142943;color:var(--mx-blue);font-size:11px;white-space:nowrap }
.ra-choice-row,.ra-node-grid,.ra-fix-options,.ra-audit-actions { display:flex;flex-wrap:wrap;gap:8px }
.ra-choice-row button,.ra-node-grid button,.ra-fix-options button,.ra-audit-actions button,.ra-pipeline button { min-height:44px;padding:9px 12px;border:1px solid #3b587d;border-radius:9px;background:var(--mx-panel2);color:#d6e0ec;font:inherit;font-size:12px;font-weight:750;cursor:pointer }
.ra-choice-row button:hover,.ra-node-grid button:hover,.ra-fix-options button:hover,.ra-pipeline button:hover { border-color:var(--mx-blue) }
.ra-course button.correct,.ra-course .correct { border-color:var(--mx-good) !important;background:#0b3126 !important;color:#bbf7d0 !important }
.ra-course button.incorrect,.ra-course .incorrect { border-color:var(--mx-bad) !important;background:#3a131b !important;color:#fecaca !important }
.ra-feedback { min-height:23px;margin:12px 0 0;color:#b9c6d8;font-size:12px }
.pca-continue { position:relative;width:100%;margin-top:14px;min-height:50px }
.ts-continue { position:relative;width:100%;min-height:50px;margin-top:14px }
.sh-continue { position:relative;width:100%;min-height:50px;margin-top:14px }
.et-continue { position:relative;width:100%;min-height:48px;margin-top:16px;font-size:14px }
.ra-continue { min-height:48px }
.pca-continue:disabled,
.ts-continue:disabled,
.sh-continue:disabled,
.et-continue:disabled,
.ra-continue:disabled { opacity:var(--mx-continue-opacity);cursor:not-allowed }
.pca-math-strip,
.ts-math-strip,
.sh-math-strip { display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:16px 0 }
.pca-math-strip div,
.ts-math-strip div,
.sh-math-strip div { padding:13px;border:var(--mx-math-strip-border-2);border-radius:12px;background:var(--mx-math-strip-background-2) }
.pca-math-strip > div > span,
.ts-math-strip > div > span,
.sh-math-strip > div > span { display:block;color:#7dd3fc;font-size:10px;font-weight:900;text-transform:uppercase }
.pca-math-strip strong,
.ts-math-strip strong,
.sh-math-strip strong { display:block;margin-top:5px;color:#f8fafc;font-size:16px }
.ts-model-strip { display:grid;grid-template-columns:auto auto 1fr;gap:12px;align-items:center;margin:15px 0;padding:13px;border-left:4px solid #38bdf8;border-radius:10px;background:#111c31 }
.ts-model-strip strong { color:#7dd3fc }
.ts-model-strip span { color:#f8fafc;font-size:18px }
.ts-model-strip small { color:#94a3b8 }
.sh-architecture { display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:15px 0;padding:13px;border:1px solid #25627a;border-radius:12px;background:#0c1e35 }
.sh-architecture span { padding:7px 10px;border-radius:8px;background:#0c2a36;color:#a5f3fc;font-size:12px;font-weight:800 }
.sh-architecture b { color:#2dd4bf }
.pca-lab,
.ts-lab,
.sh-lab,
.et-lab { position:relative;overflow:hidden;padding:18px !important;border:var(--mx-lab-border) !important;border-radius:18px !important }
.pca-lab-head,
.ts-lab-head,
.sh-lab-head,
.et-lab-head { display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px }
/* Scoped to the label span, NOT every descendant. KaTeX renders a formula as
   nested <span>s, so a descendant selector here set display:block on every
   glyph group and stacked the formula vertically at 10px. The label is always
   `> div > span` with the math in the sibling <strong>. */
.pca-lab-head > div > span,
.ts-lab-head > div > span,
.sh-lab-head > div > span,
.et-lab-head > div > span { display:block;color:var(--mx-lab-head-color);font-size:10px;font-weight:900;letter-spacing:.1em;text-transform:uppercase }
.pca-lab-head strong,
.ts-lab-head strong,
.sh-lab-head strong,
.et-lab-head strong { display:block;margin-top:4px;color:#f8fafc;font-size:15px }
.pca-lab-head>b,
.ts-lab-head>b,
.sh-lab-head>b { padding:7px 10px;border:var(--mx-lab-head-border);border-radius:99px;background:var(--mx-lab-head-background);color:var(--mx-lab-head-color-2);font-size:11px;white-space:nowrap }
.pca-vector-layout,.pca-scale-layout,.pca-rotate-layout { display:grid;grid-template-columns:minmax(0,1.55fr) minmax(230px,.85fr);gap:16px;align-items:center }
.ts-lab-layout,.ts-diagnostic-layout { display:grid;grid-template-columns:minmax(0,1.55fr) minmax(230px,.85fr);gap:16px;align-items:center }
.pca-lab svg,
.ts-lab svg { display:block;width:100%;height:auto;border-radius:14px }
.pca-control-panel,
.ts-control-panel { display:grid;gap:var(--mx-control-panel-gap) }
.pca-control-panel label,
.ts-control-panel label { display:grid;gap:7px;color:#cbd5e1;font-size:12px;font-weight:800 }
.pca-control-panel output,
.ts-control-panel output { color:#2dd4bf }
.pca-control-panel input[type="range"],
.ts-control-panel input[type="range"] { width:100%;accent-color:#2dd4bf }
.ts-control-panel>p { margin:0;color:#94a3b8;font-size:12px;line-height:1.55 }
.pca-live-math,
.ts-live-math { display:grid;gap:5px;padding:12px;border-left:3px solid #38bdf8;border-radius:8px;background:#111c31;color:#e2e8f0;font-size:13px }
/* :not(.katex) because KaTeX's root IS a direct-child span here. */
.pca-live-math > span:not(.katex),
.ts-live-math > span:not(.katex) { display:block;color:#94a3b8 }
.pca-control-panel p { margin:0;color:#94a3b8;font-size:12px;line-height:1.55 }
.pca-toggle { min-height:45px;padding:10px 12px;border:1px solid #0e7490;border-radius:10px;background:#0b2734;color:#bae6fd;font:inherit;font-weight:800;cursor:pointer }
.pca-toggle[aria-pressed="true"] { border-color:#2dd4bf;background:#064e4b;color:#f0fdfa }
.pca-loading-bars { display:grid;gap:8px }
.pca-loading-bars>div { display:grid;grid-template-columns:1fr auto;gap:3px 8px;color:#cbd5e1;font-size:11px }
.pca-loading-bars i { grid-column:1;display:block;height:8px;overflow:hidden;border-radius:99px;background:#1e293b }
.pca-loading-bars i b { display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#38bdf8,#2dd4bf);transition:width .25s }
.pca-loading-bars output { grid-column:2;grid-row:1/3;align-self:center;color:#f8fafc }
.pca-variance-meter { height:13px;overflow:hidden;border-radius:99px;background:#1e293b }
.pca-variance-meter span { display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#0ea5e9,#2dd4bf,#fbbf24);transition:width .2s }
.pca-detective-q { font-size:17px;font-weight:800 }
.pca-detective-choices,.pca-choice-row { display:grid;gap:8px }
.pca-detective-choices button,.pca-choice-row button { min-height:48px;padding:11px 13px;border:1px solid #31546d;border-radius:10px;background:#101f34;color:#e2e8f0;font:inherit;text-align:left;cursor:pointer }
.pca-detective-choices button:hover,.pca-choice-row button:hover { border-color:#7dd3fc }
.pca-detective-choices button.correct,.pca-choice-row button.correct { border-color:#22c55e;background:#0a3128;color:#bbf7d0 }
.pca-detective-choices button.incorrect,.pca-choice-row button.incorrect { border-color:#dc2626;background:#3f121b }
.ts-lock-answer { min-height:45px;padding:10px 12px;border:1px solid #0e7490;border-radius:10px;background:#0b2734;color:#bae6fd;font:inherit;font-weight:800;cursor:pointer }
.et-lab-head > b { padding:7px 11px;border:1px solid #3f5f8d;border-radius:99px;background:#13243d;color:#7dd3fc;font-size:11px;white-space:nowrap }
.pca-feedback { min-height:24px;margin:10px 0 0;color:#bae6fd;font-size:12px }
.ts-feedback { min-height:24px;margin:0;color:#bae6fd !important;font-size:12px }
.sh-feedback { min-height:24px;margin:10px 0 0;color:#bae6fd !important;font-size:12px }
.et-feedback { min-height:24px;margin:12px 0 0;color:#bae6fd !important;font-size:13px;line-height:1.5 }
.ts-component-key { display:flex;flex-wrap:wrap;gap:8px }
.ts-component-key span { display:flex;align-items:center;gap:5px;color:#94a3b8;font-size:10px }
.ts-component-key i { display:inline-block;width:14px;height:3px;border-radius:99px }
.ts-component-key .trend { background:#7dd3fc }
.ts-component-key .season { background:#a78bfa }
.ts-component-key .observed { background:#2dd4bf }
.ts-metric-grid { display:grid;grid-template-columns:1fr 1fr;gap:8px }
.ts-metric-grid div { padding:10px;border:1px solid #263a54;border-radius:9px;background:#101f34 }
.ts-metric-grid span { display:block;color:#94a3b8;font-size:10px }
.ts-metric-grid strong { display:block;margin-top:3px;color:#f8fafc;font-size:17px }
.ts-window-choices,.ts-diagnostic-choices,.ts-choice-row { display:grid;gap:8px }
.ts-window-choices { grid-template-columns:repeat(3,1fr) }
.ts-window-choices button,.ts-diagnostic-choices button,.ts-choice-row button { min-height:46px;padding:10px 12px;border:1px solid #31546d;border-radius:10px;background:#101f34;color:#e2e8f0;font:inherit;text-align:left;cursor:pointer }
.ts-window-choices button { text-align:center }
.ts-window-choices button:hover,.ts-diagnostic-choices button:hover,.ts-choice-row button:hover { border-color:#7dd3fc }
.ts-window-choices button.correct,.ts-diagnostic-choices button.correct,.ts-choice-row button.correct { border-color:#22c55e;background:#0a3128;color:#bbf7d0 }
.ts-window-choices button.incorrect,.ts-diagnostic-choices button.incorrect,.ts-choice-row button.incorrect { border-color:#dc2626;background:#3f121b }
.pca-detective-win,
.ts-detective-win { padding:var(--mx-detective-win-padding);text-align:center }
.pca-detective-win span,
.ts-detective-win span { display:grid;place-items:center;width:78px;height:78px;margin:auto;border:2px solid #2dd4bf;border-radius:50%;background:#083a36;color:#f0fdfa;font-size:21px;font-weight:900;box-shadow:0 0 34px #0e7490 }
.pca-detective-win strong,
.ts-detective-win strong { display:block;margin:14px 0 5px;color:#f8fafc;font-size:20px }
.sh-prompt { color:#cbd5e1;font-size:13px;font-weight:800 }
.et-prompt { margin:12px 0 8px;color:#cbd5e1;font-size:13px;font-weight:800 }
.sh-choice-row,.sh-debug-choices { display:grid;gap:8px }
.sh-choice-row button,.sh-debug-choices button { min-height:46px;padding:10px 12px;border:1px solid #3c5279;border-radius:10px;background:#101f38;color:#e2e8f0;font:inherit;text-align:left;cursor:pointer }
.sh-choice-row button:hover,.sh-debug-choices button:hover { border-color:#7dd3fc }
.sh-choice-row button.correct,.sh-debug-choices button.correct { border-color:#22c55e;background:#0a3128;color:#bbf7d0 }
.sh-choice-row button.incorrect,.sh-debug-choices button.incorrect,.sh-react-palette button.incorrect { border-color:#dc2626;background:#3f121b }
.sh-kpi-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:9px }
.sh-kpi-grid article { padding:13px;border:1px solid #2e456c;border-radius:12px;background:#101f38 }
.sh-kpi-grid span { color:#94a3b8;font-size:11px }
.sh-kpi-grid strong { display:block;margin:4px 0;color:#f8fafc;font-size:24px }
.sh-kpi-grid small { display:block;color:#7dd3fc;font-size:10px }
.sh-kpi-grid i,.sh-dashboard-bars i { display:block;height:6px;margin-top:9px;overflow:hidden;border-radius:99px;background:#223654 }
.sh-kpi-grid em,.sh-dashboard-bars em { display:block;height:100%;border-radius:inherit;background:#2dd4bf }
.sh-kpi-compare { display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:10px 0 }
.sh-kpi-compare div { padding:12px;border:1px solid #25627a;border-radius:10px;background:#0c1e35 }
.sh-kpi-compare span { display:block;color:#7dd3fc;font-size:10px }
.sh-kpi-compare strong { display:block;margin-top:3px;color:#f8fafc;font-size:20px }
.sh-react-workspace { display:grid;grid-template-columns:1fr 1.2fr;gap:14px }
.sh-react-palette { display:grid;gap:8px }
.sh-react-palette button { display:grid;gap:3px;min-height:58px;padding:10px;border:1px solid #3c5279;border-radius:10px;background:#101f38;color:#e2e8f0;text-align:left;cursor:pointer }
.sh-react-palette button span { color:#7dd3fc;font-size:10px;font-weight:900;text-transform:uppercase }
.sh-react-palette code { overflow-wrap:anywhere }
.sh-react-palette button.selected { border-color:#22c55e;background:#0a3128 }
.sh-react-chain { display:flex;flex-direction:column;justify-content:center;gap:7px;min-height:220px;padding:14px;border:1px dashed #4f6290;border-radius:12px;background:#0b172a }
.sh-react-chain>div { display:flex;align-items:center;gap:8px;padding:9px;border-radius:9px;background:#172b4a }
.sh-react-chain>div+div:before { content:"↓";position:absolute;margin-top:-34px;margin-left:7px;color:#2dd4bf }
.sh-react-chain span { display:grid;place-items:center;width:23px;height:23px;border-radius:50%;background:#0e7490;color:#ecfeff;font-size:10px;font-weight:900 }
.sh-react-chain code { color:#e0f2fe;font-size:11px }
.sh-react-chain p { color:#94a3b8;text-align:center } /* Label: AA on the dark panel */
.sh-dashboard { display:grid;grid-template-columns:210px 1fr;gap:14px }
.sh-dashboard aside { display:grid;align-content:start;gap:12px;padding:13px;border:1px solid #2e456c;border-radius:12px;background:#0d1a31 }
.sh-dashboard label { display:grid;gap:5px;color:#cbd5e1;font-size:11px;font-weight:800 }
.sh-dashboard select { min-height:42px;padding:8px;border:1px solid #3c5279;border-radius:8px;background:#101f38;color:#f8fafc }
.sh-dashboard aside button { min-height:46px;padding:9px;border:1px solid #0e7490;border-radius:9px;background:#0b2734;color:#bae6fd;font-weight:800;cursor:pointer }
.sh-dashboard-main { display:grid;gap:10px }
.sh-dashboard-tiles { display:grid;grid-template-columns:1fr 1fr;gap:9px }
.sh-dashboard-tiles article { padding:14px;border:1px solid #3c5279;border-radius:12px;background:#101f38 }
.sh-dashboard-tiles span { color:#94a3b8;font-size:10px;text-transform:uppercase }
.sh-dashboard-tiles strong { display:block;margin:5px 0;color:#f8fafc;font-size:25px }
.sh-dashboard-tiles strong.risk { color:#fb7185 }
.sh-dashboard-tiles strong.safe { color:#5eead4 }
.sh-dashboard-tiles small { color:#7dd3fc;font-size:10px }
.sh-dashboard-bars { display:grid;gap:8px;padding:12px;border:1px solid #2e456c;border-radius:12px;background:#0b172a }
.sh-dashboard-bars div { display:grid;grid-template-columns:130px 1fr 38px;gap:8px;align-items:center }
.sh-dashboard-bars span,.sh-dashboard-bars b { color:#94a3b8;font-size:10px }
.sh-dashboard-bars i { margin:0 }
.sh-bug-code,.sh-blueprint pre { overflow:auto;padding:14px;border:1px solid #334b75;border-radius:11px;background:#050d18;color:#cbd5e1;font-size:12px;line-height:1.55 }
.sh-debug-choices code { white-space:normal;overflow-wrap:anywhere }
.sh-debug-win { padding:26px;text-align:center }
.sh-debug-win span { display:grid;place-items:center;width:78px;height:78px;margin:auto;border:2px solid #2dd4bf;border-radius:50%;background:#083a36;color:#f0fdfa;font-size:21px;font-weight:900;box-shadow:0 0 34px #0e7490 }
.sh-debug-win strong { display:block;margin:14px 0 5px;color:#f8fafc;font-size:20px }
.sh-blueprint { margin-top:14px;padding:15px;border:1px solid #25627a;border-radius:14px;background:#0d1a2e }
.sh-blueprint>div { display:flex;flex-direction:column }
.sh-blueprint>div span { color:#7dd3fc;font-size:10px;font-weight:900;text-transform:uppercase }
.sh-blueprint>div strong { color:#f8fafc }
.sh-blueprint>button { min-height:44px;margin:10px 0;padding:9px 12px;border:1px solid #0ea5e9;border-radius:9px;background:#0c2a36;color:#e0f2fe;font-weight:800;cursor:pointer }
.sh-blueprint pre { max-height:340px;white-space:pre }
.et-choice-row { display:grid;gap:8px }
.et-choice-row button { min-height:46px;padding:10px 14px;border:1px solid #3c5279;border-radius:10px;background:#101f38;color:#e2e8f0;font:inherit;font-size:13px;text-align:left;cursor:pointer;transition:border-color .2s,background .2s }
.et-choice-row button:hover { border-color:#7dd3fc }
.et-choice-row button.correct { border-color:#22c55e;background:#0a3128;color:#bbf7d0 }
.et-choice-row button.incorrect { border-color:#dc2626;background:#3f121b;color:#fca5a5 }
.et-toggle-bar { display:flex;gap:8px;margin-bottom:12px }
.et-toggle-btn { min-height:44px;padding:8px 14px;border:1px solid #3c5279;border-radius:8px;background:#101f38;color:#cbd5e1;font:inherit;font-size:12px;font-weight:700;cursor:pointer }
.et-toggle-btn.active { border-color:var(--mx-teal);background:#0c3343;color:#2dd4bf }
.et-fairness-grid { display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:12px 0 }
.et-kpi-card { padding:14px;border:1px solid #2e456c;border-radius:12px;background:#101f38 }
.et-kpi-card header { display:flex;justify-content:space-between;margin-bottom:6px;color:#94a3b8;font-size:11px }
.et-kpi-card strong { display:block;color:#f8fafc;font-size:24px }
.et-kpi-card small { display:block;margin-top:4px;color:#7dd3fc;font-size:11px }
.et-kpi-card i { display:block;height:6px;margin-top:8px;overflow:hidden;border-radius:99px;background:#223654 }
.et-kpi-card em { display:block;height:100%;border-radius:inherit;background:var(--mx-teal) }
.et-detective-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:14px 0 }
.et-detective-card { display:flex;flex-direction:column;padding:14px;border:1px solid #2e456c;border-radius:12px;background:#0d1a31 }
.et-detective-card h3 { margin:0 0 6px;color:#f8fafc;font-size:14px }
.et-detective-card p { margin:0 0 10px;color:#94a3b8;font-size:11px }
.et-chart-preview { height:130px;margin-bottom:12px;padding:10px;border:1px solid #233754;border-radius:8px;background:#07121f;display:flex;flex-direction:column;justify-content:flex-end }
.et-chart-svg { width:100%;height:100% }
.et-tag-options { display:grid;gap:6px;margin-top:auto }
.et-tag-btn { min-height:44px;padding:8px 10px;border:1px solid #3c5279;border-radius:8px;background:#101f38;color:#cbd5e1;font:inherit;font-size:11px;text-align:left;cursor:pointer }
.et-tag-btn:hover { border-color:#7dd3fc }
.et-tag-btn.selected { border-color:#22c55e;background:#0a3128;color:#bbf7d0 }
.et-tag-btn.incorrect { border-color:#dc2626;background:#3f121b;color:#fca5a5 }
.et-privacy-sim { display:grid;grid-template-columns:220px 1fr;gap:14px }
.et-query-panel { display:grid;align-content:start;gap:12px;padding:14px;border:1px solid #2e456c;border-radius:12px;background:#0d1a31 }
.et-query-panel label { display:grid;gap:5px;color:#cbd5e1;font-size:11px;font-weight:800 }
.et-query-panel select { min-height:42px;padding:8px;border:1px solid #3c5279;border-radius:8px;background:#101f38;color:#f8fafc }
.et-defense-box { padding:10px;border:1px dashed #40577d;border-radius:8px;background:#091526 }
.et-defense-box label { display:flex;align-items:center;gap:8px;color:#bae6fd;font-size:11px;cursor:pointer }
.et-defense-box input[type="checkbox"] { width:18px;height:18px;accent-color:#2dd4bf }
.et-sim-output { display:grid;gap:10px }
.et-warning-banner { padding:10px 14px;border:1px solid #3c5279;border-radius:8px;background:#101f38;color:#cbd5e1;font-size:12px;font-weight:700 }
.et-warning-banner.hazard { border-color:#ef4444;background:#3c1218;color:#fca5a5 }
.et-warning-banner.protected { border-color:#22c55e;background:#092f23;color:#86efac }
.et-data-table { width:100%;border-collapse:collapse;font-size:12px }
.et-data-table th, .et-data-table td { padding:8px 10px;border:1px solid #233754;text-align:left }
.et-data-table th { background:#0f223a;color:#7dd3fc;font-size:11px }
.et-data-table td { background:#0b172a;color:#e2e8f0 }
.et-data-table tr.risk-row td { background:#31131a;color:#fca5a5 }
.et-quest-board { display:grid;gap:12px;margin-bottom:18px }
.et-peer-card { padding:14px;border:1px solid #2e456c;border-radius:12px;background:#0d1a31 }
.et-peer-header { display:flex;align-items:center;justify-content:space-between;margin-bottom:8px }
.et-peer-handle { color:var(--mx-teal);font-size:12px;font-weight:800 }
.et-peer-tag { padding:3px 8px;border-radius:99px;background:#1e2e4a;color:#94a3b8;font-size:10px }
.et-peer-body { margin-bottom:10px;color:#cbd5e1;font-size:12px }
.et-reaction-bar { display:flex;flex-wrap:wrap;gap:6px }
.et-reaction-btn { min-height:44px;padding:6px 12px;border:1px solid #3c5279;border-radius:8px;background:#101f38;color:#cbd5e1;font:inherit;font-size:11px;cursor:pointer }
.et-reaction-btn:hover { border-color:#7dd3fc }
.et-reaction-btn.reacted { border-color:#2dd4bf;background:#0c3343;color:#2dd4bf }
.et-redesign-panel { padding:16px;border:1px solid #3c5279;border-radius:14px;background:#0b172a }
.et-redesign-controls { display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:14px }
.et-redesign-controls label { display:flex;align-items:center;gap:8px;min-height:44px;padding:8px 10px;border:1px solid #233754;border-radius:8px;background:#0d1a31;color:#e2e8f0;font-size:12px;cursor:pointer }
.et-redesign-controls input[type="checkbox"] { width:18px;height:18px;accent-color:#2dd4bf }
.et-redesign-preview { padding:14px;border:1px solid #2e456c;border-radius:10px;background:#07121f }
.ra-lineage { display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:12px 0 }
.ra-lineage>div { min-height:82px;padding:10px;border:1px dashed #3c5877;border-radius:10px;background:#091727 }
.ra-lineage span { display:block;color:var(--mx-teal);font-size:10px;font-weight:900 }
.ra-lineage strong { display:block;margin-top:8px;font-size:12px }
.ra-manifest { display:grid;grid-template-columns:repeat(2,1fr);gap:7px;margin-top:12px }
.ra-manifest label { display:flex;align-items:center;gap:8px;min-height:44px;padding:8px;border:1px solid #29405f;border-radius:9px;color:#cbd5e1;font-size:12px }
.ra-manifest input { width:18px;height:18px;accent-color:var(--mx-teal) }
.ra-debug-case { margin:10px 0;padding:14px;border:1px solid #29405f;border-radius:12px;background:#0c1b30 }
.ra-debug-case pre,.ra-manifest-code { overflow:auto;padding:11px;border-radius:8px;background:#050d18;color:#bae6fd;font-size:11px }
.ra-debug-case h3 { margin:0 0 7px;font-size:14px }
.ra-pipeline { display:grid;grid-template-columns:repeat(5,1fr);gap:8px }
.ra-pipeline button { display:flex;align-items:center;justify-content:center;text-align:center }
.ra-chain { display:flex;flex-wrap:wrap;gap:7px;min-height:56px;margin:12px 0;padding:10px;border:1px dashed #3b587d;border-radius:10px }
.ra-chain span { padding:7px 10px;border-radius:8px;background:#123044;color:var(--mx-teal);font-size:11px }
.ra-hash-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:12px }
.ra-hash-card { padding:12px;border:1px solid #29405f;border-radius:10px;background:#0b1a2d }
.ra-hash-card span,.ra-hash-card code { display:block }
.ra-hash-card span { color:var(--mx-muted);font-size:10px }
.ra-hash-card code { margin-top:5px;color:var(--mx-blue);font-size:11px }
.ra-audit-grid { display:grid;grid-template-columns:1fr 1fr;gap:12px }
.ra-audit-record,.ra-audit-log { padding:14px;border:1px solid #29405f;border-radius:12px;background:#0b192b }
.ra-audit-record h3,.ra-audit-log h3 { margin-top:0;font-size:14px }
.ra-audit-step { margin:8px 0;padding:9px;border-left:3px solid #365474;background:#0f2036;color:#cbd5e1;font-size:12px }
.ra-audit-log li { margin:7px 0;color:#b9c6d8;font-size:12px }
.ra-spec-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:10px }
.ra-spec-card { padding:14px;border:1px solid #29405f;border-radius:11px;background:#0b192b }
.ra-spec-card strong { display:block;font-size:25px }
.ra-spec-card span { color:var(--mx-muted);font-size:11px }
.ra-spec-card i { display:block;height:7px;margin-top:9px;border-radius:99px;background:#1c304a }
.ra-spec-card em { display:block;height:100%;border-radius:99px;background:var(--mx-teal) }
.ra-license { margin-top:12px;padding:13px;border:1px solid #b58b35;border-radius:10px;background:#2a2212;color:#fde68a;font-size:12px }
.pca-r-check,
.ts-r-check,
.sh-r-check,
.et-r-check,
.ra-r-check { margin-top:var(--mx-r-check-margin-top);padding:var(--mx-r-check-padding);border:var(--mx-r-check-border);border-radius:var(--mx-r-check-border-radius);background:var(--mx-r-check-background) }
.pca-r-check p { font-size:13px }
.ts-r-check p { font-size:13px }
.sh-r-check p { font-size:13px }
.et-r-check p { margin:0 0 10px;color:#f8fafc;font-size:13px }
.ra-r-check>p { margin-top:0 }
.pca-finish { display:flex;flex-direction:column;gap:3px;margin-top:18px;padding:16px;border:1px solid #0f766e;border-radius:12px;background:#062c26;color:#ccfbf1 }
.ts-finish { display:flex;flex-direction:column;gap:3px;margin-top:18px;padding:16px;border:1px solid #0f766e;border-radius:12px;background:#062c26;color:#ccfbf1 }
.sh-finish { display:flex;flex-direction:column;gap:3px;margin-top:18px;padding:16px;border:1px solid #0f766e;border-radius:12px;background:#062c26;color:#ccfbf1 }
.ra-finish { display:flex;gap:10px;margin-top:14px;padding:13px;border:1px solid #2f684f;border-radius:10px;background:#0b2925 }
.pca-finish span,
.ts-finish span,
.sh-finish span,
.ra-finish span { color:var(--mx-finish-color);font-size:12px }
.pca-toast { position:fixed;left:50%;bottom:24px;z-index:100;transform:translate(-50%,20px);max-width:calc(100vw - 28px);padding:11px 16px;border:1px solid #2dd4bf;border-radius:99px;background:#062c2b;color:#ccfbf1;font-size:12px;font-weight:900;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s }
.ts-toast { position:fixed;left:50%;bottom:24px;z-index:100;transform:translate(-50%,20px);max-width:calc(100vw - 28px);padding:11px 16px;border:1px solid #2dd4bf;border-radius:99px;background:#062c2b;color:#ccfbf1;font-size:12px;font-weight:900;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s }
.sh-toast { position:fixed;left:50%;bottom:24px;z-index:100;transform:translate(-50%,20px);max-width:calc(100vw - 28px);padding:11px 16px;border:1px solid #2dd4bf;border-radius:99px;background:#062c2b;color:#ccfbf1;font-size:12px;font-weight:900;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s }
.et-toast { position:fixed;bottom:24px;right:24px;z-index:100;padding:12px 20px;border:1px solid #2dd4bf;border-radius:12px;background:#062b32;color:#2dd4bf;font-size:13px;font-weight:800;box-shadow:0 10px 30px rgba(0,0,0,.6);opacity:0;transform:translateY(20px);pointer-events:none;transition:opacity .3s,transform .3s }
.ra-toast { position:fixed;right:22px;bottom:22px;z-index:100;padding:12px 18px;border:1px solid var(--mx-teal);border-radius:11px;background:#062b32;color:var(--mx-teal);font-weight:800;opacity:0;transform:translateY(12px);pointer-events:none;transition:.2s }
.pca-toast.show,
.ts-toast.show,
.sh-toast.show,
.et-toast.show,
.ra-toast.show { transform:var(--mx-toast-transform);opacity:1 }
.pca-spark { position:absolute;left:50%;bottom:8px;width:7px;height:7px;border-radius:2px;background:#2dd4bf;animation:pca-spark .8s ease-out var(--d) forwards;pointer-events:none }
.ts-spark { position:absolute;left:50%;bottom:8px;width:7px;height:7px;border-radius:2px;background:#2dd4bf;animation:ts-spark .8s ease-out var(--d) forwards;pointer-events:none }
.sh-spark { position:absolute;left:50%;bottom:8px;width:7px;height:7px;border-radius:2px;background:#2dd4bf;animation:sh-spark .8s ease-out var(--d) forwards;pointer-events:none }
.pca-spark:nth-child(3n),
.ts-spark:nth-child(3n),
.sh-spark:nth-child(3n) { background:#fbbf24 }
.pca-spark:nth-child(3n+1),
.ts-spark:nth-child(3n+1),
.sh-spark:nth-child(3n+1) { background:#38bdf8 }
@keyframes pca-spark { to{transform:translate(var(--x),var(--y)) rotate(280deg);opacity:0} }
@keyframes ts-spark { to{transform:translate(var(--x),var(--y)) rotate(280deg);opacity:0} }
@keyframes sh-spark { to{transform:translate(var(--x),var(--y)) rotate(280deg);opacity:0} }
@media(max-width:760px) {
  .pca-hero-grid { grid-template-columns:1fr 1fr }
  .pca-nav { overflow-x:auto;grid-template-columns:repeat(6,minmax(88px,1fr)) }
  .pca-nav a { flex-direction:column;gap:2px }
  .pca-skill-grid { grid-template-columns:1fr 1fr }
  .pca-vector-layout,.pca-scale-layout,.pca-rotate-layout { grid-template-columns:1fr }
  .pca-math-strip { grid-template-columns:1fr }
  .pca-lab-head { align-items:flex-start }
  .pca-lab-head>b { white-space:normal }
}
@media(max-width:460px) {
  .pca-hero { padding:22px 18px }
  .pca-hero-grid div { min-height:76px }
  .pca-skill-grid { grid-template-columns:1fr }
  .pca-stage { padding:20px 15px }
  .pca-lab { padding:13px !important }
  .pca-lab-head { display:grid }
}
@media(prefers-reduced-motion:reduce) {
  .pca-progress-track span,.pca-loading-bars i b,.pca-variance-meter span,.pca-toast { transition:none }
  .pca-spark { display:none }
}
/* Module 10: 320px-first PCA mission contract. */
.m10-table-scroll { width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch }
@media(max-width:480px) {
  body.dv-module-10 { padding:16px 12px 32px }
  .dv-module-10 main.wrap { width:100%;max-width:none;min-width:0 }
  .dv-module-10 .pca-hero { margin:12px 0 16px;padding:18px 14px;border-radius:16px }
  .dv-module-10 .pca-hero h1 { font-size:clamp(24px,7.75vw,28px);line-height:1.08;letter-spacing:-.025em }
  .dv-module-10 .pca-hero .lead { font-size:15.5px;line-height:1.6 }
  .dv-module-10 .pca-kicker { overflow-wrap:anywhere;line-height:1.5 }
  .dv-module-10 .pca-hero-grid { gap:7px;margin:18px 0 16px }
  .dv-module-10 .pca-hero-grid div { min-height:72px;padding:10px }
  .dv-module-10 .pca-progress { padding:12px }
  .dv-module-10 .pca-nav { display:flex;gap:6px;margin:14px 0;padding:6px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch }
  .dv-module-10 .pca-nav a { flex:0 0 76px;min-width:76px;min-height:52px;padding:5px;scroll-snap-align:start }
  .dv-module-10 .pca-skill-map { padding:16px 12px;border-radius:16px }
  .dv-module-10 .pca-skill-grid { grid-template-columns:1fr;gap:8px }
  .dv-module-10 .pca-skill-grid article { min-height:0;padding:12px }
  .dv-module-10 .pca-stage { margin:18px 0;padding:16px 12px;border-radius:16px;scroll-margin-top:82px }
  .dv-module-10 .pca-stage-head { display:grid;gap:4px;line-height:1.45 }
  .dv-module-10 .pca-stage>h2 { font-size:22px;line-height:1.18 }
  .dv-module-10 .pca-stage-intro { font-size:14.5px;line-height:1.65 }
  .dv-module-10 .pca-stage .activity,.dv-module-10 .pca-lab { min-width:0;padding:12px!important;border-radius:13px }
  .dv-module-10 .pca-vector-layout,.dv-module-10 .pca-scale-layout,.dv-module-10 .pca-rotate-layout { gap:10px }
  .dv-module-10 .pca-control-panel,.dv-module-10 .pca-control-panel label,.dv-module-10 .pca-live-math,.dv-module-10 [data-vector-plot],.dv-module-10 [data-scale-plot],.dv-module-10 [data-rotate-plot] { min-width:0;max-width:100% }
  .dv-module-10 svg { display:block;width:100%;max-width:100%;height:auto }
  .dv-module-10 pre,.dv-module-10 code { max-width:100% }
  .dv-module-10 pre { overflow-x:auto;-webkit-overflow-scrolling:touch }
  .dv-module-10 button,.dv-module-10 .btn,.dv-module-10 summary,.dv-module-10 select { min-height:44px }
  .dv-module-10 input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),.dv-module-10 select,.dv-module-10 textarea { width:100%;max-width:100%;min-height:44px;font-size:16px;box-sizing:border-box }
  .dv-module-10 .pca-choice-row,.dv-module-10 .pca-detective-choices { grid-template-columns:1fr }
  .dv-module-10 .weekly-capstone-card { padding:14px 12px }
  .dv-module-10 .wc-head,.dv-module-10 .wc-actions,.dv-module-10 .module-nav { display:grid;grid-template-columns:1fr;align-items:stretch }
  .dv-module-10 .wc-actions .btn,.dv-module-10 .module-nav a { width:100%;text-align:center }
  .dv-module-10 .m10-table-scroll { margin-inline:0;padding-bottom:4px }
  .dv-module-10 .m10-table-scroll table { width:max-content;min-width:430px;max-width:none }
}
@media(max-width:760px) {
  .ts-hero-grid { grid-template-columns:1fr 1fr }
  .ts-nav { overflow-x:auto;grid-template-columns:repeat(6,minmax(88px,1fr)) }
  .ts-nav a { flex-direction:column;gap:2px }
  .ts-skill-grid { grid-template-columns:1fr 1fr }
  .ts-lab-layout,.ts-diagnostic-layout { grid-template-columns:1fr }
  .ts-math-strip { grid-template-columns:1fr }
  .ts-model-strip { grid-template-columns:1fr }
  .ts-lab-head { align-items:flex-start }
  .ts-lab-head>b { white-space:normal }
}
@media(max-width:460px) {
  .ts-hero { padding:22px 18px }
  .ts-hero-grid div { min-height:76px }
  .ts-skill-grid { grid-template-columns:1fr }
  .ts-stage { padding:20px 15px }
  .ts-lab { padding:13px !important }
  .ts-lab-head { display:grid }
  .ts-window-choices { grid-template-columns:1fr }
}
/* Module 11: 320px-first time-series mission contract. */
.m11-table-scroll { width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch }
@media(max-width:480px) {
  body.dv-module-11 { padding:16px 12px 32px }
  .dv-module-11 main.wrap { width:100%;max-width:none;min-width:0 }
  .dv-module-11 .ts-hero { margin:12px 0 16px;padding:18px 14px;border-radius:16px }
  .dv-module-11 .ts-hero h1 { font-size:clamp(24px,7.75vw,28px);line-height:1.08;letter-spacing:-.025em }
  .dv-module-11 .ts-hero .lead { font-size:15.5px;line-height:1.6 }
  .dv-module-11 .ts-kicker { overflow-wrap:anywhere;line-height:1.5 }
  .dv-module-11 .ts-hero-grid { gap:7px;margin:18px 0 16px }
  .dv-module-11 .ts-hero-grid div { min-height:72px;padding:10px }
  .dv-module-11 .ts-progress { padding:12px }
  .dv-module-11 .ts-nav { display:flex;gap:6px;margin:14px 0;padding:6px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch }
  .dv-module-11 .ts-nav a { flex:0 0 76px;min-width:76px;min-height:52px;padding:5px;scroll-snap-align:start }
  .dv-module-11 .ts-skill-map { padding:16px 12px;border-radius:16px }
  .dv-module-11 .ts-skill-grid { grid-template-columns:1fr;gap:8px }
  .dv-module-11 .ts-skill-grid article { min-height:0;padding:12px }
  .dv-module-11 .ts-stage { margin:18px 0;padding:16px 12px;border-radius:16px;scroll-margin-top:82px }
  .dv-module-11 .ts-stage-head { display:grid;gap:4px;line-height:1.45 }
  .dv-module-11 .ts-stage>h2 { font-size:22px;line-height:1.18 }
  .dv-module-11 .ts-stage-intro { font-size:14.5px;line-height:1.65 }
  .dv-module-11 .ts-model-strip { grid-template-columns:1fr;gap:6px }
  .dv-module-11 .ts-stage .activity,.dv-module-11 .ts-lab { min-width:0;padding:12px!important;border-radius:13px }
  .dv-module-11 .ts-lab-layout,.dv-module-11 .ts-diagnostic-layout { gap:10px }
  .dv-module-11 .ts-control-panel,.dv-module-11 .ts-control-panel label,.dv-module-11 .ts-live-math,.dv-module-11 [data-change-plot],.dv-module-11 [data-decomp-plot],.dv-module-11 [data-smooth-plot] { min-width:0;max-width:100% }
  .dv-module-11 svg { display:block;width:100%;max-width:100%;height:auto }
  .dv-module-11 pre,.dv-module-11 code { max-width:100% }
  .dv-module-11 pre { overflow-x:auto;-webkit-overflow-scrolling:touch }
  .dv-module-11 button,.dv-module-11 .btn,.dv-module-11 summary,.dv-module-11 select { min-height:44px }
  .dv-module-11 input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),.dv-module-11 select,.dv-module-11 textarea { width:100%;max-width:100%;min-height:44px;font-size:16px;box-sizing:border-box }
  .dv-module-11 .ts-window-choices,.dv-module-11 .ts-diagnostic-choices,.dv-module-11 .ts-choice-row { grid-template-columns:1fr }
  .dv-module-11 .weekly-capstone-card { padding:14px 12px }
  .dv-module-11 .wc-head,.dv-module-11 .wc-actions,.dv-module-11 .module-nav { display:grid;grid-template-columns:1fr;align-items:stretch }
  .dv-module-11 .wc-actions .btn,.dv-module-11 .module-nav a { width:100%;text-align:center }
  .dv-module-11 .m11-table-scroll { margin-inline:0;padding-bottom:4px }
  .dv-module-11 .m11-table-scroll table { width:max-content;min-width:430px;max-width:none }
}
@media(max-width:760px) {
  .sh-hero-grid { grid-template-columns:1fr 1fr }
  .sh-nav { overflow-x:auto;grid-template-columns:repeat(6,minmax(88px,1fr)) }
  .sh-nav a { flex-direction:column;gap:2px }
  .sh-skill-grid { grid-template-columns:1fr 1fr }
  .sh-math-strip,.sh-kpi-grid { grid-template-columns:1fr }
  .sh-react-workspace,.sh-dashboard { grid-template-columns:1fr }
  .sh-lab-head { align-items:flex-start }
  .sh-lab-head>b { white-space:normal }
}
@media(max-width:460px) {
  .sh-hero { padding:22px 18px }
  .sh-hero-grid div { min-height:76px }
  .sh-skill-grid { grid-template-columns:1fr }
  .sh-stage { padding:20px 15px }
  .sh-lab { padding:13px !important }
  .sh-lab-head { display:grid }
  .sh-kpi-compare,.sh-dashboard-tiles { grid-template-columns:1fr }
  .sh-dashboard-bars div { grid-template-columns:100px 1fr 32px }
}
/* Module 12: 320px-first Shiny dashboard mission contract. */
.m12-table-scroll { width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch }
@media(max-width:480px) {
  body.dv-module-12 { padding:16px 12px 32px }
  .dv-module-12 main.wrap { width:100%;max-width:none;min-width:0 }
  .dv-module-12 .sh-hero { margin:12px 0 16px;padding:18px 14px;border-radius:16px }
  .dv-module-12 .sh-hero h1 { font-size:clamp(24px,7.75vw,28px);line-height:1.08;letter-spacing:-.025em }
  .dv-module-12 .sh-hero .lead { font-size:15.5px;line-height:1.6 }
  .dv-module-12 .sh-kicker { overflow-wrap:anywhere;line-height:1.5 }
  .dv-module-12 .sh-hero-grid { gap:7px;margin:18px 0 16px }
  .dv-module-12 .sh-hero-grid div { min-height:72px;padding:10px }
  .dv-module-12 .sh-progress { padding:12px }
  .dv-module-12 .sh-nav { display:flex;gap:6px;margin:14px 0;padding:6px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch }
  .dv-module-12 .sh-nav a { flex:0 0 76px;min-width:76px;min-height:52px;padding:5px;scroll-snap-align:start }
  .dv-module-12 .sh-skill-map { padding:16px 12px;border-radius:16px }
  .dv-module-12 .sh-skill-grid { grid-template-columns:1fr;gap:8px }
  .dv-module-12 .sh-skill-grid article { min-height:0;padding:12px }
  .dv-module-12 .sh-stage { margin:18px 0;padding:16px 12px;border-radius:16px;scroll-margin-top:82px }
  .dv-module-12 .sh-stage-head { display:grid;gap:4px;line-height:1.45 }
  .dv-module-12 .sh-stage>h2 { font-size:22px;line-height:1.18 }
  .dv-module-12 .sh-stage-intro { font-size:14.5px;line-height:1.65 }
  .dv-module-12 .sh-architecture { display:grid;grid-template-columns:1fr;gap:6px }
  .dv-module-12 .sh-architecture b { transform:rotate(90deg);text-align:center }
  .dv-module-12 .sh-stage .activity,.dv-module-12 .sh-lab { min-width:0;padding:12px!important;border-radius:13px }
  .dv-module-12 .sh-react-workspace,.dv-module-12 .sh-dashboard { gap:10px }
  .dv-module-12 .sh-react-palette,.dv-module-12 .sh-react-chain,.dv-module-12 .sh-dashboard,.dv-module-12 .sh-blueprint { min-width:0;max-width:100% }
  .dv-module-12 svg { display:block;width:100%;max-width:100%;height:auto }
  .dv-module-12 pre,.dv-module-12 code { max-width:100% }
  .dv-module-12 pre { overflow-x:auto;-webkit-overflow-scrolling:touch }
  .dv-module-12 button,.dv-module-12 .btn,.dv-module-12 summary,.dv-module-12 select { min-height:44px }
  .dv-module-12 input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),.dv-module-12 select,.dv-module-12 textarea { width:100%;max-width:100%;min-height:44px;font-size:16px;box-sizing:border-box }
  .dv-module-12 .sh-choice-row,.dv-module-12 .sh-debug-choices,.dv-module-12 .sh-filter-controls { grid-template-columns:1fr }
  .dv-module-12 .sh-dashboard-bars div { grid-template-columns:minmax(74px,100px) minmax(0,1fr) 32px }
  .dv-module-12 .weekly-capstone-card { padding:14px 12px }
  .dv-module-12 .wc-head,.dv-module-12 .wc-actions,.dv-module-12 .module-nav { display:grid;grid-template-columns:1fr;align-items:stretch }
  .dv-module-12 .wc-actions .btn,.dv-module-12 .module-nav a { width:100%;text-align:center }
  .dv-module-12 .m12-table-scroll { margin-inline:0;padding-bottom:4px }
  .dv-module-12 .m12-table-scroll table { width:max-content;min-width:430px;max-width:none }
}
@media(prefers-reduced-motion:reduce) {
  .ts-progress-track span,.ts-toast, .sh-progress-track span,.sh-toast { transition:none }
  .ts-spark, .sh-spark { display:none }
}
.et-course .sh-spark { position:absolute;width:6px;height:6px;border-radius:50%;background:var(--mx-teal);pointer-events:none;animation:etSpark 0.9s ease-out forwards;animation-delay:var(--d,0ms) }
@keyframes etSpark { 0% { opacity: 1; transform: translate(0, 0) scale(1); } 100% { opacity: 0; transform: translate(var(--x, 20px), var(--y, -40px)) scale(0); } }
@media (max-width: 768px) {
  .et-hero-grid, .et-skill-grid, .et-math-strip, .et-detective-grid, .et-fairness-grid { grid-template-columns:1fr }
  .et-nav { grid-template-columns:repeat(3,1fr) }
  .et-privacy-sim { grid-template-columns:1fr }
  .et-redesign-controls { grid-template-columns:1fr }
}
/* Module 13: 320px-first ethics and privacy mission contract. */
.m13-table-scroll { width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch }
@media(max-width:480px) {
  body.dv-module-13 { padding:16px 12px 32px }
  .dv-module-13 main.wrap { width:100%;max-width:none;min-width:0 }
  .dv-module-13 .et-hero { margin:12px 0 16px;padding:18px 14px;border-radius:16px }
  .dv-module-13 .et-hero h1 { font-size:clamp(24px,7.75vw,28px);line-height:1.08;letter-spacing:-.025em }
  .dv-module-13 .et-hero .lead { font-size:15.5px;line-height:1.6 }
  .dv-module-13 .et-kicker { overflow-wrap:anywhere;line-height:1.5 }
  .dv-module-13 .et-hero-grid { grid-template-columns:1fr 1fr;gap:7px;margin:18px 0 16px }
  .dv-module-13 .et-hero-grid div { min-height:72px;padding:10px }
  .dv-module-13 .et-progress { padding:12px }
  .dv-module-13 .et-nav { display:flex;gap:6px;margin:14px 0;padding:6px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch }
  .dv-module-13 .et-nav a { flex:0 0 76px;min-width:76px;min-height:52px;padding:5px;scroll-snap-align:start }
  .dv-module-13 .et-skill-map { padding:16px 12px;border-radius:16px }
  .dv-module-13 .et-skill-grid { grid-template-columns:1fr;gap:8px }
  .dv-module-13 .et-skill-grid article { min-height:0;padding:12px }
  .dv-module-13 .et-stage { margin:18px 0;padding:16px 12px;border-radius:16px;scroll-margin-top:82px }
  .dv-module-13 .et-stage-head { display:grid;gap:4px;line-height:1.45 }
  .dv-module-13 .et-stage>h2 { font-size:22px;line-height:1.18 }
  .dv-module-13 .et-stage-intro { font-size:14.5px;line-height:1.65 }
  .dv-module-13 .et-stage .activity,.dv-module-13 .et-lab { min-width:0;padding:12px!important;border-radius:13px }
  .dv-module-13 .et-privacy-sim,.dv-module-13 .et-detective-grid,.dv-module-13 .et-fairness-grid,.dv-module-13 .et-cl-tables { gap:10px }
  .dv-module-13 .et-query-panel,.dv-module-13 .et-sim-output,.dv-module-13 .et-peer-card,.dv-module-13 .et-cl-matrix,.dv-module-13 .et-redesign-panel { min-width:0;max-width:100% }
  .dv-module-13 svg { display:block;width:100%;max-width:100%;height:auto }
  .dv-module-13 pre,.dv-module-13 code { max-width:100% }
  .dv-module-13 pre { overflow-x:auto;-webkit-overflow-scrolling:touch }
  .dv-module-13 button,.dv-module-13 .btn,.dv-module-13 summary,.dv-module-13 select { min-height:44px }
  .dv-module-13 input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),.dv-module-13 select,.dv-module-13 textarea { width:100%;max-width:100%;min-height:44px;font-size:16px;box-sizing:border-box }
  .dv-module-13 .et-choice-row,.dv-module-13 .et-case-choices,.dv-module-13 .et-reaction-bar,.dv-module-13 .et-redesign-controls { grid-template-columns:1fr }
  .dv-module-13 .et-data-table,.dv-module-13 .summary-table { font-size:11px }
  .dv-module-13 .weekly-capstone-card { padding:14px 12px }
  .dv-module-13 .wc-head,.dv-module-13 .wc-actions,.dv-module-13 .module-nav { display:grid;grid-template-columns:1fr;align-items:stretch }
  .dv-module-13 .wc-actions .btn,.dv-module-13 .module-nav a { width:100%;text-align:center }
  .dv-module-13 .m13-table-scroll { margin-inline:0;padding-bottom:4px }
  .dv-module-13 .m13-table-scroll table { width:max-content;min-width:430px;max-width:none }
}
@media (prefers-reduced-motion: reduce) {
  .et-course, .et-course *, .et-toast, .et-toast * { animation:none !important;transition:none !important }
}
.et-slider-row { display:grid;gap:6px;margin:12px 0;font-weight:700;font-size:13px;color:#cbd5e1 }
.et-slider-row input[type="range"] { width:100%;accent-color:#38bdf8 }
.et-slider-row output { color:#7dd3fc;font-weight:900;margin-left:6px }
.et-cl-toggle { margin:4px 0 12px }
.et-cl-tables { display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin:14px 0 }
.et-cl-matrix table { margin:6px 0 }
.et-cl-matrix .small { margin:4px 0 0;color:#94a3b8 }
.et-dp .wc-actions { display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 }
@media(max-width:800px) {
  .ra-hero { padding:22px }
  .ra-hero-grid { grid-template-columns:repeat(2,1fr) }
  .ra-nav { grid-template-columns:repeat(3,1fr);position:relative;top:0 }
  .ra-skill-grid,.ra-math-strip,.ra-spec-grid { grid-template-columns:1fr 1fr }
  .ra-lineage,.ra-pipeline { grid-template-columns:1fr }
  .ra-audit-grid { grid-template-columns:1fr }
  .ra-stage { padding:18px }
  .ra-hash-grid { grid-template-columns:1fr }
}
@media(max-width:480px) {
  .ra-skill-grid,.ra-math-strip,.ra-spec-grid,.ra-manifest { grid-template-columns:1fr }
  .ra-stage-head,.ra-lab-head,.ra-finish { align-items:flex-start;flex-direction:column }
  .ra-choice-row button,.ra-fix-options button { width:100%;text-align:left }
  .ra-toast { left:12px;right:12px;bottom:12px }
  .ra-hero h1 { font-size:36px }
}
/* Module 14: 320px-first reproducibility and AI-audit mission contract. */
.m14-table-scroll { width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch }
@media(max-width:480px) {
  body.dv-module-14 { padding:16px 12px 32px }
  .dv-module-14 main.wrap { width:100%;max-width:none;min-width:0 }
  .dv-module-14 .ra-hero { margin:12px 0 16px;padding:18px 14px;border-radius:16px }
  .dv-module-14 .ra-hero h1 { font-size:clamp(24px,7.75vw,28px);line-height:1.08;letter-spacing:-.025em }
  .dv-module-14 .ra-hero .lead { font-size:15.5px;line-height:1.6 }
  .dv-module-14 .ra-kicker { overflow-wrap:anywhere;line-height:1.5 }
  .dv-module-14 .ra-hero-grid { grid-template-columns:1fr 1fr;gap:7px;margin:18px 0 16px }
  .dv-module-14 .ra-hero-grid div { min-height:72px;padding:10px }
  .dv-module-14 .ra-progress { padding:12px }
  .dv-module-14 .ra-nav { position:sticky;top:8px;display:flex;gap:6px;margin:14px 0;padding:6px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch }
  .dv-module-14 .ra-nav a { flex:0 0 76px;min-width:76px;min-height:52px;padding:5px;scroll-snap-align:start }
  .dv-module-14 .ra-skill-map { padding:16px 12px;border-radius:16px }
  .dv-module-14 .ra-skill-grid { grid-template-columns:1fr;gap:8px }
  .dv-module-14 .ra-skill-grid article { min-height:0;padding:12px }
  .dv-module-14 .ra-stage { margin:18px 0;padding:16px 12px;border-radius:16px;scroll-margin-top:82px }
  .dv-module-14 .ra-stage-head,.dv-module-14 .ra-lab-head,.dv-module-14 .ra-finish { display:grid;gap:4px;line-height:1.45 }
  .dv-module-14 .ra-stage>h2 { font-size:22px;line-height:1.18 }
  .dv-module-14 .ra-stage-intro { font-size:14.5px;line-height:1.65 }
  .dv-module-14 .ra-stage .activity,.dv-module-14 .ra-lab { min-width:0;padding:12px!important;border-radius:13px }
  .dv-module-14 .ra-lineage,.dv-module-14 .ra-pipeline,.dv-module-14 .ra-audit-grid,.dv-module-14 .ra-spec-grid,.dv-module-14 .ra-manifest,.dv-module-14 .ra-hash-grid { grid-template-columns:1fr;gap:8px }
  .dv-module-14 .ra-audit-record,.dv-module-14 .ra-audit-log,.dv-module-14 .ra-debug-case,.dv-module-14 .ra-hash-card,.dv-module-14 .ra-spec-card { min-width:0;max-width:100% }
  .dv-module-14 svg { display:block;width:100%;max-width:100%;height:auto }
  .dv-module-14 pre,.dv-module-14 code { max-width:100% }
  .dv-module-14 pre { overflow-x:auto;-webkit-overflow-scrolling:touch }
  .dv-module-14 button,.dv-module-14 .btn,.dv-module-14 summary,.dv-module-14 select { min-height:44px }
  .dv-module-14 input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),.dv-module-14 select,.dv-module-14 textarea { width:100%;max-width:100%;min-height:44px;font-size:16px;box-sizing:border-box }
  .dv-module-14 .ra-choice-row,.dv-module-14 .ra-node-grid,.dv-module-14 .ra-fix-options,.dv-module-14 .ra-audit-actions { display:grid;grid-template-columns:1fr }
  .dv-module-14 .ra-choice-row button,.dv-module-14 .ra-node-grid button,.dv-module-14 .ra-fix-options button,.dv-module-14 .ra-audit-actions button { width:100%;text-align:left }
  .dv-module-14 .weekly-capstone-card { padding:14px 12px }
  .dv-module-14 .wc-head,.dv-module-14 .wc-actions,.dv-module-14 .module-nav { display:grid;grid-template-columns:1fr;align-items:stretch }
  .dv-module-14 .wc-actions .btn,.dv-module-14 .module-nav a { width:100%;text-align:center }
  .dv-module-14 .m14-table-scroll { margin-inline:0;padding-bottom:4px }
  .dv-module-14 .m14-table-scroll table { width:max-content;min-width:430px;max-width:none }
}
/* Module 15: 320px-first final-project synthesis workshop contract. */
.m15-table-scroll { width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch }
@media(max-width:480px) {
  body.dv-module-15 { padding:16px 12px 32px }
  .dv-module-15 main.wrap { width:100%;max-width:none;min-width:0 }
  .dv-module-15 .ra-hero { margin:12px 0 16px;padding:18px 14px;border-radius:16px }
  .dv-module-15 .ra-hero h1 { font-size:clamp(24px,7.75vw,28px);line-height:1.08;letter-spacing:-.025em }
  .dv-module-15 .ra-hero .lead { font-size:15.5px;line-height:1.6 }
  .dv-module-15 .ra-kicker { overflow-wrap:anywhere;line-height:1.5 }
  .dv-module-15 .ra-hero-grid { grid-template-columns:1fr 1fr;gap:7px;margin:18px 0 16px }
  .dv-module-15 .ra-hero-grid div { min-height:72px;padding:10px }
  .dv-module-15 .ra-progress { padding:12px }
  .dv-module-15 .ra-nav { position:sticky;top:8px;display:flex;gap:6px;margin:14px 0;padding:6px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch }
  .dv-module-15 .ra-nav a { flex:0 0 76px;min-width:76px;min-height:52px;padding:5px;scroll-snap-align:start }
  .dv-module-15 .ra-skill-map { padding:16px 12px;border-radius:16px }
  .dv-module-15 .ra-skill-grid { grid-template-columns:1fr;gap:8px }
  .dv-module-15 .ra-skill-grid article { min-height:0;padding:12px }
  .dv-module-15 .ra-reading { width:100%;max-width:none;margin:18px 0;padding:16px 12px;border-radius:14px;overflow-wrap:anywhere }
  .dv-module-15 .ra-reading h2 { font-size:21px;line-height:1.25 }
  .dv-module-15 .ra-reading h3 { font-size:17px;line-height:1.3 }
  .dv-module-15 .ra-reading p,.dv-module-15 .ra-reading dd { font-size:15px;line-height:1.7 }
  .dv-module-15 .ra-reading .katex-display { max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch }
  .dv-module-15 .ra-stage { margin:18px 0;padding:16px 12px;border-radius:16px;scroll-margin-top:82px }
  .dv-module-15 .ra-stage-head,.dv-module-15 .ra-finish { display:grid;gap:4px;line-height:1.45 }
  .dv-module-15 .ra-stage>h2 { font-size:22px;line-height:1.18 }
  .dv-module-15 .ra-stage-intro { font-size:14.5px;line-height:1.65 }
  .dv-module-15 .ra-stage .activity,.dv-module-15 .r-lab-host { min-width:0;padding:12px!important;border-radius:13px }
  .dv-module-15 svg { display:block;width:100%;max-width:100%;height:auto }
  .dv-module-15 pre,.dv-module-15 code { max-width:100% }
  .dv-module-15 pre { overflow-x:auto;-webkit-overflow-scrolling:touch }
  .dv-module-15 button,.dv-module-15 .btn,.dv-module-15 summary,.dv-module-15 select { min-height:44px }
  .dv-module-15 input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),.dv-module-15 select,.dv-module-15 textarea { width:100%;max-width:100%;min-height:44px;font-size:16px;box-sizing:border-box }
  .dv-module-15 .weekly-capstone-card,.dv-module-15 .tool-card { padding:14px 12px }
  .dv-module-15 .wc-head,.dv-module-15 .wc-actions,.dv-module-15 .module-nav { display:grid;grid-template-columns:1fr;align-items:stretch }
  .dv-module-15 .wc-actions .btn,.dv-module-15 .module-nav a { width:100%;text-align:center }
  .dv-module-15 .m15-table-scroll { margin-inline:0;padding-bottom:4px }
  .dv-module-15 .m15-table-scroll table { width:max-content;min-width:430px;max-width:none }
}
@media(prefers-reduced-motion:reduce) {
  .ra-course,.ra-course *,.ra-course *:before,.ra-course *:after,.ra-course:before,.ra-course:after,.ra-toast,.ra-toast *,.ra-toast:before,.ra-toast:after { scroll-behavior:auto !important;transition:none !important;animation:none !important }
}

/* Module reading section */
.ra-reading {
  max-width: 760px;
  margin: 2rem auto 2.5rem;
  padding: 1.75rem 2rem;
  background: var(--ra-card, #f8fafc);
  border: 1px solid var(--ra-border, #e2e8f0);
  border-radius: 0.75rem;
  line-height: 1.75;
}
.ra-reading h2 {
  font-size: 1.35rem;
  font-weight: 700;
  margin: 0 0 1rem;
  color: var(--ra-heading, #0f172a);
}
.ra-reading p {
  margin: 0 0 1rem;
  color: var(--ra-body, #334155);
  font-size: 1rem;
}
.ra-reading p:last-child {
  margin-bottom: 0;
}
.ra-reading strong {
  /* Sky #0ea5e9 is only 2.65:1 on this section's #f8fafc ground, and these
     are body-prose emphases, not decoration. #0369a1 is the darker sky
     already used as the ink variant elsewhere and clears AA at 5.67:1. */
  color: var(--ra-accent, #0369a1);
}
.ra-reading em {
  /* course.css sets a global `em { color:#e2e8f0 }` for the dark module
     pages. .ra-reading is the one light-ground section in the course, where
     that inherited value renders at 1.18:1 - invisible. Emphasis here is
     carried by the italic, so take the body colour (9.9:1). */
  color: var(--ra-body, #334155);
}

/* Concept glossary in reading sections */
.ra-glossary {
  margin: 1rem 0 1.5rem;
  padding: 0;
}
.ra-glossary dt {
  font-weight: 700;
  color: var(--ra-heading, #0f172a);
  margin-top: 1.1rem;
  font-size: 1.02rem;
}
.ra-glossary dd {
  margin: 0.25rem 0 0 0;
  padding: 0 0 0.25rem 1.25rem;
  color: var(--ra-body, #334155);
  line-height: 1.7;
  font-size: 0.97rem;
  border-bottom: 1px solid var(--ra-border, #e2e8f0);
  padding-bottom: 0.75rem;
}
.ra-glossary dd:last-child {
  border-bottom: none;
}
.ra-reading h3 {
  font-size: 1.1rem;
  font-weight: 700;
  margin: 1.75rem 0 0.5rem;
  color: var(--ra-heading, #0f172a);
}
.ra-reading h3 small {
  font-weight: 400;
  font-size: 0.85rem;
  color: var(--ra-muted, #64748b);
}

/* ── Split modules: overview index + compact step headers ──────────────────
   Modules 10-15 used to render every checkpoint inline, which is what students
   were scrolling past. Each checkpoint is now its own page: the overview lists
   them, and each step page keeps the hero down to the title and the progress
   bar so the work starts near the top of the screen. */
.dv-checkpoint-index { scroll-margin-top:88px;margin:26px 0;padding:clamp(20px,4vw,30px);border:1px solid var(--mx-line);border-radius:20px;background:linear-gradient(155deg,#13233a,#0b1728) }
.dv-checkpoint-index > h2 { margin:0 0 6px;font-size:20px;color:var(--mx-text) }
.dv-checkpoint-index .dv-ci-intro { margin:0 0 18px;font-size:14px;line-height:1.6;color:var(--mx-muted) }
.dv-checkpoint-list { list-style:none;margin:0;padding:0;display:grid;gap:10px }
.dv-checkpoint-list > li { margin:0 }
.dv-checkpoint-list a {
  display:flex;align-items:flex-start;gap:14px;
  padding:14px 16px;min-height:44px;
  border:1px solid var(--mx-line);border-radius:14px;background:var(--mx-panel);
  color:var(--mx-text);text-decoration:none;
  transition:border-color .18s,transform .15s,background .18s;
}
.dv-checkpoint-list a:hover,.dv-checkpoint-list a:focus-visible { border-color:var(--mx-teal);background:var(--mx-panel2);transform:translateY(-1px) }
.dv-ci-num {
  flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
  width:30px;height:30px;border-radius:50%;
  background:var(--mx-teal);color:#04222e;font-size:14px;font-weight:800;
}
.dv-ci-body { display:flex;flex-direction:column;gap:3px;min-width:0 }
.dv-ci-body strong { font-size:15px;font-weight:700 }
.dv-ci-body small { font-size:13px;line-height:1.5;color:var(--mx-muted) }
/* State mirrored from the numbered bar by dv-common.js, so the overview shows
   what is finished and where the learner is up to. */
.dv-checkpoint-list a.done { border-color:#0f766e }
.dv-checkpoint-list a.done .dv-ci-num { background:var(--mx-good);color:#04220e }
.dv-checkpoint-list a.current { border-color:var(--ra-gold);box-shadow:inset 3px 0 var(--ra-gold) }
.dv-checkpoint-list a.current .dv-ci-num { background:var(--ra-gold);color:#1a1a1a }

.pca-hero-compact,.ts-hero-compact,.sh-hero-compact,.et-hero-compact,.ra-hero-compact { padding-bottom:18px }
.pca-hero-compact h1,.ts-hero-compact h1,.sh-hero-compact h1,.et-hero-compact h1,.ra-hero-compact h1 { margin-bottom:14px }

@media (max-width:640px) {
  .dv-checkpoint-list a { padding:12px 13px;gap:11px }
  .dv-ci-num { width:26px;height:26px;font-size:13px }
}

/* Concept-review parts bar — the Module 15 glossary runs across three pages, so
   every part carries a way to reach the other two without going back up. */
.dv-parts-bar {
  display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;
  margin:0 0 22px;padding:12px 14px;
  border:1px solid var(--mx-line);border-radius:14px;background:var(--mx-panel);
}
.dv-parts-label {
  font-size:11px;font-weight:900;letter-spacing:.09em;text-transform:uppercase;
  color:var(--mx-muted);margin-right:2px;
}
.dv-parts-bar a,.dv-parts-here {
  display:inline-flex;align-items:center;gap:8px;
  padding:8px 12px;min-height:40px;border-radius:10px;
  border:1px solid var(--mx-line);font-size:13.5px;line-height:1.3;
}
.dv-parts-bar a { color:var(--mx-text);text-decoration:none;background:transparent }
.dv-parts-bar a:hover,.dv-parts-bar a:focus-visible {
  border-color:var(--mx-teal);background:var(--mx-panel2);text-decoration:none;
}
.dv-parts-here { color:var(--mx-text);background:var(--mx-panel2);border-color:var(--mx-teal);font-weight:600 }
.dv-parts-num {
  display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;
  width:22px;height:22px;border-radius:50%;
  background:var(--mx-line);color:var(--mx-text);font-size:12px;font-weight:800;
}
.dv-parts-here .dv-parts-num { background:var(--mx-teal);color:#04222e }
@media (max-width:640px){ .dv-parts-bar a,.dv-parts-here { width:100% } }
