@font-face{font-family:'JetBrains Mono';src:url('vendor/fonts/JetBrainsMono-Regular.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:'JetBrains Mono';src:url('vendor/fonts/JetBrainsMono-Bold.ttf') format('truetype');font-style:normal;font-weight:700;font-display:swap}
:root{--paper:#faf9f6;--ink:#242621;--muted:#6d7168;--accent:#527750;--line:#d9dcd2;--light:#eef0ea;--rust:#a75e42;--blue:#345b7b}
html,body{margin:0;background:var(--paper);color:var(--ink)}
.reveal{font-family:Arial,Helvetica,sans-serif;font-size:36px;color:var(--ink)}
.reveal .slides{text-align:left}
.reveal .slides section.slide{height:100%;padding:42px 32px 42px;box-sizing:border-box;flex-direction:column}
.reveal h1,.reveal h2,.reveal h3,.reveal p{margin:0;font-family:inherit;color:inherit}
.reveal h1{font-size:128px;font-weight:600;line-height:1.05;letter-spacing:-.055em}
.reveal h2{font-size:64px;font-weight:500;line-height:1.12;letter-spacing:-.035em;margin-bottom:38px}
.reveal h3{font-size:33px;line-height:1.2;font-weight:600;margin-bottom:18px}
.reveal p{font-size:34px;line-height:1.45}
.reveal strong{font-weight:700}
.reveal em{font-style:normal;color:var(--accent)}
.reveal a{color:var(--accent);text-underline-offset:5px}
.reveal .notes{display:none}
.reveal figure{margin:0}
.reveal .muted{color:var(--muted)}
.reveal .rust{color:var(--rust)}
.reveal .small{font-size:26px;line-height:1.5}
.reveal .lead{font-size:43px;line-height:1.35;max-width:1400px}
.reveal .remark{font-size:30px;line-height:1.45;margin-top:30px}
.reveal .bottom{margin-top:auto;padding-top:22px}
.reveal .source{margin-top:auto;padding-top:20px;font-size:22px;line-height:1.4;color:var(--muted)}
.reveal .source a{color:inherit}
.reveal .opening{justify-content:center}
.reveal .opening-subtitle{font-size:60px;line-height:1.15;letter-spacing:-.025em;margin-top:25px}
.reveal .opening-route{font-size:31px;color:var(--accent);margin-top:80px}
.reveal .slides section.section-divider{color:white;padding-top:65px}
.section-number{font-size:150px;line-height:1;letter-spacing:-.06em;color:#cfddc9;margin-bottom:30px}
.reveal .section-divider h2{font-size:104px;line-height:1.08;margin-bottom:30px;max-width:1300px}
.section-break .reveal .controls{color:white}
.section-break .reveal .slide-number{color:#e7eee4}
.reveal code,.reveal pre,.reveal .mono,.speaker-notes code{font-family:'JetBrains Mono',monospace;font-variant-ligatures:none;font-feature-settings:'liga' 0,'calt' 0}
.reveal :not(pre)>code{font-size:.9em;color:var(--accent)}
.reveal pre{font-size:31px;line-height:1.5;font-weight:400;white-space:pre;margin:0;width:100%;box-shadow:none;background:transparent;tab-size:4}
.reveal pre code{display:block;overflow:visible;max-height:none;padding:0;background:none;color:var(--ink);white-space:pre}
.reveal pre.large{font-size:36px;line-height:1.55}
.reveal pre.compact{font-size:28px;line-height:1.45}
.reveal .code-caption{font-size:23px;color:var(--muted);margin:0 0 20px}
.kw{color:#7353a1}.str{color:#527750}.fn{color:#345b7b}.comment{color:#777c72}.num{color:#a75e42}
.reveal .split{display:grid;grid-template-columns:1.3fr 1fr;gap:70px;align-items:start}
.reveal .split.equal{grid-template-columns:1fr 1fr}
.reveal .split.wide-code{grid-template-columns:1.75fr 1fr;gap:50px}
.reveal .split>div{min-width:0}
.reveal .side-note{border-left:2px solid var(--line);padding-left:34px}
.reveal .side-note p{font-size:30px;margin-bottom:25px}
.reveal ul.list,.reveal ol.steps{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:22px;font-size:34px;line-height:1.4}
.reveal ul.list>li{padding-left:32px;position:relative}
.reveal ul.list>li::before{content:'–';position:absolute;left:0;color:var(--muted)}
.reveal ol.steps{counter-reset:step}
.reveal ol.steps>li{counter-increment:step;position:relative;padding-left:50px}
.reveal ol.steps>li::before{content:counter(step)'.';position:absolute;left:0;color:var(--accent)}
.reveal .list.compact,.reveal .steps.compact{font-size:30px;gap:18px}
.reveal .three{display:grid;grid-template-columns:repeat(3,1fr);gap:55px;margin-top:30px}
.reveal .three>div{border-top:2px solid var(--line);padding-top:25px}
.reveal .three h3{font-size:38px;color:var(--accent)}
.reveal .three p{font-size:30px;line-height:1.5}
.reveal .three .example{margin-top:35px;color:var(--muted);font-size:27px}
.reveal table{margin:0;border-collapse:collapse;width:100%;font-size:30px;line-height:1.4;table-layout:fixed}
.reveal table th,.reveal table td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:20px 25px 20px 0}
.reveal table th{font-size:26px;color:var(--accent);font-weight:600;padding-top:0}
.reveal table td:last-child,.reveal table th:last-child{padding-right:0}
.reveal table tr:last-child td{border-bottom:none}
.reveal table .num{text-align:right;font-variant-numeric:tabular-nums}
.reveal .trace{display:flex;flex-direction:column;gap:0}
.reveal .trace-row{display:grid;grid-template-columns:150px 1fr 1fr;gap:28px;align-items:start;padding:23px 0;border-bottom:1px solid var(--line)}
.reveal .trace-row:last-child{border-bottom:none}
.reveal .trace-row .step{font-size:25px;color:var(--accent)}
.reveal .trace-row p{font-size:29px}
.reveal .trace-row code{font-size:26px;color:var(--ink)}
.reveal .trace-header{font-size:25px;color:var(--muted);padding:0 0 14px}
.reveal .flow{display:flex;gap:22px;align-items:stretch;margin:50px 0 30px}
.reveal .flow-node{flex:1;min-width:0;border-top:3px solid var(--accent);padding-top:23px}
.reveal .flow-node h3{font-size:33px}
.reveal .flow-node p{font-size:27px;color:var(--muted)}
.reveal .arrow{align-self:center;color:var(--accent);font-size:45px}
.reveal .feedback{font-size:29px;color:var(--accent);border-top:1px solid var(--line);padding-top:24px;text-align:center}
.reveal .boundary{border:2px solid var(--line);padding:32px 40px;margin-top:24px}
.reveal .boundary .flow{margin:24px 0}
.reveal .boundary-label{font-size:26px;color:var(--accent);margin-bottom:20px}
.reveal .question h2{font-size:69px;line-height:1.22;max-width:1400px;margin-top:30px}
.reveal .q-label{font-size:27px;color:var(--accent)}
.reveal .answer{border-top:2px solid var(--line);padding-top:28px;margin-top:45px}
.reveal .answer p{font-size:34px;line-height:1.5}
.reveal .answer p+p{margin-top:18px}
.reveal .document{border-left:4px solid var(--line);padding:22px 35px;background:var(--light)}
.reveal .document p{font-size:31px;margin-bottom:22px}
.reveal .document p:last-child{margin-bottom:0}
.reveal .document .injected{color:var(--rust);border-top:1px solid var(--line);padding-top:22px}
.reveal .document .injected code{color:inherit;font-weight:700}
.reveal .trust-line{height:0;border-top:3px dashed var(--rust);margin:34px 0}
.reveal .claim{font-size:45px;line-height:1.35;margin:25px 0 40px;max-width:1400px}
.reveal .exercise-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 65px;margin-top:40px}
.reveal .exercise-grid p{font-size:31px;border-top:1px solid var(--line);padding-top:20px}
.reveal .status{font-family:'JetBrains Mono',monospace;font-size:26px;color:var(--accent)}
.reveal .status.fail{color:var(--rust)}
.reveal .closing-code{font-size:33px;line-height:1.55}
.reveal .controls{color:var(--accent)}
.reveal .progress{color:var(--accent);height:3px}
.reveal .slide-number{background:transparent;color:var(--muted);font:14px Arial,sans-serif;right:118px;bottom:24px}
.opening-slide:not(:has(.reveal.overview)) .reveal .controls,.opening-slide:not(:has(.reveal.overview)) .reveal .progress,.opening-slide:not(:has(.reveal.overview)) .reveal .slide-number{display:none!important}
.overview-row-label{display:none}
.reveal.overview .slides{left:var(--section-overview-left)!important;top:var(--section-overview-top)!important;margin:0!important;transform:scale(var(--section-overview-scale))!important;transform-origin:0 0!important}
.reveal.overview .slides>section.slide,.reveal.overview .backgrounds>.slide-background{transform:var(--overview-position)!important;display:flex!important}
.reveal.overview .overview-row-label{display:block;position:absolute;left:0;width:6000px;color:var(--accent);font:100px/1.2 Arial,sans-serif;text-align:left;pointer-events:none}
.reveal.overview .slides>section.slide{background:var(--paper)}
.reveal.overview .slides>section.section-divider{background:var(--accent)}
.reveal.overview .slides>section.present,.reveal.overview .slides>section:hover{outline-color:var(--accent)}
.reveal.overview .fragment{opacity:1!important;visibility:visible!important}
.speaker-notes{width:min(1000px,88vw);max-height:85vh;overflow:auto;padding:28px 38px;box-sizing:border-box;background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:4px;font:18px/1.6 Arial,sans-serif}
.speaker-notes::backdrop{background:rgba(36,38,33,.5)}
.notes-toolbar{display:flex;justify-content:space-between;gap:25px;align-items:baseline;border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:22px}
.notes-meta{font-size:13px;color:var(--muted);margin-bottom:8px}
.speaker-notes h2{margin:0;font-size:27px;line-height:1.25}
.speaker-notes p{margin:0 0 18px}
.speaker-notes a{color:var(--accent)}
.speaker-notes button{border:1px solid var(--line);background:transparent;color:var(--ink);padding:8px 12px;border-radius:3px;font:14px Arial,sans-serif;cursor:pointer}
.speaker-notes button:disabled{opacity:.4;cursor:default}
.notes-navigation{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);margin-top:24px;padding-top:18px;font-size:13px;color:var(--muted)}
@media print{.speaker-notes{display:none!important}.reveal .fragment{opacity:1!important;visibility:visible!important}}
/* Lecture 4, version 2 */
.reveal .slides section.board{justify-content:center;align-items:center;text-align:center}
.reveal .board-kicker{font-size:32px;color:var(--muted);margin-bottom:30px}
.reveal .board h2{font-size:70px;line-height:1.2;max-width:1350px;margin:0 auto}
.reveal .board .board-sub{font-size:40px;color:var(--accent);margin-top:40px}
.reveal .demo-label{font-size:26px;color:var(--rust);margin-bottom:8px;letter-spacing:.02em}
.reveal .key{font-size:34px;line-height:1.35;color:var(--accent);margin-top:auto;padding-top:20px}
.reveal .key+.source{margin-top:0}
.reveal dl.card{display:grid;grid-template-columns:150px 1fr;gap:10px 22px;margin:0;font-size:26px;line-height:1.38;border-left:3px solid var(--accent);padding:4px 0 4px 24px}
.reveal dl.card dt{color:var(--accent);font-weight:600}
.reveal dl.card dd{margin:0}
.reveal .numbers{display:grid;grid-template-columns:repeat(4,1fr);gap:30px;margin:0 0 30px}
.reveal .numbers>div{border-top:2px solid var(--line);padding-top:14px}
.reveal .numbers strong{display:block;font-size:54px;font-weight:500;line-height:1.1;letter-spacing:-.03em;color:var(--accent)}
.reveal .numbers span{display:block;font-size:24px;line-height:1.35;color:var(--muted);margin-top:6px}
.reveal .figure-img{display:block;max-width:100%;max-height:520px;width:auto;height:auto}
.reveal .quote{font-size:46px;line-height:1.3;border-left:4px solid var(--accent);padding:6px 0 6px 34px;margin:10px 0 18px}
.reveal .quote-by{font-size:24px;color:var(--muted);padding-left:38px}
.reveal .optional-tag{position:absolute;top:22px;right:32px;font-size:20px;color:var(--muted);border:1px solid var(--line);padding:3px 10px}
.reveal .flow-label{font-size:26px;color:var(--muted);margin:26px 0 0}
.reveal .flow.tight{margin:14px 0 6px}
.reveal .flow.tight .flow-node h3{font-size:30px;margin-bottom:10px}
.reveal .flow.tight .flow-node p{font-size:25px}
.reveal .loop-back{font-size:25px;color:var(--accent);text-align:right;margin-top:4px}
.reveal ol.steps.demo{font-size:30px;gap:16px}
.reveal ol.steps.demo code{font-size:.88em}
.reveal .answer.compact p{font-size:30px}
.reveal .lecture-map{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:20px;counter-reset:part}
.reveal .lecture-map li{counter-increment:part;display:grid;grid-template-columns:70px 1fr;align-items:baseline;border-bottom:1px solid var(--line);padding-bottom:16px}
.reveal .lecture-map li::before{content:counter(part);font-size:44px;color:var(--accent)}
.reveal .lecture-map strong{font-size:40px;font-weight:500}
.reveal .lecture-map span{font-size:28px;color:var(--muted);margin-left:18px}
.reveal table.tight td,.reveal table.tight th{padding-top:13px;padding-bottom:13px}
.reveal .math{font-family:'Times New Roman',Times,serif;font-style:italic;font-size:1.08em}
.reveal .math sub{font-size:.7em}
.reveal .section-description{font-size:40px;line-height:1.3;color:#e7eee4;max-width:1300px}
/* Lecture 6: token masking block */
.reveal svg.tm-svg{display:block;width:100%;height:auto;overflow:visible;font-family:Arial,Helvetica,sans-serif}
.tm-svg text{fill:var(--ink)}
.tm-svg .tm-head text{font-size:26px;fill:var(--accent);font-weight:600}
.tm-svg .tm-head .tm-arrow{font-weight:400;font-size:30px}
.tm-svg .tm-rule{stroke:var(--line);stroke-width:2}
.tm-svg .tm-tok text{font-family:'JetBrains Mono',monospace;font-size:32px}
.tm-svg .tm-bar-base rect{fill:#c9d3c4}
.tm-svg .tm-bar-prob rect{fill:var(--accent)}
.tm-svg .tm-mask text{font-family:'JetBrains Mono',monospace;font-size:32px}
.tm-svg .tm-zero{fill:var(--rust)}
.tm-svg .tm-one{fill:var(--accent);font-weight:700}
.tm-svg .tm-inf text{font-size:30px;fill:var(--rust)}
.tm-svg .tm-zero-line line{stroke:var(--muted);stroke-width:3}
.tm-svg .tm-pick{fill:var(--accent)}
.tm-svg .tm-pick-text{fill:white;font-family:'JetBrains Mono',monospace;font-size:28px;text-anchor:middle;font-weight:700}
.tm-svg .tm-link{stroke:var(--accent);stroke-width:2;stroke-dasharray:6 6;fill:none}
.tm-svg .tm-foot{font-size:22px;fill:var(--muted)}
.tm-svg .tm-set{fill:none;stroke:var(--line);stroke-width:2}
.tm-svg .tm-set-dcf{stroke:var(--accent);stroke-width:3}
.tm-svg .tm-set-reg{fill:var(--light);stroke:var(--line)}
.tm-svg .tm-set-label{font-size:26px;font-weight:600}
.tm-svg .tm-set-item{font-size:26px}
.tm-svg .tm-accent{fill:var(--accent)}
.tm-svg .tm-muted{fill:var(--muted)}
.tm-svg .tm-rust{fill:var(--rust)}
.tm-svg .tm-trace-lex text{font-family:'JetBrains Mono',monospace;font-size:30px;text-anchor:middle;fill:var(--muted)}
.tm-svg .tm-trace-lex .tm-push{fill:var(--accent);font-weight:700}
.tm-svg .tm-trace-lex .tm-pop{fill:var(--rust);font-weight:700}
.tm-svg .tm-stack rect{fill:var(--light);stroke:#c4c9bd;stroke-width:1.5}
.tm-svg .tm-stack text{font-family:'JetBrains Mono',monospace;font-size:26px;text-anchor:middle}
.tm-svg .tm-stack .tm-new{fill:var(--accent);stroke:var(--accent)}
.tm-svg .tm-stack .tm-new-text{fill:white;font-weight:700}
.tm-svg .tm-stack .tm-gone{fill:none;stroke:var(--rust);stroke-dasharray:6 5;stroke-width:2}
.tm-svg .tm-stack .tm-gone-text{fill:var(--rust)}
.tm-svg .tm-ok{font-size:26px;fill:var(--accent);text-anchor:middle;font-weight:600}
.tm-svg .tm-edges line{stroke-width:3}
.tm-svg .tm-cut{stroke:#d8b9ad;stroke-dasharray:8 7}
.tm-svg .tm-ok-edge{stroke:var(--accent)}
.tm-svg .tm-root{fill:var(--ink)}
.tm-svg .tm-node circle{fill:var(--paper);stroke-width:3}
.tm-svg .tm-node text{font-family:'JetBrains Mono',monospace;font-size:28px;text-anchor:middle}
.tm-svg .tm-dead circle{stroke:#d8b9ad}
.tm-svg .tm-dead text{fill:#b9a39a}
.tm-svg .tm-live circle{stroke:var(--accent)}
.tm-svg .tm-node.tm-dead circle.tm-end{fill:#efe2dc}
.tm-svg .tm-node.tm-live circle.tm-end{fill:#dbe6d6}
.tm-svg .tm-x text{font-size:40px;fill:var(--rust);text-anchor:middle;font-weight:700}
.tm-svg .tm-label text{font-family:'JetBrains Mono',monospace;font-size:24px}
.tm-svg .tm-label.tm-dead text{fill:#b9a39a}
.tm-svg .tm-label.tm-live text{fill:var(--accent);font-weight:700}
.tm-svg .tm-tree-edge{stroke-linecap:round}
.tm-svg .tm-masked{stroke:var(--rust)}
.tm-svg .tm-model{stroke:var(--accent)}
.tm-svg .tm-tree-node{fill:var(--paper);stroke:var(--ink);stroke-width:2}
.tm-svg .tm-tree-text{font-family:'JetBrains Mono',monospace;font-size:28px;text-anchor:middle}
.tm-svg .tm-tree-word{font-family:'JetBrains Mono',monospace;font-size:32px;font-weight:700}
.tm-svg .tm-tree-lab{font-size:22px;fill:var(--muted)}
.tm-svg .tm-tree-note{font-size:22px}
.reveal .tm-code{font-size:23px;line-height:1.7}
.reveal .tm-bad{color:var(--rust);font-weight:700;background:#f4e3dc}
.reveal .tm-caret{color:var(--accent)}
.reveal .tm-why p+p,.reveal .tm-why pre+p{margin-top:16px}
.reveal .tm-loop{font-size:27px;line-height:1.5;margin-bottom:20px}
.reveal .tm-yes{color:var(--accent);font-weight:700}
.reveal .tm-no{color:var(--rust);font-weight:700}
.reveal .tm-table td,.reveal .tm-table th{font-size:27px}
.reveal .tm-table td code{color:var(--ink)}
.reveal .tm-state{margin:26px 0 30px}
.reveal .tm-rule-text{font-size:30px;line-height:1.4;border-top:2px solid var(--line);padding-top:20px}
.reveal .tm-cycle{margin-top:34px}
.reveal .tm-tokens{display:flex;gap:6px;font-family:'JetBrains Mono',monospace;font-size:32px;margin:6px 0 22px}
.reveal .tm-tokens span{border:2px solid var(--accent);padding:2px 8px;white-space:pre}
.reveal .tm-cost .small+.small{margin-top:14px}
.reveal .tm-big{font-size:96px;line-height:1;letter-spacing:-.03em;color:var(--accent);margin:4px 0 18px}
.reveal .tm-cost pre{margin:6px 0 18px}
.reveal .tm-legend{margin-top:30px}
.reveal .tm-theory{grid-template-columns:1.05fr 1fr;gap:60px;align-items:center}
.reveal .tm-trace-caption{margin:26px 0 6px}
.reveal .tm-state-eq{font-size:40px;line-height:1.3}
.reveal .tm-state-sub{margin:6px 0 34px}
.reveal .tm-kinds td,.reveal .tm-kinds th{font-size:28px}
.reveal .tm-phases{display:grid;grid-template-columns:1fr 70px 1fr;gap:20px;align-items:stretch;margin-top:10px}
.reveal .tm-phases .boundary{margin-top:0}
.reveal .tm-phases .arrow{align-self:center;text-align:center}
.reveal .tm-phase-lead{font-size:30px;margin-bottom:16px}
.reveal .tm-storage{margin-top:26px}
.reveal .tm-limits pre{margin:10px 0 22px}
.reveal .tm-limits svg{margin:4px 0 14px}
.tm-svg .tm-zero-p text{font-size:26px;fill:var(--muted)}
.reveal .three p.tm-big{font-size:96px;line-height:1;margin:4px 0 18px}
.reveal .tm-cost h3{font-size:33px}
.reveal .tm-step pre{margin-bottom:26px}
.reveal dl.card.tm-state{margin:0 0 30px}
.reveal .tm-dot{display:inline-block;width:20px;height:20px;border-radius:50%;background:#dbe6d6;border:3px solid var(--accent);vertical-align:-3px}
/* Lecture 6: other blocks */
.reveal svg.l6-svg{display:block;width:100%;height:auto;overflow:visible;font-family:Arial,Helvetica,sans-serif}
.l6-svg text{fill:var(--ink);font-size:26px}
.l6-svg .l6-box rect,.l6-svg rect.l6-box{fill:var(--paper);stroke:#c4c9bd;stroke-width:2}
.l6-svg .l6-box-accent{fill:var(--light);stroke:var(--accent);stroke-width:3}
.l6-svg .l6-line line,.l6-svg .l6-line{stroke:#c4c9bd;stroke-width:2;fill:none}
.l6-svg .l6-line-accent line,.l6-svg .l6-line-accent{stroke:var(--accent);stroke-width:3;fill:none}
.l6-svg .l6-mid,.l6-svg .l6-mid text{text-anchor:middle}
.l6-svg .l6-title{font-size:28px;font-weight:600}
.l6-svg .l6-small{font-size:22px;fill:var(--muted)}
.l6-svg .l6-mono{font-family:'JetBrains Mono',monospace;font-size:22px}
.l6-svg .l6-accent{fill:var(--accent)}
.l6-svg .l6-rust{fill:var(--rust)}
.l6-svg .l6-circle{fill:rgba(82,119,80,.12);stroke:var(--accent);stroke-width:3}
.reveal pre.l6-json{font-size:22px;line-height:1.42}
.reveal pre.l6-template{font-size:24px;line-height:1.32;white-space:pre-wrap}
.reveal pre.l6-template code{white-space:pre-wrap}
.reveal .l6-hl{color:var(--accent);font-weight:700}
.reveal .l6-warn{color:var(--rust);font-weight:700}
.reveal .l6-tok{color:var(--muted)}
.reveal .l6-gen{background:#dbe6d6}
.reveal .l6-cols3{display:grid;grid-template-columns:repeat(3,1fr);gap:40px}
.reveal .l6-cols3>div{min-width:0;border-top:2px solid var(--line);padding-top:16px}
.reveal .l6-take{font-size:30px;line-height:1.4;color:var(--accent);margin-top:auto;padding-top:18px}
.reveal .l6-take+.source{margin-top:0}
.reveal table.l6-table td,.reveal table.l6-table th{font-size:27px;padding-top:13px;padding-bottom:13px}
.reveal table.l6-table td code{color:var(--ink)}
.reveal table.l6-table td.rust{color:var(--rust)}
.reveal .l6-center{margin:auto 0;padding-bottom:40px}
.reveal .l6-center .quote{max-width:1350px;margin:0 0 60px}
.reveal .l6-chips{display:flex;gap:22px;flex-wrap:wrap;margin-bottom:40px}
.reveal .l6-chips span{font-size:32px;padding:16px 34px;border-top:3px solid var(--accent);background:var(--light)}
.reveal .l6-sub{font-size:34px;color:var(--muted)}
/* Lecture 6: movable, non-modal speaker notes */
.speaker-notes{position:fixed;inset:auto;margin:0;z-index:1000;box-shadow:0 12px 40px rgba(36,38,33,.25)}
.speaker-notes .notes-toolbar{cursor:move;user-select:none;touch-action:none}
.speaker-notes .notes-toolbar button{cursor:pointer}
/* Lecture 6: speaker notes in a separate window */
body.notes-window{background:var(--paper)}
.speaker-notes.notes-page{position:static;width:auto;max-width:none;max-height:none;min-height:100vh;border:0;border-radius:0;box-shadow:none;font-size:20px;overflow:visible}
.notes-page .notes-toolbar{cursor:default}
.reveal .l6-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:50px;margin-top:6px}
.reveal .l6-steps>div{min-width:0;border-top:3px solid var(--accent);padding-top:18px}
.reveal .l6-step-num{font-size:64px;line-height:1;color:var(--accent);margin-bottom:12px}
.reveal .l6-steps h3{font-size:32px;min-height:2.4em}
.reveal .l6-steps pre{font-size:25px;line-height:1.45;margin-bottom:16px}
.reveal .l6-benefits{margin-top:30px;gap:80px}
.reveal .l6-benefits>div{border-top:3px solid var(--accent);padding-top:24px}
.reveal .l6-benefits h3{font-size:44px;color:var(--accent)}
.reveal .l6-benefits p{font-size:32px;margin-bottom:30px}
.reveal .l6-benefits pre{font-size:27px;background:var(--light);padding:18px 24px;box-sizing:border-box}
.reveal #tc-why-tools .l6-benefits>div{display:flex;flex-direction:column;align-self:stretch}
.reveal #tc-why-tools .l6-benefits p{flex-grow:1}
.reveal table.l6-when td,.reveal table.l6-when th{font-size:31px;padding-top:20px;padding-bottom:20px}
.reveal table.l6-when td strong{color:var(--accent)}
.reveal table tr.fragment:not(.visible) td{border-bottom-color:transparent}
.reveal .numbers.l6-big{gap:50px}
.reveal .numbers.l6-big strong{font-size:72px}
.reveal .numbers.l6-big span{font-size:30px;line-height:1.4;color:var(--ink);margin-top:14px}
.l6-chart text{font-size:24px}
.l6-chart .l6-chart-label{text-anchor:end}
.l6-chart .l6-chart-value{fill:var(--accent);font-weight:700}
.l6-chart .l6-bar-code{fill:var(--accent)}
.l6-chart .l6-bar-json{fill:#a3a99b}
.l6-svg .l6-chip{fill:var(--light);stroke:var(--accent);stroke-width:2}
.l6-svg .l6-rust-t{fill:var(--rust)}
.l6-svg .l6-accent-t{fill:var(--accent);font-weight:700}
.reveal svg.l6-ptc-svg{margin-top:-6px}
.reveal .l6-benefits .l6-big-num{font-size:64px;line-height:1;color:var(--accent);margin:10px 0 0}
.reveal .l6-benefits .l6-big-num.l6-warn{color:var(--rust)}
/* Lecture 6: regex, JSON grammar and DPDA slides */
.reveal .split.l6-regex,.reveal .split.l6-jsonq{gap:70px;align-items:start}
.reveal pre.l6-regex-big{font-size:40px;line-height:1.3;background:var(--light);padding:18px 26px;box-sizing:border-box;margin-bottom:14px}
.reveal .l6-examples{display:flex;flex-wrap:wrap;gap:16px;margin:26px 0 30px}
.reveal .l6-examples span{font-family:'JetBrains Mono',monospace;font-size:30px;padding:6px 16px;border-top:3px solid}
.reveal .l6-examples .ok{color:var(--accent);border-color:var(--accent)}
.reveal .l6-examples .bad{color:var(--rust);border-color:var(--rust)}
.reveal pre.l6-run{font-size:26px;line-height:1.6}
.reveal h3.l6-answer{color:var(--accent);font-size:40px;margin-top:6px}
.reveal pre.l6-grammar{font-size:25px;line-height:1.45}
.reveal .l6-jsonq p{font-size:30px;line-height:1.45}
.l6-svg .l6-st{fill:var(--paper);stroke:var(--accent);stroke-width:3}
.l6-svg .l6-st-text{font-family:'JetBrains Mono',monospace;font-size:30px;text-anchor:middle;font-weight:700}
.l6-svg .l6-edge{stroke:var(--accent);stroke-width:2.5;fill:none}
.l6-svg .l6-edge-label{font-family:'JetBrains Mono',monospace;font-size:28px;fill:var(--accent);text-anchor:middle}
.reveal .split.l6-dpda-split{grid-template-columns:1fr 1fr;gap:70px;align-items:start}
.reveal .l6-def{font-size:36px;margin-bottom:26px}
.reveal .l6-def strong{color:var(--accent)}
.l6-svg .l6-cell{fill:var(--paper);stroke:var(--ink);stroke-width:2}
.l6-svg .l6-cell-read{fill:var(--light);stroke:#c4c9bd;stroke-width:2}
.l6-svg .l6-cell-text{font-family:'JetBrains Mono',monospace;font-size:40px;text-anchor:middle;font-weight:700}
.l6-svg .l6-cell-text.l6-read{fill:#b6bbb0}
.l6-svg .l6-head{fill:var(--accent)}
.l6-svg .l6-rule{font-family:'JetBrains Mono',monospace;font-size:28px;fill:var(--accent);font-weight:700}
.l6-svg .l6-stack-box{fill:var(--light);stroke:var(--accent);stroke-width:2}
.l6-svg .l6-ok{font-size:28px;fill:var(--accent);font-weight:700}
.reveal .split.l6-trees{gap:50px;margin-top:-10px}
.reveal .l6-trees h3.l6-answer{font-size:34px;margin-bottom:12px}
.reveal .l6-trees h3.l6-bad{color:var(--rust)}
.reveal pre.l6-tree-code{font-size:28px;background:var(--light);padding:12px 20px;box-sizing:border-box;margin-bottom:10px}
.l6-svg .l6-tree-edge{stroke:#aab0a2;stroke-width:2;fill:none}
.l6-svg .l6-tree-bad-edge{stroke:var(--rust);stroke-dasharray:6 5}
.l6-svg .l6-tree-nt{fill:var(--light);stroke:var(--accent);stroke-width:2.5}
.l6-svg .l6-tree-nt-text{font-size:24px;font-weight:700;text-anchor:middle}
.l6-svg .l6-tree-t{fill:var(--paper);stroke:#c4c9bd;stroke-width:2}
.l6-svg .l6-tree-t-text{font-family:'JetBrains Mono',monospace;font-size:24px;text-anchor:middle}
.l6-svg .l6-tree-bad{fill:#f4e3dc;stroke:var(--rust);stroke-width:2.5}
.l6-svg .l6-tree-bad-text{font-family:'JetBrains Mono',monospace;font-size:24px;text-anchor:middle;fill:var(--rust);font-weight:700}
.l6-svg .l6-tree-x{fill:var(--rust)}
.l6-svg .l6-tree-x-text{fill:white;font-size:20px;font-weight:700;text-anchor:middle}
.reveal .l6-dpda-def{margin:0 0 34px}
.reveal .l6-dpda-def p{font-size:28px;line-height:1.4}
.reveal .l6-dpda-def strong{color:var(--accent)}
.l6-svg .l6-lex{font-family:'JetBrains Mono',monospace;font-size:29px;text-anchor:middle;font-weight:700}
.l6-svg .l6-lex.l6-read{fill:#b6bbb0}
.l6-svg .l6-state{font-size:32px;font-weight:700}
.l6-svg .l6-allow-ok{fill:#dbe6d6;stroke:var(--accent);stroke-width:2}
.l6-svg .l6-allow-ok-text{font-family:'JetBrains Mono',monospace;font-size:26px;text-anchor:middle;fill:var(--accent);font-weight:700}
.l6-svg .l6-allow-bad{fill:#f4e3dc;stroke:var(--rust);stroke-width:2;stroke-dasharray:6 4}
.l6-svg .l6-allow-bad-text{font-family:'JetBrains Mono',monospace;font-size:26px;text-anchor:middle;fill:var(--rust);font-weight:700}
.tm-svg .tm-todo-edge{stroke:#e3e5de;stroke-width:3}
.tm-svg .tm-node.tm-todo circle{fill:var(--paper);stroke:#d9dcd2}
.tm-svg .tm-node.tm-todo text{fill:#c4c9bd}
.tm-svg .tm-pruned{opacity:.4}
.tm-svg .tm-level{font-size:24px;fill:var(--accent);font-weight:700}
.reveal .tm-trie{display:flex;flex-direction:column;align-items:center;flex:1;min-height:0}
.reveal .tm-trie-head{align-self:stretch;display:flex;justify-content:space-between;align-items:baseline}
.reveal .tm-trie .tm-legend{margin-top:0}
.reveal .tm-trie svg.tm-svg{width:auto;height:560px}
.reveal .tm-trie .l6-take{font-size:28px;align-self:stretch}
.reveal .tm-limits-row{display:flex;align-items:baseline;gap:28px;margin-bottom:26px}
.reveal .tm-limits-row h3{margin:0;white-space:nowrap}
.reveal .tm-limits-row pre{width:auto;margin:0}
.reveal .tm-limits-row p{margin:0}
.reveal .tm-limits-sub{font-weight:400;color:var(--muted)}
.reveal .split.tm-greedy{grid-template-columns:.9fr 1.1fr;gap:50px;align-items:start}
.reveal .tm-greedy-box{border-left:4px solid;padding:4px 0 4px 22px;margin-bottom:22px}
.reveal .tm-greedy-box h4{font-size:28px;margin:0 0 8px}
.reveal .tm-greedy-box p{font-size:26px;line-height:1.4;margin:0 0 6px}
.reveal .tm-greedy-mask{border-color:var(--rust)}
.reveal .tm-greedy-mask h4,.reveal .tm-greedy-mask .tm-greedy-result{color:var(--rust)}
.reveal .tm-greedy-model{border-color:var(--accent)}
.reveal .tm-greedy-model h4,.reveal .tm-greedy-model .tm-greedy-result{color:var(--accent)}
.reveal .tm-greedy-result{font-weight:700;font-size:30px !important}
.tm-svg .tm-prob{font-family:'JetBrains Mono',monospace;font-size:26px;font-weight:700;fill:var(--ink)}
.tm-svg .tm-prob.tm-muted{fill:#b6bbb0}
.tm-svg .tm-gone-edge{stroke:#d6dacf;stroke-dasharray:14 10}
.tm-svg .tm-gone-word{fill:#b6bbb0}
.tm-svg .tm-step-lab{font-size:24px;fill:var(--accent);font-weight:700;text-anchor:middle}
.reveal .l6-occ-lead{font-size:32px;margin-bottom:24px}
.l6-svg .l6-occ-label{font-size:30px;font-weight:700;text-anchor:end}
.l6-svg .l6-occ-leg{font-size:26px;fill:var(--muted)}
.l6-svg .l6-occ-delta{font-size:28px;font-weight:700;fill:var(--accent);opacity:.7}
.l6-svg .l6-occ-val{font-size:30px;font-weight:700;fill:var(--accent)}
.l6-svg .l6-occ-val-base{fill:var(--muted)}
.l6-svg .l6-occ-base{fill:#c4c9bd}
.l6-svg .l6-occ-bar{fill:var(--accent)}
.reveal .l6-res pre.l6-json{font-size:24px}
.reveal .l6-res .code-caption{margin-bottom:12px}
.reveal .l6-res-err{margin-top:26px}
/* Lecture 6: REST API section */
.reveal .split.l6-rest-split{grid-template-columns:1.5fr 1fr;gap:40px}
.reveal dl.card.l6-rest-card{grid-template-columns:120px 1fr;align-self:center;font-size:25px}
.reveal dl.card.l6-rest-card dd{white-space:nowrap}
.reveal .l6-rest-steps{margin-top:34px}
.reveal .l6-rest-steps h3{min-height:0}
.reveal .l6-rest-steps p{font-size:28px;line-height:1.4}
.reveal .l6-remote{margin-top:26px}
.reveal .fragment.l6-mark{opacity:1;visibility:inherit;border-radius:4px;transition:background-color .3s,color .3s}
.reveal .fragment.l6-mark.visible{background:#f3e1d9;color:var(--rust);font-weight:700}
.reveal .fragment.l6-mark.visible span{color:var(--rust)}
/* Lecture 6: MCP keys slides */
.reveal .split.l6-client-split{grid-template-columns:2fr 1fr;gap:40px}
.l6-svg .l6-mcp-srv{font-size:24px;fill:var(--accent);font-weight:600}

/* Lecture 6: parallel tool calls */
.reveal .split.l6-par-split{grid-template-columns:1.25fr 1fr;gap:40px}
.reveal .l6-par-split pre.l6-template{font-size:22px}
.reveal .l6-par-split .l6-pick{font-size:22px;padding:0 4px}
.reveal .fragment.l6-cur{opacity:1;visibility:inherit;border-radius:4px;transition:background-color .3s,color .3s}
.reveal .fragment.l6-cur.current-fragment,.reveal .fragment.l6-cur.current-fragment .l6-tok,.reveal .fragment.l6-cur.current-fragment .l6-hl{background:#f3e1d9;color:var(--rust);font-weight:700}
.l6-chart .l6-chart-value-json{fill:var(--muted)}
.l6-svg .l6-schema{font-family:'JetBrains Mono',monospace;font-size:18px;fill:var(--ink);white-space:pre}
.l6-svg .l6-schema-hl{fill:#f3e1d9}
.l6-svg .l6-key-pill{fill:#f3e1d9}
.l6-svg .l6-key-text{fill:var(--rust);font-weight:700;font-size:22px}
