:root{--navy:#13346d;--navy2:#0a2350;--blue:#2b61e8;--gold:#e8b448;--gold2:#ffe39a;--bg:#f6f8fe;--sheet:#ffffff;--sheet2:#eff4ff;--text:#182843;--muted:#66758c;--line:#dce5f3;--sh:0 12px 35px rgba(23,66,136,.08);--radius:20px;--focus:#f1b540;font-synthesis:none}
[data-theme="dark"]{--navy:#acc9ff;--navy2:#d3e3ff;--blue:#7ca5ff;--gold:#ffd178;--gold2:#513e1e;--bg:#0a1120;--sheet:#111d31;--sheet2:#192947;--text:#e9f0ff;--muted:#abb9d0;--line:#2b3c58;--sh:0 12px 35px rgba(0,0,0,.25)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:96px}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.67 'DM Sans',system-ui,sans-serif;-webkit-font-smoothing:antialiased}button,input{font:inherit}a{color:inherit}.wrap{width:min(1160px,calc(100% - 42px));margin:auto}button{cursor:pointer}.skip{position:absolute;top:-60px;left:10px;background:#fff;color:#122c65;z-index:1000;padding:10px}.skip:focus{top:0}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.scroll-progress{position:fixed;top:0;left:0;width:100%;height:3px;background:var(--gold);z-index:20;transform:scaleX(0);transform-origin:0 50%;will-change:transform;pointer-events:none}
.topbar{position:sticky;top:0;z-index:15;background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);backdrop-filter:blur(15px)}[data-theme="dark"] .topbar{background:rgba(16,28,46,.96)}.topbar-inner{min-height:67px;display:flex;justify-content:space-between;align-items:center;gap:16px}.brand{text-decoration:none;display:flex;align-items:center;gap:13px;white-space:nowrap}.brand-word,.footer-brand{font:800 20px 'Plus Jakarta Sans',sans-serif;letter-spacing:-.075em;color:#153c86}[data-theme="dark"] .brand-word,[data-theme="dark"] .footer-brand{color:#f0f4ff}.gold-i{color:#d6a235}.brand-divider{width:1px;height:23px;background:var(--line)}.brand-product{font-size:11px;font-weight:800;letter-spacing:.11em;color:var(--muted)}.top-actions{display:flex;align-items:center;gap:13px}.small-icon{height:38px;min-width:38px;border:1px solid var(--line);background:var(--sheet);color:var(--text);border-radius:12px;font-size:22px;line-height:1}.nav-link{text-decoration:none;color:var(--navy);font-weight:700;font-size:13px}
.hero{display:grid;grid-template-columns:1.25fr .75fr;gap:26px;background:linear-gradient(115deg,#123d92 0%,#285ad2 60%,#547fe3 100%);border-radius:26px;overflow:hidden;color:#fff;min-height:260px;position:relative;box-shadow:0 20px 38px rgba(16,66,155,.19);margin:28px 0 29px}.hero:after{content:'';width:390px;height:390px;border:60px solid rgba(255,255,255,.075);border-radius:50%;position:absolute;right:-120px;top:-130px}.hero-content{padding:42px 0 38px 44px;z-index:1}.eyebrow{font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#c8ddff}.hero h1{font:800 clamp(26px,4vw,40px)/1.16 'Plus Jakarta Sans',sans-serif;letter-spacing:-.05em;margin:12px 0}.hero p{font-size:15px;max-width:530px;margin:0;color:#dce8ff;line-height:1.7}.hero-visual{position:relative;z-index:1;display:flex;align-items:center;justify-content:center}.hero-orbit{width:214px;height:214px;border-radius:50%;background:radial-gradient(circle,#9ed4ff24 0,#9ed4ff0f 59%,transparent 60%);border:1px solid rgba(255,255,255,.23);box-shadow:0 0 0 20px rgba(255,255,255,.04),0 0 0 45px rgba(255,255,255,.025);display:grid;place-items:center}.hero-heart{width:104px;height:104px;fill:none;stroke:#ffdb87;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 5px 6px rgba(0,0,0,.13))}.hero-chip{display:inline-flex;background:#ffffff22;color:#fff;border:1px solid #ffffff40;padding:5px 12px;border-radius:30px;font-weight:700;font-size:12px;margin-top:17px}
.section-heading{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:0 0 18px}.section-heading h2{font:800 23px 'Plus Jakarta Sans',sans-serif;letter-spacing:-.04em;margin:0}.section-heading p{margin:3px 0 0;color:var(--muted);font-size:13px}.search-field{display:flex;align-items:center;max-width:460px;width:100%;height:46px;border:1px solid var(--line);background:var(--sheet);border-radius:14px;box-shadow:0 3px 14px rgba(23,60,128,.03);padding:0 15px;gap:10px}.search-field span{color:var(--muted)}.search-field input{flex:1;min-width:0;background:transparent;border:0;color:var(--text);outline:0}.search-field input::placeholder{color:var(--muted)}.filters{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 24px}.filter{font-size:13px;font-weight:700;border:1px solid var(--line);background:var(--sheet);border-radius:50px;padding:8px 15px;color:var(--muted)}.filter.active{background:var(--navy2);color:#fff;border-color:transparent}[data-theme="dark"] .filter.active{background:#2d5aad;color:#fff}.group-label{font-size:12px;text-transform:uppercase;letter-spacing:.14em;font-weight:800;color:var(--muted);margin:28px 0 13px}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.topic-card{display:flex;flex-direction:column;text-decoration:none;border:1px solid var(--line);background:var(--sheet);border-radius:20px;padding:20px 21px;min-height:162px;box-shadow:var(--sh);transition:transform .19s,box-shadow .19s,border-color .19s}.topic-card:hover{transform:translateY(-3px);box-shadow:0 18px 36px rgba(24,78,163,.14);border-color:#afc8f8}.card-top{display:flex;align-items:start;justify-content:space-between}.topic-icon{display:grid;place-items:center;width:43px;height:43px;border-radius:13px;background:var(--ico-bg,#eaf0ff);color:var(--ico-color,#2b61e8);font-size:19px;font-weight:800}.topic-arrow{color:var(--muted);font-size:20px}.topic-card h3{font:800 16px/1.35 'Plus Jakarta Sans',sans-serif;letter-spacing:-.03em;margin:16px 0 4px}.topic-card .meta{color:var(--muted);font-size:12px}.done-tag{font-size:11px;color:#24856b;font-weight:800}
.breadcrumb{margin:28px 0 18px;font-size:13px;color:var(--muted)}.breadcrumb a{color:var(--navy);text-decoration:none;font-weight:700}.article-layout{display:grid;grid-template-columns:minmax(0,1fr) 235px;gap:26px;align-items:start}.article-sheet{background:var(--sheet);border:1px solid var(--line);border-radius:24px;padding:36px 42px 42px;box-shadow:var(--sh);min-width:0}.article-sheet h1{font:800 clamp(27px,3.4vw,39px)/1.2 'Plus Jakarta Sans',sans-serif;letter-spacing:-.06em;margin:12px 0 15px;color:var(--navy2)}.article-summary{font-size:14px;color:var(--muted);margin-bottom:26px;border-bottom:1px solid var(--line);padding-bottom:20px}.article-text{font-size:15.5px;line-height:1.8}:is(.article-text,.cs-body) h2{font:800 21px/1.35 'Plus Jakarta Sans',sans-serif;letter-spacing:-.035em;color:var(--navy);margin:35px 0 13px;padding-top:8px}:is(.article-text,.cs-body) p{margin:0 0 16px}:is(.article-text,.cs-body) strong{font-weight:750;color:var(--navy2)}:is(.article-text,.cs-body) ol,:is(.article-text,.cs-body) ul{padding-left:25px;margin:0 0 22px}:is(.article-text,.cs-body) li{margin:0 0 8px}:is(.article-text,.cs-body) table{width:100%;border-collapse:collapse;font-size:13px;line-height:1.55;margin:22px 0}:is(.article-text,.cs-body) th{text-align:left;background:#e5efff;color:#163b76}:is(.article-text,.cs-body) td,:is(.article-text,.cs-body) th{padding:11px 13px;border:1px solid var(--line);vertical-align:top}[data-theme="dark"] :is(.article-text,.cs-body) th{background:#1b3a62;color:#d5e6ff}:is(.article-text,.cs-body) details{margin:12px 0 22px;background:var(--sheet2);border:1px solid var(--line);border-radius:14px;padding:14px 17px;font-size:14px}:is(.article-text,.cs-body) details summary{cursor:pointer;color:var(--navy);font-weight:800;outline-offset:3px}:is(.article-text,.cs-body) details[open]{border-color:#acc4f8}:is(.article-text,.cs-body) details p{margin-top:12px}:is(.article-text,.cs-body) code{background:var(--sheet2);border-radius:5px;padding:2px 4px}:is(.article-text,.cs-body) h1{display:none}.article-end{border-top:1px solid var(--line);margin-top:32px;padding-top:21px;display:flex;gap:9px;justify-content:space-between;align-items:center;flex-wrap:wrap}.btn{font-weight:800;border-radius:12px;padding:10px 15px;border:1px solid var(--line);background:var(--sheet);color:var(--navy);font-size:13px}.btn-primary{background:#1e55cb;border-color:#1e55cb;color:white}.btn:hover{filter:brightness(.96)}
.toc{position:sticky;top:89px;background:var(--sheet);border:1px solid var(--line);border-radius:19px;padding:20px 18px;box-shadow:var(--sh)}.toc h2{font:800 13px 'Plus Jakarta Sans',sans-serif;text-transform:uppercase;letter-spacing:.1em;margin:0 0 12px}.toc a{display:block;text-decoration:none;font-size:12px;line-height:1.5;padding:9px 5px;border-radius:8px;color:var(--muted)}.toc a:hover{color:var(--blue);background:var(--sheet2)}.nav-bottom{margin-top:18px;display:flex;flex-direction:column;gap:7px}.nav-bottom a{font-size:12px;font-weight:750;color:var(--blue);text-decoration:none}
.empty{padding:35px;background:var(--sheet);text-align:center;border:1px dashed var(--line);border-radius:15px;color:var(--muted)}.site-footer{margin-top:60px;border-top:1px solid var(--line);padding:28px 0;background:var(--sheet)}.footer-inner{display:flex;gap:18px;flex-wrap:wrap;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted)}.footer-brand{font-size:15px}.footer-brand>span:last-child{font:750 10px 'DM Sans',sans-serif;letter-spacing:.09em;margin-left:6px;color:var(--muted)}.mobile-sections{display:none}
@media(max-width:940px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.article-layout{grid-template-columns:minmax(0,1fr)}.toc{position:static;display:none}.mobile-sections{display:block;margin:15px 0 22px}.mobile-sections select{width:100%;padding:12px;border:1px solid var(--line);background:var(--sheet);color:var(--text);border-radius:12px}.article-sheet{padding:30px 28px}}
@media(max-width:660px){.wrap{width:calc(100% - 28px)}.brand-word{font-size:17px}.brand-product{font-size:10px}.brand{gap:8px}.topbar-inner{min-height:61px}.hero{grid-template-columns:1fr;min-height:0;border-radius:20px;margin:18px 0 26px;gap:0}.hero-content{padding:26px 24px 22px}.hero h1{font-size:28px}.hero-visual{display:none}.hero p{font-size:13px}.section-heading{display:block}.section-heading h2{font-size:20px}.search-field{max-width:none}.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.topic-card{min-height:151px;padding:14px 13px;border-radius:16px}.topic-card h3{font-size:13px;margin:14px 0 5px}.topic-icon{width:35px;height:35px;font-size:16px}.group-label{font-size:11px}.article-sheet{padding:22px 20px;border-radius:18px}.article-sheet h1{font-size:27px}.article-text{font-size:14.5px;line-height:1.77}:is(.article-text,.cs-body) h2{font-size:18px}:is(.article-text,.cs-body) table{display:block;overflow-x:auto}.article-end{align-items:stretch}.article-end .btn{flex:1}.footer-inner{flex-direction:column;align-items:start;gap:7px}}
@media(max-width:390px){.brand-product,.brand-divider{display:none}.nav-link{font-size:12px}.topic-card{padding:12px}.cards{gap:8px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}

.learning-figure{border-radius:18px;border:1px solid var(--line);background:linear-gradient(145deg,var(--sheet2),var(--sheet));padding:20px 18px 15px;margin:10px 0 26px;overflow:hidden}.learning-figure figcaption{font:800 14px/1.4 'Plus Jakarta Sans',sans-serif;color:var(--navy);margin-bottom:10px}.learning-figure svg{display:block;width:100%;height:auto;max-height:290px}.learning-figure p{color:var(--muted);font-size:12px;line-height:1.6;margin:10px 0 0}.mechanism{display:flex;flex-direction:column;align-items:center;gap:3px}.mechanism div{width:min(100%,455px);padding:9px 11px;text-align:center;background:var(--sheet);color:var(--text);border:1px solid var(--line);border-radius:10px;font-size:12.5px;font-weight:700}.mechanism b{color:var(--gold);line-height:1.4}


/* Lecture-document navigation: preserve the premium palette and avoid unnecessary steps. */
.library-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;flex-wrap:wrap;margin:0 0 16px}
.library-heading h2{font:800 23px 'Plus Jakarta Sans',sans-serif;letter-spacing:-.04em;margin:0}
.library-heading p{font-size:13px;margin:3px 0 0;color:var(--muted)}
.library-tabs{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);background:var(--sheet2);padding:5px;border-radius:15px}
.library-tab{background:transparent;border:0;border-radius:11px;padding:9px 15px;font-weight:800;font-size:13px;color:var(--muted)}
.library-tab.selected{background:var(--sheet);color:var(--navy);box-shadow:0 3px 12px rgba(16,60,130,.10)}

.library-note{font-size:12px;color:var(--muted);margin-top:16px}
.lecture-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin-top:18px}
.lecture-card{text-decoration:none;display:flex;flex-direction:column;position:relative;overflow:hidden;padding:23px 25px;min-height:245px;border-radius:22px;border:1px solid var(--line);background:var(--sheet);box-shadow:var(--sh);transition:transform .2s,box-shadow .2s,border-color .2s}
.lecture-card:before{content:'';position:absolute;inset:0 0 auto 0;height:6px;background:var(--lecture-color)}
.lecture-card:hover{transform:translateY(-3px);box-shadow:0 18px 36px rgba(25,74,149,.14);border-color:var(--lecture-color)}
.lecture-card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.lecture-number{display:grid;place-items:center;background:var(--lecture-soft);color:var(--lecture-color);border-radius:12px;width:43px;height:43px;font:800 16px 'Plus Jakarta Sans',sans-serif}.lecture-doc-icon{font-size:25px;color:var(--lecture-color)}
.lecture-file{font-size:11px;letter-spacing:.005em;color:var(--muted);overflow-wrap:anywhere;margin-bottom:3px;font-weight:700}
.lecture-card h3{font:800 19px/1.3 'Plus Jakarta Sans',sans-serif;letter-spacing:-.04em;margin:5px 0 9px;color:var(--navy2)}
.lecture-card p{font-size:13px;line-height:1.6;color:var(--muted);margin:0 0 14px}
.lecture-card-bottom{margin-top:auto;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:13px;color:var(--lecture-color);font-size:12px;font-weight:800;gap:15px}
.lecture-hero{border-radius:23px;border:1px solid var(--line);background:linear-gradient(110deg,var(--sheet2),var(--sheet));padding:30px 35px;position:relative;overflow:hidden}
.lecture-hero:before{content:'';position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--lecture-color)}
.lecture-kicker{color:var(--lecture-color);font-size:11px;font-weight:800;letter-spacing:.13em}
.lecture-hero-layout{display:flex;align-items:center;justify-content:space-between;gap:32px}
.lecture-hero h1{font:800 clamp(25px,3.2vw,35px)/1.17 'Plus Jakarta Sans',sans-serif;letter-spacing:-.045em;color:var(--navy2);margin:8px 0 10px}
.lecture-hero p{font-size:14px;color:var(--muted);max-width:670px;margin:0}
.lecture-filename{font-size:12px;color:var(--muted);font-weight:700;overflow-wrap:anywhere;margin-top:10px}
.lecture-stats{text-align:center;flex:none;background:var(--sheet);border:1px solid var(--line);border-radius:16px;padding:15px 20px;display:flex;flex-direction:column}
.lecture-stats strong{font:800 32px 'Plus Jakarta Sans',sans-serif;color:var(--lecture-color)}
.lecture-stats span{font-size:11px;color:var(--muted)}
.lecture-outline{margin-top:28px}.lecture-outline .section-heading{margin-bottom:14px}
.lecture-rows{border-radius:19px;border:1px solid var(--line);background:var(--sheet);box-shadow:var(--sh);overflow:hidden}
.lecture-row{display:flex;align-items:center;gap:17px;padding:17px 21px;min-height:80px;text-decoration:none;border-bottom:1px solid var(--line);transition:background .18s}
.lecture-row:last-child{border:0}.lecture-row:hover{background:var(--sheet2)}
.lecture-order{font:800 13px 'Plus Jakarta Sans',sans-serif;color:var(--blue);background:var(--sheet2);width:36px;height:36px;border-radius:11px;display:grid;place-items:center;flex:none}
.lecture-row-main{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}
.lecture-row-title{font:800 14px 'Plus Jakarta Sans',sans-serif;color:var(--navy2)}
.lecture-row-detail{font-size:12px;color:var(--muted);line-height:1.55}
.lecture-page-ref{font-size:11px;line-height:1.3;color:var(--muted);white-space:normal;max-width:130px;text-align:right;flex:none}
.lecture-arrow{font-size:20px;color:var(--blue)}
.duplicate-notice{margin:18px 0 0;padding:14px 18px;border-radius:12px;background:var(--sheet2);border:1px solid var(--line);font-size:13px;line-height:1.65}
.duplicate-notice a{color:var(--blue);font-weight:800}
.extra-foundations{background:var(--sheet2);border-radius:17px;border:1px solid var(--line);margin-top:20px;padding:20px 24px}
.extra-foundations h3{font:800 15px 'Plus Jakarta Sans',sans-serif;color:var(--navy2);margin:0}
.extra-foundations p{font-size:13px;color:var(--muted);margin:5px 0 13px}
.foundation-link{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;align-items:center;padding:13px 15px;background:var(--sheet);border:1px solid var(--line);border-radius:11px;text-decoration:none;font-weight:800;font-size:14px}
.foundation-link span{color:var(--blue);font-size:12px}
.lecture-footnav{margin-top:20px;display:flex;flex-wrap:wrap;gap:12px}
@media(max-width:760px){.lecture-grid{grid-template-columns:1fr}.lecture-hero-layout{align-items:start}.lecture-stats{padding:10px 13px}}
@media(max-width:560px){.library-heading{align-items:start}.library-heading h2{font-size:21px}.library-tabs{width:100%}.library-tab{flex:1;padding:10px 8px;font-size:12px}.lecture-card{min-height:0;padding:22px 20px}.lecture-hero{padding:23px 22px}.lecture-hero-layout{gap:12px}.lecture-stats{display:none}.lecture-row{padding:14px 13px;gap:10px}.lecture-page-ref{max-width:95px;font-size:10px}.lecture-row-detail{font-size:11.5px}.lecture-order{width:30px;height:30px;font-size:11px}.lecture-row-title{font-size:12.5px}.lecture-arrow{font-size:17px}}

@media(max-width:560px){.lecture-row{display:grid;grid-template-columns:30px minmax(0,1fr) 16px;grid-template-areas:"number main arrow" "number pages arrow";row-gap:3px}.lecture-order{grid-area:number}.lecture-row-main{grid-area:main}.lecture-page-ref{grid-area:pages;text-align:left;max-width:none;font-size:10.5px}.lecture-arrow{grid-area:arrow}}

/* Chapter 01: licensed teaching illustrations, sized for reading and mobile enlargement. */
:is(.article-text,.cs-body) .teaching-illustration{margin:22px 0 26px;padding:15px 15px 12px;background:var(--sheet2);border:1px solid var(--line);border-radius:18px;overflow:hidden}
:is(.article-text,.cs-body) .teaching-illustration>a{display:block;border-radius:12px;overflow:hidden;background:#fff;text-align:center}
:is(.article-text,.cs-body) .teaching-illustration img{display:block;width:100%;height:auto;max-height:570px;object-fit:contain;margin:0 auto}
:is(.article-text,.cs-body) .teaching-illustration figcaption{font-size:12px;line-height:1.6;color:var(--muted);margin:12px 2px 0}
:is(.article-text,.cs-body) .teaching-illustration figcaption strong{color:var(--text)}
:is(.article-text,.cs-body) .teaching-illustration figcaption .figure-credit{display:block;font-size:11px;line-height:1.55;margin-top:5px}
:is(.article-text,.cs-body) .teaching-illustration figcaption a{color:var(--blue);text-decoration:underline;text-underline-offset:2px}
@media(max-width:560px){:is(.article-text,.cs-body) .teaching-illustration{padding:9px 9px 12px;border-radius:13px}:is(.article-text,.cs-body) .teaching-illustration figcaption{font-size:11.5px}}


/* The marked word stays an inline span: its dotted underline hugs the text and a multi-word term can wrap. glossary.js only adds button semantics (no layout shift). */
/* The marked word looks and sits exactly the same before and after glossary.js turns it into a button (no layout shift). */
:is(.article-text,.cs-body) span[data-term]{text-decoration:underline dotted var(--blue);text-decoration-thickness:1.5px;text-underline-offset:.24em;text-decoration-skip-ink:none}
:is(.article-text,.cs-body) .glossary-trigger {cursor:help;-webkit-tap-highlight-color:transparent;}
:is(.article-text,.cs-body) .glossary-trigger:hover {color:var(--blue);}
:is(.article-text,.cs-body) .glossary-trigger:focus-visible {outline:2px solid var(--blue);outline-offset:3px;border-radius:2px;}
.glossary-popup {
  position:fixed;z-index:1010;width:min(305px,calc(100vw - 20px));
  padding:14px 16px;background:var(--sheet);color:var(--text);border:1px solid var(--line);
  border-radius:13px;box-shadow:0 14px 45px rgba(15,35,75,.19);
  font-size:13px;line-height:1.55;
}
.glossary-popup[hidden] {display:none !important;}
.glossary-popup strong {display:block;color:var(--navy2);font-size:13px;margin-bottom:4px;}
.glossary-popup span {display:block;}
:is(.article-text,.cs-body) #chapter-essentials + ol,:is(.article-text,.cs-body) [id$="-chapter-essentials"] + ol {padding:20px 20px 20px 39px;border:1px solid var(--line);border-radius:16px;background:var(--sheet2);}
:is(.article-text,.cs-body) #chapter-essentials + ol li,:is(.article-text,.cs-body) [id$="-chapter-essentials"] + ol li {padding-left:4px;margin-bottom:10px;}
:is(.article-text,.cs-body) #understanding-check ~ p + details,:is(.article-text,.cs-body) [id$="-understanding-check"] ~ p + details {margin-top:-5px;}
@media(max-width:560px) {.glossary-popup {padding:12px 14px;font-size:12.5px;}:is(.article-text,.cs-body) #chapter-essentials + ol,:is(.article-text,.cs-body) [id$="-chapter-essentials"] + ol {padding:17px 15px 17px 34px;}}


/* Concept-first teaching visuals: restrained, responsive and reading-oriented. */

:is(.article-text,.cs-body) .media-resource{background:var(--sheet2);border:1px solid var(--line);border-radius:17px;margin:22px 0;padding:20px 21px;overflow:hidden}
:is(.article-text,.cs-body) .media-resource .media-eyebrow{font-size:10px;font-weight:800;letter-spacing:.1em;color:var(--blue);display:block;margin-bottom:7px}
:is(.article-text,.cs-body) .media-resource h3{font-size:16px;line-height:1.35;color:var(--navy2);margin:0 0 7px}
:is(.article-text,.cs-body) .media-resource p{font-size:13px;line-height:1.65;margin:0 0 13px}
:is(.article-text,.cs-body) .media-play{background:var(--navy);border:1px solid var(--navy);color:white;border-radius:10px;padding:9px 14px;font:700 12.5px 'Plus Jakarta Sans',sans-serif;cursor:pointer}
:is(.article-text,.cs-body) .media-play:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
:is(.article-text,.cs-body) .media-outlink{display:inline-block;font-size:12px;color:var(--blue);font-weight:750;margin-left:12px;text-decoration:underline;text-underline-offset:3px}
:is(.article-text,.cs-body) .media-stage:not(:empty){margin-top:15px;background:#080d1a;border-radius:12px;overflow:hidden;display:grid;place-items:center}
:is(.article-text,.cs-body) .video-resource .media-stage:not(:empty){aspect-ratio:16/9}
:is(.article-text,.cs-body) .video-resource .media-stage iframe{display:block;border:0;width:100%;height:100%;min-height:190px}
:is(.article-text,.cs-body) .animation-resource .media-stage img{max-width:100%;width:auto;max-height:660px;height:auto;display:block;margin:auto}
:is(.article-text,.cs-body) .media-resource .media-credit{font-size:11px;color:var(--muted);line-height:1.5;margin:12px 0 0}
:is(.article-text,.cs-body) .media-resource .media-credit a{color:var(--blue)}
@media(max-width:660px){:is(.article-text,.cs-body) .media-resource{padding:16px 15px}:is(.article-text,.cs-body) .media-resource .media-outlink{display:block;margin:12px 0 0}}


/* DOMiNANCE compact teaching standard: readable density, no oversized decorative gaps. */
.article-text{min-width:0;overflow-wrap:break-word}
:is(.article-text,.cs-body) h2{margin:25px 0 10px;padding-top:5px}
:is(.article-text,.cs-body) h3{margin:16px 0 8px;line-height:1.4}
:is(.article-text,.cs-body) p{margin-bottom:11px}
:is(.article-text,.cs-body) ul,:is(.article-text,.cs-body) ol{margin-bottom:14px}
:is(.article-text,.cs-body) li{margin-bottom:5px}
:is(.article-text,.cs-body) table{margin:12px 0 17px;font-size:12.75px;line-height:1.45}
:is(.article-text,.cs-body) td,:is(.article-text,.cs-body) th{padding:8px 10px}
:is(.article-text,.cs-body) details{margin:8px 0 11px;padding:11px 14px}
:is(.article-text,.cs-body) details p{margin:9px 0 1px}
:is(.article-text,.cs-body) .teaching-illustration{margin:13px 0 17px;padding:10px 11px 9px}
:is(.article-text,.cs-body) .teaching-illustration img{max-height:440px}
:is(.article-text,.cs-body) .teaching-illustration figcaption{margin-top:8px}
:is(.article-text,.cs-body) #chapter-essentials + ol{padding:13px 15px 13px 34px}
:is(.article-text,.cs-body) #chapter-essentials + ol li{margin-bottom:6px}
:is(.article-text,.cs-body) .media-resource{margin:12px 0;padding:13px 16px}
:is(.article-text,.cs-body) .media-resource h3{margin-bottom:5px}
:is(.article-text,.cs-body) .media-resource p{margin-bottom:8px}
:is(.article-text,.cs-body) .media-play{min-height:42px}
:is(.article-text,.cs-body) .pressure-rules{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:13px 0}
:is(.article-text,.cs-body) .pressure-rules>div{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:10px;row-gap:2px;border:1px solid var(--line);border-radius:11px;background:var(--sheet2);padding:10px 12px;min-width:0}
:is(.article-text,.cs-body) .pressure-rules strong{font-size:13px;flex:0 0 auto}
:is(.article-text,.cs-body) .pressure-rules span{font-size:15px;font-weight:800;color:var(--navy);white-space:nowrap}
:is(.article-text,.cs-body) .pressure-rules small{font-size:11.5px;color:var(--muted);flex-basis:100%}
:is(.article-text,.cs-body) .mechanism-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:9px 0 11px}
:is(.article-text,.cs-body) .mechanism-strip span{font-size:12px;line-height:1.4;padding:7px 8px;border-radius:8px;border:1px solid var(--line);background:var(--sheet2);text-align:center}
:is(.article-text,.cs-body) .mechanism-strip strong{font-size:12px}
:is(.article-text,.cs-body) .equation-block{display:flex;align-items:center;gap:9px 16px;flex-wrap:wrap;border:1px solid var(--line);border-radius:11px;background:var(--sheet2);padding:10px 13px;margin:10px 0 13px;min-width:0}
:is(.article-text,.cs-body) .equation-label{font:750 12px/1.4 'Plus Jakarta Sans',sans-serif;color:var(--muted)}
:is(.article-text,.cs-body) .equation-example{font-size:12.5px;color:var(--text)}
:is(.article-text,.cs-body) .equation-example strong{color:var(--navy)}
@media(max-width:660px){
 .article-text{font-size:14.5px;line-height:1.69}
 :is(.article-text,.cs-body) h2{margin:22px 0 9px;font-size:18px}
 :is(.article-text,.cs-body) h3{font-size:15px}
 :is(.article-text,.cs-body) p{margin-bottom:10px}
 .article-sheet{padding:18px 15px}
 .article-summary{margin-bottom:15px;padding-bottom:13px}
 .mobile-sections{margin:10px 0 14px}
 :is(.article-text,.cs-body) table{font-size:12px;max-width:100%;margin:11px 0 15px}
 :is(.article-text,.cs-body) td,:is(.article-text,.cs-body) th{padding:7px 8px}
 :is(.article-text,.cs-body) .teaching-illustration{padding:7px;margin:11px 0 14px}
 :is(.article-text,.cs-body) .teaching-illustration img{max-height:340px}
 :is(.article-text,.cs-body) .media-resource{padding:11px 12px;margin:12px 0}
 :is(.article-text,.cs-body) .pressure-rules{gap:7px}
 :is(.article-text,.cs-body) .pressure-rules>div{padding:8px 9px}
 :is(.article-text,.cs-body) .pressure-rules strong{font-size:12px}
 :is(.article-text,.cs-body) .pressure-rules span{font-size:13.5px}
 :is(.article-text,.cs-body) .mechanism-strip{grid-template-columns:repeat(2,minmax(0,1fr))}
 :is(.article-text,.cs-body) .equation-block{gap:6px 12px;padding:9px 11px}
 :is(.article-text,.cs-body) #chapter-essentials + ol{padding:12px 10px 12px 30px}
}
@media(max-width:400px){
 :is(.article-text,.cs-body) .pressure-rules{grid-template-columns:1fr}
 .article-sheet{padding:16px 12px}
 :is(.article-text,.cs-body) table{font-size:11.5px}
}

/* Optional heart sounds: native controls, no layout shift until requested. */
:is(.article-text,.cs-body) .audio-resource .media-stage:not(:empty){background:transparent;display:block;padding:0}
:is(.article-text,.cs-body) .audio-resource audio{width:min(100%,420px);height:46px;display:block}
:is(.article-text,.cs-body) .teaching-illustration-portrait img{max-height:370px;width:auto;max-width:100%;object-fit:contain}
@media(max-width:600px){
 :is(.article-text,.cs-body) .teaching-illustration-portrait img{max-height:310px}
}

/* ECG chapter — compact, low-data diagrams and calibrated paper without extra graphics libraries. */
:is(.article-text,.cs-body) .ecg-concept-line{display:flex;flex-wrap:wrap;align-items:center;gap:4px 7px;margin:10px 0 15px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:var(--sheet2)}
:is(.article-text,.cs-body) .ecg-concept-line span{font-size:12px;font-weight:700}
:is(.article-text,.cs-body) .ecg-concept-line b{color:var(--blue);font-size:15px}






@media(max-width:660px){:is(.article-text,.cs-body) .ecg-concept-line{padding:8px 9px}:is(.article-text,.cs-body) .ecg-concept-line span{font-size:11px}}


/* Chapter 07: compact cardiac-output learning components */
:is(.article-text,.cs-body) .co-impact-strip,:is(.article-text,.cs-body) .co-compare-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:11px 0 14px}
:is(.article-text,.cs-body) .co-impact-strip>span,:is(.article-text,.cs-body) .co-compare-grid>div{border:1px solid var(--line);border-radius:10px;background:var(--sheet2);padding:10px 11px;min-width:0;display:flex;flex-direction:column;gap:3px}
:is(.article-text,.cs-body) .co-impact-strip strong,:is(.article-text,.cs-body) .co-compare-grid strong{font-size:12.5px;line-height:1.4}
:is(.article-text,.cs-body) .co-impact-strip small,:is(.article-text,.cs-body) .co-compare-grid small{font-size:11px;line-height:1.45;color:var(--muted)}
:is(.article-text,.cs-body) .co-compare-grid span{color:var(--blue);font-size:13px;font-weight:800}
:is(.article-text,.cs-body) .co-cause-flow{display:flex;align-items:center;flex-wrap:wrap;gap:4px 7px;border:1px solid var(--line);background:var(--sheet2);padding:9px 11px;border-radius:10px;margin:11px 0 14px}
:is(.article-text,.cs-body) .co-cause-flow span{font-size:12px;line-height:1.5;font-weight:750}
:is(.article-text,.cs-body) .co-cause-flow b{font-size:13px;color:var(--blue)}



@media(max-width:660px){:is(.article-text,.cs-body) .co-impact-strip{gap:5px}:is(.article-text,.cs-body) .co-impact-strip>span{padding:7px}:is(.article-text,.cs-body) .co-impact-strip strong{font-size:11.5px}:is(.article-text,.cs-body) .co-impact-strip small{font-size:10px}:is(.article-text,.cs-body) .co-compare-grid{grid-template-columns:1fr;gap:6px}:is(.article-text,.cs-body) .co-compare-grid>div{display:grid;grid-template-columns:minmax(0,1fr) auto;padding:8px 10px}:is(.article-text,.cs-body) .co-compare-grid small{grid-column:1/-1}}
@media(max-width:350px){:is(.article-text,.cs-body) .co-impact-strip{grid-template-columns:1fr}:is(.article-text,.cs-body) .co-impact-strip>span{display:block}:is(.article-text,.cs-body) .co-impact-strip small{display:inline;margin-left:7px}:is(.article-text,.cs-body) .co-cause-flow span{font-size:11px}}


/* Chapter 08: compact Fick and ventricular stroke-work visuals. */
:is(.article-text,.cs-body) .fick-process{display:flex;align-items:center;flex-wrap:wrap;gap:5px 7px;padding:9px 11px;margin:11px 0 14px;background:var(--sheet2);border:1px solid var(--line);border-radius:11px}
:is(.article-text,.cs-body) .fick-process span{min-width:0;display:flex;flex-direction:column;gap:3px}
:is(.article-text,.cs-body) .fick-process strong{font-size:12px;line-height:1.4}
:is(.article-text,.cs-body) .fick-process small{font-size:10.5px;line-height:1.4;color:var(--muted)}
:is(.article-text,.cs-body) .fick-process b{font-size:15px;color:var(--blue)}



@media(max-width:660px){:is(.article-text,.cs-body) .fick-process{gap:5px;padding:8px 10px}:is(.article-text,.cs-body) .fick-process strong{font-size:11.5px}:is(.article-text,.cs-body) .fick-process small{font-size:10px}}


/* Chapter 09: compact hemodynamics models and radius comparisons. */
:is(.article-text,.cs-body) .hemo-radius-impact{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:11px 0 16px}
:is(.article-text,.cs-body) .hemo-radius-impact>div{background:var(--sheet2);border:1px solid var(--line);border-radius:11px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}
:is(.article-text,.cs-body) .hemo-radius-impact strong{font-size:12px}:is(.article-text,.cs-body) .hemo-radius-impact span{font-size:15px;font-weight:800;color:var(--blue)}
:is(.article-text,.cs-body) .hemo-radius-impact small{font-size:11px;line-height:1.4;color:var(--muted)}


@media(max-width:660px){:is(.article-text,.cs-body) .hemo-radius-impact{gap:6px}:is(.article-text,.cs-body) .hemo-radius-impact>div{padding:9px}:is(.article-text,.cs-body) .hemo-radius-impact span{font-size:13px}}


/* Chapter 10: compact Windkessel, hydrostatic-height and pressure-drop visuals. */



:is(.article-text,.cs-body) .bp-height-rules{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:11px 0 15px}
:is(.article-text,.cs-body) .bp-height-rules>div{border:1px solid var(--line);background:var(--sheet2);border-radius:11px;padding:10px 11px;display:flex;flex-direction:column;gap:4px}
:is(.article-text,.cs-body) .bp-height-rules strong{font-size:12px}
:is(.article-text,.cs-body) .bp-height-rules span{font-size:15px;font-weight:800;color:var(--blue)}
:is(.article-text,.cs-body) .bp-height-rules small{font-size:11px;line-height:1.4;color:var(--muted)}
:is(.article-text,.cs-body) .bp-drop-strip{display:flex;flex-wrap:wrap;align-items:center;gap:5px 8px;padding:10px 11px;margin:12px 0 16px;border:1px solid var(--line);border-radius:11px;background:var(--sheet2)}
:is(.article-text,.cs-body) .bp-drop-strip span{display:flex;flex-direction:column;gap:3px}
:is(.article-text,.cs-body) .bp-drop-strip strong{font-size:12px}:is(.article-text,.cs-body) .bp-drop-strip small{font-size:10.5px;color:var(--muted)}
:is(.article-text,.cs-body) .bp-drop-strip b{color:var(--blue);font-size:14px}
@media(max-width:660px){:is(.article-text,.cs-body) .bp-height-rules{gap:6px}:is(.article-text,.cs-body) .bp-height-rules>div{padding:9px}:is(.article-text,.cs-body) .bp-height-rules strong{font-size:11.5px}:is(.article-text,.cs-body) .bp-height-rules span{font-size:12.5px}:is(.article-text,.cs-body) .bp-height-rules small{font-size:10px}}
@media(max-width:350px){:is(.article-text,.cs-body) .bp-height-rules{grid-template-columns:1fr}}


/* Chapters 11–15: compact mobile-first pressure waves, fluid balance and lymph flows. */
:is(.article-text,.cs-body) .pulse-mechanism,:is(.article-text,.cs-body) .vr-flow,:is(.article-text,.cs-body) .micro-path,:is(.article-text,.cs-body) .edema-balance,:is(.article-text,.cs-body) .lymph-flow{
display:flex;flex-wrap:wrap;align-items:center;gap:5px 7px;background:var(--sheet2);border:1px solid var(--line);border-radius:11px;padding:9px 11px;margin:11px 0 15px}
:is(.article-text,.cs-body) .pulse-mechanism span,:is(.article-text,.cs-body) .vr-flow span,:is(.article-text,.cs-body) .micro-path span,:is(.article-text,.cs-body) .edema-balance span,:is(.article-text,.cs-body) .lymph-flow span{font-size:11.5px;font-weight:750;line-height:1.5}
:is(.article-text,.cs-body) .edema-balance span{display:flex;flex-direction:column;gap:2px}:is(.article-text,.cs-body) .edema-balance strong{font-size:11.5px}
:is(.article-text,.cs-body) .edema-balance small{color:var(--muted);font-size:10.5px;font-weight:400}
:is(.article-text,.cs-body) .pulse-mechanism b,:is(.article-text,.cs-body) .vr-flow b,:is(.article-text,.cs-body) .micro-path b,:is(.article-text,.cs-body) .edema-balance b,:is(.article-text,.cs-body) .lymph-flow b{color:var(--blue);font-size:13px}





@media(max-width:660px){
:is(.article-text,.cs-body) .pulse-mechanism,:is(.article-text,.cs-body) .vr-flow,:is(.article-text,.cs-body) .micro-path,:is(.article-text,.cs-body) .edema-balance,:is(.article-text,.cs-body) .lymph-flow{gap:4px 6px;padding:8px 9px}
:is(.article-text,.cs-body) .pulse-mechanism span,:is(.article-text,.cs-body) .vr-flow span,:is(.article-text,.cs-body) .micro-path span,:is(.article-text,.cs-body) .edema-balance span,:is(.article-text,.cs-body) .lymph-flow span{font-size:10.8px}


}
@media(max-width:350px){:is(.article-text,.cs-body) .edema-balance span{flex-basis:auto}}

/* Reading Experience v1: compact controls; continuous reading remains default. */
.reader-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:9px 16px;padding:10px 12px;margin:14px 0 18px;border:1px solid var(--line);border-radius:12px;background:var(--sheet2)}
.reader-modes{display:flex;gap:4px;flex-wrap:wrap}
.reader-modes button{border:1px solid transparent;border-radius:9px;background:transparent;color:var(--text);padding:7px 11px;font-size:.85rem;font-weight:650}
.reader-modes button[aria-pressed="true"]{color:#fff;background:var(--blue)}
.reader-adjust{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.reader-adjust label{font-size:.77rem;color:var(--muted);font-weight:650}
.reader-adjust select{font:inherit;font-size:.84rem;max-width:120px;border:1px solid var(--line);background:var(--sheet);color:var(--text);border-radius:8px;padding:5px}
.reader-section-nav{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:13px 2px;border-top:1px solid var(--line)}
.reader-section-nav button{border:1px solid var(--line);border-radius:10px;background:var(--sheet2);color:var(--text);padding:8px 12px;font-weight:650}
.reader-section-nav button:disabled{opacity:.45;cursor:not-allowed}
.reader-section-nav span{font-size:.85rem;color:var(--muted);text-align:center}
.reader-section-nav[hidden],.article-text>[hidden]{display:none!important}
[data-reader-scale="90"] .article-text{font-size:.9rem}
[data-reader-scale="100"] .article-text{font-size:1rem}
[data-reader-scale="110"] .article-text{font-size:1.1rem}
[data-reader-scale="120"] .article-text{font-size:1.2rem}
[data-reader-width="comfortable"] .article-text>p,[data-reader-width="comfortable"] .article-text>ul,[data-reader-width="comfortable"] .article-text>ol{max-width:72ch}
[data-reader-width="wide"] .article-text>p,[data-reader-width="wide"] .article-text>ul,[data-reader-width="wide"] .article-text>ol{max-width:none}
[data-reader-mode="presentation"] .article-text{min-height:170px}
[data-reader-mode="presentation"] .article-text>h2{font-size:clamp(1.1rem,2.5vw,1.5rem)}
[data-reader-mode="presentation"] .article-text>p{line-height:1.7}
.reader-toolbar button,.reader-section-nav button,.reader-toolbar select{min-height:38px}
@media(max-width:600px){.reader-toolbar{padding:9px;gap:10px}.reader-adjust{width:100%;justify-content:flex-start}.reader-modes{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.reader-modes button{padding:8px 3px;font-size:.78rem}.reader-section-nav button{padding:10px 8px}.reader-section-nav span{font-size:.75rem}}
@media(prefers-reduced-motion:reduce){.reader-toolbar *,.reader-section-nav *{scroll-behavior:auto!important;transition:none!important}}

/* Experience quality v2: presentation focus, compact fluid layout and accessible overlays */
[data-reader-mode="presentation"] .article-sheet{scroll-margin-top:88px}
[data-reader-mode="presentation"] .article-text{padding:clamp(14px,3vw,28px);border:1px solid var(--line);border-radius:18px;background:var(--sheet);box-shadow:0 9px 30px rgba(23,66,136,.045)}
[data-reader-mode="presentation"] .article-text>h2:first-of-type{margin-top:0}
[data-reader-mode="presentation"] .article-text>figure{max-height:none}
.reader-toolbar select:focus-visible,.reader-modes button:focus-visible,.reader-section-nav button:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.glossary-popup{overflow-wrap:anywhere;max-height:min(60vh,360px);overflow-y:auto}
.learning-figure svg,:is(.article-text,.cs-body) svg{max-width:100%;height:auto}
:is(.article-text,.cs-body) img{max-width:100%;height:auto;object-fit:contain}
:is(.article-text,.cs-body) table{display:block;max-width:100%;overflow-x:auto}
.article-text{overflow-wrap:break-word}
@media(max-width:390px){.reader-toolbar{margin:10px 0 13px}.reader-section-nav{gap:4px}.reader-section-nav button{font-size:.8rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* Auditable heart-sound playback controls */
.audio-speed-control{display:inline-flex;align-items:center;gap:8px;margin:10px 0 0;font-size:.88rem;color:var(--text)}
.audio-speed-control select{font:inherit;color:var(--text);background:var(--sheet);border:1px solid var(--line);border-radius:8px;padding:8px;min-height:40px}
.audio-status{color:var(--text);font-size:.9rem;line-height:1.5}
.audio-resource audio{width:min(100%,540px);min-height:46px}

/* Native, accessible in-page figure viewing; no external navigation on image taps. */
.figure-zoom{display:block;max-width:100%;width:100%;padding:0;margin:0;cursor:zoom-in;background:transparent;border:0;border-radius:10px;line-height:0}
.figure-zoom img{display:block;max-width:100%;height:auto;margin-inline:auto}
.figure-zoom:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.figure-viewer{position:fixed;inset:0;margin:auto;border:1px solid var(--line);border-radius:16px;background:var(--sheet);color:var(--text);box-shadow:0 24px 90px rgba(0,0,0,.3);width:min(96vw,1200px);max-width:96vw;max-height:94dvh;padding:12px;overflow:auto}
.figure-viewer::backdrop{background:rgba(9,19,37,.78)}
.figure-viewer img{display:block;max-width:100%;max-height:calc(94dvh - 110px);height:auto;width:auto;object-fit:contain;margin:0 auto}
.figure-viewer-close{display:block;position:sticky;top:0;margin-left:auto;margin-bottom:8px;background:var(--sheet2);border:1px solid var(--line);border-radius:8px;color:var(--text);padding:9px 14px;font-weight:700;cursor:pointer;z-index:2}
.figure-viewer-caption{font-size:.85rem;line-height:1.45;color:var(--muted);margin:8px 6px 2px}
@media(max-width:560px){.figure-viewer{padding:8px}.figure-viewer img{max-height:calc(94dvh - 100px)}}

/* Platform landing page: subject-agnostic identity, real courses only as links. */
.platform-hero{position:relative;overflow:hidden;margin:24px 0 27px;padding:clamp(27px,5vw,55px);border-radius:22px;background:linear-gradient(125deg,#11316c,#2258bc 65%,#3778d2);color:#fff;box-shadow:var(--sh)}
.platform-hero:after{content:"";position:absolute;right:-85px;top:-105px;width:290px;height:290px;border:1px solid rgba(255,255,255,.18);border-radius:50%;pointer-events:none}
.platform-kicker{display:inline-block;font-size:.77rem;letter-spacing:.105em;color:#f7d887;font-weight:800;margin-bottom:13px}
.platform-hero h1{font:800 clamp(1.8rem,5vw,3.4rem)/1.15 'Plus Jakarta Sans',sans-serif;letter-spacing:-.045em;margin:0 0 16px;max-width:730px}
.platform-hero h1 em{font-style:normal;color:#ffe29d}
.platform-hero p{font-size:clamp(.98rem,1.7vw,1.12rem);line-height:1.65;max-width:620px;margin:0 0 24px;color:#eff5ff}
.platform-hero .btn-primary{display:inline-block;background:#fff;color:#163d82;border-color:#fff;text-decoration:none;font-weight:750}
.platform-library{padding:0 0 44px}
.platform-subheading{font-size:1.05rem;margin:12px 0 13px}
.platform-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}
.platform-system{border:1px solid var(--line);background:var(--sheet);padding:20px 16px;border-radius:17px;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.platform-system h4{font:750 1rem/1.34 'Plus Jakarta Sans',sans-serif;margin:2px 0}
.platform-system p{font-size:.87rem;color:var(--muted);line-height:1.5;margin:0}
.platform-symbol{font-size:1.6rem;line-height:1;color:var(--blue)}
.platform-state{font-size:.71rem;font-weight:750;letter-spacing:.01em;color:var(--muted)}
.platform-available{border-color:#9cbcf0;box-shadow:0 9px 25px rgba(29,74,160,.09);text-decoration:none;transition:transform .15s ease,border-color .15s ease}
.platform-available .platform-state{color:var(--blue)}
.platform-available:hover{transform:translateY(-2px);border-color:var(--blue)}
.platform-open{color:var(--blue);font-size:.84rem;font-weight:750;margin-top:auto;padding-top:10px}
.platform-upcoming{opacity:.78}

@media(max-width:940px){.platform-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.platform-hero{margin-top:15px;padding:24px 19px;border-radius:17px}.platform-grid{gap:10px}.platform-system{padding:15px 11px}.platform-system h4{font-size:.9rem}.platform-system p{font-size:.79rem}}
@media(prefers-reduced-motion:reduce){.platform-available{transition:none}}

/* CVS equations: readable, contained and touch-scrollable on narrow phones. */
:is(.article-text,.cs-body) .equation-block{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:5px;max-width:100%;min-width:0;overflow:hidden}
:is(.article-text,.cs-body) .equation-label{display:block;white-space:normal;overflow-wrap:anywhere}
:is(.article-text,.cs-body) .equation-block .equation-example{display:block;max-width:100%;min-width:0;overflow-wrap:anywhere;word-break:normal;line-height:1.55}
:is(.article-text,.cs-body) .equation-block .equation-example strong{overflow-wrap:anywhere}
:is(.article-text,.cs-body) :not(pre)>code{white-space:normal;overflow-wrap:anywhere}
@media(max-width:660px){
 :is(.article-text,.cs-body) .equation-block{padding:9px 10px;margin:9px 0 12px;gap:5px;border-radius:11px}
 :is(.article-text,.cs-body) .equation-label{font-size:11.5px}
 :is(.article-text,.cs-body) .equation-example{font-size:12px;line-height:1.5}
}
@media(max-width:360px){:is(.article-text,.cs-body) .equation-block{padding:8px}}

/* Proper mathematical typography: visible fraction bars and raised/lowered scripts.
   Each formula scrolls inside its own block on narrow screens; never flatten it into text. */
.equation-block .equation-formula{
  display:block;min-width:0;max-width:100%;overflow-x:auto;overflow-y:hidden;
  padding:6px 0 8px;white-space:nowrap;word-break:normal;overflow-wrap:normal;
  font:650 clamp(16px,2.6vw,19px)/1.5 'Plus Jakarta Sans',system-ui,sans-serif;
  color:var(--navy2);font-variant-numeric:lining-nums tabular-nums;
  -webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain;scrollbar-width:thin;
}
.equation-block .eq-layout{
  display:inline-flex;align-items:center;vertical-align:middle;
  width:max-content;max-width:none;white-space:nowrap;line-height:1.4;
}
.equation-block .eq-token{display:inline;white-space:pre;}
.equation-block .eq-operator{padding:0 .13em;}
.equation-block .eq-words{font-size:.86em;font-weight:500;white-space:pre;}
.equation-block .eq-gap{display:inline-block;flex:none;min-height:1px;}
.equation-block .eq-fraction{
  display:inline-flex;flex:none;flex-direction:column;align-items:stretch;
  justify-content:center;margin:0 .15em;vertical-align:middle;
  font-size:.93em;line-height:1.2;white-space:nowrap;
}
.equation-block .eq-numerator,.equation-block .eq-denominator{
  display:flex;align-items:center;justify-content:center;
  min-height:1.3em;padding:0 .25em;white-space:nowrap;
}
.equation-block .eq-numerator{border-bottom:1.5px solid currentColor;padding-bottom:.14em;}
.equation-block .eq-denominator{padding-top:.14em;}
.equation-block .eq-script{display:inline-flex;align-items:baseline;white-space:nowrap;}
.equation-block .eq-script>sup,.equation-block .eq-script>sub{
  position:relative;font-size:.67em;line-height:1;vertical-align:baseline;
}
.equation-block .eq-script>sup{top:-.55em;}
.equation-block .eq-script>sub{top:.30em;}
.equation-block .eq-both{display:inline-flex;flex-direction:column;font-size:.65em;line-height:1;}
.equation-block .eq-both sup,.equation-block .eq-both sub{font-size:1em;line-height:1.05;}
.equation-block .eq-root{display:inline-flex;align-items:stretch;vertical-align:middle;}
.equation-block .eq-root-symbol{font-size:1.3em;line-height:1.2;}
.equation-block .eq-radicand{border-top:1.5px solid currentColor;padding:.10em .16em 0;}
.equation-block .eq-over{display:inline-flex;flex-direction:column;align-items:center;line-height:1;}
.equation-block .eq-accent{font-size:.7em;height:.65em;}
.equation-block .eq-phantom{visibility:hidden;}
@media(max-width:360px){
  .equation-block .equation-formula{font-size:16px;padding:7px 0 9px;}
}

/* Student-friendly figure captions: title first; attribution remains one tap away. */
:is(.article-text,.cs-body) figure figcaption .figure-attribution,
:is(.article-text,.cs-body) .teaching-illustration figcaption .figure-attribution{
 display:inline-block;vertical-align:baseline;margin:0 0 0 8px;padding:0;
 background:none;border:0;border-radius:0;font-size:11px;line-height:1.5;
}
:is(.article-text,.cs-body) figure figcaption .figure-attribution summary{
 display:inline;cursor:pointer;font-size:11px;font-weight:600;
 color:var(--muted);text-decoration:underline;text-decoration-style:dotted;
 text-underline-offset:3px;outline-offset:3px;
}
:is(.article-text,.cs-body) figure figcaption .figure-attribution .figure-credit{
 display:block;margin-top:5px;font-size:11px;font-weight:400;
 color:var(--muted);line-height:1.5;overflow-wrap:anywhere;
}
:is(.article-text,.cs-body) figure figcaption .figure-attribution[open]{
 display:block;margin:5px 0 0;
}
:is(.article-text,.cs-body) figure figcaption .figure-attribution a{color:var(--blue);text-decoration:underline}

/* ---------- Teaching widgets (teaching-widgets.js) ---------- */
:root{--w-la:#c97b00;--w-lv:#2b61e8;--w-ao:#c2334d;--w-vol:#14866a;--w-sys:#f6c766;--w-dia:#d8e6ff;--w-band:rgba(43,97,232,.08);--w-overlap:rgba(20,134,106,.13);--w-ok:#14866a;--w-bad:#b42c44}
[data-theme="dark"]{--w-la:#ffb547;--w-lv:#7ca5ff;--w-ao:#ff7a8f;--w-vol:#4fd1a8;--w-sys:#9a7019;--w-dia:#24406e;--w-band:rgba(124,165,255,.12);--w-overlap:rgba(79,209,168,.14);--w-ok:#4fd1a8;--w-bad:#ff7a8f}
.teaching-widget .tw-svg{display:block;width:100%;height:auto;max-height:none;margin:4px 0 6px;color:var(--text);font-family:'DM Sans',system-ui,sans-serif}
.tw-svg text{fill:currentColor}.tw-svg .tw-small{font-size:14px}.tw-svg .tw-tiny{font-size:13px}.tw-svg .tw-strong{font-weight:800}.tw-svg .tw-muted{fill:var(--muted)}
.tw-svg .tw-row-label{font-size:14px;font-weight:800;fill:var(--navy)}.tw-svg .tw-bar-text{font-size:14px;font-weight:700}
.tw-sys{fill:var(--w-sys)}.tw-dia{fill:var(--w-dia)}.tw-overlap{fill:var(--w-overlap)}.tw-band{fill:var(--w-band)}.tw-phase{fill:transparent}.tw-phase.active{fill:var(--w-band)}
.tw-axis{stroke:var(--muted);stroke-width:1.5}.tw-grid{stroke:var(--line);stroke-width:1}.tw-bracket{fill:none;stroke:var(--muted);stroke-width:1.5}
.tw-la,.tw-lv,.tw-ao,.tw-vol,.tw-ecg,.tw-sound,.tw-flow{fill:none;stroke-linecap:round;stroke-linejoin:round}
.tw-la{stroke:var(--w-la);stroke-width:3}.tw-lv{stroke:var(--w-lv);stroke-width:3.5}.tw-ao{stroke:var(--w-ao);stroke-width:3}.tw-vol{stroke:var(--w-vol);stroke-width:3}.tw-ecg{stroke:var(--text);stroke-width:2}.tw-sound{stroke:var(--text);stroke-width:1.6}
.tw-svg .tw-la-text{fill:var(--w-la);font-weight:800}.tw-svg .tw-lv-text{fill:var(--w-lv);font-weight:800}.tw-svg .tw-ao-text{fill:var(--w-ao);font-weight:800}.tw-svg .tw-vol-text{fill:var(--w-vol);font-weight:800}.tw-svg .tw-ecg-text{font-weight:800}
.tw-event{stroke:var(--muted);stroke-width:1.2;stroke-dasharray:4 4}.tw-mark{fill:none;stroke:var(--gold);stroke-width:3}
.tw-valve line{stroke-width:5;stroke-linecap:round}.tw-valve.shut line{stroke:var(--w-ao)}.tw-valve.open line{stroke:var(--w-vol)}
.tw-chamber{fill:var(--sheet);stroke:var(--line);stroke-width:1.5}.tw-chamber.ventricle{stroke:var(--w-lv);stroke-width:2}.tw-flow{stroke:var(--w-vol);stroke-width:3}.tw-arrowhead{fill:var(--w-vol)}
.tw-tank{fill:var(--sheet);stroke:var(--muted);stroke-width:2}.tw-esv{fill:var(--w-dia)}.tw-sv{fill:var(--w-lv);opacity:.35}.tw-level{stroke:var(--text);stroke-width:1.5;stroke-dasharray:5 4}
.tw-s1{stroke:var(--muted);stroke-width:4}.tw-a2{stroke:var(--w-ao);stroke-width:4}.tw-p2{stroke:var(--w-lv);stroke-width:4}
.tw-controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px}.tw-dots{display:inline-flex;gap:6px}
.tw-btn,.tw-dot{min-height:44px;border:1px solid var(--line);background:var(--sheet);color:var(--navy);font-weight:800;font-size:13px;border-radius:11px;padding:8px 14px}
.tw-dot{min-width:44px;padding:0;border-radius:50%}.tw-dot[aria-current="step"],.tw-btn[aria-pressed="true"]{background:var(--navy2);color:var(--sheet);border-color:transparent}
.tw-btn:disabled{opacity:.45;cursor:default}.tw-btn:focus-visible,.tw-dot:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.tw-step-copy{display:block;margin-top:10px;padding:10px 13px;background:var(--sheet);border:1px solid var(--line);border-radius:11px;font-size:13.5px;line-height:1.55;color:var(--text)}.tw-step-title{display:block;color:var(--navy);margin-bottom:2px}
.tw-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:10px}.tw-scroll:focus-visible{outline:3px solid var(--focus)}
.tw-wiggers-svg{min-width:600px}.tw-legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12px!important;color:var(--muted);margin:6px 0 0!important}.tw-legend b{color:var(--navy)}
.tw-swipe{display:none}@media(max-width:660px){.tw-swipe{display:inline;font-style:italic}}
.hr-slider{border:1px solid var(--line);border-radius:16px;padding:16px 16px 12px;background:var(--sheet2);margin:10px 0 24px}
.tw-hr-label{display:block;font-weight:700;font-size:14px}.tw-hr input[type=range]{width:100%;min-height:44px;accent-color:var(--blue);margin:4px 0}
.tw-hr-bar{height:10px;background:var(--sheet);border:1px solid var(--line);border-radius:6px;overflow:hidden}.tw-hr-bar span{display:block;height:100%;background:var(--w-lv);transition:width .15s}
.tw-hr-out{display:block;font-weight:800;color:var(--navy);margin-top:8px;font-size:15px}.tw-hr-note{font-size:12px!important;color:var(--muted);margin:6px 0 0!important}
.tw-visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.map-quiz{margin:6px 0 -8px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.tw-quiz-status{font-size:12px;color:var(--muted)}
:is(.article-text,.cs-body) td.tw-hidden-cell{position:relative;cursor:pointer;color:transparent}:is(.article-text,.cs-body) td.tw-hidden-cell *{color:transparent!important;border-color:transparent!important}
:is(.article-text,.cs-body) td.tw-hidden-cell::after{content:'Tap to reveal';position:absolute;inset:3px;display:flex;align-items:center;justify-content:center;border-radius:8px;background:var(--sheet2);color:var(--blue);font-weight:800;font-size:12px}
:is(.article-text,.cs-body) td.tw-hidden-cell:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}
:is(.article-text,.cs-body) .mcq-options{display:flex;flex-direction:column;gap:7px;margin-top:10px}:is(.article-text,.cs-body) span.mcq-option{display:block}
:is(.article-text,.cs-body) button.mcq-option{display:block;width:100%;text-align:left;min-height:44px;padding:9px 13px;border:1px solid var(--line);border-radius:11px;background:var(--sheet);color:var(--text);font:inherit;font-size:14.5px;line-height:1.45;cursor:pointer}
:is(.article-text,.cs-body) button.mcq-option:hover:not(:disabled){border-color:var(--blue)}:is(.article-text,.cs-body) button.mcq-option:disabled{cursor:default;opacity:1}
:is(.article-text,.cs-body) button.mcq-option.is-correct{border-color:var(--w-ok);background:color-mix(in srgb,var(--w-ok) 13%,var(--sheet));font-weight:700}
:is(.article-text,.cs-body) button.mcq-option.is-wrong{border-color:var(--w-bad);background:color-mix(in srgb,var(--w-bad) 11%,var(--sheet))}
:is(.article-text,.cs-body) .mcq-feedback{display:block;margin-top:8px;font-weight:800;color:var(--w-ok)}:is(.article-text,.cs-body) .mcq-feedback.is-wrong{color:var(--w-bad)}
:is(.article-text,.cs-body) .source-note{display:block;margin:14px 0 18px;padding:10px 14px;border-left:3px solid var(--gold);background:var(--sheet2);border-radius:0 10px 10px 0;font-size:13px;line-height:1.6}
:is(.article-text,.cs-body) .source-note.is-collapsible{padding:0;background:transparent;border-left-width:3px}
:is(.article-text,.cs-body) .source-note-toggle{display:flex;flex-wrap:wrap;gap:2px 8px;align-items:baseline;width:100%;min-height:44px;padding:9px 14px;border:0;background:var(--sheet2);border-radius:0 10px 10px 0;color:var(--navy);font:inherit;font-size:13px;text-align:left;cursor:pointer}
:is(.article-text,.cs-body) .source-note-toggle::before{content:'▸';display:inline-block;color:var(--gold);font-weight:800;transition:transform .15s}
:is(.article-text,.cs-body) .source-note-toggle[aria-expanded="true"]::before{transform:rotate(90deg)}
:is(.article-text,.cs-body) .source-note-toggle[aria-expanded="true"]{border-radius:0 10px 0 0}
:is(.article-text,.cs-body) .source-note-label{font-weight:800}:is(.article-text,.cs-body) .source-note-hint{color:var(--muted)}
:is(.article-text,.cs-body) .source-note-toggle:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
:is(.article-text,.cs-body) .source-note-body{padding:2px 14px 10px;background:var(--sheet2);border-radius:0 0 10px 0}
:is(.article-text,.cs-body) .related-links{font-size:13px;color:var(--muted);line-height:1.7}

/* ---------- Heart-sound widgets (Chapter 5) ---------- */
.snd-timeline .snd-valves{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 4px}
.snd-valve{display:inline-flex;gap:6px;align-items:baseline;padding:6px 11px;border:1px solid var(--line);border-radius:999px;background:var(--sheet);font-size:13px;transition:background .12s,border-color .12s}
.snd-valve em{font-style:normal;color:var(--muted);font-weight:700}
.snd-valve.is-flash{border-color:var(--w-ao);background:color-mix(in srgb,var(--w-ao) 16%,var(--sheet))}
.snd-hr{display:flex;flex-direction:column;flex:1 1 220px;font-size:13px;font-weight:700;color:var(--navy)}.snd-hr input{width:100%;min-height:44px;accent-color:var(--blue)}
.snd-readout{font-weight:800;color:var(--navy);margin:6px 0 0!important;font-size:14px}
.teaching-widget .tw-tiny-note{font-size:12px!important;color:var(--muted);margin:4px 0 0!important}
.tw-svg .snd-cursor{stroke:var(--navy);stroke-width:3;stroke-linecap:round}
.snd-list{display:flex;flex-direction:column;gap:8px;margin:6px 0}
.snd-list.tw-controls{flex-direction:row}
.snd-row{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center}
.snd-note{font-size:13px;color:var(--text);line-height:1.5}
.snd-play{display:inline-flex;gap:8px;align-items:center}.snd-icon{font-size:11px}
.snd-mode{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;margin:8px 0 2px;font-size:12.5px}
.snd-mode .tw-btn{min-height:36px;padding:5px 11px;font-size:12px}
.snd-mode-label{font-weight:800;color:var(--navy)}.snd-mode-hint{flex-basis:100%;color:var(--muted);font-size:12px;line-height:1.45}
.sound-clips{margin:10px 0 16px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--sheet2)}
.sound-clips .media-credit,.teaching-widget .media-credit{font-size:11.5px;color:var(--muted);margin:6px 0 0}
.tw-svg .snd-mark.is-lit circle{fill:var(--gold);fill-opacity:.55;stroke-width:5}
.tw-svg .snd-cusp line{stroke:var(--w-lv);stroke-width:6;stroke-linecap:round}
.tw-svg .snd-cusp{transition:transform .12s ease-in}
.tw-svg .tw-hinge{fill:var(--muted)}
.tw-svg .snd-travel{fill:none;stroke:var(--muted);stroke-width:1.6;stroke-dasharray:4 3}
.tw-svg .tw-wall{stroke:var(--muted);stroke-width:3;stroke-linecap:round}
.tw-svg .tw-leaflet{stroke:var(--w-lv);stroke-width:5;stroke-linecap:round}
.tw-svg .tw-flow.tw-faint{opacity:.45;stroke-width:2.5}.tw-svg .tw-flow.tw-jet{stroke-width:4.5}.tw-svg .tw-flow.tw-back{stroke:var(--w-ao)}.tw-svg .tw-flow.tw-fast{stroke-width:2.5}
.tw-svg .tw-arrowhead-back{fill:var(--w-ao)}.tw-svg .snd-swirl{fill:none;stroke:var(--w-ao);stroke-width:2;stroke-linecap:round}
.snd-predictor .snd-pick{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:4px 0 8px}
.snd-pick-label{min-width:44px;font-weight:800;font-size:13px;color:var(--navy)}
.snd-prompt{margin:10px 0!important;padding:14px;border:1px dashed var(--line);border-radius:11px;color:var(--muted);font-size:13.5px;text-align:center}
.snd-steps{margin:6px 0 0;padding-left:22px;font-size:14px;line-height:1.55}.snd-steps li{margin:4px 0}
.tw-svg .tw-valve-line{stroke:var(--w-vol);stroke-width:5;stroke-linecap:round}.tw-svg .tw-valve-line.is-bad{stroke:var(--w-ao)}
.tw-svg .snd-phase{fill:color-mix(in srgb,var(--gold) 35%,transparent)}
.snd-example{margin-top:8px}.snd-example:empty{display:none}
:is(.article-text,.cs-body) a[href^="#/physiology/cvs/"]{color:var(--blue);font-weight:700;text-decoration:none}:is(.article-text,.cs-body) a[href^="#/physiology/cvs/"]:hover{text-decoration:underline}

/* ---------- Glossary card (four-line layout, dialog on tap, bottom sheet on phones) ---------- */
.glossary-popup .gl-title{display:block;color:var(--navy2);font-size:13.5px;margin-bottom:4px}
.glossary-popup .gl-def{display:block}
.glossary-popup .gl-confuse{display:block;margin-top:8px;padding-top:8px;border-top:1px solid var(--line);color:var(--muted)}
.glossary-popup .gl-confuse b{color:var(--text)}
.glossary-popup .gl-learn{display:inline-flex;align-items:center;margin-top:10px;font-weight:800;color:var(--blue);text-decoration:none;min-height:32px}
.glossary-popup .gl-close{display:none}
.glossary-popup:focus{outline:none}
@media(max-width:560px){
 .glossary-popup.is-sheet{left:0!important;right:0;top:auto!important;bottom:0;width:100%;max-height:70vh;border-radius:18px 18px 0 0;padding:16px 18px calc(18px + env(safe-area-inset-bottom));font-size:14.5px;box-shadow:0 -10px 40px rgba(15,35,75,.25)}
 .glossary-popup.is-sheet .gl-title{font-size:15.5px;padding-right:44px}
 .glossary-popup.is-sheet .gl-learn{display:flex;justify-content:center;min-height:46px;margin-top:14px;border-radius:12px;background:var(--navy2);color:var(--sheet)}
 .glossary-popup.is-sheet .gl-close{display:block;position:absolute;top:8px;right:8px;width:44px;height:44px;border:0;background:transparent;color:var(--muted);font-size:24px;line-height:1}
}

/* ---------- Circulation overview (Chapter 1) ---------- */
.tw-svg .cm-line{fill:none;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round}
.tw-svg .cm-rich{stroke:var(--w-ao)}.tw-svg .cm-poor{stroke:var(--w-lv)}
.tw-svg .cm-head.cm-rich{fill:var(--w-ao);stroke:none}.tw-svg .cm-head.cm-poor{fill:var(--w-lv);stroke:none}
.tw-svg .cm-rich-text{fill:var(--w-ao)}.tw-svg .cm-poor-text{fill:var(--w-lv)}
.tw-svg .cm-organ{stroke:var(--w-vol)}.tw-svg .cm-lungs{stroke:var(--w-vol);stroke-width:2}
.tw-svg .cm-bracket{fill:none;stroke:var(--muted);stroke-width:1.6}

/* ---------- Calcium cycle stepper (Chapter 2) ---------- */
.tw-svg .cc-membrane{fill:none;stroke:var(--muted);stroke-width:3;stroke-linejoin:round}
.tw-svg .cc-ttub{fill:color-mix(in srgb,var(--w-vol) 10%,transparent);stroke:none}
.tw-svg .cc-sr{fill:color-mix(in srgb,var(--w-lv) 14%,transparent);stroke:var(--w-lv);stroke-width:2}
.tw-svg .cc-channel{fill:var(--sheet);stroke:var(--navy);stroke-width:2}
.tw-svg .cc-pump{fill:var(--sheet);stroke:var(--navy);stroke-width:2}
.tw-svg .cc-pointer{stroke:var(--muted);stroke-width:1.2}
.tw-svg .cc-actin-line{stroke:var(--w-vol);stroke-width:5;stroke-linecap:round}
.tw-svg .cc-myosin{stroke:var(--w-ao);stroke-width:8;stroke-linecap:round}
.tw-svg .cc-head{stroke:var(--w-ao);stroke-width:3;stroke-linecap:round}
.tw-svg .cc-zline{stroke:var(--navy);stroke-width:3}
.tw-svg .cc-actin,.tw-svg .cc-zline{transition:transform .6s ease}
.tw-svg.cc-contracted .cc-left{transform:translateX(18px)}.tw-svg.cc-contracted .cc-right{transform:translateX(-18px)}
.tw-svg .cc-ion{fill:var(--gold);stroke:var(--navy);stroke-width:1;transition:transform .7s ease}
.tw-svg .cc-ion.cc-trigger{fill:#e8a33d}
.tw-svg .cc-part{opacity:.55;transition:opacity .25s}
.tw-svg .cc-part.is-on{opacity:1}
.tw-svg .cc-part.is-on .cc-channel,.tw-svg .cc-part.is-on .cc-pump{stroke:var(--gold);stroke-width:3.5}
.tw-svg .cc-part.is-on .cc-ttub{fill:color-mix(in srgb,var(--gold) 28%,transparent)}
.tw-svg .cc-signal{opacity:0;transition:opacity .3s}.tw-svg .cc-signal.is-on{opacity:1}
.tw-svg .cc-plus{fill:var(--gold);font-weight:800;font-size:16px}
@media (prefers-reduced-motion:reduce){.tw-svg .cc-ion,.tw-svg .cc-actin{transition:none}}

/* ---------- Conduction widgets (Chapter 3) ---------- */
.tw-svg .ct-ch{--on:0;fill:color-mix(in srgb,var(--gold) calc(var(--on) * 45%),var(--sheet));stroke:var(--muted);stroke-width:2}
.tw-svg .ct-ring{stroke:var(--muted);stroke-width:4;stroke-dasharray:2 4}
.tw-svg .ct-path{fill:none;stroke:var(--w-ao);stroke-width:3;stroke-linecap:round}.tw-svg .ct-faint{stroke-dasharray:4 4;opacity:.7}
.tw-svg .ct-node{fill:var(--sheet);stroke:var(--w-ao);stroke-width:3}.tw-svg .ct-node.is-on{fill:var(--gold)}
.tw-svg .ct-pointer{stroke:var(--muted);stroke-width:1}
.tw-svg .ct-signal{fill:var(--gold);stroke:var(--navy);stroke-width:2}.tw-svg .ct-signal.is-gone{opacity:0}
.tw-svg .ct-delay{opacity:0;fill:var(--w-ao)}.tw-svg .ct-delay.is-on{opacity:1}
.tw-svg .ct-base{stroke:var(--line);stroke-width:1}
.tw-svg .ct-ecg{fill:none;stroke:var(--navy);stroke-width:2.5;stroke-linejoin:round}
.tw-svg .ct-lab{opacity:0;transition:opacity .2s}.tw-svg .ct-lab.is-on{opacity:1}
.tw-svg .ct-bracket{fill:none;stroke:var(--w-ao);stroke-width:2}
.ps-btns{flex-wrap:wrap}
.tw-svg .ps-grid{stroke:var(--line);stroke-width:1}
.tw-svg .ps-thr{stroke:var(--w-ao);stroke-width:1.6;stroke-dasharray:6 4}
.tw-svg .ps-ref{fill:none;stroke:var(--muted);stroke-width:1.5;opacity:.45}
.tw-svg .ps-trace{fill:none;stroke:var(--navy);stroke-width:3;stroke-linejoin:round}
.ps-readout{font-size:14px;margin:6px 0 0!important}
/* Chapter 11: JVP wave explorer */
.tw-svg .jv-event{stroke:var(--line);stroke-width:1;stroke-dasharray:3 4}
.tw-svg .jv-bracket{fill:none;stroke:var(--muted);stroke-width:1.5}
.tw-svg .jv-trace{fill:none;stroke:var(--muted);stroke-width:3;stroke-linejoin:round;opacity:.55}
.tw-svg .jv-trace.jv-hot{stroke:var(--w-la);stroke-width:5;opacity:1}
.tw-svg .jv-letter{font-size:17px;font-weight:800;fill:var(--muted)}.tw-svg .jv-letter.is-on{fill:var(--w-la);font-size:21px}
.tw-svg .jv-vein{fill:color-mix(in srgb,var(--w-vol) 22%,var(--sheet));stroke:var(--muted);stroke-width:1.5}
.tw-svg .jv-ra,.tw-svg .jv-rv{fill:var(--sheet);stroke:var(--muted);stroke-width:2;transition:all .25s}
.tw-svg .jv-ra.is-on,.tw-svg .jv-rv.is-on{fill:color-mix(in srgb,var(--gold) 45%,var(--sheet));stroke:var(--navy)}
.tw-svg .jv-rv.is-half{fill:color-mix(in srgb,var(--gold) 18%,var(--sheet))}
.tw-svg .jv-blood{fill:color-mix(in srgb,var(--w-vol) 30%,transparent);transition:all .25s}
.tw-svg .jv-valve{fill:none;stroke:var(--navy);stroke-width:4;stroke-linecap:round}.tw-svg .jv-valve-hot{stroke:var(--w-lv)}
.tw-svg .jv-ringline{stroke:var(--navy);stroke-width:4;stroke-linecap:round}
.tw-svg .jv-arrow{fill:none;stroke-width:4;stroke-linecap:round}
.tw-svg .jv-in{stroke:var(--w-vol)}.tw-svg .jv-back{stroke:var(--w-lv)}.tw-svg .jv-out{stroke:var(--w-ao)}
.tw-svg .jv-head-in{fill:var(--w-vol)}.tw-svg .jv-head-back{fill:var(--w-lv)}.tw-svg .jv-head-out{fill:var(--w-ao)}
.jv-nav{display:flex;gap:8px}
/* Chapter 7: lead view and rate ruler */
.lv-slider{display:flex;flex-direction:column;gap:6px;margin-top:10px;font-size:13.5px;font-weight:700;color:var(--navy)}.lv-slider input{width:100%;min-height:44px;accent-color:var(--w-la)}
.lv-readout,.rr-alt{margin:10px 0 0;padding:10px 13px;background:var(--sheet);border:1px solid var(--line);border-radius:11px;font-size:13.5px;line-height:1.55;color:var(--text)}
.lv-stage svg{touch-action:none;cursor:grab}
.tw-svg .lv-body{fill:none;stroke:var(--line);stroke-width:1.5;stroke-dasharray:3 5}
.tw-svg .lv-heart{fill:color-mix(in srgb,var(--w-lv) 12%,var(--sheet));stroke:var(--muted);stroke-width:2}
.tw-svg .lv-axis{stroke:var(--muted);stroke-width:2;stroke-dasharray:6 5}
.tw-svg .lv-eye{fill:var(--navy2);stroke:var(--sheet);stroke-width:2}.tw-svg .lv-plus{fill:var(--sheet);font-size:20px;font-weight:800}
.tw-svg .lv-vec{stroke:var(--gold);stroke-width:6;stroke-linecap:round}.tw-svg .lv-head{fill:var(--gold)}
.tw-svg .lv-base{stroke:var(--line);stroke-width:1}.tw-svg .lv-ecg{fill:none;stroke:var(--navy);stroke-width:3;stroke-linejoin:round}
.tw-svg .rr-paper{fill:color-mix(in srgb,#e7685f 7%,var(--sheet))}
.tw-svg .rr-thin{stroke:color-mix(in srgb,#e7685f 22%,transparent);stroke-width:.6}.tw-svg .rr-thick{stroke:color-mix(in srgb,#e7685f 55%,transparent);stroke-width:1.3}
.tw-svg .rr-ecg{fill:none;stroke:var(--navy);stroke-width:2.4;stroke-linejoin:round}
.tw-svg .rr-bracket{fill:none;stroke:var(--w-la);stroke-width:2}
.rr-steps{margin:10px 0 0;padding:10px 13px 10px 32px;background:var(--sheet);border:1px solid var(--line);border-radius:11px;font-size:13.5px;line-height:1.6;color:var(--text)}
/* Chapter 7 (cardiac output): Frank–Starling explorer */
.tw-svg .fs-grid{stroke:var(--line);stroke-width:1}.tw-svg .fs-axis{stroke:var(--muted);stroke-width:2}
.tw-svg .fs-curve{fill:none;stroke-width:3;opacity:.35}.tw-svg .fs-curve.is-on{stroke-width:5;opacity:1}
.tw-svg .fs-low{stroke:var(--w-lv)}.tw-svg .fs-normal{stroke:var(--w-vol)}.tw-svg .fs-high{stroke:var(--w-la)}
.tw-svg .fs-drop{stroke:var(--muted);stroke-width:1.5;stroke-dasharray:4 4}
.tw-svg .fs-dot{fill:var(--gold);stroke:var(--navy);stroke-width:2.5}
.fs-read{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:10px}.fs-read span{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--sheet)}.fs-read small{font-size:11px;color:var(--muted)}.fs-read strong{font-size:15px;color:var(--navy)}
.fs-lab{font-size:13px;font-weight:800;color:var(--navy)}
/* Chapter 8: Fick calculator */
.fk-bar{display:flex;height:16px;margin-top:12px;border-radius:8px;overflow:hidden;background:var(--line)}.fk-left{background:color-mix(in srgb,var(--w-vol) 55%,var(--sheet))}.fk-taken{background:var(--gold)}
.fk-bar-lab{margin:6px 0 0;font-size:13px;color:var(--text)}
/* Chapter 9: radius dial */
.tw-svg .rd-ghost{fill:none;stroke:var(--line);stroke-width:2;stroke-dasharray:6 5}
.tw-svg .rd-vessel{fill:color-mix(in srgb,var(--w-lv) 30%,var(--sheet));stroke:var(--w-lv);stroke-width:2.5;transition:all .15s}
.tw-svg .rd-bar0{fill:var(--line)}.tw-svg .rd-bar{fill:var(--gold)}
/* Chapter 10: cuff simulator */
.tw-svg .cs-grid{stroke:var(--line);stroke-width:1}
.tw-svg .cs-wave{fill:none;stroke:var(--w-lv);stroke-width:1.6;opacity:.8}
.tw-svg .cs-cuffline{stroke:var(--navy);stroke-width:2.5;stroke-dasharray:7 5}
.tw-svg .cs-mark{stroke:var(--gold);stroke-width:2}
.tw-svg .cs-dot{fill:var(--gold);stroke:var(--navy);stroke-width:2}
.tw-svg .cs-cuff{fill:color-mix(in srgb,var(--muted) 18%,var(--sheet));stroke:var(--muted);stroke-width:1.5}
.tw-svg .cs-artery{fill:color-mix(in srgb,var(--w-lv) 55%,var(--sheet));stroke:var(--w-lv);stroke-width:1.5;transition:all .1s}
/* Diagram | Interactive switch */
.view-switch-bar{display:flex;align-items:center;gap:6px;margin:14px 0 -4px;font-size:12.5px;font-weight:800;color:var(--muted)}
.view-switch-bar button{min-height:36px;padding:5px 12px;border:1px solid var(--line);border-radius:999px;background:var(--sheet);color:var(--navy);font-weight:800;font-size:12.5px}
.view-switch-bar button[aria-pressed="true"]{background:var(--navy2);color:var(--sheet);border-color:transparent}
.view-switch-bar button:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.view-switch>[hidden]{display:none!important}
/* Chapter 12: muscle pump */
.tw-svg .mp-vein{fill:color-mix(in srgb,var(--w-vol) 35%,var(--sheet));stroke:var(--w-vol);stroke-width:2;transition:all .35s}
.tw-svg .mp-pool{fill:color-mix(in srgb,var(--w-vol) 60%,var(--sheet))}
.tw-svg .mp-muscle{fill:color-mix(in srgb,#d9665c 25%,var(--sheet));stroke:#c4554c;stroke-width:2;transition:all .35s}.tw-svg .mp-muscle.is-on{fill:color-mix(in srgb,#d9665c 50%,var(--sheet))}
.tw-svg .mp-valve{fill:none;stroke:var(--navy);stroke-width:4;stroke-linecap:round}.tw-svg .mp-shut{stroke:var(--w-lv)}
.tw-svg .mp-arrow{stroke:var(--gold);stroke-width:6;stroke-linecap:round}.tw-svg .mp-head{fill:var(--gold)}
/* Chapters 13–14: Starling balance */
.tw-svg .sb-cap{fill:color-mix(in srgb,#d9665c 22%,var(--sheet));stroke:#c4554c;stroke-width:2}
.tw-svg .sb-arr{stroke-width:7;stroke-linecap:round}.tw-svg .out{stroke:var(--gold)}.tw-svg .in{stroke:var(--w-vol)}
.tw-svg .sb-h-out{fill:var(--gold)}.tw-svg .sb-h-in{fill:var(--w-vol)}
.tw-svg .sb-net{fill:var(--sheet);stroke:var(--line);stroke-width:1.5}.tw-svg .sb-net.is-out{fill:color-mix(in srgb,var(--gold) 30%,var(--sheet))}.tw-svg .sb-net.is-in{fill:color-mix(in srgb,var(--w-vol) 30%,var(--sheet))}
/* Chapter 15: duct territories */
.lymph-duct-figure svg{max-width:420px;margin:0 auto;display:block}
.lymph-duct-figure .ly-td{fill:color-mix(in srgb,var(--w-vol) 35%,var(--sheet));stroke:var(--w-vol);stroke-width:1.5}
.lymph-duct-figure .ly-rd{fill:color-mix(in srgb,var(--gold) 55%,var(--sheet));stroke:var(--gold);stroke-width:1.5}
.lymph-duct-figure .ly-dia{stroke:var(--muted);stroke-width:1;stroke-dasharray:4 4}
.lymph-duct-figure .ly-duct{fill:none;stroke:var(--navy);stroke-width:4;stroke-linecap:round}
.lymph-duct-figure .ly-angle{fill:var(--w-lv);stroke:var(--sheet);stroke-width:1.5}
.lymph-duct-figure text{fill:var(--text)}.lymph-duct-figure .ly-lab{font-size:14px;font-weight:800}.lymph-duct-figure .ly-lab-sm{font-size:12px}.lymph-duct-figure .ly-lab-xs{font-size:10px;fill:var(--muted)}
.lymph-duct-figure .ly-lab-rd{fill:color-mix(in srgb,var(--gold) 70%,var(--text))}.lymph-duct-figure .ly-lab-td{fill:var(--w-vol)}
/* Chapter 21: left vs right failure */
.hf-sides{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:10px 0}
.hf-col{display:flex;flex-direction:column;gap:6px;padding:10px;border-radius:12px;border:1px solid var(--line);background:var(--sheet)}
.hf-col strong{font-size:14px;color:var(--navy)}.hf-col span{font-size:13px;line-height:1.4;padding:6px 8px;border-radius:8px;background:var(--sheet2);position:relative}
.hf-col{gap:14px}.hf-col span::before{content:"↓";position:absolute;left:50%;top:-15px;transform:translateX(-50%);font-size:12px;line-height:1;color:var(--muted)}.hf-col .hf-end{font-weight:800}
.hf-left{border-color:color-mix(in srgb,var(--w-vol) 55%,var(--line))}.hf-right{border-color:color-mix(in srgb,var(--gold) 60%,var(--line))}
@media(max-width:420px){.hf-sides{grid-template-columns:1fr}}
/* Chapter 23: diastole clock */
.tw-svg .dc-sys{fill:color-mix(in srgb,#d9665c 45%,var(--sheet));stroke:#c4554c}.tw-svg .dc-dia{fill:color-mix(in srgb,var(--w-vol) 45%,var(--sheet));stroke:var(--w-vol)}.tw-svg .dc-track{fill:var(--sheet2);stroke:var(--line)}
.axon-reflex-figure svg{max-width:420px;margin:0 auto;display:block}
.axon-reflex-figure .ax-cord{fill:color-mix(in srgb,var(--muted) 18%,var(--sheet));stroke:var(--muted);stroke-dasharray:5 4}
.axon-reflex-figure .ax-fibre{stroke:var(--navy);stroke-width:4;stroke-linecap:round;fill:none}.axon-reflex-figure .ax-faint{stroke:var(--muted);stroke-width:3;stroke-dasharray:6 5}
.axon-reflex-figure .ax-node{fill:var(--navy)}
.axon-reflex-figure .ax-skin{fill:color-mix(in srgb,var(--gold) 22%,var(--sheet));stroke:color-mix(in srgb,var(--gold) 60%,var(--sheet))}
.axon-reflex-figure .ax-flare{fill:color-mix(in srgb,var(--w-ao) 28%,transparent)}
.axon-reflex-figure .ax-art{fill:color-mix(in srgb,var(--w-ao) 70%,var(--sheet));stroke:var(--w-ao);stroke-width:1.5}
.axon-reflex-figure .ax-stroke{fill:none;stroke:var(--text);stroke-width:3;stroke-linejoin:round}
.axon-reflex-figure .ax-arrow path{stroke:var(--w-lv);stroke-width:3;fill:none}.axon-reflex-figure .ax-arrowhead{fill:var(--w-lv)}
.axon-reflex-figure .ax-step{fill:var(--navy)}.axon-reflex-figure .ax-step-num{fill:var(--sheet);font-size:13px;font-weight:800}
.axon-reflex-figure text{fill:var(--text)}.axon-reflex-figure .ax-lab{font-size:14px;font-weight:800}.axon-reflex-figure .ax-lab-sm{font-size:13px;font-weight:700}.axon-reflex-figure .ax-lab-xs{font-size:12px;fill:var(--muted)}
.axon-reflex-figure text.ax-step-num{fill:var(--sheet)}
.axon-reflex-figure .ax-step-num text{fill:var(--sheet)}
.baroreflex-figure svg{max-width:420px;margin:0 auto;display:block}
.baroreflex-figure .bx-node rect{fill:color-mix(in srgb,var(--navy) 8%,var(--sheet));stroke:var(--navy);stroke-width:1.5}
.baroreflex-figure .bx-effect{fill:color-mix(in srgb,var(--gold) 20%,var(--sheet));stroke:var(--gold);stroke-width:1.5}
.baroreflex-figure .bx-arrow path{fill:none;stroke:var(--muted);stroke-width:2.5}.baroreflex-figure .bx-arrowhead{fill:var(--muted)}
.baroreflex-figure text{fill:var(--text)}.baroreflex-figure .bx-lab{font-size:13px;font-weight:800}.baroreflex-figure .bx-sub{font-size:12px}
.baroreflex-figure .bx-up{fill:var(--w-ao);font-weight:800}.baroreflex-figure .bx-down{fill:var(--w-lv);font-weight:800}
.rt-scen{flex-wrap:wrap}.rt-chain{list-style:none;padding:0;margin:12px 0;display:grid;gap:6px}
.rt-chain li{display:flex;gap:10px;align-items:flex-start;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--sheet);opacity:.75}
.rt-chain li.is-now{opacity:1;border-color:var(--navy);box-shadow:0 0 0 1px var(--navy)}
.rt-badge{flex:0 0 26px;height:26px;border-radius:50%;display:grid;place-items:center;font-weight:900;background:color-mix(in srgb,var(--muted) 15%,var(--sheet))}
.rt-up{color:var(--w-ao)}.rt-down{color:var(--w-lv)}.rt-eq{color:var(--muted)}
.rt-nav{align-items:center;justify-content:space-between}.rt-count{font-size:.9rem;color:var(--muted)}
.rt-wrap .rt-chain{padding:0!important;margin:12px 0!important}.rt-wrap .rt-chain li{margin:0}.rt-scen .tw-btn{min-height:36px;padding:5px 11px;font-size:13px}.rt-chain li span:last-child{font-size:.95rem;line-height:1.45}
.gravity-column-figure svg,.shock-cycle-figure svg{max-width:420px;margin:0 auto;display:block}
.gravity-column-figure .gv-body>*{fill:color-mix(in srgb,var(--navy) 10%,var(--sheet));stroke:var(--navy);stroke-width:1.5}
.gravity-column-figure .gv-pool rect{fill:color-mix(in srgb,var(--w-lv) 45%,var(--sheet));stroke:none}
.gravity-column-figure .gv-heart{fill:var(--w-ao)}.gravity-column-figure .gv-level{stroke:var(--w-ao);stroke-width:1.5;stroke-dasharray:6 5}
.gravity-column-figure .gv-arrow path{stroke:var(--muted);stroke-width:2.5;fill:none}.gravity-column-figure .gv-arrowhead{fill:var(--muted)}
.gravity-column-figure text,.shock-cycle-figure text{fill:var(--text)}.gravity-column-figure .gv-lab,.shock-cycle-figure .sh-lab{font-size:13px;font-weight:800}.gravity-column-figure .gv-sub,.shock-cycle-figure .sh-sub{font-size:12px}
.gravity-column-figure .gv-up{fill:var(--w-ao);font-weight:800}.gravity-column-figure .gv-down{fill:var(--w-lv);font-weight:800}
.shock-cycle-figure .sh-centre{fill:color-mix(in srgb,var(--w-ao) 18%,var(--sheet));stroke:var(--w-ao);stroke-width:2}
.shock-cycle-figure .sh-box rect{fill:color-mix(in srgb,var(--navy) 8%,var(--sheet));stroke:var(--navy);stroke-width:1.5}
.shock-cycle-figure .sh-arrow path{stroke:var(--w-ao);stroke-width:2.5;fill:none}.shock-cycle-figure .sh-arrowhead{fill:var(--w-ao)}

/* ---------- Performance: on-demand chapters ---------- */
#main{min-height:calc(100vh - 150px);min-height:calc(100svh - 150px)}.load-error{background:var(--sheet);border:1px solid var(--line);border-radius:22px;padding:clamp(20px,4vw,40px);margin:18px 0 40px}.load-error h1{font:800 clamp(26px,4vw,40px)/1.16 'Plus Jakarta Sans',sans-serif;margin:12px 0 8px}
.skeleton-note{color:var(--muted);margin:0 0 22px}
.skeleton-lines{display:grid;gap:12px}.skeleton-lines i{display:block;height:14px;border-radius:7px;background:linear-gradient(90deg,var(--line) 25%,color-mix(in srgb,var(--line) 40%,var(--sheet)) 50%,var(--line) 75%);background-size:200% 100%;animation:skel 1.4s ease-in-out infinite}
.skeleton-lines i:nth-child(3n){width:78%}.skeleton-lines i:nth-child(4n){width:64%}
@keyframes skel{from{background-position:100% 0}to{background-position:-100% 0}}
@media(prefers-reduced-motion:reduce){.skeleton-lines i{animation:none}}
/* Blur behind the sticky header is costly while scrolling on low-end phones: use a solid bar there. */
@media(max-width:760px){.topbar{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--sheet)}}
.reader-toolbar-space{height:61px;margin:14px 0 18px;border:1px solid var(--line);border-radius:12px;background:var(--sheet2)}
@media(max-width:600px){.reader-toolbar-space{height:151px}}
@media(max-width:390px){.reader-toolbar-space{margin:10px 0 13px}}
.article-sheet.is-skeleton .article-end{visibility:hidden}
html{scrollbar-gutter:stable}
/* ---------- Premium phone reading ---------- */
.topbar{transition:transform .22s ease}
.toc a.is-active{color:var(--blue);background:var(--sheet2);font-weight:700;box-shadow:inset 3px 0 0 var(--blue)}
.reader-toggle{display:none}
.reader-panel{display:contents}
.chapter-bar,.section-sheet,.sheet-backdrop{display:none}
@media(max-width:760px){
  .topbar.is-hidden{transform:translateY(-100%)}
  .brand,.nav-link{min-height:44px;display:inline-flex;align-items:center}
  .small-icon{height:44px;min-width:44px}
  .mobile-sections{display:none}
  /* Reading options collapse to one row */
  .reader-toolbar{padding:6px;gap:8px}
  .reader-toggle{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:6px 10px;border:0;border-radius:9px;background:transparent;color:var(--text);font-weight:700;font-size:.92rem;text-align:left;cursor:pointer}
  .reader-toggle-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;background:var(--sheet);border:1px solid var(--line);font:800 13px/1 'Plus Jakarta Sans',sans-serif;color:var(--blue)}
  .reader-toggle-state{margin-left:auto;color:var(--muted);font-weight:600;font-size:.82rem}
  .reader-toggle-state::after{content:'▾';margin-left:8px;display:inline-block;transition:transform .2s}
  .reader-toolbar.is-open .reader-toggle-state::after{transform:rotate(180deg)}
  .reader-panel{display:none;width:100%;padding:4px 4px 6px;gap:12px}
  .reader-toolbar.is-open .reader-panel{display:grid}
  .reader-toolbar-space{height:58px}
  .reader-modes button{min-height:44px}
  .reader-adjust select{min-height:44px;font-size:16px;min-width:10.5em}
  /* Bottom chapter bar */
  html.has-chapter-bar body{padding-bottom:calc(64px + env(safe-area-inset-bottom))}
  .chapter-bar{display:flex;align-items:center;gap:10px;position:fixed;left:0;right:0;bottom:0;z-index:40;padding:8px max(12px,env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));background:var(--sheet);border-top:1px solid var(--line);box-shadow:0 -6px 20px rgba(16,35,70,.08)}
  .chapter-bar button{min-height:44px;border:1px solid var(--line);border-radius:12px;background:var(--sheet2);color:var(--text);font-weight:700;cursor:pointer}
  .cb-sections{display:flex;align-items:center;gap:8px;padding:0 14px;font-size:.88rem;flex:0 1 auto;white-space:nowrap}
  .cb-icon{color:var(--blue)}
  .cb-track{flex:1;height:6px;border-radius:3px;background:var(--line);overflow:hidden}
  .cb-fill{display:block;height:100%;background:var(--gold);transform:scaleX(0);transform-origin:0 50%;will-change:transform}
  .cb-pct{font-size:.78rem;color:var(--muted);font-variant-numeric:tabular-nums;min-width:3ch;text-align:right}
  .cb-top{width:44px;font-size:1.1rem}
  .sheet-backdrop{display:block;position:fixed;inset:0;z-index:41;background:rgba(8,18,36,.45);opacity:0;transition:opacity .2s}
  .sheet-backdrop.is-open{opacity:1}
  .sheet-backdrop[hidden],.section-sheet[hidden]{display:none}
  .section-sheet{display:block;position:fixed;left:0;right:0;bottom:0;z-index:42;max-height:min(72vh,72svh);overflow:auto;overscroll-behavior:contain;background:var(--sheet);border-radius:20px 20px 0 0;padding:6px 16px calc(16px + env(safe-area-inset-bottom));box-shadow:0 -12px 40px rgba(8,18,36,.25);transform:translateY(100%);transition:transform .22s ease}
  .section-sheet.is-open{transform:none}
  .sheet-grip{width:40px;height:5px;border-radius:3px;background:var(--line);margin:4px auto 8px}
  .sheet-head{display:flex;align-items:center;justify-content:space-between;position:sticky;top:-6px;background:var(--sheet);padding:4px 0 8px}
  .sheet-head h2{font:800 17px/1.3 'Plus Jakarta Sans',sans-serif;margin:0;color:var(--navy)}
  .sheet-close{width:44px;height:44px;border:0;border-radius:12px;background:var(--sheet2);color:var(--text);font-size:1rem;cursor:pointer}
  .section-sheet ol{list-style:none;margin:0;padding:0;display:grid;gap:4px}
  .section-sheet a{display:block;padding:12px 12px;border-radius:12px;text-decoration:none;color:var(--text);font-weight:600;line-height:1.35}
  .section-sheet a.is-active{background:var(--sheet2);color:var(--blue);box-shadow:inset 3px 0 0 var(--blue)}
  html.sheet-open{overflow:hidden}
}
@media(max-width:760px) and (prefers-reduced-motion:reduce){.topbar,.section-sheet,.sheet-backdrop{transition:none}}
/* ---------- Offline reading ---------- */
.offline-card{display:flex;align-items:center;justify-content:space-between;gap:12px 18px;flex-wrap:wrap;margin:0 0 16px;padding:14px 16px;border:1px solid var(--line);border-radius:16px;background:var(--sheet)}
.offline-card:empty{display:none}
.offline-text{display:grid;gap:2px;min-width:0;flex:1 1 240px}.offline-text strong{color:var(--navy)}.offline-text span{color:var(--muted);font-size:.9rem}
.offline-card .btn{min-height:44px}
.dom-toast{position:fixed;left:50%;width:max-content;bottom:calc(18px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:60;display:flex;align-items:center;gap:10px;max-width:min(560px,calc(100vw - 24px));padding:10px 10px 10px 16px;border-radius:14px;background:var(--navy);color:#fff;box-shadow:0 12px 32px rgba(8,18,36,.3);font-size:.92rem}
.dom-toast button{min-height:40px;border:0;border-radius:10px;padding:0 14px;background:rgba(255,255,255,.16);color:#fff;font-weight:700;cursor:pointer}
.dom-toast .dom-toast-close{padding:0 12px;background:transparent}
html.has-chapter-bar .dom-toast{bottom:calc(76px + env(safe-area-inset-bottom))}
[data-theme="dark"] .dom-toast{background:#22365a}
.toc-keys{margin:10px 0 0;font-size:11px;color:var(--muted)}.toc-keys kbd{display:inline-block;min-width:20px;padding:1px 5px;border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;background:var(--sheet2);font:700 11px/1.4 ui-monospace,monospace;text-align:center;color:var(--text)}
@media(hover:none){.toc-keys{display:none}}
/* Touch screens of any size (tablets included): comfortable header targets. */
@media(pointer:coarse){.brand,.nav-link{min-height:44px;display:inline-flex;align-items:center}.small-icon{height:44px;min-width:44px}}
/* Wide tables on phones scroll sideways: soft shadows at the edges show there is more to see. */
@media(max-width:660px){
  :is(.article-text,.cs-body) table{background:linear-gradient(90deg,var(--sheet) 30%,transparent) left/28px 100% no-repeat local,linear-gradient(270deg,var(--sheet) 30%,transparent) right/28px 100% no-repeat local,radial-gradient(farthest-side at 0 50%,rgba(16,35,70,.22),transparent) left/12px 100% no-repeat scroll,radial-gradient(farthest-side at 100% 50%,rgba(16,35,70,.22),transparent) right/12px 100% no-repeat scroll;-webkit-overflow-scrolling:touch}
}
/* Continue where you left off */
.resume-card{display:flex;align-items:center;gap:14px;margin:0 0 16px;padding:14px 16px;border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:16px;background:var(--sheet);text-decoration:none;color:var(--text)}
.resume-card:hover{border-color:var(--blue)}
.resume-text{display:grid;gap:2px;min-width:0;flex:1}.resume-text small{color:var(--muted);font-weight:700;letter-spacing:.06em;text-transform:uppercase;font-size:11px}.resume-text strong{color:var(--navy);overflow:hidden;text-overflow:ellipsis}.resume-text span{color:var(--muted);font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.resume-go{color:var(--blue);font-weight:800;white-space:nowrap}
/* =====================================================================
   Reading layer: one calm, consistent reading surface on every screen.
   The memorable element is the gold section numeral; everything else is quiet.
   ===================================================================== */
:root{--num:#b9820f;--measure:68ch}
[data-theme="dark"]{--num:var(--gold)}
[data-reader-width="wide"]{--measure:86ch}

/* Header: kicker, title, one meta line with the reading options on the right */
.article-sheet .article-kicker{margin:0 0 8px;font-size:14px;font-weight:600;color:var(--muted);letter-spacing:0}
.article-sheet h1{margin:0 0 14px;text-wrap:balance}
.article-sheet .article-summary{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;margin:0 0 30px;padding:0 0 18px;border-bottom:1px solid var(--line);font-size:14px;color:var(--muted)}
.article-summary .article-source{flex-basis:100%;order:3;font-size:13px}
.article-summary .reader-toolbar{margin:0;padding:0;border:0;background:none;flex:0 0 auto;display:block;width:auto}
.article-summary .reader-toggle{display:inline-flex;align-items:center;gap:8px;width:auto;min-height:40px;padding:4px 14px 4px 5px;border:1px solid var(--line);border-radius:999px;background:var(--sheet);color:var(--text);font-weight:700;font-size:13.5px;cursor:pointer}
.article-summary .reader-toggle-icon{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--sheet2);border:0;font:800 12px/1 'Plus Jakarta Sans',sans-serif;color:var(--blue)}
.article-summary .reader-toggle-state{margin-left:2px;color:var(--muted);font-weight:600;font-size:12.5px}
.article-summary .reader-toggle-state::after{content:'▾';margin-left:6px;display:inline-block;transition:transform .2s}
.article-summary .reader-toolbar.is-open{flex-basis:100%;order:4}
.article-summary .reader-toolbar.is-open .reader-toggle-state::after{transform:rotate(180deg)}
.article-summary .reader-panel{display:none}
.article-summary .reader-toolbar.is-open .reader-panel{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 18px;margin-top:10px;padding:12px;border:1px solid var(--line);border-radius:16px;background:var(--sheet2)}
.article-summary .reader-toolbar-space{display:inline-block;width:170px;height:40px;border-radius:999px;border:1px solid var(--line);background:var(--sheet);margin:0}
.article-summary .reader-modes{display:inline-flex;gap:4px;width:auto}
@media(max-width:560px){.article-summary .reader-toolbar.is-open .reader-panel{display:grid}.article-summary .reader-modes{display:grid;grid-template-columns:repeat(3,1fr);width:100%}.article-summary .reader-toggle-state{display:none}}

/* The reading column */
.article-sheet .article-text{font-size:17px;line-height:1.72;color:var(--text)}
[data-reader-scale="90"] .article-sheet .article-text{font-size:15.5px}
[data-reader-scale="110"] .article-sheet .article-text{font-size:18.5px}
[data-reader-scale="120"] .article-sheet .article-text{font-size:20px}
.article-sheet .article-text>:is(p,ul,ol,h2,h3,h4,.check-block){max-width:var(--measure)}
.article-sheet :is(.article-text,.cs-body) p{margin:0 0 1em}
.article-sheet :is(.article-text,.cs-body) li{margin:0 0 .45em}
.article-sheet :is(.article-text,.cs-body) h2{font:800 clamp(22px,2.3vw,27px)/1.25 'Plus Jakarta Sans',sans-serif;letter-spacing:-.022em;margin:2.3em 0 .65em;padding-top:0;text-wrap:balance}
.article-sheet :is(.article-text,.cs-body) h1+h2,.article-sheet .article-text>h2:first-child{margin-top:.3em}
.article-sheet :is(.article-text,.cs-body) h3{font:800 1.08em/1.35 'Plus Jakarta Sans',sans-serif;color:var(--navy);margin:1.6em 0 .5em}
.sec-num{color:var(--num);margin-right:.18em;font-variant-numeric:tabular-nums}
.article-sheet :is(.article-text,.cs-body) strong{font-weight:700}
.article-sheet :is(.article-text,.cs-body) em:has(>a[href^="#/physiology/cvs/"]){font-style:normal;font-size:.86em}
.article-sheet :is(.article-text,.cs-body) a[href^="#/physiology/cvs/"]{font-weight:600}
.article-sheet :is(.article-text,.cs-body) table{font-size:.86em}

/* Understanding Checks: one calm panel per set of questions */
.article-sheet .check-block{margin:2.2em 0;padding:22px 22px 6px;border:1px solid var(--line);border-radius:20px;background:var(--sheet2)}
.check-block .check-label{display:flex;align-items:center;gap:9px;margin:0 0 16px;font:800 14.5px/1.3 'Plus Jakarta Sans',sans-serif;color:var(--navy)}
.check-block .check-label::before{content:'?';display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--num);color:#fff;font-size:13px}
[data-theme="dark"] .check-block .check-label::before{color:#1b1406}
.check-block .check-label strong{font-weight:800}
.check-block .check-body>p{font-size:.95em}
.check-block .mcq-options{gap:8px;margin-top:12px}
.check-block .mcq-option{font-size:15px;padding:11px 15px;border-radius:13px;background:var(--sheet);transition:border-color .15s,background-color .15s}
.check-block .mcq-option:hover:not(:disabled){background:color-mix(in srgb,var(--blue) 5%,var(--sheet))}
.article-sheet .check-block details{margin:4px 0 24px;padding:0;border:0;background:none;font-size:.92em}
.article-sheet .check-block details summary{display:inline-flex;align-items:center;gap:8px;min-height:40px;list-style:none;color:var(--blue);font-weight:700}
.article-sheet .check-block details summary::-webkit-details-marker{display:none}
.article-sheet .check-block details summary::before{content:'';width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .2s;margin-right:2px}
.article-sheet .check-block details[open] summary::before{transform:rotate(45deg)}
.article-sheet .check-block details[open]>p{margin:6px 0 0;padding:12px 15px;border-left:3px solid var(--w-ok);border-radius:0 12px 12px 0;background:var(--sheet)}

/* Chapter Essentials: the summary to come back to */
.article-sheet :is(.article-text,.cs-body) h2[id$="chapter-essentials"]+ol{padding:18px 22px 18px 44px;border-radius:20px;background:color-mix(in srgb,var(--gold) 12%,var(--sheet));border:1px solid color-mix(in srgb,var(--gold) 40%,var(--line))}
.article-sheet :is(.article-text,.cs-body) h2[id$="chapter-essentials"]+ol li::marker{color:var(--num);font-weight:800}

/* End of chapter: the next step is one obvious card */
.article-sheet .article-end{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;margin-top:40px;padding-top:24px;border-top:1px solid var(--line)}
.next-card{display:grid;justify-self:start;min-width:min(100%,320px);gap:4px;padding:18px 20px;border-radius:18px;background:var(--navy);color:#fff;text-decoration:none;transition:transform .15s}
.next-card:hover{transform:translateY(-1px)}
.next-label{font-size:13px;opacity:.8}.next-title{font:800 19px/1.3 'Plus Jakarta Sans',sans-serif}
.next-title::after{content:' →'}
[data-theme="dark"] .next-card{background:#1d3a6e}
.end-actions{display:flex;flex-wrap:wrap;gap:8px}
.end-actions .btn{min-height:44px}

/* Breadcrumb and contents panel */
.breadcrumb{font-size:13px}
.breadcrumb a{text-decoration:none;color:var(--navy);font-weight:600}
.toc{padding:18px 14px}
.toc h2{font:700 13px 'Plus Jakarta Sans',sans-serif;letter-spacing:0;text-transform:none;color:var(--navy);margin:0 0 10px;padding:0 6px}
.toc a{font-size:13px;line-height:1.45;padding:8px 8px;color:var(--muted)}
.nav-bottom{border-top:1px solid var(--line);padding-top:12px;margin-top:12px}
.nav-bottom a{font-size:12.5px;line-height:1.4;padding:6px 8px}

/* Phones: the text sits on the page, not in a box */
@media(max-width:660px){
  .breadcrumb{margin:16px 0 10px}
  .breadcrumb .crumb-root,.breadcrumb .crumb-here{display:none}
  .breadcrumb .crumb-parent a::before{content:'← '}
  .article-layout .article-sheet{border:0;border-radius:0;box-shadow:none;background:transparent;padding:4px 2px 0}
  .article-sheet .article-text{font-size:17px;line-height:1.68}
  [data-reader-scale="90"] .article-sheet .article-text{font-size:15.5px}
  [data-reader-scale="110"] .article-sheet .article-text{font-size:18.5px}
  [data-reader-scale="120"] .article-sheet .article-text{font-size:20px}
  .article-sheet :is(.article-text,.cs-body) h2{font-size:22px;margin-top:2em}
  .article-sheet .check-block{margin:1.8em -6px;padding:18px 14px 4px;border-radius:18px}
  .article-sheet :is(.article-text,.cs-body) h2[id$="chapter-essentials"]+ol{padding:14px 16px 14px 36px;margin-inline:-6px}
  body:has(.article-sheet){background:var(--sheet)}
}
@media(max-width:660px){
  .article-summary .reader-adjust{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:8px 12px;width:100%}
  .article-summary .reader-adjust select{width:100%;min-width:0}
  .article-summary .reader-adjust label[for="reader-width"],.article-summary .reader-adjust #reader-width{display:none}
}
@media(max-width:760px){.article-sheet .article-end .next-card{justify-self:stretch}.article-sheet .article-end .end-actions .btn{flex:1}}
/* ---------- Understanding Checks: launch card and focused dialog at all widths ---------- */
html.sheet-open{overflow:hidden}
.check-launch{display:none}
.check-sheet{display:none}
/* Shared launcher and dialog styles. Small screens retain the original bottom-up sheet. */
  .article-sheet .check-block{margin:1.6em 0;padding:0;border:0;background:none;border-radius:0}
  .check-block .check-body{display:none}
  .check-launch{display:flex;align-items:center;gap:13px;width:100%;padding:14px 16px;border:1px solid var(--line);border-radius:18px;background:var(--sheet2);color:var(--text);font:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .15s,border-color .15s}
  .check-launch:active{background:color-mix(in srgb,var(--num) 8%,var(--sheet2))}
  .check-launch:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
  .cl-badge{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--num);color:#fff;font:800 15px 'Plus Jakarta Sans',sans-serif}
  [data-theme="dark"] .cl-badge{color:#1b1406}
  .cl-text{display:grid;gap:1px;min-width:0;flex:1}
  .cl-text strong{font:800 15px/1.3 'Plus Jakarta Sans',sans-serif;color:var(--navy)}
  .cl-sub{font-size:13.5px;line-height:1.35;color:var(--muted)}
  .cl-go{flex:none;padding:7px 13px;border-radius:999px;background:var(--navy);color:#fff;font:700 13px 'Plus Jakarta Sans',sans-serif}
  [data-theme="dark"] .cl-go{background:#2c4f8f}
  .check-launch.is-done .cl-go{background:transparent;color:var(--navy);box-shadow:inset 0 0 0 1px var(--line)}
  .check-launch.is-done .cl-badge{background:var(--w-ok)}
  .check-launch.is-done .cl-badge{font-size:0}.check-launch.is-done .cl-badge::before{content:'✓';font-size:16px;color:#fff}
  .check-sheet[hidden]{display:none}
  .check-sheet{display:block;position:fixed;inset:0;z-index:45;background:rgba(8,18,36,0);transition:background-color .22s}
  .check-sheet.is-open{background:rgba(8,18,36,.45)}
  .cs-panel{position:absolute;left:0;right:0;bottom:0;top:max(28px,env(safe-area-inset-top));display:flex;flex-direction:column;background:var(--sheet);border-radius:22px 22px 0 0;box-shadow:0 -12px 40px rgba(8,18,36,.22);transform:translateY(102%);transition:transform .26s cubic-bezier(.2,.8,.2,1)}
  .check-sheet.is-open .cs-panel{transform:none}
  .cs-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 12px;border-bottom:1px solid var(--line)}
  .cs-title{display:flex;align-items:center;gap:11px;min-width:0}
  .cs-title h2{margin:0;font:800 16px/1.25 'Plus Jakarta Sans',sans-serif;color:var(--navy)}
  .cs-part{margin:0;font-size:13px;color:var(--muted)}
  .cs-part:empty{display:none}
  .cs-head .sheet-close{flex:none;width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--sheet2);color:var(--text);font-size:16px}
  .cs-body{flex:1;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:6px 18px 24px;font-size:16.5px;line-height:1.68}
  .cs-body .check-body{display:block}
  .cs-body .check-label{display:none}
  .cs-body .check-body>p{font-size:1em}
  .cs-body details{margin:4px 0 24px;padding:0;border:0;background:none;font-size:.94em}
  .cs-body details summary{display:inline-flex;align-items:center;gap:8px;min-height:40px;list-style:none;color:var(--blue);font-weight:700}
  .cs-body details summary::-webkit-details-marker{display:none}
  .cs-body details summary::before{content:'';width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .2s}
  .cs-body details[open] summary::before{transform:rotate(45deg)}
  .cs-body details[open]>p{margin:6px 0 0;padding:12px 15px;border-left:3px solid var(--w-ok);border-radius:0 12px 12px 0;background:var(--sheet2)}
  .cs-body .mcq-options{gap:8px;margin-top:12px}
  .cs-body .mcq-option{font-size:15.5px;padding:12px 15px;border-radius:13px;background:var(--sheet)}
  .cs-foot{padding:10px 16px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--line)}
  .cs-foot .btn{width:100%;min-height:46px}
/* On wider screens the same Understanding Check opens in a centered reading window. */
@media(min-width:761px){
  .article-sheet .check-block{margin:1.8em 0}
  .check-sheet{display:grid;place-items:center;padding:24px;backdrop-filter:blur(3px)}
  .check-sheet.is-open{background:rgba(8,18,36,.56)}
  .cs-panel{position:relative;inset:auto;width:min(760px,100%);height:min(720px,86dvh);max-height:calc(100dvh - 48px);border:1px solid var(--line);border-radius:22px;box-shadow:0 24px 75px rgba(8,18,36,.3);transform:translateY(14px) scale(.985);opacity:0;transition:opacity .2s,transform .2s}
  .check-sheet.is-open .cs-panel{opacity:1;transform:none}
  .cs-head{padding:18px 24px 15px}
  .cs-title h2{font-size:19px}
  .cs-body{padding:16px 28px 26px;font-size:17px;line-height:1.65}
  .cs-foot{display:flex;justify-content:flex-end;padding:12px 24px}
  .cs-foot .btn{width:auto;min-width:165px}
}
@media(prefers-reduced-motion:reduce){.cs-panel,.check-sheet{transition:none}}

/* ---------- Videos in their own full-screen window (phones) ---------- */
html.video-open{overflow:hidden}
.video-viewer{position:fixed;inset:0;z-index:70;display:flex;flex-direction:column;justify-content:center;background:#05080f;color:#fff;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);animation:vv-in .2s ease-out}
@keyframes vv-in{from{opacity:0}to{opacity:1}}
.vv-head{position:absolute;top:env(safe-area-inset-top);left:0;right:0;display:flex;align-items:center;gap:12px;padding:12px 14px;background:linear-gradient(#05080f,rgba(5,8,15,0))}
.vv-title{flex:1;margin:0;font:700 14.5px/1.3 'Plus Jakarta Sans',sans-serif;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vv-close{flex:none;width:42px;height:42px;border-radius:50%;border:0;background:rgba(255,255,255,.14);color:#fff;font-size:17px}
.vv-close:focus-visible{outline:3px solid #8fb2ff;outline-offset:2px}
.vv-stage{width:100%;aspect-ratio:16/9;max-height:100%;background:#000}
.vv-stage iframe{display:block;width:100%;height:100%;border:0}
.vv-hint{position:absolute;left:0;right:0;bottom:calc(18px + env(safe-area-inset-bottom));margin:0;text-align:center;font-size:13px;color:rgba(255,255,255,.62)}
@media(orientation:landscape){.vv-hint{display:none}.vv-stage{height:100%;width:auto;margin:0 auto;max-width:100%}.vv-head{background:none;justify-content:flex-end}.vv-title{display:none}}
@media(prefers-reduced-motion:reduce){.video-viewer{animation:none}}
/* Multiple-choice explanations appear only after an answer is chosen */
details.mcq-answer.is-after-answer:not([open]){display:none}
details.mcq-answer.is-after-answer>summary{display:none}
details.mcq-answer.is-after-answer[open]>p:first-of-type{margin-top:4px}
.lecture-card .lecture-twin{margin-top:-4px;font-weight:600;text-transform:none;letter-spacing:0;opacity:.85}
/* ---------- Feedback ---------- */
.chapter-feedback{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;margin-top:6px;padding:14px 16px;border:1px solid var(--line);border-radius:16px;background:var(--sheet2)}
.chapter-feedback .cf-q{margin:0;font-weight:700;color:var(--navy);font-size:15px}
.cf-buttons{display:flex;gap:8px}
.cf-btn{min-height:40px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:var(--sheet);color:var(--text);font:700 14px 'DM Sans',sans-serif;cursor:pointer}
.cf-btn:hover{border-color:var(--blue)}
.cf-link,.cf-report,.check-report{border:0;background:none;padding:0;color:var(--blue);font:600 14px 'DM Sans',sans-serif;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.cf-report{color:var(--muted);font-weight:500;font-size:13px}
.cf-btn:focus-visible,.cf-link:focus-visible,.cf-report:focus-visible,.check-report:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.check-report{display:block;margin:2px 0 14px;color:var(--muted);font-weight:500;font-size:13px}
.fb-dialog{width:min(480px,calc(100vw - 24px));border:1px solid var(--line);border-radius:20px;padding:0;background:var(--sheet);color:var(--text);box-shadow:0 20px 60px rgba(8,18,36,.3)}
.fb-dialog::backdrop{background:rgba(8,18,36,.45)}
.fb-form{display:grid;gap:8px;padding:20px}
.fb-form h2{margin:0 0 4px;font:800 18px/1.3 'Plus Jakarta Sans',sans-serif;color:var(--navy)}
.fb-label{font-weight:700;font-size:14px;margin-top:6px}
.fb-form select,.fb-form textarea{width:100%;font:15px/1.5 'DM Sans',sans-serif;color:var(--text);background:var(--sheet2);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.fb-form select{min-height:44px}
.fb-form textarea{resize:vertical;min-height:110px}
.fb-form select:focus-visible,.fb-form textarea:focus-visible{outline:3px solid var(--blue);outline-offset:1px}
.fb-privacy{margin:0;font-size:12.5px;color:var(--muted)}
.fb-thanks{margin:0;font-size:15px}
.fb-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}
.fb-actions .btn{min-height:44px}
@media(max-width:760px){.fb-dialog{margin:auto auto 0;width:100%;max-width:none;border-radius:20px 20px 0 0;padding-bottom:env(safe-area-inset-bottom)}.chapter-feedback{flex-direction:column;align-items:stretch}.cf-buttons .cf-btn{flex:1}}
/* ---------- Lecture tests ---------- */
.test-card{display:flex;align-items:center;gap:14px;margin:22px 0;padding:18px 20px;border-radius:18px;background:linear-gradient(120deg,var(--navy),#2457d6);color:#fff;text-decoration:none;box-shadow:0 10px 30px rgba(21,60,134,.18)}
.test-card:hover{filter:brightness(1.05)}
.test-card:focus-visible{outline:3px solid var(--num);outline-offset:3px}
.test-card-text{display:grid;gap:2px;flex:1;min-width:0}
.test-card-kicker{font-size:13px;opacity:.85}
.test-card strong{font:800 18px/1.25 'Plus Jakarta Sans',sans-serif}
.test-card-text>span:last-child{font-size:14px;opacity:.9}
.test-card-go{font-size:22px;font-weight:800}
[data-theme="dark"] .test-card{background:linear-gradient(120deg,#1d3a6e,#2c4f8f)}
.article-sheet .article-end .test-card{margin:0}
.lt-wrap{max-width:760px;margin:0 auto;padding:8px 0 48px}
.lt-intro,.lt-result{background:var(--sheet);border:1px solid var(--line);border-radius:22px;padding:clamp(20px,4vw,34px);margin-top:10px}
.lt-kicker{margin:0 0 4px;color:var(--num);font-weight:800;font-size:14px}
.lt-intro h1,.lt-result h1{margin:0 0 10px;font:800 clamp(24px,4vw,32px)/1.2 'Plus Jakarta Sans',sans-serif;color:var(--navy)}
.lt-lede{margin:0 0 12px;font-size:16.5px}
.lt-chapters{margin:0 0 16px;padding-left:20px;color:var(--muted)}
.lt-best{margin:0 0 14px;font-size:15px}
.lt-setup{display:grid;gap:16px;margin-top:10px}
.lt-setup fieldset{border:0;margin:0;padding:0;display:grid;gap:8px}
.lt-setup legend{font-weight:800;color:var(--navy);margin-bottom:8px;font-size:15px}
.lt-choice{display:flex;gap:12px;align-items:flex-start;padding:13px 15px;border:1px solid var(--line);border-radius:14px;background:var(--sheet2);cursor:pointer}
.lt-choice:has(input:checked){border-color:var(--blue);box-shadow:inset 0 0 0 1px var(--blue)}
.lt-choice input{margin-top:4px;accent-color:var(--blue)}
.lt-choice span{display:grid;gap:2px}.lt-choice small{color:var(--muted);font-size:14px}
.lt-start,.lt-resume,.lt-last{min-height:48px;font-size:16px}
.lt-resume,.lt-last{margin:0 8px 6px 0}
.lt-running{padding-top:6px}
.lt-top{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:12px;padding:10px 0;background:var(--bg)}
.lt-exit{flex:none;width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--sheet);color:var(--text);font-size:16px;cursor:pointer}
.lt-progress{flex:1;height:8px;border-radius:4px;background:var(--line);overflow:hidden}
.lt-progress span{display:block;height:100%;background:var(--num);transform-origin:left;transition:transform .25s}
.lt-count{flex:none;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.lt-question{background:var(--sheet);border:1px solid var(--line);border-radius:22px;padding:clamp(18px,4vw,30px);margin-top:6px}
.lt-qmeta{margin:0 0 8px;color:var(--muted);font-size:13.5px;font-weight:600}
.lt-stem{margin:0 0 18px;font:700 clamp(18px,2.6vw,21px)/1.45 'DM Sans',sans-serif;color:var(--text);outline:none}
.lt-options{display:grid;gap:10px}
.lt-option{display:flex;gap:12px;align-items:flex-start;width:100%;min-height:52px;padding:13px 15px;text-align:left;border:1.5px solid var(--line);border-radius:15px;background:var(--sheet2);color:var(--text);font:16px/1.5 'DM Sans',sans-serif;cursor:pointer;transition:border-color .15s,background-color .15s}
.lt-option:hover:not(:disabled){border-color:var(--blue)}
.lt-option:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.lt-letter{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--sheet);border:1px solid var(--line);font-weight:800;font-size:14px;color:var(--navy)}
.lt-text{display:grid;gap:6px}
.lt-option.is-chosen{border-color:var(--blue);background:color-mix(in srgb,var(--blue) 9%,var(--sheet))}
.lt-option.is-chosen .lt-letter{background:var(--blue);border-color:var(--blue);color:#fff}
.lt-option:disabled{cursor:default}
.lt-option.is-correct{border-color:var(--w-ok);background:color-mix(in srgb,var(--w-ok) 12%,var(--sheet))}
.lt-option.is-correct .lt-letter{background:var(--w-ok);border-color:var(--w-ok);color:#fff}
.lt-option.is-wrong{border-color:var(--w-bad);background:color-mix(in srgb,var(--w-bad) 10%,var(--sheet))}
.lt-option.is-wrong .lt-letter{background:var(--w-bad);border-color:var(--w-bad);color:#fff}
.lt-option.is-other{opacity:.92}
.lt-why-not{display:block;font-size:14px;line-height:1.5;color:var(--muted)}
.lt-feedback:empty{display:none}
.lt-verdict{margin:0 0 16px;padding:14px 16px;border-radius:14px;border-left:4px solid var(--w-ok);background:color-mix(in srgb,var(--w-ok) 8%,var(--sheet));font-size:15.5px;line-height:1.6}
.lt-verdict.is-wrong{border-left-color:var(--w-bad);background:color-mix(in srgb,var(--w-bad) 7%,var(--sheet))}
.lt-verdict strong{color:var(--w-ok)}.lt-verdict.is-wrong strong{color:var(--w-bad)}
.lt-revise{display:inline-block;margin-top:6px;font-weight:700;color:var(--blue);font-size:14px}
.lt-confirm{margin-top:16px;padding:14px 16px;border-radius:14px;background:var(--sheet2);border:1px solid var(--line)}
.lt-confirm p{margin:0 0 6px}
.lt-nav{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:16px;flex-wrap:wrap}
.lt-nav .btn{min-height:48px}
.lt-next,.lt-finish{margin-left:auto}
.lt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:6px;margin-top:14px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--sheet)}
.lt-jump{min-height:44px;border-radius:10px;border:1px solid var(--line);background:var(--sheet2);color:var(--text);font-weight:700;cursor:pointer}
.lt-jump.is-done{background:color-mix(in srgb,var(--blue) 14%,var(--sheet));border-color:var(--blue)}
.lt-jump.is-here{outline:2px solid var(--num);outline-offset:1px}
.lt-pct{font-size:clamp(40px,8vw,56px);color:var(--navy)}
.lt-of{display:block;font:600 16px 'DM Sans',sans-serif;color:var(--muted)}
.lt-message{font-size:16px;margin:4px 0 16px}
.lt-chapter-scores{display:grid;gap:10px;margin-bottom:8px}
.lt-cs{display:grid;grid-template-columns:minmax(0,1.4fr) 1fr auto;align-items:center;gap:10px;font-size:14.5px}
.lt-cs-bar{height:8px;border-radius:4px;background:var(--line);overflow:hidden}
.lt-cs-bar i{display:block;height:100%;background:var(--w-ok);transform-origin:left}
.lt-result h2,.lt-review h2{font:800 18px 'Plus Jakarta Sans',sans-serif;color:var(--navy);margin:20px 0 8px}
.lt-revise-list{margin:0;padding-left:20px;display:grid;gap:6px}
.lt-revise-list span{color:var(--muted);font-size:13.5px}
.lt-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.lt-actions .btn{min-height:46px}
.lt-review{margin-top:22px}
.lt-review-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.lt-filter{display:flex;border:1px solid var(--line);border-radius:999px;overflow:hidden}
.lt-filter button{border:0;background:var(--sheet);color:var(--text);padding:8px 14px;font:700 14px 'DM Sans',sans-serif;cursor:pointer}
.lt-filter button[aria-pressed="true"]{background:var(--navy);color:#fff}
.lt-item{background:var(--sheet);border:1px solid var(--line);border-left:4px solid var(--w-ok);border-radius:16px;padding:16px 18px;margin-top:12px}
.lt-item.is-wrong{border-left-color:var(--w-bad)}
.lt-item-head{margin:0 0 6px;color:var(--muted);font-size:13.5px;font-weight:600}
.lt-mark{font-weight:800}.lt-item.is-right .lt-mark{color:var(--w-ok)}.lt-item.is-wrong .lt-mark{color:var(--w-bad)}
.lt-item-stem{margin:0 0 10px;font-weight:700}
.lt-item-options{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.lt-item-options li{display:flex;gap:10px;align-items:flex-start;padding:8px 10px;border-radius:10px;font-size:15px}
.lt-item-options li>span:last-child{display:grid;gap:3px}
.lt-item-options li.is-correct{background:color-mix(in srgb,var(--w-ok) 11%,var(--sheet))}
.lt-item-options li.is-wrong{background:color-mix(in srgb,var(--w-bad) 9%,var(--sheet))}
.lt-item-options em{font-style:normal;font-weight:700;color:var(--muted)}
.lt-item-why{margin:10px 0 0;font-size:15px}
.lt-unanswered{margin:8px 0 0;color:var(--w-bad);font-weight:700;font-size:14px}
@media(max-width:760px){
  .lt-wrap{padding-bottom:28px}
  .lt-question{border-radius:18px;padding:16px}
  .lt-option{font-size:15.5px;padding:12px 13px}
  .lt-nav{position:sticky;bottom:0;padding:10px 0 calc(10px + env(safe-area-inset-bottom));background:var(--bg);margin-top:8px;z-index:4}
  .lt-nav .btn{flex:1}
  .lt-cs{grid-template-columns:1fr auto}.lt-cs-bar{grid-column:1/-1;grid-row:2}
  .test-card{padding:16px}
}
@media(prefers-reduced-motion:reduce){.lt-progress span{transition:none}}
.lt-nav .btn:disabled{opacity:.45;cursor:default}
/* ---------- LAMLA (last-minute mode) ---------- */
.lamla-card{display:flex;align-items:center;gap:14px;margin:18px 0;padding:16px 18px;border-radius:18px;border:1.5px solid var(--num);background:color-mix(in srgb,var(--num) 9%,var(--sheet));color:var(--text);text-decoration:none}
.lamla-card:hover{background:color-mix(in srgb,var(--num) 14%,var(--sheet))}
.lamla-card:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
.lamla-mark{flex:none;padding:6px 9px;border-radius:10px;background:var(--num);color:#fff;font:800 13px 'Plus Jakarta Sans',sans-serif;letter-spacing:.04em}
[data-theme="dark"] .lamla-mark{color:#1b1406}
.lamla-text{display:grid;gap:2px;flex:1;min-width:0}
.lamla-text strong{font:800 17px/1.25 'Plus Jakarta Sans',sans-serif;color:var(--navy)}
.lamla-text>span{font-size:14.5px;color:var(--muted)}
.lamla-card .test-card-go{color:var(--num)}
.lamla-time{border:0;margin:0 0 6px;padding:0;display:grid;gap:8px}
.lamla-time legend{font-weight:800;color:var(--navy);margin-bottom:8px;font-size:15px}
.lamla-pick{font:800 17px 'Plus Jakarta Sans',sans-serif;color:var(--navy);margin:18px 0 8px}
.lamla-lectures{display:grid;gap:8px}
.lamla-lecture{display:flex;align-items:center;gap:12px;width:100%;padding:14px 16px;text-align:left;border:1.5px solid var(--line);border-radius:15px;background:var(--sheet2);color:var(--text);font:inherit;cursor:pointer}
.lamla-lecture:hover{border-color:var(--blue)}
.lamla-lecture:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.lamla-lecture>span:nth-child(2){display:grid;gap:2px;flex:1;min-width:0}
.lamla-lecture small{color:var(--muted);font-size:13.5px}

.lamla-num{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--sheet);border:1px solid var(--line);font-weight:800;color:var(--navy)}
.lm-wrap{max-width:760px;margin:0 auto;padding:6px 0 40px}
.lm-top{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:12px;padding:10px 0;background:var(--bg)}
.lm-exit{display:grid;place-items:center;text-decoration:none}
.lm-where{margin:2px 0 10px;color:var(--muted);font-size:13.5px;font-weight:600}
.lm-badge{display:inline-block;padding:2px 7px;border-radius:7px;background:var(--num);color:#fff;font:800 11px 'Plus Jakarta Sans',sans-serif;letter-spacing:.04em;margin-right:4px}
[data-theme="dark"] .lm-badge{color:#1b1406}
.lm-why p{margin:6px 0 0}
.lm-learn,.lm-finish{background:var(--sheet);border:1px solid var(--line);border-radius:22px;padding:clamp(18px,4vw,30px)}
.lm-learn h1,.lm-finish h1{margin:0 0 10px;font:800 clamp(22px,3.6vw,28px)/1.25 'Plus Jakarta Sans',sans-serif;color:var(--navy);outline:none}
.lm-result{margin:0 0 14px;padding:10px 14px;border-radius:12px;background:color-mix(in srgb,var(--w-bad) 8%,var(--sheet));font-size:15px}
.lm-result.is-good{background:color-mix(in srgb,var(--w-ok) 10%,var(--sheet))}
.lm-must-title{font:800 17px 'Plus Jakarta Sans',sans-serif;color:var(--navy);margin:16px 0 8px}
.lm-must{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.lm-must li{display:flex;gap:10px;align-items:flex-start;padding:11px 14px;border-radius:13px;background:var(--sheet2);border:1px solid var(--line);font-size:16px;line-height:1.6}
.lm-must li.is-star{border-color:color-mix(in srgb,var(--num) 55%,var(--line));background:color-mix(in srgb,var(--num) 7%,var(--sheet))}
.lm-star{flex:none;color:var(--num);font-size:17px;line-height:1.5}
.lm-more{margin:10px 0 0}
.lm-more summary{cursor:pointer;color:var(--blue);font-weight:700;min-height:40px;display:flex;align-items:center}
.lm-more .lm-must{margin-top:8px}
.lm-part{margin-top:20px}
.lm-part h2,.lm-finish h2,.lm-night h3{font:800 17px 'Plus Jakarta Sans',sans-serif;color:var(--navy);margin:0 0 8px}
.lm-part table{width:100%;border-collapse:collapse;font-size:14.5px;margin:0 0 12px}
.lm-part th,.lm-part td{text-align:left;padding:8px;border:1px solid var(--line);vertical-align:top}
.lm-part th{background:var(--sheet2)}
.lm-part ul,.lm-part ol{padding-left:20px;margin:0;display:grid;gap:6px}
.lm-part{overflow-x:auto}
.lm-full{margin:18px 0 0;font-size:14.5px}
.lm-finish h2{margin-top:22px}
.lm-night{margin-top:22px;padding:16px;border-radius:16px;background:color-mix(in srgb,var(--num) 7%,var(--sheet));border:1px solid color-mix(in srgb,var(--num) 40%,var(--line))}
.lm-night h3{margin-top:14px}
.lm-night>p{margin:0 0 6px;color:var(--muted);font-size:14.5px}
@media(max-width:760px){.lm-learn,.lm-finish{border-radius:18px;padding:16px}.lm-must li{font-size:15.5px}}
/* ---------- Video card (all chapters) ---------- */
:is(.article-text,.cs-body) .media-resource.video-resource{background:none;border:0;padding:0;margin:1.6em 0;overflow:visible;max-width:var(--measure)}
.video-card{display:flex;align-items:center;gap:14px;width:100%;padding:12px 16px 12px 12px;text-align:left;border:1px solid var(--line);border-radius:16px;background:var(--sheet2);color:var(--text);font:inherit;cursor:pointer;transition:border-color .15s,background-color .15s}
.video-card:hover{border-color:var(--blue);background:color-mix(in srgb,var(--blue) 4%,var(--sheet2))}
.video-card:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.vc-play{flex:none;position:relative;width:46px;height:46px;border-radius:50%;background:var(--navy)}
.vc-play::after{content:'';position:absolute;left:18px;top:14px;border-style:solid;border-width:9px 0 9px 14px;border-color:transparent transparent transparent #fff}
[data-theme="dark"] .vc-play{background:#2c4f8f}
.vc-text{display:grid;gap:2px;min-width:0}
.vc-title{font:700 15.5px/1.35 'DM Sans',sans-serif;color:var(--navy)}
.vc-meta{font-size:13px;color:var(--muted)}
.vc-desc{font-size:14px;line-height:1.5;color:var(--text);opacity:.85;margin-top:2px}
.video-resource.is-playing .video-card{border-radius:16px 16px 0 0;border-bottom-color:transparent}
:is(.article-text,.cs-body) .video-resource .media-stage:not(:empty){aspect-ratio:auto;margin:0;display:block;background:#05080f;border:1px solid var(--line);border-top:0;border-radius:0 0 16px 16px;overflow:hidden}
:is(.article-text,.cs-body) .video-resource .media-stage iframe{display:block;width:100%;aspect-ratio:16/9;height:auto;min-height:0;border:0}
.vc-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;background:var(--sheet2)}
.vc-credit{margin:0;font-size:12.5px;line-height:1.5;color:var(--muted)}
.vc-credit a,.vv-credit a{color:var(--blue);font-weight:600}
.vc-close{flex:none;min-height:38px;padding:0 14px;border-radius:10px;border:1px solid var(--line);background:var(--sheet);color:var(--text);font:700 13.5px 'DM Sans',sans-serif;cursor:pointer}
.vv-foot{position:absolute;left:0;right:0;bottom:calc(14px + env(safe-area-inset-bottom));text-align:center;padding:0 16px}
.vv-foot .vv-hint{position:static;margin:0 0 6px}
.vv-credit{margin:0;font-size:12px;color:rgba(255,255,255,.55)}
.vv-credit a{color:#8fb2ff}
@media(orientation:landscape){.vv-foot{display:none}}
@media(max-width:760px){.vc-desc{display:none}.video-card{padding:10px 12px 10px 10px}.vc-play{width:42px;height:42px}.vc-play::after{left:16px;top:12px}}
/* Other media: labels in sentence case */
.article-text .media-resource .media-eyebrow{letter-spacing:0;font-size:12.5px;font-weight:700;color:var(--muted)}
/* Readability floor: no student-facing text below 12px (credits, captions, labels, widget notes) */
:is(.article-text,.cs-body) :is(figcaption,figcaption strong,figcaption em,.figure-credit,.figure-credit a,.figure-credit em,.figure-attribution summary,.equation-label,.media-credit,.media-credit a,.learning-figure>p,small){font-size:12.5px}
:is(.article-text,.cs-body) :is(.lymph-flow,.ecg-concept-line,.pulse-mechanism,.vr-flow,.micro-path) span{font-size:12px}
:is(.article-text,.cs-body) .media-resource+.media-resource{margin-top:10px}
:is(.article-text,.cs-body) .teaching-illustration figcaption .figure-credit,:is(.article-text,.cs-body) figure figcaption .figure-attribution summary,:is(.article-text,.cs-body) .media-resource .media-credit{font-size:12.5px}
:is(.article-text,.cs-body) :is(.co-impact-strip,.fick-process,.bp-height-rules) strong{font-size:12px}
.group-label,.lecture-file,.lecture-page-ref,.lecture-stats span,.done-tag{font-size:12px}
:is(.article-text,.cs-body) figure figcaption details.figure-attribution span.figure-credit,:is(.article-text,.cs-body) figure figcaption details.figure-attribution span.figure-credit a{font-size:12.5px}

/* Audio and animation: tidy card; technical links and notes stay out of the way */
:is(.article-text,.cs-body) .media-resource:not(.video-resource) .media-outlink{display:none}
:is(.article-text,.cs-body) .media-resource:not(.video-resource){max-width:var(--measure);padding:16px 18px;border-radius:16px}
:is(.article-text,.cs-body) .media-resource:not(.video-resource) h3{font:700 16px/1.35 'DM Sans',sans-serif;color:var(--navy);margin:2px 0 4px}
:is(.article-text,.cs-body) .media-resource:not(.video-resource)>p:not(.media-credit){font-size:15px;line-height:1.55;margin:0 0 12px}
:is(.article-text,.cs-body) .media-resource .media-play{display:inline-flex;align-items:center;gap:8px;min-height:42px;padding:0 16px;border-radius:999px;font:700 14px 'DM Sans',sans-serif}
:is(.article-text,.cs-body) .media-resource .media-play::before{content:'';border-style:solid;border-width:6px 0 6px 10px;border-color:transparent transparent transparent currentColor}
:is(.article-text,.cs-body) .media-resource.is-playing .media-play::before{border-width:0;width:10px;height:10px;background:currentColor;border-radius:2px}
[data-theme="dark"] :is(.article-text,.cs-body) .media-play{background:#2c4f8f;border-color:#2c4f8f;color:#fff}
/* ---------- ECG original diagrams ---------- */
:is(.article-text,.cs-body) .ecg-svg-figure{max-width:var(--measure);margin:1.6em 0;padding:16px 16px 12px;border:1px solid var(--line);border-radius:18px;background:var(--sheet2)}
:is(.article-text,.cs-body) .ecg-svg-figure>figcaption{font:700 15.5px/1.35 'DM Sans',sans-serif;color:var(--navy);margin:0 0 10px}
.ecg-svg-figure svg{display:block;width:100%;height:auto;overflow:visible}
.ecg-panels{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:560px){.ecg-panels{grid-template-columns:1fr;gap:6px}.ecg-panels svg{max-width:330px;margin:0 auto}}
:is(.article-text,.cs-body) .ecg-svg-figure .ef-note{margin:10px 0 0;font-size:13.5px;line-height:1.55;color:var(--muted)}
.ecg-svg-figure text{font-family:'DM Sans',sans-serif}
.ef-trace{fill:none;stroke:var(--muted);stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round;opacity:.7}
.ef-wave path{fill:none;stroke:var(--navy);stroke-width:4.5;stroke-linejoin:round;stroke-linecap:round}
.ef-seg path{stroke:var(--num);stroke-width:7;stroke-linecap:round}
.ef-key-wave{fill:var(--navy)}.ef-key-seg{fill:var(--num)}
.ef-legend text{font-size:13px;fill:var(--muted);font-weight:600}
.ef-bracket,.ef-bracket path{fill:none;stroke:var(--blue);stroke-width:2}
.ef-wavelabel text{font-size:17px;font-weight:800;fill:var(--navy)}
.ef-seglabel text{font-size:13.5px;font-weight:700;fill:var(--num)}
.ef-ilabel text{font-size:14px;font-weight:700;fill:var(--text)}
.ef-val{font-weight:500;fill:var(--muted)}
.ef-body circle,.ef-body path{fill:color-mix(in srgb,var(--navy) 6%,var(--sheet));stroke:var(--line);stroke-width:1.5}
.ef-lead path{fill:none;stroke:var(--navy);stroke-width:3}
.ef-head{fill:var(--navy)}
.ef-aug path{fill:none;stroke:var(--num);stroke-width:2.2;stroke-dasharray:5 4}
.ef-head2{fill:var(--num)}
.ef-electrode circle{fill:var(--sheet);stroke:var(--navy);stroke-width:2.5}
.ef-elabel text{font-size:11.5px;font-weight:800;fill:var(--navy)}
.ef-leadlabel text{font-size:18px;font-weight:800;fill:var(--navy)}
.ef-auglabel text{font-size:14px;font-weight:700;fill:var(--num)}
.ef-cap{font-size:13.5px;font-weight:700;fill:var(--muted)}
.ef-torso{fill:color-mix(in srgb,var(--navy) 5%,var(--sheet));stroke:var(--line);stroke-width:1.5}
.ef-sternum{fill:color-mix(in srgb,var(--navy) 10%,var(--sheet));stroke:var(--line)}
.ef-guide path{stroke:var(--muted);stroke-width:1.2;stroke-dasharray:4 4;opacity:.7}
.ef-guidelabel text{font-size:12.5px;font-weight:700;fill:var(--muted)}
.ef-vlabel text{font-size:15px;font-weight:800;fill:var(--navy)}
.ef-paper{fill:color-mix(in srgb,#e8505b 6%,var(--sheet))}
.ef-minor{stroke:color-mix(in srgb,#e8505b 22%,var(--sheet));stroke-width:.8}
.ef-major{stroke:color-mix(in srgb,#e8505b 55%,var(--sheet));stroke-width:1.6}
.ef-hi{fill:var(--num);opacity:.85}
.ef-cal{stroke:var(--navy);stroke-width:3;opacity:1}
#ecg-paper .ef-ilabel text{paint-order:stroke;stroke:var(--sheet2);stroke-width:5px;stroke-linejoin:round}
.lv-heart{fill:color-mix(in srgb,#d0505b 16%,var(--sheet));stroke:color-mix(in srgb,#b03a46 55%,var(--muted));stroke-width:2}
.lv-side{font:700 19px 'DM Sans',sans-serif;fill:var(--muted)}
.lv-hint{font:600 19px 'DM Sans',sans-serif;fill:var(--muted)}
.lv-stage text.tw-small{font-size:21px}
.lv-stage text.tw-tiny{font-size:18px}

/* Diagram enlarge button, phone-first diagrams (dg-*), phone type sizes. */
.learning-figure{position:relative}.figure-enlarge{position:absolute;top:14px;right:12px;z-index:1;min-height:32px;padding:4px 11px;border:1px solid var(--line);border-radius:999px;background:var(--sheet);color:var(--navy);font:700 12px/1 'DM Sans',sans-serif;cursor:zoom-in}.figure-enlarge:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.learning-figure:has(>.figure-enlarge)>figcaption{padding-right:92px}.figure-viewer-stage{overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(94dvh - 110px);background:var(--sheet2);border-radius:12px;padding:10px}.figure-viewer-stage svg{display:block;margin:0 auto}@media(max-width:660px){:is(.article-text,.cs-body) .learning-figure{margin-left:-14px;margin-right:-14px;padding:16px 10px 12px;border-radius:14px}:is(.article-text,.cs-body) .learning-figure svg{max-height:min(78vh,620px)!important}}:is(.article-text,.cs-body) .dg-figure svg{max-width:440px;max-height:none!important;margin:0 auto}.dg-figure text{fill:var(--text);font-family:'DM Sans',sans-serif;font-size:15px}.dg-t{font-size:14.5px}.dg-b{font-size:15px;font-weight:800}.dg-h{font-size:16px;font-weight:800;fill:var(--navy)}.dg-s{font-size:13.5px;fill:var(--muted)}.dg-tb{font-size:14px;font-weight:800;fill:var(--w-lv)}.dg-tg{font-size:14px;font-weight:800;fill:var(--w-vol)}.dg-tgold{font-size:14px;font-weight:800;fill:var(--w-la)}.dg-num{font-size:15px;font-weight:800;fill:var(--navy)}.dg-numw{font-size:13.5px;font-weight:800;fill:var(--sheet)}.dg-numdot{fill:var(--navy)}.dg-letter{font-size:19px;font-weight:800;fill:var(--w-lv)}.dg-axis{fill:none;stroke:var(--text);stroke-width:1.5}.dg-guide{fill:none;stroke:var(--muted);stroke-width:1.2;stroke-dasharray:5 5}.dg-line,.dg-tree{fill:none;stroke:var(--muted);stroke-width:2}.dg-tree{stroke-width:1.8}.dg-head{fill:var(--muted)}.dg-head-blue{fill:var(--w-lv)}.dg-head-red{fill:var(--w-ao)}.dg-head-gold{fill:var(--w-la)}.dg-flow{fill:none;stroke:var(--w-lv);stroke-width:3}.dg-loop{fill:none;stroke:var(--w-lv);stroke-width:3}.dg-push{fill:none;stroke:var(--muted);stroke-width:2}.dg-push-gold{fill:none;stroke:var(--w-la);stroke-width:3.5}.dg-curve-blue{fill:none;stroke:var(--w-lv);stroke-width:3.5;stroke-linecap:round}.dg-curve-green{fill:none;stroke:var(--w-vol);stroke-width:3.5;stroke-linecap:round}.dg-curve-gold{fill:none;stroke:var(--w-la);stroke-width:3.5;stroke-linecap:round}.dg-curve-red{fill:none;stroke:var(--w-ao);stroke-width:3.5;stroke-linecap:round}.dg-dot{fill:var(--text)}.dg-blue{fill:color-mix(in srgb,var(--w-lv) 14%,var(--sheet));stroke:var(--w-lv);stroke-width:1.5}.dg-blue-soft{fill:color-mix(in srgb,var(--w-lv) 8%,var(--sheet));stroke:color-mix(in srgb,var(--w-lv) 55%,var(--sheet));stroke-width:1.5}.dg-red{fill:color-mix(in srgb,var(--w-ao) 16%,var(--sheet));stroke:var(--w-ao);stroke-width:1.5}.dg-red-soft{fill:color-mix(in srgb,var(--w-ao) 8%,var(--sheet));stroke:color-mix(in srgb,var(--w-ao) 60%,var(--sheet));stroke-width:1.5}.dg-green{fill:color-mix(in srgb,var(--w-vol) 16%,var(--sheet));stroke:var(--w-vol);stroke-width:1.5}.dg-green-soft{fill:color-mix(in srgb,var(--w-vol) 8%,var(--sheet));stroke:color-mix(in srgb,var(--w-vol) 60%,var(--sheet));stroke-width:1.5}.dg-ghost{fill:none;stroke:var(--muted);stroke-width:1.2;stroke-dasharray:5 4}.dg-band-red{fill:color-mix(in srgb,var(--w-ao) 9%,transparent)}.dg-band-blue{fill:color-mix(in srgb,var(--w-lv) 9%,transparent)}.dg-valve-open{fill:none;stroke:var(--w-vol);stroke-width:4;stroke-linecap:round}.dg-valve-shut{fill:none;stroke:var(--w-ao);stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.dg-zone1{fill:color-mix(in srgb,var(--w-lv) 6%,var(--sheet))}.dg-zone2{fill:color-mix(in srgb,var(--w-lv) 22%,var(--sheet))}.dg-zone3{fill:color-mix(in srgb,var(--w-lv) 42%,var(--sheet))}.dg-outline{fill:none;stroke:var(--w-lv);stroke-width:2}.dg-skin{fill:color-mix(in srgb,var(--w-la) 14%,var(--sheet));stroke:color-mix(in srgb,var(--w-la) 55%,var(--sheet));stroke-width:1.5}.dg-flare{fill:color-mix(in srgb,var(--w-ao) 30%,var(--sheet))}.dg-wheal{fill:color-mix(in srgb,var(--w-ao) 22%,var(--sheet));stroke:var(--w-ao);stroke-width:1.5}.dg-redline{fill:none;stroke:var(--w-ao);stroke-width:4;stroke-linecap:round}.dg-muscle{fill:color-mix(in srgb,var(--w-ao) 12%,var(--sheet));stroke:var(--w-ao);stroke-width:1.5}.dg-vein{fill:color-mix(in srgb,var(--w-lv) 16%,var(--sheet));stroke:var(--w-lv);stroke-width:1.5}@media(max-width:660px){.gravity-column-figure .gv-lab,.shock-cycle-figure .sh-lab,.baroreflex-figure .bx-lab{font-size:15.5px}.gravity-column-figure .gv-sub,.shock-cycle-figure .sh-sub,.baroreflex-figure .bx-sub{font-size:14.5px}.lymph-duct-figure .ly-lab{font-size:16px}.lymph-duct-figure .ly-lab-sm{font-size:14.5px}.lymph-duct-figure .ly-lab-xs{font-size:14.5px}.axon-reflex-figure .ax-lab{font-size:16px}.axon-reflex-figure .ax-lab-sm{font-size:15px}.axon-reflex-figure .ax-lab-xs{font-size:14.5px}.axon-reflex-figure .ax-step-num{font-size:14.5px}}.tw-svg .mp-label{paint-order:stroke;stroke:var(--sheet);stroke-width:4px;stroke-linejoin:round}
