/* Shared course identity. Geometry and surface roles live in their own sheets. */
:root {
  --navy:#002676;
  --gold:#fdb515;
  --ink:#182b43;
  --muted:#536377;
  --line:#dce1e7;
  --paper:#fff;
  --soft:#f0f4f8;
  --red:#a63138;
  --green:#176b60;
  --course-font:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
}

:root{--paper-width:793.7px;--paper-height:1122.5px;font-family:var(--course-font);color:var(--ink);background:#e9ebee}*{box-sizing:border-box}body{margin:0}a{color:var(--navy);text-underline-offset:.22em}button,select{font:inherit;color:var(--navy);background:white;border:1px solid var(--line);border-radius:5px;padding:7px 10px;cursor:pointer}button:hover{background:#f1f4f8}a:focus-visible,button:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--gold);outline-offset:3px}::selection{background:#fdb51560}.skip{position:absolute;top:-60px}.skip:focus{top:10px;z-index:20;background:white;padding:10px}.reader-top{position:sticky;top:0;z-index:10;min-height:64px;display:flex;justify-content:space-between;align-items:center;gap:18px;padding:12px 24px;background:#fff;border-bottom:1px solid var(--line);font-size:15px}.reader-top>a{text-decoration:none;font-weight:600}.reader-controls{display:flex;align-items:center;gap:12px}.reader-controls label{display:flex;align-items:center;gap:6px}.reader-layout{display:grid;grid-template-columns:220px minmax(0,1fr) 190px;gap:24px;padding:24px;align-items:start}.reader-toc,.reader-related{position:sticky;top:90px;font-size:15px;line-height:1.65;max-height:calc(100dvh - 110px);overflow:auto;scrollbar-width:thin;scrollbar-color:#b2bbc7 transparent}.reader-toc nav{margin-top:25px}.reader-toc a{display:flex;gap:6px;justify-content:space-between;text-decoration:none;padding:7px 0}.reader-toc nav h2,.reader-related h2{font-size:15px;color:var(--muted);font-weight:500;margin:22px 0 9px}.reader-related a{display:block;margin:0 0 15px}.reader-related p{color:var(--muted);font-size:14px}.reader-toc a:hover{text-decoration:underline}.reader-toc [data-folio-for]{color:var(--muted);font-variant-numeric:tabular-nums}.reader-layout.toc-closed{grid-template-columns:minmax(0,1fr) 190px}.toc-closed .reader-toc{display:none}#reading-area{min-width:0;overflow-x:auto;padding-bottom:30px}#reader-source{background:#fff;padding:50px 64px;max-width:900px;margin:auto;line-height:1.8;font-size:18px}#reader-source h1{font-size:32px;color:var(--navy)}#reader-source h2{color:var(--navy);font-size:23px}#reader-source img,#reader-source svg{max-width:100%;height:auto}.sheet-frame{position:relative;margin:0 auto 24px;flex:none}.paper{position:absolute;left:0;top:0;width:var(--paper-width);height:var(--paper-height);transform-origin:top left;background:#fff;box-shadow:0 5px 18px #152f4810;padding:90.7px 83.15px 0}.paper-body{height:926px;display:flow-root;font-size:11pt;line-height:1.8}.paper-heading{position:absolute;top:38px;left:83.15px;right:83.15px;display:flex;justify-content:space-between;font-size:10pt;color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:10px}.paper-footer{position:absolute;bottom:41px;left:83.15px;right:83.15px;display:flex;justify-content:space-between;font-size:9pt;color:var(--muted)}.paper-footer a{color:var(--muted);text-decoration:none}.typeset-block{display:flow-root;position:relative;margin:0;padding:0 0 4mm;scroll-margin-top:90px}.typeset-block h1{font-size:22pt;line-height:1.4;color:var(--navy);margin:0 0 7mm;font-weight:700}.typeset-block h2{font-size:14pt;line-height:1.6;color:var(--navy);margin:4mm 0 2mm;font-weight:650}.typeset-block h3{font-size:12pt;line-height:1.6;margin:3mm 0 2mm}.typeset-block p{margin:0 0 2mm}.typeset-block p:last-child,.typeset-block p:has(+.block-actions){margin-bottom:0}.typeset-block strong{font-weight:650}.typeset-block blockquote{padding:0 5mm;border-left:1px solid var(--line);margin:0}.typeset-block ul,.typeset-block ol{padding-left:6mm;margin:0}.typeset-block pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#f3f5f8;padding:10px;font-size:10pt}.typeset-block code{font-size:.95em}.typeset-block img{max-width:100%;height:auto;display:block}.typeset-block svg{display:block;width:100%;height:auto;max-height:420px}.typeset-block figure{margin:0}.typeset-block figcaption{font-size:9pt;line-height:1.6;color:var(--muted);padding:3mm 0 0}.note-figure{margin:0;padding-bottom:5mm}.typeset-block .list-item{padding-left:4mm}.typeset-block .list-item:before{content:'·';position:absolute;left:0}.guide-lead{font-size:12pt!important}.guide-choices{display:flex;gap:8mm;margin-top:6mm!important}.provenance,.unit-source{font-size:9pt;color:var(--muted)}.provenance{border-top:1px solid var(--line);padding-top:5mm;margin-top:6mm!important}.topic-anchor{scroll-margin-top:110px}.block-actions{position:absolute;right:-16mm;top:0;display:flex;gap:2px;opacity:0;transition:opacity .48s;pointer-events:none}.block-actions a,.block-actions button{width:25px;height:28px;padding:2px;border:0;background:white;color:#526b8b;display:grid;place-items:center}.block-actions svg{width:17px;height:17px}.typeset-block[data-link-state=visible]>.block-actions,.block-actions:focus-within{opacity:1;pointer-events:auto;transition:opacity .16s}.typeset-block.target-flash{background:#fff4d8;transition:background .25s}#reader-feedback{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);color:white;background:var(--navy);border-radius:6px;padding:10px 18px;font-size:15px;z-index:20}#reader-feedback:empty{display:none}.measurement{position:absolute;left:-100000px;top:0;width:627.4px;font-size:11pt;line-height:1.8;visibility:hidden;pointer-events:none}.measurement .block-actions{display:none}.reader-layout .reader-related{border-top:1px solid var(--line)}
@media(max-width:1150px){.reader-layout{grid-template-columns:180px minmax(0,1fr);gap:18px;padding:20px}.reader-related{position:static;grid-column:2;max-height:none;display:flex;flex-wrap:wrap;gap:15px}.reader-related h2,.reader-related p{width:100%;margin:5px 0}.reader-layout.toc-closed{grid-template-columns:minmax(0,1fr)}.toc-closed .reader-related{grid-column:1}}
@media(max-width:700px){.reader-top{padding:10px 12px;flex-wrap:wrap;gap:6px;font-size:14px}.reader-top>a{width:100%}.reader-controls{gap:7px;width:100%;flex-wrap:wrap}.reader-controls label{font-size:14px}.reader-layout,.reader-layout.toc-closed{display:block;padding:12px}.reader-toc{position:static;max-height:250px;overflow:auto;margin-bottom:16px}.reader-toc nav{margin-top:8px}.reader-toc a{padding:5px 0}.reader-related{margin:20px 4px;display:block;font-size:16px}.reader-related a{display:inline-block;margin:8px 14px 8px 0}.reader-related p{font-size:15px}#reader-source{padding:24px 20px;font-size:18px}.sheet-frame{margin-bottom:16px}}
@media(pointer:coarse){.block-actions{right:-16mm}.typeset-block:focus-within>.block-actions,.typeset-block[data-touch-selected=true]>.block-actions{opacity:1;pointer-events:auto}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
@media print{@page{size:A4;margin:0}html,body{background:#fff}.reader-top,.reader-toc,.reader-related,#reader-feedback,.skip,.block-actions,.measurement{display:none!important}.reader-layout{display:block!important;padding:0!important}#reading-area{overflow:visible;padding:0}.sheet-frame{width:210mm!important;height:297mm!important;margin:0!important;break-after:page}.sheet-frame:last-child{break-after:auto}.paper{position:relative;width:210mm;height:297mm;box-shadow:none;transform:none!important}.paper-heading{font-size:10pt}.paper-body{height:245mm}.paper-footer{bottom:11mm}.target-flash{background:transparent!important}a{color:inherit;text-decoration:none}#reader-source{max-width:none;padding:22mm;font-size:11pt}}

.reader.continuous .sheet-frame{position:relative;width:100%!important;height:auto!important;max-width:900px}.reader.continuous .paper{position:relative;width:100%;height:auto;min-height:0;padding:75px 32px 80px;transform:none!important}.reader.continuous .paper-body{height:auto;font-size:17px;line-height:1.85}.reader.continuous .paper-heading,.reader.continuous .paper-footer{left:32px;right:32px}.reader.continuous .paper-footer{bottom:28px}.reader.continuous .typeset-block h1{font-size:28px}.reader.continuous .typeset-block h2{font-size:21px}.reader.continuous .typeset-block h3{font-size:19px}.reader.continuous .block-actions{right:-52px}.reader.continuous .guide-choices{flex-wrap:wrap}
@media print{.reader.continuous .sheet-frame{width:210mm!important;height:297mm!important}.reader.continuous .paper{width:210mm;height:297mm;padding:90.7px 83.15px 0}.reader.continuous .paper-body{height:926px;font-size:11pt;line-height:1.8}.reader.continuous .paper-heading,.reader.continuous .paper-footer{left:83.15px;right:83.15px}.reader.continuous .paper-footer{bottom:41px}.reader.continuous .typeset-block h1{font-size:22pt}.reader.continuous .typeset-block h2{font-size:14pt}.reader.continuous .typeset-block h3{font-size:12pt}}

/* Controls live in the right paper margin, outside the measured body. */
.typeset-block{scroll-margin-top:calc(var(--reader-header-height,64px) + 24px)}
/* Long equations scroll within their own block; the paper keeps its measure. */
.typeset-block .katex-display,.measurement .katex-display{max-width:100%;overflow-x:auto;overflow-y:hidden;padding:.2em 0;scrollbar-width:thin;scrollbar-color:#8292a7 #eef1f5}
.typeset-block .katex-display>.katex,.measurement .katex-display>.katex{display:inline-block;min-width:100%}
.katex-display:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
@media print{.typeset-block .katex-display{overflow:visible}}
.typeset-block:focus-within>.block-actions,.typeset-block[data-touch-selected=true]>.block-actions{opacity:1;pointer-events:auto}
.block-actions{z-index:2}.block-actions a,.block-actions button{border-radius:4px}.block-actions a:hover,.block-actions button:hover{background:#eef3fa;color:var(--navy)}
.typeset-block table{border-collapse:collapse;width:100%;font-size:inherit;line-height:1.6;overflow-wrap:anywhere}
.typeset-block th,.typeset-block td{padding:7px 9px;border-bottom:1px solid var(--line);text-align:left}
.typeset-block th{background:#f2f5f9;font-weight:600}.typeset-block details{border-top:1px solid var(--line);padding-top:8px;min-width:0}.typeset-block summary{cursor:pointer;color:var(--navy)}
.typeset-block details pre{max-width:100%;white-space:pre;overflow:auto;overflow-wrap:normal;tab-size:4;line-height:1.6}.typeset-block details[open] summary{margin-bottom:12px}
.reader.continuous .paper{padding-left:52px;padding-right:70px}.reader.continuous .paper-heading,.reader.continuous .paper-footer{left:52px;right:70px}
.typeset-block figure img{max-height:680px;object-fit:contain;margin:auto}.typeset-block figcaption{font-size:10pt}
/* Tall Markdown montages fit a printed sheet; continuous reading keeps full width. */
.typeset-block>p>img{max-height:860px;object-fit:contain;width:auto;margin:auto}
.reader.continuous .typeset-block>p>img{max-height:none;width:100%}
.typeset-block span[id]:empty{scroll-margin-top:110px}
.course-nav{border-bottom:1px solid var(--line);padding-bottom:10px}.reader-toc .course-nav{margin-top:10px}
#reader-feedback{max-width:calc(100vw - 24px)}#reader-feedback:has(input){display:flex;flex-wrap:wrap;align-items:center;gap:8px}#reader-feedback:has(input)>span{flex-basis:100%}#reader-feedback input{width:min(600px,70vw);min-width:0;font-size:16px;padding:8px;color:var(--ink);background:white;border:1px solid var(--line);border-radius:3px}#reader-feedback button{flex:none}
@media(any-pointer:coarse){.block-actions{right:-50px;flex-direction:column;gap:3px}.reader.continuous .block-actions{right:-50px}.block-actions a,.block-actions button{width:44px;height:44px}.block-actions svg{width:20px;height:20px}}
@media(max-width:700px){.reader.continuous .paper{padding:66px 48px 65px 20px}.reader.continuous .paper-heading,.reader.continuous .paper-footer{left:20px;right:20px}.reader.continuous .block-actions{right:-40px;flex-direction:column}.block-actions a,.block-actions button{width:34px;height:34px}.typeset-block[data-touch-selected=true]>.block-actions{opacity:1;pointer-events:auto}}
@media print{.reader.continuous .paper{padding:90.7px 83.15px 0}.reader.continuous .paper-heading,.reader.continuous .paper-footer{left:83.15px;right:83.15px}.typeset-block details:not([open]){display:none}}
@media(max-width:700px) and (any-pointer:coarse){.reader.continuous .paper{padding-right:54px}.reader.continuous .block-actions{right:-48px}.block-actions a,.block-actions button{width:44px;height:44px}}
/* Guide figures keep their explanation and comparison in one citeable unit. */
.condition-pair{display:grid;grid-template-columns:1fr 1fr;gap:5mm;align-items:start}
.typeset-block .condition-pair img{width:100%;height:auto;aspect-ratio:3/2;object-fit:contain}
.typeset-block .condition-pair p{margin:3mm 0 0;font-size:10pt;line-height:1.6}
.generation-route{display:grid;grid-template-columns:25mm minmax(0,1fr);column-gap:4mm;padding:4mm 0;border-bottom:1px solid var(--line);break-inside:avoid}
.generation-route:first-child{padding-top:0}
.route-name{color:var(--navy)}
.typeset-block .generation-steps{display:flex;align-items:center;gap:0;list-style:none;margin:0;padding:0;font-weight:600;line-height:1.6}
.generation-steps li{display:flex;align-items:center;flex:1;min-width:0}
.generation-steps li:not(:last-child)::after{content:'→';flex:none;margin:0 3mm;color:var(--navy);font-weight:400}
.generation-steps li:last-child{border-bottom:2px solid var(--gold);padding-bottom:1mm}
.typeset-block .route-reading{grid-column:2;margin:2mm 0 0;font-size:10pt;line-height:1.65;color:var(--muted)}
@media(max-width:700px){
 .reader.continuous .condition-pair{grid-template-columns:1fr;gap:5mm}
 .reader.continuous .condition-pair p,.reader.continuous .route-reading{font-size:15px}
 .reader.continuous .generation-route{grid-template-columns:1fr;gap:2mm}
 .reader.continuous .route-reading{grid-column:1}
 .reader.continuous .generation-steps{font-size:15px}
 .reader.continuous .generation-steps li:not(:last-child)::after{margin:0 2mm}
}
/* Open code and oversized semantic blocks cannot fit the measured fixed sheets.
   Let the print engine split them instead of overlapping later page content. */
@page reader-flow{size:A4;margin:18mm 17mm}
@media print{
 .reader[data-print-flow=true]{page:reader-flow}
 .reader[data-print-flow=true] .sheet-frame{width:100%!important;height:auto!important;max-width:none!important;margin:0!important;break-after:auto!important}
 .reader[data-print-flow=true] .paper{position:static!important;width:100%!important;height:auto!important;min-height:0!important;padding:0!important;transform:none!important}
 .reader[data-print-flow=true] .paper-body{height:auto!important;font-size:11pt!important;line-height:1.8!important}
 .reader[data-print-flow=true] .paper-heading,.reader[data-print-flow=true] .paper-footer{display:none!important}
 .reader[data-print-flow=true] .typeset-block{break-inside:auto;orphans:3;widows:3}
 .reader[data-print-flow=true] .typeset-block h1,.reader[data-print-flow=true] .typeset-block h2,.reader[data-print-flow=true] .typeset-block h3{break-after:avoid}
 .reader[data-print-flow=true] .typeset-block figure{break-inside:avoid}
 .reader[data-print-flow=true] .typeset-block details pre{white-space:pre-wrap;overflow:visible;overflow-wrap:anywhere;max-height:none}
 .reader[data-print-flow=true] .typeset-block thead{display:table-header-group}
}

/* A Guide subtopic contains its figure and next step at the normal type size. */
.reader[data-reader-kind="guide"]:not(.continuous) .typeset-block>p>img{max-height:510px}
body[data-reader-kind="guide"] .measurement .typeset-block>p>img{max-height:510px}
@media print{.reader[data-reader-kind="guide"] .typeset-block>p>img{max-height:510px!important}}

/* This tall two-column comparison leaves room for its reading paragraph. */
.typeset-block[data-block-id="ch06-prompts"]>p>img{max-height:760px}
@media print{.typeset-block[data-block-id="ch06-prompts"]>p>img{max-height:760px!important}}


/* A quiet Lecture03-style rail surrounds the default A4 100% sheets.
   Continuous reading is an explicit view using naturally flowing prose. */
@media screen {
 .reader-top{min-height:64px;padding:8px 24px;gap:16px;font-size:15px}
 .reader-top>a{min-width:0;line-height:1.5}.reader-controls{flex-wrap:wrap;gap:8px}
 .reader-controls button,.reader-controls select,
 .reader-controls label{gap:8px;white-space:nowrap}.reader-controls button{padding:8px 10px}
 #scale-label:empty{display:none}#scale-label{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
 .reader-layout{max-width:1260px;margin:auto;grid-template-columns:220px minmax(0,1fr);gap:28px;padding:28px 24px 64px}
 .reader-layout.toc-closed{grid-template-columns:minmax(0,1fr)}
 .reader-toc{top:calc(var(--reader-header-height,64px) + 24px);max-height:calc(100dvh - var(--reader-header-height,64px) - 48px);font-size:15px;line-height:1.7}
 .reader-toc a{min-height:44px;align-items:baseline;padding:8px 0;gap:12px}.reader-toc nav{margin-top:24px}
 .reader-related{position:static;grid-column:2;max-height:none;display:flex;flex-wrap:wrap;gap:8px 24px;border-top:1px solid var(--line);padding-top:20px;font-size:15px}
 .reader-related h2,.reader-related p{width:100%;margin:0}.reader-related a{margin:0;min-height:44px;padding:8px 0}.toc-closed .reader-related{grid-column:1}
 #reader-source{max-width:840px;padding:12px 40px 24px;overflow-wrap:break-word;font-size:18px;line-height:1.85}
 #reader-source h1{font-size:36px;line-height:1.4;margin:0 0 24px}
 #reader-source h2{font-size:26px;line-height:1.5;margin:36px 0 14px}
 .reader.continuous{background:white}
 .reader.continuous #reading-area{overflow:visible;padding-bottom:0}
 .reader.continuous .sheet-frame{max-width:840px;margin:0 auto}
 .reader.continuous .paper{position:relative;height:auto;min-height:0;padding:0 40px 0 40px;box-shadow:none;background:white;transform:none!important}
 .reader.continuous .paper-body{height:auto;font-size:18px;line-height:1.85;overflow-wrap:break-word}
 .reader.continuous .paper-heading,.reader.continuous .paper-footer{display:none}
 .reader.continuous .typeset-block{padding:0 0 16px;scroll-margin-top:calc(var(--reader-header-height,64px) + 24px)}
 .reader.continuous .typeset-block h1{font-size:36px;line-height:1.4;margin:0 0 24px;font-weight:650;text-wrap:pretty}
 .reader.continuous .typeset-block h2{font-size:26px;line-height:1.5;margin:32px 0 12px;font-weight:650;text-wrap:pretty}
 .reader.continuous .typeset-block h3{font-size:22px;line-height:1.55;margin:24px 0 10px}
 .reader.continuous .typeset-block p{margin:0 0 12px}
 .reader.continuous .typeset-block pre{font-size:16px;line-height:1.65;padding:16px}
 .reader.continuous .typeset-block figcaption{font-size:15px;line-height:1.7;padding:10px 0 0}
 .reader.continuous .guide-lead{font-size:20px!important;line-height:1.75}
 .reader.continuous .provenance,.reader.continuous .unit-source{font-size:14px;line-height:1.75}
 .reader.continuous .condition-pair p,.reader.continuous .route-reading{font-size:16px;line-height:1.75}
 .reader.continuous .generation-route{grid-template-columns:104px minmax(0,1fr);gap:8px 20px;padding:20px 0}
 .reader.continuous .generation-steps{font-size:17px}
 .reader.continuous [data-folio-for]{display:none}
 .reader.continuous .block-actions{right:-40px;top:0;flex-direction:column;gap:0}
 .block-actions a,.block-actions button{width:36px;height:36px}
 .typeset-block a{overflow-wrap:anywhere}
}
@media screen and (max-width:1100px){
 .reader-top{flex-wrap:wrap;gap:4px 16px;padding:8px 20px}.reader-controls{margin-left:auto}
 .reader-layout,.reader-layout.toc-closed{display:grid;grid-template-columns:minmax(0,1fr);gap:24px;padding:24px 20px 48px}
 .reader-toc{position:static;grid-column:1;max-height:360px;padding:16px 20px;background:#f3f5f8;border-bottom:1px solid var(--line)}
 .reader-toc .course-nav{display:flex;flex-wrap:wrap;gap:4px 24px;margin-top:8px}.reader-toc nav{margin-top:16px}
 .reader-related{grid-column:1}.reader-layout.toc-closed .reader-toc{display:none}
}
@media screen and (max-width:700px){
 .reader-top{padding:6px 12px;gap:4px;font-size:14px}.reader-top>a{width:100%;min-height:28px}.reader-document-title{font-weight:400}
 .reader-controls{width:100%;margin:0;gap:4px;justify-content:space-between}.reader-controls label{font-size:14px;gap:4px}
 .reader-controls select{font-size:14px;padding:8px 6px;min-height:44px}
 #scale-label{display:none}.reader-layout,.reader-layout.toc-closed{padding:24px 12px 44px;gap:24px}
 #reader-source,.reader.continuous .paper{padding:0 44px 0 8px}
 .reader.continuous .paper-body{font-size:18px;line-height:1.85}
 #reader-source h1,.reader.continuous .typeset-block h1{font-size:28px;line-height:1.45;margin:0 0 20px}
 #reader-source h2,.reader.continuous .typeset-block h2{font-size:23px;margin:28px 0 10px}.reader.continuous .typeset-block h3{font-size:21px}
 .reader.continuous .guide-lead{font-size:19px!important}
 .reader.continuous .block-actions{right:-44px}.block-actions a,.block-actions button{width:44px;height:44px}
 .reader.continuous .condition-pair{grid-template-columns:1fr;gap:20px}
 .reader.continuous .generation-route{grid-template-columns:1fr;gap:8px;padding:20px 0}.reader.continuous .route-reading{grid-column:1}
 .reader.continuous .generation-steps{font-size:16px;flex-wrap:wrap}.reader.continuous .generation-steps li{flex:0 1 auto}
 .reader-toc{padding:12px 16px;font-size:16px}.reader-related{margin:0 8px;font-size:16px}.reader-related a{display:block;margin:0}
}
