/* Solarized Light, matching the Week 1 – Week 5 lecture decks. */
:root {
  --base03:#002b36; --base02:#073642; --base01:#586e75; --base00:#657b83;
  --base1:#93a1a1; --base2:#eee8d5; --base3:#fdf6e3; --border-subtle:#e4dcba;
  --blue:#268bd2; --cyan:#2aa198; --green:#859900; --violet:#6c71c4;
  --orange:#cb4b16; --yellow:#b58900; --magenta:#d33682; --red:#dc322f;
  --font-sans:'Plus Jakarta Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --font-mono:'JetBrains Mono',Menlo,Consolas,monospace;
}
* { box-sizing:border-box; margin:0; padding:0; }
html,body { width:100%; height:100%; overflow:hidden; background:var(--base3); color:var(--base03); font-family:var(--font-sans); font-size:16px; line-height:1.6; -webkit-font-smoothing:antialiased; }
button,input,select { font:inherit; }
button { cursor:pointer; }
button:disabled { opacity:.4; cursor:not-allowed; }
button:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible,a:focus-visible { outline:3px solid var(--blue); outline-offset:3px; }
a { color:var(--blue); }
.app-header { position:fixed; inset:0 0 auto; height:52px; background:rgba(238,232,213,.96); border-bottom:1px solid var(--border-subtle); display:flex; align-items:center; justify-content:space-between; padding:0 24px; z-index:100; }
.header-brand,.header-actions { display:flex; align-items:center; gap:12px; }
.course-badge { background:var(--base02); color:var(--base3); font-size:.75rem; font-weight:700; letter-spacing:.05em; padding:3px 8px; border-radius:6px; text-decoration:none; white-space:nowrap; }
.session-title { font-size:.95rem; font-weight:600; }
.header-actions { gap:6px; }
.header-btn { background:transparent; border:1px solid transparent; color:var(--base01); padding:6px 10px; border-radius:6px; font-size:.85rem; font-weight:600; }
.header-btn:hover { color:var(--blue); border-color:var(--border-subtle); }
.header-btn[aria-pressed="true"] { background:var(--blue); color:var(--base3); }
.progress-bar-container { position:absolute; bottom:0; left:0; width:100%; height:3px; background:rgba(0,43,54,.06); }
.progress-bar { height:100%; background:linear-gradient(90deg,var(--blue),var(--cyan)); transition:width .2s; }
.slide-deck { position:fixed; inset:52px 0 64px; display:flex; align-items:center; justify-content:center; padding:12px 24px; }
.slide { width:min(1200px,94vw); height:min(740px,calc(100dvh - 140px)); background:var(--base3); border:1px solid var(--border-subtle); border-radius:16px; box-shadow:0 6px 18px rgba(0,43,54,.08); padding:24px 32px; display:none; flex-direction:column; overflow-y:auto; scrollbar-width:thin; scrollbar-color:var(--border-subtle) transparent; }
.slide.active { display:flex; }
.slide-meta { display:flex; align-items:center; justify-content:space-between; margin-bottom:6px; gap:10px; }
.slide-tag { color:var(--cyan); font-size:.75rem; font-weight:700; text-transform:uppercase; letter-spacing:.07em; }
.slide-tag::before { content:'●'; font-size:.65rem; margin-right:7px; }
.slide-number-pill { font-family:var(--font-mono); font-size:.75rem; white-space:nowrap; background:var(--base2); border:1px solid var(--border-subtle); border-radius:20px; padding:2px 8px; color:var(--base01); }
.slide-title { font-size:1.75rem; line-height:1.25; font-weight:700; letter-spacing:-.025em; margin-bottom:10px; }
.slide-subtitle { color:var(--base01); font-size:1rem; line-height:1.5; margin:-3px 0 18px; }
.slide-body { flex:1; display:flex; flex-direction:column; gap:16px; min-height:0; }
.grid-2col,.grid-3col,.grid-4col { display:grid; gap:20px; align-items:stretch; }
.grid-2col { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
.grid-3col { grid-template-columns:repeat(3,minmax(0,1fr)); }
.grid-4col { grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; }
.stack { display:flex; flex-direction:column; gap:14px; min-width:0; }
.card { background:var(--base2); border:1px solid var(--border-subtle); border-radius:10px; padding:16px 20px; min-width:0; }
.card-primary { border-left:4px solid var(--blue); }
.card-cyan { border-left:4px solid var(--cyan); }
.card-warning { border-left:4px solid var(--yellow); }
.card-violet { border-left:4px solid var(--violet); }
h3 { color:var(--base02); font-size:1.06rem; line-height:1.4; font-weight:700; margin-bottom:10px; }
p { font-size:.94rem; }
p+p,p+h3 { margin-top:10px; }
.key-list { padding-left:19px; font-size:.94rem; }
.key-list li { padding-left:3px; margin-bottom:9px; }
.key-list li::marker { color:var(--blue); }
.key-list li:last-child { margin-bottom:0; }
.formula-box { margin:10px 0; padding:6px 4px; text-align:center; font-size:1rem; min-width:0; }
.formula-box.highlight { padding:12px 8px; background:rgba(38,139,210,.07); border:1px solid rgba(38,139,210,.2); border-radius:8px; }
.katex { font-size:1.08em; }
.katex-display { margin:.35em 0; overflow-x:auto; overflow-y:hidden; padding:3px 0; }
.callout { border-left:3px solid var(--cyan); background:rgba(42,161,152,.07); border-radius:0 6px 6px 0; padding:12px 16px; font-size:.91rem; line-height:1.55; }
.callout.warning { border-color:var(--yellow); background:rgba(181,137,0,.07); }
.small { font-size:.81rem; line-height:1.5; color:var(--base01); }
.visual-panel { display:flex; flex-direction:column; align-items:stretch; justify-content:center; border:1px solid var(--border-subtle); border-radius:10px; padding:12px 16px; min-width:0; background:rgba(255,255,255,.16); }
svg { display:block; width:100%; overflow:hidden; flex-shrink:0; }
.visual-panel>svg { max-height:340px; }
figcaption { text-align:center; color:var(--base01); font-size:.9rem; line-height:1.5; margin:8px 0; }
.visual-panel>.small { text-align:center; margin-top:8px; }
.figure-heading { font-size:.85rem; font-weight:600; color:var(--base01); text-align:center; margin-bottom:4px; }
.controls { display:grid; grid-template-columns:1fr; gap:5px; margin-top:8px; }
.controls label,.inline-slider label { display:flex; justify-content:space-between; align-items:center; gap:12px; font-size:.82rem; font-weight:600; white-space:nowrap; }
output { font-family:var(--font-mono); color:var(--blue); white-space:nowrap; }
input[type="range"] { width:100%; accent-color:var(--blue); cursor:pointer; min-height:22px; }
.control-btn { padding:6px 12px; border:1px solid var(--border-subtle); background:var(--base3); border-radius:6px; color:var(--base02); font-size:.83rem; font-weight:600; }
.control-btn:hover { border-color:var(--blue); color:var(--blue); }
.control-btn[aria-pressed="true"] { background:var(--blue); color:var(--base3); border-color:var(--blue); }
.button-row,.toolbar { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:8px; }
.toolbar { justify-content:flex-start; margin-bottom:14px; font-size:.85rem; }
select { padding:6px 10px; color:var(--base02); background:var(--base3); border:1px solid var(--border-subtle); border-radius:6px; max-width:100%; }
.inline-slider { display:grid; grid-template-columns:155px 1fr; gap:20px; align-items:center; }
.readout { background:var(--base2); border-radius:6px; color:var(--base02); padding:9px 12px; font-size:.82rem; line-height:1.5; text-align:center; }
.linked-plots { gap:16px; }
.linked-plots .visual-panel { padding:8px 12px; }
.linked-plots svg { max-height:265px; }
.mini-plot { margin:10px 0 14px; }
.curve-gallery svg { margin:6px 0; }
.curve-gallery .card { padding:14px; }
.curve-gallery figcaption { font-size:.84rem; }
.curve-gallery .formula-box { font-size:.87rem; min-height:38px; }
.solar-table { border-collapse:collapse; width:100%; font-size:.86rem; margin:8px 0 12px; }
.solar-table th,.solar-table td { text-align:left; padding:10px 8px; border-bottom:1px solid #d9d0ae; }
.solar-table th { color:var(--blue); font-size:.78rem; }
.legend-line { display:inline-block; width:22px; height:3px; vertical-align:middle; margin:0 5px 0 12px; background:var(--base01); }
.legend-line.blue { background:var(--blue); }
.legend-line.cyan { background:var(--cyan); }
.legend-line.magenta { background:var(--magenta); }
.color-cyan { color:#167f77; } .color-orange { color:var(--orange); } .color-magenta { color:var(--magenta); }
details { border-top:1px solid #d9d0ae; margin-top:12px; padding-top:10px; font-size:.9rem; }
summary { cursor:pointer; color:var(--blue); font-weight:600; width:fit-content; }
details[open]>summary { margin-bottom:10px; }
.practice-grid { grid-template-rows:repeat(2,minmax(min-content,1fr)); }
.summary-grid { gap:14px; }
.summary-grid .card { padding:12px 18px; }
.summary-grid .formula-box { margin:6px 0; }
.summary-grid p { font-size:.85rem; }
.source-note { font-size:.74rem; line-height:1.55; color:var(--base01); margin-top:auto; }
.title-slide { justify-content:center; padding:36px 48px; }
.title-badge-row { display:flex; gap:10px; margin-bottom:20px; flex-wrap:wrap; }
.title-badge { background:var(--base2); color:var(--cyan); border:1px solid var(--border-subtle); padding:4px 12px; border-radius:20px; font-size:.8rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; }
.title-badge.accent { background:rgba(38,139,210,.1); color:var(--blue); border-color:rgba(38,139,210,.3); }
.title-layout { display:grid; grid-template-columns:1.2fr 1fr; align-items:center; gap:20px; margin:12px 0 24px; }
.title-heading { font-size:2.75rem; font-weight:800; letter-spacing:-.03em; line-height:1.18; }
.title-heading span { color:var(--blue); }
.hero-figure svg { width:100%; }
.hero-figure figcaption { font-size:.82rem; }
.title-features { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }
.title-features>div { background:var(--base2); border:1px solid var(--border-subtle); border-radius:10px; padding:12px; display:flex; align-items:center; gap:8px; font-size:.8rem; font-weight:600; }
.title-features b { display:grid; place-items:center; min-width:26px; height:26px; border-radius:6px; background:rgba(38,139,210,.13); color:var(--blue); }
.app-footer { position:fixed; inset:auto 0 0; height:64px; background:rgba(238,232,213,.96); border-top:1px solid var(--border-subtle); display:flex; align-items:center; justify-content:space-between; padding:0 28px; z-index:100; }
.footer-left,.footer-center,.slide-dots { display:flex; align-items:center; gap:12px; }
.slide-counter { font-family:var(--font-mono); font-size:.9rem; white-space:nowrap; }
.slide-dots { gap:6px; }
.slide-dot { width:8px; height:8px; border:0; border-radius:50%; background:#c6b991; padding:0; }
.slide-dot[aria-current="step"] { width:20px; border-radius:4px; background:var(--blue); }
.nav-btn { background:var(--base3); border:1px solid var(--border-subtle); border-radius:10px; padding:8px 18px; font-size:.9rem; color:var(--base02); font-weight:600; }
.nav-btn:hover:not(:disabled) { border-color:var(--blue); color:var(--blue); }
.footer-right { font-family:var(--font-mono); font-size:.74rem; color:var(--base01); }
.modal-dialog { margin:auto; width:min(1000px,92vw); max-height:85dvh; background:var(--base3); color:var(--base03); border:1px solid var(--border-subtle); border-radius:16px; box-shadow:0 12px 32px rgba(0,43,54,.2); padding:0; }
.modal-dialog::backdrop { background:rgba(0,43,54,.6); backdrop-filter:blur(4px); }
.help-dialog { max-width:620px; }
.modal-header { display:flex; justify-content:space-between; align-items:center; padding:16px 24px; background:var(--base2); border-bottom:1px solid var(--border-subtle); }
.modal-header h2 { font-size:1.1rem; }
.modal-close { border:0; background:none; color:var(--base01); font-size:1.7rem; padding:0 6px; }
.modal-body { padding:24px; }
.slide-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:14px; }
.grid-card { background:var(--base2); border:1px solid var(--border-subtle); border-radius:10px; padding:14px; text-align:left; color:var(--base02); }
.grid-card[aria-current="step"] { border-color:var(--blue); background:rgba(38,139,210,.08); }
.grid-card-num { display:block; color:var(--cyan); font-family:var(--font-mono); font-size:.7rem; margin-bottom:6px; }
.grid-card-title { font-weight:700; font-size:.86rem; line-height:1.4; }
.noscript-notice { position:fixed; bottom:72px; left:10%; right:10%; z-index:110; background:var(--base2); padding:16px; text-align:center; }
@media (max-height:780px) and (min-width:901px) {
  .slide { padding:18px 28px; }
  .slide-subtitle { margin-bottom:12px; }
  .slide-body,.stack { gap:10px; }
  .card { padding:10px 16px; }
  .visual-panel>svg { max-height:215px; }
  .linked-plots svg { max-height:220px; }
  .formula-box { margin:6px 0; padding:4px; }
  .formula-box.highlight { padding:8px; }
  .key-list li { margin-bottom:6px; }
  details { margin-top:8px; padding-top:6px; }
}
@media (max-width:900px) {
  .slide { height:calc(100dvh - 136px); padding:22px; }
  .slide-body { flex:0 0 auto; min-height:auto; }
  .grid-2col,.grid-3col,.title-layout { grid-template-columns:1fr; }
  .grid-4col,.title-features { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .title-layout { gap:8px; margin-bottom:18px; }
  .title-slide { justify-content:flex-start; }
  .hero-figure svg { max-height:240px; }
  .visual-panel>svg { max-height:320px; }
  .title-heading { font-size:2.3rem; }
  .slide-title { font-size:1.6rem; }
  .session-title { font-size:.78rem; }
  .slide-dots,.footer-right { display:none; }
  .app-header { padding:0 12px; }
  .app-footer { padding:0 18px; }
  .practice-grid { grid-template-rows:none; }
}
@media (max-width:560px) {
  .session-title { display:none; }
  .slide { padding:18px; width:95vw; }
  .slide-tag { font-size:.63rem; }
  .slide-title { font-size:1.4rem; text-wrap:balance; }
  .slide-subtitle { font-size:.88rem; }
  .title-badge { font-size:.65rem; }
  .grid-4col { grid-template-columns:1fr; }
  .curve-gallery svg { max-height:220px; }
  .inline-slider { grid-template-columns:1fr; gap:4px; }
  .title-features { gap:8px; }
  .title-features>div { padding:8px; font-size:.73rem; }
  .card { padding:14px; }
  .formula-box { font-size:.91rem; }
  .visual-panel { padding:8px; }
  .slide-body { gap:14px; }
  .header-actions { gap:0; }
}
@media (prefers-reduced-motion:reduce) { * { transition:none!important; scroll-behavior:auto!important; } }
@media print {
  @page { size:landscape; margin:10mm; }
  html,body { height:auto; overflow:visible; }
  .app-header,.app-footer,dialog,.controls,.toolbar,.inline-slider,.button-row,.control-btn { display:none!important; }
  .slide-deck { display:block; position:static; padding:0; }
  .slide { display:flex!important; width:100%; height:auto; min-height:170mm; break-after:page; break-inside:avoid; overflow:visible; box-shadow:none; padding:20px; border:0; }
  .slide:last-child { break-after:auto; }
  .slide-body { min-height:auto; }
  .grid-2col { grid-template-columns:1fr 1fr; }
  .grid-3col { grid-template-columns:repeat(3,1fr); }
  .grid-4col { grid-template-columns:repeat(4,1fr); }
  .visual-panel>svg { max-height:270px; }
  .title-layout { grid-template-columns:1.2fr 1fr; }
  .title-features { grid-template-columns:repeat(3,1fr); }
  .card,.visual-panel { break-inside:avoid; }
  * { print-color-adjust:exact; -webkit-print-color-adjust:exact; }
}
/* Concept-first layout shared with Weeks 4 and 5. */
.slide-body > .stack { justify-content:center; }
.slide-body { flex-shrink:0; }
.title-layout .visual-panel { border:0; background:transparent; }
@media print { .slide-body { flex:none; } }

/* Playback controls sit below the drawing, as in earlier weeks. */
.playback-controls { display:flex; justify-content:center; align-items:center; flex-wrap:wrap; gap:8px; margin:8px 0 4px; }
.playback-controls .playback-primary { min-width:88px; background:var(--blue); border-color:var(--blue); color:var(--base3); }
.playback-controls .playback-primary:hover { background:#1978b8; }
.playback-controls label { font-size:.78rem; margin-left:8px; color:var(--base01); }
.playback-controls select { font-size:.8rem; padding:4px 6px; }
.playback-controls button span { display:inline-block; width:14px; text-align:center; margin-right:4px; }
.readout, .controls output { font-variant-numeric:tabular-nums; }
@media print { .playback-controls,.segmented { display:none!important; } }

/* Segmented toggle for switching what a diagram shows. */
.segmented { display:flex; justify-content:center; flex-wrap:wrap; gap:0; margin:8px 0 2px; }
.segmented .control-btn { border-radius:0; margin-left:-1px; }
.segmented .control-btn:first-child { border-radius:6px 0 0 6px; margin-left:0; }
.segmented .control-btn:last-child { border-radius:0 6px 6px 0; }

/* Draggable handles (2D) and rotatable scenes (3D). */
svg.rotatable { cursor:grab; touch-action:none; }
svg.rotatable.dragging { cursor:grabbing; }
svg.has-handles { touch-action:none; }
.handle { cursor:grab; }
.handle:focus { outline:none; }
.handle:focus-visible .handle-ring { stroke:var(--blue); stroke-width:3; }
.drag-hint { text-align:center; font-size:.76rem; color:var(--base01); margin-top:4px; }
.drag-hint b { color:var(--base02); }
.two-controls { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.two-controls .controls { margin-top:4px; }
.three-controls { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.three-controls .controls { margin-top:4px; }
.sign-table { width:100%; border-collapse:collapse; font-size:.86rem; }
.sign-table td { padding:5px 8px; border-bottom:1px solid #d9d0ae; }
.sign-table td:first-child { font-weight:600; white-space:nowrap; }
.swatch { display:inline-block; width:10px; height:10px; border-radius:50%; margin-right:6px; vertical-align:baseline; }
@media (max-width:560px) {
  .two-controls,.three-controls { grid-template-columns:1fr; gap:2px; }
}

/* Exercise overview: centered problem cards. */
.exercises-slide .slide-body { flex:0 0 auto; margin-block:auto; }
.exercises-slide .card { display:flex; flex-direction:column; gap:8px; padding:22px 22px 26px; }
.exercises-slide .card h3 { font-size:1.12rem; margin-bottom:4px; }
.exercises-slide .card .formula-box { margin:4px 0; }
.exercises-slide .key-list { font-size:.98rem; }
.exercises-slide .key-list li { margin-bottom:10px; }
.exercise-given { font-size:1.08rem; color:var(--base02); font-weight:500; }

/* Compact solution slides: full solution and figure fit on one screen. */
.solution-slide .slide-body { gap:14px; }
.solution-slide .grid-2col { align-items:start; }
.solution-slide .stack { gap:8px; }
.solution-slide .visual-panel { padding:6px 10px; }
.solution-slide .visual-panel > svg { max-height:310px; }
@media (max-height:780px) and (min-width:901px) {
  .solution-slide .visual-panel > svg { max-height:200px; }
}
.solution-slide .slide-subtitle, .problem-description { font-size:1.25rem; line-height:1.5; color:var(--base02); margin:4px 0 18px; font-weight:500; }
.solution-slide .formula-box { margin:4px 0; padding:2px 0; font-size:.92rem; }
.solution-slide .formula-box.highlight { margin:2px 0 6px; padding:6px 4px; }
.solution-slide .slide-body p { font-size:.92rem; line-height:1.45; }
.solution-slide .slide-body p + p { margin-top:3px; }
.solution-slide .callout { padding:8px 12px; font-size:.82rem; line-height:1.45; margin-top:4px; }
.solution-slide figcaption { font-size:.78rem; margin:3px 0 0; line-height:1.35; }
.solution-key { padding:8px 12px; border-left:3px solid var(--blue); }
.solution-key .key-list { padding-left:14px; font-size:.84rem; }
.solution-key .key-list li { margin-bottom:4px; line-height:1.45; }
.key-heading { font-size:.8rem; font-weight:700; color:var(--blue); margin-bottom:4px; text-transform:uppercase; letter-spacing:.04em; }
.step { font-weight:700; color:var(--base02); display:block; margin-bottom:4px; font-size:.95rem; }

/* Summary table. */
.reference { font-size:.95rem; }
.reference td { padding:11px 10px; vertical-align:middle; }
.reference th { font-size:.84rem; }
@media (max-width:560px) {
  .reference, .reference tbody, .reference tr, .reference td { display:block; width:100%; }
  .reference thead { display:none; }
  .reference tr { border-bottom:1px solid var(--border-subtle); padding:10px 0; }
  .reference td { border:0; padding:6px 0; }
  .reference td:first-child { color:var(--blue); font-weight:700; }
}

/* .controls and figcaption set display, so [hidden] needs to win explicitly. */
[hidden] { display:none!important; }
.color-blue { color:var(--blue); } .color-green { color:#6b7a00; }

/* Fact list: a short label and one line of content per row. */
.facts { display:grid; grid-template-columns:max-content minmax(0,1fr); gap:10px 18px; align-items:baseline; font-size:.94rem; line-height:1.5; }
.facts dt { font-weight:700; color:var(--base02); white-space:nowrap; }
.facts dd { min-width:0; }

/* Equation → shape in ℝ² and in ℝ³. */
.compare-table { width:100%; border-collapse:collapse; font-size:.92rem; }
.compare-table th { text-align:left; color:var(--blue); font-size:.76rem; text-transform:uppercase; letter-spacing:.05em; padding:0 10px 6px; border-bottom:1px solid #d9d0ae; }
.compare-table td { padding:8px 10px; border-bottom:1px solid #d9d0ae; }
.compare-table td:first-child { white-space:nowrap; }

.formula-label { display:block; font-size:.74rem; font-weight:700; color:var(--base01); text-transform:uppercase; letter-spacing:.05em; }

/* Live readouts: monospace numbers and a fixed height keep the figure from jumping. */
.readout { min-height:calc(3em + 18px); }
.readout .n { font-family:var(--font-mono); font-size:.94em; white-space:pre; }
.visual-panel > svg.gauge { max-height:64px; margin-top:2px; }
/* Concept figures shrink with the window height, so controls and readouts stay on screen. */
@media (min-width:901px) {
  .slide:not(.title-slide):not(.solution-slide) .visual-panel > svg:not(.gauge) {
    max-height:clamp(200px, calc(100dvh - 545px), 340px);
  }
}

@media (max-height:780px) and (min-width:901px) {
  .facts { gap:6px 14px; }
  .compare-table td { padding:5px 10px; }
}
@media (max-width:560px) {
  .facts { grid-template-columns:1fr; gap:0; }
  .facts dd { margin-bottom:8px; }
}


/* Week 6: midterm review. */
.title-description { font-size:1.05rem; color:var(--base01); line-height:1.6; margin-top:12px; }

/* Roadmap: today's walkthroughs are highlighted. */
.roadmap td:first-child { font-family:var(--font-mono); color:var(--base01); }
.roadmap td:nth-child(4) { white-space:nowrap; }
.roadmap .focus-row td { background:rgba(38,139,210,.07); }
.roadmap .focus-row td:first-child { color:var(--blue); font-weight:700; }

/* Short mathematical checks beside the worked solutions. */
.review-checks { list-style:none; padding:0; font-size:.86rem; line-height:1.45; }
.review-checks li { position:relative; padding-left:20px; margin-bottom:5px; }
.review-checks li:last-child { margin-bottom:0; }
.review-checks li::before { content:'✓'; position:absolute; left:2px; color:var(--blue); font-weight:700; }
.card-checks { border-left:4px solid var(--blue); padding:10px 14px; }
.card-checks .key-heading { color:var(--blue); }

/* Walkthrough steps: a label column and the work. */
.steps { display:grid; grid-template-columns:max-content minmax(0,1fr); gap:6px 12px;
  align-items:baseline; font-size:.88rem; line-height:1.45; }
.steps dt { font-weight:700; color:var(--base02); white-space:nowrap; }
.steps dd { min-width:0; }

/* Answer key: compact, one row per quiz version. */
.answer-table { width:100%; border-collapse:collapse; font-size:.88rem; line-height:1.45; }
.answer-table th { text-align:left; color:var(--blue); font-size:.72rem; text-transform:uppercase;
  letter-spacing:.05em; padding:0 8px 6px; border-bottom:1px solid #d9d0ae; }
.answer-table td { padding:8px; border-bottom:1px solid #d9d0ae; vertical-align:top; }
.answer-table td:first-child { font-family:var(--font-mono); font-weight:700; color:var(--blue);
  font-size:1rem; }
.answer-table .given { display:block; font-size:.74rem; color:var(--base01); margin-top:2px; }

/* Final checklist. */
.checklist { list-style:none; padding:0; font-size:.88rem; line-height:1.45; }
.checklist li { position:relative; padding-left:24px; margin-bottom:7px; }
.checklist li::before { content:'☐'; position:absolute; left:0; top:-1px; color:var(--blue);
  font-size:1.05rem; }

@media (max-height:780px) and (min-width:901px) {
  .answer-table td { padding:5px 8px; }
  .checklist li { margin-bottom:4px; }
  .reference td { padding:7px 10px; }
  .steps { gap:3px 12px; }
  .card-checks { padding:7px 12px; }
  .review-checks li { margin-bottom:3px; }
}
@media (max-width:560px) {
  .steps { grid-template-columns:1fr; gap:0; }
  .steps dd { margin-bottom:6px; }
  .answer-table, .answer-table tbody, .answer-table tr, .answer-table td { display:block; width:100%; }
  .answer-table thead { display:none; }
  .answer-table tr { border-bottom:1px solid var(--border-subtle); padding:8px 0; }
  .answer-table td { border:0; padding:3px 0; }
}

/* Announcement Slide Styles */
.announcement-box { background:var(--base2); border:1px solid var(--border-subtle); border-radius:10px; padding:28px 36px; }
.announcement-list { list-style-type:disc; padding-left:26px; margin:0; display:flex; flex-direction:column; gap:18px; font-size:1.25rem; line-height:1.65; color:var(--base02); }
.announcement-list > li > strong { color:var(--base03); }
.announcement-list ul { list-style-type:circle; padding-left:24px; margin-top:10px; display:flex; flex-direction:column; gap:10px; font-size:1.1rem; line-height:1.55; }

/* Polar lessons: one idea per slide, with space for the explanation and figure. */
.teaching-slide .slide-body { align-items:center; }
.lesson-copy { display:flex; flex-direction:column; gap:18px; min-width:0; }
.teaching-slide p { font-size:1.03rem; line-height:1.6; }
.teaching-slide p+p { margin-top:0; }
.teaching-slide .small { font-size:.86rem; }
.teaching-slide .formula-box { margin:0; padding:4px 0; font-size:1.08rem; }
.teaching-slide .formula-box.highlight { padding:12px 8px; }
.teaching-slide .visual-panel { width:100%; padding:16px; }
.teaching-slide .readout { min-height:0; font-size:.86rem; line-height:1.5; }
.teaching-slide figcaption { font-size:.88rem; margin:10px 0 0; }
.teaching-slide .solar-table { font-size:.93rem; margin:0; }
.lesson-derivation { justify-content:center; width:100%; max-width:1040px; margin-inline:auto; gap:26px; }
.lesson-derivation > .lesson-step { width:100%; }
.lesson-step h3 { margin-bottom:8px; }
.lesson-step p { text-align:center; }
.lesson-columns { width:100%; gap:42px; align-items:start; }
.slide.teaching-slide:not(.title-slide):not(.solution-slide) .visual-panel > svg:not(.gauge) { max-height:340px; }
.slide.teaching-slide:not(.title-slide):not(.solution-slide) .visual-panel > #polarPlot { max-height:250px; }
@media (max-height:780px) and (min-width:901px) {
  .lesson-copy { gap:12px; }
  .lesson-derivation { gap:16px; }
  .teaching-slide .formula-box.highlight { padding:8px; }
  .slide.teaching-slide:not(.title-slide):not(.solution-slide) .visual-panel > svg:not(.gauge) { max-height:280px; }
  .slide.teaching-slide:not(.title-slide):not(.solution-slide) .visual-panel > #polarPlot { max-height:210px; }
}
@media (max-width:900px) {
  .lesson-columns { gap:26px; }
  .teaching-slide .slide-body { gap:24px; }
  .teaching-slide .visual-panel { padding:12px; }
}
@media print {
  .lesson-columns { grid-template-columns:1fr 1fr; }
}
