:root { --ai-ink:#112f42; --ai-teal:#006f69; --ai-line:#d4dfe5; }
.ai-lab {color:var(--ai-ink); max-width:1100px; margin:auto;}
.ai-lab h2,.ai-lab h3 {color:var(--ai-ink);line-height:1.15;}
.ai-lab h2 {font-size:clamp(1.8rem,3vw,2.8rem);max-width:650px;margin:.6rem 0 1rem;}
.ai-lab h3 {font-size:1.4rem;margin:.5rem 0 1rem;}
.ai-banner {background:#102e42;color:#f6fafc;border-radius:18px;padding:clamp(1.4rem,4vw,2.8rem);margin:1rem 0 2rem;position:relative;overflow:hidden;border-top:5px solid #45d1bb;}
.ai-lab .ai-banner h2 {color:#fff;}
.ai-banner p {max-width:720px;}
.ai-eyebrow {font-size:.75rem;letter-spacing:.13em;font-weight:800;color:#96e4d7;}
.ai-badge {font-size:.85rem;color:#c6e8e5;}
.ai-step {padding:1.5rem 0;border-bottom:1px solid var(--ai-line);margin-bottom:1.4rem;}
.ai-step>span {font-size:.8rem;letter-spacing:.08em;color:var(--ai-teal);font-weight:800;text-transform:uppercase;}
.ai-controls {display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:1.4rem 0;}
.ai-lab label {display:block;font-weight:600;}
.ai-lab select,.ai-lab textarea {font:inherit;display:block;width:100%;padding:.7rem;border:1px solid #657c8c;border-radius:7px;background:white;color:var(--ai-ink);margin:.4rem 0;}
.ai-lab button {font:inherit;font-weight:650;min-height:44px;padding:.65rem 1rem;border:1px solid #456271;border-radius:7px;background:#fff;color:var(--ai-ink);cursor:pointer;}
.ai-lab button:hover:not(:disabled) {background:#e5f2ef;}
.ai-lab #ai-train,.ai-lab #ai-run {background:#006f69;color:white;border-color:#006f69;}
.ai-lab button:disabled {opacity:.5;cursor:default;}
.ai-lab :focus-visible {outline:3px solid #b55216;outline-offset:4px;}
.ai-actions {display:flex;gap:.6rem;flex-wrap:wrap;}
#ai-status {min-height:3em;font-size:.9rem;color:#405a6c;}
.ai-metrics {display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:1rem 0;}
.ai-metrics>div {padding:1rem;background:#edf5f5;border-radius:10px;}
.ai-metrics span {display:block;font-size:.78rem;font-weight:650;}
.ai-metrics strong {display:block;font-size:1.35rem;font-variant-numeric:tabular-nums;margin-top:.4rem;}
.ai-plots {display:grid;gap:1rem;grid-template-columns:1.2fr 1fr;align-items:start;}
.ai-plots figure {margin:0;border:1px solid var(--ai-line);border-radius:12px;padding:.5rem;background:white;}
.ai-plots svg {display:block;width:100%;height:auto;font:15px system-ui;}
.ai-plots figcaption {font-size:.78rem;padding:.6rem;line-height:1.6;}
.ai-key {margin-right:8px;}.target {color:#386158;}.learned {color:#1959be;}.poison {color:#a12620;}
.ai-probe,.ai-explain {padding:1.3rem;background:#f4f7fa;border-radius:12px;margin:1.3rem 0;}
.ai-probe input {width:100%;height:32px;accent-color:#006f69;}
.ai-probe output {float:right;font-variant-numeric:tabular-nums;}
.ai-lab summary {cursor:pointer;font-weight:700;min-height:44px;}
.ai-quiz {border:1px solid var(--ai-line);border-radius:12px;padding:1.2rem;margin:1.5rem 0;}
.ai-quiz legend {font-size:1.1rem;font-weight:700;padding:0 .4rem;}
.ai-quiz label,.ai-boundary label {padding:.6rem;font-weight:400;min-height:44px;}
.ai-quiz input,.ai-boundary input {accent-color:#006f69;width:18px;height:18px;vertical-align:middle;margin-right:.4rem;}
.ai-feedback {min-height:2.5em;color:#134c48;margin-top:1rem;}
.ai-lab pre {background:#102e42;color:#e4f3f5;padding:1.2rem;border-radius:12px;white-space:pre-wrap;}
.ai-lab li {margin:.7rem 0;}
.reading-content:has(.ai-home) {max-width:1000px;}
.ai-home {background:#102e42;color:white;border-top:5px solid #45d1bb;padding:2rem;border-radius:16px;margin:1rem 0 2rem;}
.ai-home h2 {color:white!important;font-size:2rem;line-height:1.15;}.ai-home p {max-width:650px;}.ai-home a {color:#a7efdf!important;}
@media(max-width:720px) {.ai-controls,.ai-plots {grid-template-columns:1fr;}.ai-metrics {grid-template-columns:1fr 1fr;}.ai-lab {min-width:0;}.ai-lab h2 {font-size:1.9rem;}}
@media(prefers-reduced-motion:reduce) {.ai-lab * {scroll-behavior:auto!important;}}
/* A presentation uses the same lab DOM and calculations, arranged for a 16:9 slide. */
.ai-presentation .site-header,.ai-presentation .section-navigation,.ai-presentation .page-outline,.ai-presentation .breadcrumbs,.ai-presentation footer,.ai-presentation .skip-link {display:none!important}
.ai-presentation .workspace,.ai-presentation main,.ai-presentation .reading-content {display:block!important;padding:0!important;margin:0!important;max-width:none!important;min-width:0!important;border:0!important;background:white!important}
.ai-presentation article>*:not(.ai-lab) {display:none!important}
.ai-presentation {margin:0;background:white;overflow:hidden}
.ai-presentation .ai-lab {max-width:none;height:100vh;box-sizing:border-box;padding:8px;display:grid;grid-template-columns:minmax(0,1.55fr) minmax(265px,1fr);grid-template-rows:70px 44px 46px minmax(0,1fr);gap:6px;font:12px/1.35 system-ui}
.ai-presentation-model .ai-banner,.ai-presentation-model .ai-step,.ai-presentation-model .ai-explain,.ai-presentation-model .ai-quiz {display:none}
.ai-teaching {grid-column:1/-1;grid-row:1;background:#102e42;color:white;border-radius:8px;padding:7px 10px}
.ai-teaching nav {display:flex;gap:4px;justify-content:space-between}
.ai-presentation .ai-teaching button {min-height:28px;font-size:11px;padding:4px 6px;background:#102e42;color:white;border-color:#8ca4b1}
.ai-presentation .ai-teaching button[aria-current="true"] {background:#b6f0df;color:#102e42;border-color:#b6f0df}
.ai-teaching p {margin:5px 0 0;font-size:12px}
.ai-presentation .ai-controls {grid-row:2;grid-column:1;margin:0;gap:6px;font-size:10px}
.ai-presentation .ai-controls select {padding:3px;font-size:11px;margin:2px 0 0;height:26px}
.ai-presentation .ai-actions {grid-row:2;grid-column:2;gap:4px;align-items:center}
.ai-presentation .ai-actions button {font-size:10px;min-height:30px;padding:4px 6px}
.ai-presentation #ai-status {grid-row:3;grid-column:2;font-size:10px;margin:0;min-height:0;align-self:center}
.ai-presentation .ai-metrics {grid-row:3;grid-column:1;margin:0;gap:4px}
.ai-presentation .ai-metrics>div {padding:4px 6px;border-radius:6px}
.ai-presentation .ai-metrics span {font-size:9px}
.ai-presentation .ai-metrics strong {font-size:14px;margin-top:1px}
.ai-presentation .ai-plots {grid-row:4;grid-column:1;display:block;min-height:0}
.ai-presentation .ai-plots figure {height:100%;box-sizing:border-box;display:flex;flex-direction:column;padding:0}
.ai-presentation .ai-plots figure+figure {display:none}
.ai-presentation .ai-plots svg {flex:1;min-height:0;height:100%;width:100%}
.ai-presentation .ai-plots figcaption {font-size:8px;padding:2px 5px}
.ai-presentation .ai-probe {grid-row:4;grid-column:2;margin:0;padding:10px;font-size:11px;overflow:auto}
.ai-presentation .ai-probe h3 {font-size:13px;margin:6px 0 2px}
.ai-presentation .ai-probe p {margin:5px 0}
.ai-presentation .ai-probe input {height:20px;margin:0}
.ai-presentation .ai-probe>p:last-child {display:none}
.ai-presentation #ai-calculation strong {display:block;font-size:14px;line-height:1.2}
.ai-presentation #ai-calculation p {font-size:12px;margin:6px 0}
.ai-presentation [data-teaching-step="0"] .ai-target-curve,.ai-presentation [data-teaching-step="0"] .ai-learned-curve {display:none}
.ai-presentation :is([data-teaching-step="1"],[data-teaching-step="2"],[data-teaching-step="3"]) .ai-target-curve {display:none}
.ai-presentation :is([data-teaching-step="0"],[data-teaching-step="1"],[data-teaching-step="2"]) :is(#ai-train,#ai-stop,#ai-one,#ai-test) {display:none}
.ai-presentation [data-teaching-step="3"] :is(#ai-train,#ai-stop,#ai-test) {display:none}
.ai-presentation [data-teaching-step="4"] :is(#ai-one,#ai-test) {display:none}
.ai-presentation [data-teaching-step="6"] #ai-one {display:none}
.ai-presentation :is([data-teaching-step="0"],[data-teaching-step="2"],[data-teaching-step="3"],[data-teaching-step="4"]) .ai-probe>:not(#ai-calculation) {display:none}
.ai-presentation-boundary .ai-lab {grid-template-rows:75px 160px 38px 1fr;grid-template-columns:1fr 1fr}
.ai-presentation-boundary .ai-banner {grid-column:1/-1;grid-row:1;padding:8px 12px;margin:0;border-radius:8px}
.ai-presentation-boundary .ai-banner h2 {font-size:18px;margin:2px 0}
.ai-presentation-boundary .ai-banner p {font-size:11px;margin:4px 0}
.ai-presentation-boundary .ai-eyebrow {font-size:9px}
.ai-presentation-boundary .ai-step,.ai-presentation-boundary .ai-quiz {display:none}
.ai-presentation-boundary .ai-boundary {grid-column:1;grid-row:2}
.ai-presentation-boundary .ai-boundary label {font-size:12px;padding:5px;min-height:28px}
.ai-presentation-boundary #ai-run {grid-column:1;grid-row:3;font-size:13px;min-height:30px;padding:6px}
.ai-presentation-boundary #ai-trace {grid-column:2;grid-row:2/5;font-size:12px;line-height:1.4;margin:0;padding:12px}
.ai-presentation-boundary .ai-lab>p {grid-column:1;grid-row:4;margin:0;font-size:11px}
.ai-presentation-boundary .ai-boundary label {display:flex;align-items:center;gap:8px;height:40px;min-height:0;box-sizing:border-box}
.ai-presentation-boundary .ai-boundary input {display:inline-block;min-height:18px;height:18px;width:18px;flex:0 0 18px;margin:0;padding:0}
.ai-manual {padding:12px;border:1px solid #a8bdc6;border-radius:10px;margin-bottom:16px;background:white}
.ai-manual fieldset {border:0;padding:0;margin:0;min-width:0}
.ai-manual legend {font-weight:750;font-size:1rem;margin-bottom:8px}
.ai-manual #ai-parameters {display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}
.ai-manual label {font-size:.85rem}
.ai-manual output {float:right;font-variant-numeric:tabular-nums}
.ai-manual-hint,#ai-triage {font-size:.8rem;line-height:1.35}
.ai-presentation .ai-manual {display:none}
.ai-presentation [data-teaching-step="1"] .ai-probe>:not(.ai-manual) {display:none}
.ai-presentation [data-teaching-step="1"] .ai-manual {display:block;border:0;background:transparent;margin:0;padding:0}
.ai-presentation .ai-manual legend {font-size:12px;margin-bottom:3px}
.ai-presentation .ai-manual #ai-parameters {gap:4px 10px}
.ai-presentation .ai-manual label {font-size:10px;line-height:1.1}
.ai-presentation .ai-manual input {height:20px;min-height:20px;padding:0;margin:0}
.ai-presentation .ai-manual select {font-size:10px;padding:1px 3px;margin:1px 0 3px;height:23px;width:95px;display:inline-block;margin-left:6px}
.ai-presentation .ai-manual-hint,.ai-presentation #ai-triage {font-size:10px;line-height:1.3;margin:5px 0}
.ai-presentation [data-teaching-step="6"] .ai-manual {display:block;padding:0;border:0;margin:0;background:transparent}
.ai-presentation [data-teaching-step="6"] .ai-manual fieldset,.ai-presentation [data-teaching-step="6"] .ai-manual-hint {display:none}
.ai-presentation :is([data-teaching-step="0"],[data-teaching-step="1"],[data-teaching-step="2"],[data-teaching-step="3"]) .ai-key.target {display:none}
.ai-presentation [data-teaching-step="0"] .ai-key.learned {display:none}

.ai-lab [hidden] {display:none!important}

#ai-threshold-panel {padding:12px;border:1px solid #a8bdc6;border-radius:10px;margin-bottom:14px;background:white}
.ai-confusion {display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}
.ai-confusion>div {background:#e8f3ef;padding:8px;border-radius:6px}
.ai-confusion>div:nth-child(2),.ai-confusion>div:nth-child(3) {background:#fff1dd}
.ai-confusion strong,.ai-confusion span {display:block}.ai-confusion strong {font-size:1.4rem}.ai-confusion span {font-size:.8rem}
#ai-rates,#ai-threshold-help {font-size:.85rem;line-height:1.4}
.ai-presentation .ai-teaching button {font-size:10px;padding:4px}
.ai-presentation #ai-threshold-panel {display:none}
.ai-presentation [data-teaching-step="5"] .ai-probe>:not(#ai-threshold-panel) {display:none}
.ai-presentation [data-teaching-step="5"] .ai-probe {padding:5px}
.ai-presentation [data-teaching-step="5"] #ai-threshold-panel {display:block;margin:0;padding:0;border:0;background:transparent}
.ai-presentation [data-teaching-step="5"] :is(#ai-train,#ai-stop,#ai-one,#ai-test) {display:none}
.ai-presentation .ai-confusion {gap:4px;margin-top:4px}
.ai-presentation .ai-confusion>div {padding:4px 6px}
.ai-presentation .ai-confusion strong {font-size:17px;line-height:1.1}
.ai-presentation .ai-confusion span {font-size:10px}
.ai-presentation #ai-rates,.ai-presentation #ai-threshold-help {font-size:10px;line-height:1.3;margin:5px 0}

.ai-presentation #ai-threshold {min-height:24px;height:24px;padding:0;margin:0}
.ai-presentation #ai-threshold {display:block}
.ai-presentation #ai-threshold-help {margin-bottom:0}

/* Lecture pages and workshop layouts override the shared lab defaults. */
.reading-content:has(.cy-lecture) {font-size:1.05rem;line-height:1.75}
.reading-content:has(.cy-lecture)>p,.reading-content:has(.cy-lecture)>ul,.reading-content:has(.cy-lecture)>ol {max-width:74ch}
.cy-lecture {padding:1rem 0;border-bottom:1px solid var(--ai-line);margin-bottom:1.5rem;color:#355569}
.cy-lecture strong {color:var(--ai-teal)}
.cy-home {padding:clamp(1.5rem,4vw,3rem);background:#102e42;color:#fff;border-radius:16px;border-top:5px solid #58d3ba;margin:1rem 0 2rem}
.cy-home h2 {color:#fff!important;font-size:clamp(2rem,4vw,3.2rem);line-height:1.1;margin:.7rem 0 1.2rem;max-width:20ch}
.cy-home p {max-width:65ch;font-size:1.1rem}
.cy-kicker {font-size:.8rem;letter-spacing:.09em;font-weight:750;text-transform:uppercase}
.cy-home a {color:#fff!important}.cy-home .cy-primary {display:inline-block;background:#b9f1e2;color:#123b3a!important;padding:.7rem 1.1rem;border-radius:7px;font-weight:750;margin:.5rem 1rem .5rem 0}
.cy-path {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin:1.5rem 0 2rem}
.cy-path a {display:block;padding:1.2rem;border:1px solid #b6cbd1;border-radius:10px;background:#f4f9f8;text-decoration:none!important;color:#173f50!important;min-height:130px}
.cy-path strong {font-size:1.1rem;display:block;margin:.3rem 0}.cy-path span {font-size:.85rem;color:#3d596b}
.cy-path a:hover {border-color:#006f69;background:#e4f3ee}
.cy-example {border-left:4px solid #b55c21;background:#fff5e7;padding:1rem 1.3rem;margin:1.2rem 0;max-width:72ch}
.cy-check {margin:1.5rem 0;max-width:78ch}.cy-check fieldset {border:1px solid #a7bdc7;border-radius:10px;padding:1.2rem;background:#f4f9f8}
.cy-check legend {font-weight:750;padding:0 .4rem;font-size:1.05rem;max-width:95%}
.cy-check label {display:block;min-height:44px;padding:.5rem 0;cursor:pointer}.cy-check input {margin-right:.5rem}
.cy-check button,.cy-lab button {font:inherit;font-weight:650;min-height:44px;border:1px solid #34606d;border-radius:6px;padding:.6rem 1rem;background:white;color:#14394a;cursor:pointer}
.cy-check button:hover,.cy-lab button:hover {background:#def2eb}
.cy-feedback {min-height:2em;color:#214f49;margin:.8rem 0;font-size:.95em}
.cy-check :focus-visible,.cy-lab :focus-visible,.cy-path a:focus-visible,.cy-home a:focus-visible {outline:3px solid #a14a12;outline-offset:4px}
.cy-lab {border:1px solid #a9c0c9;border-radius:12px;background:white;padding:clamp(1rem,2vw,1.6rem);margin:1.5rem 0;font-size:1rem;line-height:1.5}
.cy-heading>span {font-size:.75rem;font-weight:800;letter-spacing:.08em;color:#00665e}.cy-heading h2 {font-size:1.8rem;max-width:none!important;margin:.4rem 0 .6rem;line-height:1.15}.cy-heading p {max-width:75ch;margin:0 0 1.2rem}
.cy-layout {display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:1.3rem;align-items:start}
.cy-lab label {display:block;font-size:.9rem;font-weight:650;margin-bottom:.7rem}.cy-lab select {width:100%;font:inherit;padding:.5rem;border:1px solid #68818f;border-radius:5px;color:#14394a;background:white;min-height:44px}
.cy-lab input[type=range] {display:block;width:100%;min-height:32px;accent-color:#006f69}.cy-lab input[type=checkbox] {width:18px;height:18px;vertical-align:middle}
.cy-lab output {float:right;font-variant-numeric:tabular-nums}.cy-actions {display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin:.5rem 0 1rem}.cy-actions label {margin:0;flex:1;min-width:160px}
.cy-lab [data-action=train],.cy-lab [data-action=run] {background:#00685e;color:white;border-color:#00685e}.cy-lab figure {margin:.5rem 0}.cy-lab svg {width:100%;height:auto;max-height:310px;font:13px system-ui;display:block}.cy-lab figcaption,.cy-small {font-size:.8rem;line-height:1.45;color:#35556a}
.cy-lab [data-action=train]:hover:not(:disabled),.cy-lab [data-action=run]:hover:not(:disabled) {background:#00574f;color:white}
.cy-metrics {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin:.7rem 0}.cy-metrics>div {padding:.7rem;background:#edf5f4;border-radius:6px}.cy-metrics span {display:block;font-size:.76rem;line-height:1.25}.cy-metrics strong {display:block;font-size:1.3rem;font-variant-numeric:tabular-nums;margin-top:.3rem}
.cy-message {background:#fff5e7;border-left:3px solid #b65e20;padding:.8rem;margin:.7rem 0}.cy-message p {font-size:.9rem;line-height:1.5;margin:.4rem 0}.cy-message span {font-size:.75rem}
.cy-lab details {border-top:1px solid var(--ai-line);padding:.6rem 0}.cy-lab summary {cursor:pointer;min-height:36px;font-weight:700}.cy-queue {display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:1rem 0}.cy-squares {display:flex;gap:4px;flex-wrap:wrap;padding:.6rem 0}.cy-squares span {width:16px;height:16px;display:block}.cy-true {background:#006f69;border-radius:50%}.cy-false {background:#aa4c1f}.cy-trace {background:#f2f7f8;border-radius:8px;padding:1rem}.cy-trace h3 {font-size:1.1rem}.cy-trace li {margin:.6rem 0}
@media(max-width:760px) {.cy-layout,.cy-path {grid-template-columns:1fr}.cy-lab {padding:.8rem}.cy-path a {min-height:0}.cy-heading h2 {font-size:1.5rem}.cy-home {border-radius:8px}}
.ai-presentation .cy-lab {display:block;height:100vh;overflow-y:auto;padding:9px;margin:0;border:0;border-radius:0;font:12px/1.3 system-ui}
.ai-presentation .cy-heading h2 {font-size:20px;margin:0 0 6px}.ai-presentation .cy-heading>span,.ai-presentation .cy-heading>p {display:none}
.ai-presentation .cy-layout {gap:12px}.ai-presentation .cy-lab select {min-height:30px;padding:3px}.ai-presentation .cy-lab label {font-size:11px;margin-bottom:4px}.ai-presentation .cy-lab input[type=range] {min-height:24px;height:24px}
.ai-presentation .cy-lab button {min-height:30px;padding:4px 8px;font-size:11px}.ai-presentation .cy-actions {gap:5px;margin:4px 0}.ai-presentation .cy-actions label {min-width:120px}
.ai-presentation .cy-lab svg {max-height:215px}.ai-presentation .cy-lab figcaption {font-size:10px;margin:0}.ai-presentation .cy-small {display:none}.ai-presentation .cy-feedback {font-size:11px;min-height:0;margin:5px 0}
.ai-presentation .cy-metrics {margin:5px 0;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.ai-presentation .cy-metrics>div {padding:5px}.ai-presentation .cy-metrics span {font-size:10px}.ai-presentation .cy-metrics strong {font-size:17px;margin-top:2px}
.ai-presentation .cy-message {padding:5px;margin:4px 0}.ai-presentation .cy-message p {font-size:11px;line-height:1.3;margin:3px 0}.ai-presentation .cy-message span {font-size:10px}.ai-presentation .cy-lab details {padding:3px}.ai-presentation .cy-lab summary {min-height:24px;font-size:11px}.ai-presentation .cy-trace {padding:8px}.ai-presentation .cy-trace h3 {font-size:14px}.ai-presentation .cy-trace li {margin:8px 0}

.ai-presentation .cy-lab[data-lab=phishing] svg {max-height:185px}
.ai-presentation .cy-lab[data-lab=phishing] details {display:none}

/* Attack sandboxes keep controls beside their observable consequences. */
.cy-campaigns {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem;margin:1rem 0}
.cy-campaign {padding:.7rem;background:#eff6f5;border:1px solid #b0c7ce;border-radius:8px;min-width:0}
.cy-campaign strong,.cy-campaign span {display:block}.cy-campaign span {font-size:.8rem;margin:.3rem 0}
.cy-evidence {padding:.7rem;background:#edf5f4;border-left:4px solid #00766b;min-height:3rem;font-size:.9rem}
.cy-timeline {border-left:3px solid #00766b;padding-left:1.5rem}.cy-timeline li {margin:.6rem 0}
.cy-lab[data-lab=poisoning] .cy-metrics {grid-template-columns:repeat(4,minmax(0,1fr))}
.ai-presentation .cy-campaigns {gap:4px;margin:4px 0}.ai-presentation .cy-campaign {padding:4px;font-size:10px;margin:0}
.ai-presentation .cy-campaign span {font-size:10px;margin:2px 0}.ai-presentation .cy-campaign select {margin:2px 0;min-height:26px}
.ai-presentation .cy-evidence {padding:5px;font-size:11px}.ai-presentation .cy-evidence p {margin:4px 0}
.ai-presentation .cy-timeline {font-size:11px;margin:5px 0;padding-left:16px}.ai-presentation .cy-timeline li {margin:6px 0}
.ai-presentation .cy-lab[data-lab=poisoning] svg {max-height:170px}
.ai-presentation .cy-lab[data-lab=assistant] [data-injection-source] {padding:4px;margin:4px 0;font-size:11px}
@media(max-width:760px){.cy-campaigns {grid-template-columns:repeat(2,minmax(0,1fr))}.cy-lab[data-lab=poisoning] .cy-metrics {grid-template-columns:repeat(2,minmax(0,1fr))}}

.cy-campaign:has(option[value="eval"]:checked) {background:#fff3e3;border-color:#b67a3e}

.cy-demo-guide {display:flex;align-items:center;gap:.5rem;background:#e5f3ef;border-left:4px solid #00766b;padding:.65rem;margin:.5rem 0 1rem}
.cy-demo-guide p {flex:1;margin:0;font-size:.92rem;line-height:1.4}.cy-demo-guide button {flex:0 0 auto}
.cy-heading {position:relative}.cy-heading:has(.cy-mode-controls) h2 {padding-right:190px}
.cy-mode-controls {position:absolute;right:0;top:0;display:flex;gap:4px}.cy-mode-controls button[aria-pressed=true],.cy-mode-controls button[aria-pressed=true]:hover:not(:disabled) {background:#103e4d;color:white}
.cy-image-pair {display:grid;grid-template-columns:1fr 1fr;gap:1rem}.cy-image-pair figure {margin:0;background:#f2f7f8;border:1px solid #b2c7d0;border-radius:8px;padding:.6rem}
.cy-image-pair img,.cy-traffic-evidence img {display:block;width:100%;height:auto;max-height:230px;object-fit:contain}
.cy-image-pair [data-address] {font-size:.85rem;overflow-wrap:anywhere}.cy-image-evidence>p {margin:.5rem 0}
.cy-traffic-evidence dl {display:grid;grid-template-columns:1fr 1.3fr;gap:4px 12px;margin:0;font-size:.9rem}.cy-traffic-evidence dt {font-weight:700}.cy-traffic-evidence dd {margin:0;overflow-wrap:anywhere}
.ai-presentation .cy-demo-guide {padding:4px 6px;margin:4px 0 6px;min-height:34px;box-sizing:border-box}
.ai-presentation .cy-demo-guide p {font-size:11px;line-height:1.25}.ai-presentation .cy-demo-guide button {min-height:28px;padding:3px 5px;font-size:10px}
.ai-presentation .cy-heading:has(.cy-mode-controls) h2 {padding-right:160px}
.ai-presentation .cy-mode-controls button {min-height:26px;font-size:10px;padding:3px 6px}
.ai-presentation .cy-lab svg {max-height:175px}.ai-presentation .cy-lab[data-lab=poisoning] svg {max-height:145px}
.ai-presentation .cy-image-pair {gap:8px}.ai-presentation .cy-image-pair img {max-height:130px}.ai-presentation .cy-image-pair figure {padding:5px}
.ai-presentation .cy-image-evidence p,.ai-presentation .cy-image-pair [data-address] {font-size:11px;line-height:1.3}
.ai-presentation .cy-traffic-evidence img {max-height:110px}.ai-presentation .cy-traffic-evidence dl,.ai-presentation .cy-traffic-evidence p {font-size:11px;line-height:1.3}
.ai-presentation-boundary .ai-lab {grid-template-rows:75px 44px 160px 32px 1fr}
.ai-presentation-boundary .cy-demo-guide {grid-column:1/-1;grid-row:2}
.ai-presentation-boundary .ai-boundary {grid-row:3}.ai-presentation-boundary #ai-run {grid-row:4}
.ai-presentation-boundary #ai-trace {grid-row:3/6}.ai-presentation-boundary .ai-lab>p {grid-row:5}
@media(max-width:760px){.cy-demo-guide {flex-wrap:wrap}.cy-demo-guide p {flex-basis:100%}.cy-heading:has(.cy-mode-controls) h2 {padding-right:0}.cy-mode-controls {position:static;margin:.5rem 0}.cy-image-pair {grid-template-columns:1fr}}

.ai-presentation-model .ai-lab {grid-template-rows:80px 44px 46px minmax(0,1fr)}

/* Raw-input learners use the existing lab shell and reveal one inspection view at a time. */
.mod-tabs {display:flex;gap:5px;flex-wrap:wrap;margin-bottom:8px}.mod-tabs button[aria-pressed=true],.mod-tabs button[aria-pressed=true]:hover:not(:disabled){background:#103e4d;color:white}
.mod-metrics {grid-template-columns:repeat(4,minmax(0,1fr))}.mod-explain {margin-top:12px}
.ai-presentation .mod-layout {gap:10px}.ai-presentation .mod-layout svg {max-height:165px}
.ai-presentation .mod-tabs {margin-bottom:3px}.ai-presentation .mod-tabs button {font-size:10px;min-height:25px;padding:3px 5px}
.ai-presentation .mod-layout [data-mod-evaluation],.ai-presentation .mod-layout [data-mod-status] {font-size:10px;line-height:1.3;margin:4px 0}
.ai-presentation .mod-layout .cy-actions button {font-size:10px;min-height:27px;padding:3px 5px}
.ai-presentation .mod-layout label {font-size:10px;line-height:1.2}.ai-presentation .mod-layout input[type=range] {height:22px;min-height:22px}
.ai-presentation .mod-explain {display:none}
.mod-playback {display:flex;gap:5px;align-items:center;flex-wrap:wrap;margin:4px 0}.mod-playback [aria-pressed=true]{background:#103e4d;color:white}.mod-playback [data-mod-media-status]{font-size:.8rem}.mod-playback[hidden]{display:none}
.ai-presentation .mod-playback button{font-size:10px;min-height:25px;padding:3px 5px}.ai-presentation .mod-playback [data-mod-media-status]{font-size:10px}

/* Text alternatives share the live model state; opening them does not train or reset it. */
.cy-data-table {max-width:100%;overflow:auto;margin:.75rem 0;border:1px solid #657c8c;border-radius:6px}
.cy-data-table table {width:100%;border-collapse:collapse;font-size:.9rem;line-height:1.5}
.cy-data-table caption {text-align:left;padding:.65rem;font-weight:700;color:#14394a}
.cy-data-table th,.cy-data-table td {padding:.6rem;border:1px solid #a5bbc4;text-align:left;vertical-align:top;overflow-wrap:anywhere}
.cy-data-table thead {background:#e5f3ef}.cy-data-table tbody th {font-weight:600}
.ai-chart-data,.mod-data {margin:.75rem 0}.ai-chart-data>summary,.mod-data>summary {display:list-item;padding:.5rem;min-height:44px;box-sizing:border-box}
.ai-lab {scroll-margin-block:1rem}.ai-lab :focus-visible {outline:3px solid #994400;outline-offset:3px;box-shadow:0 0 0 3px white}
.ai-lab :is(button,input,select,summary,a,[tabindex]) {scroll-margin-block:1rem}
.ai-presentation .ai-chart-data {display:none}
.ai-presentation .mod-data>summary {font-size:11px;min-height:28px;padding:4px}
.ai-presentation .mod-data {margin:4px 0}.ai-presentation .cy-data-table table {font-size:12px}
.ai-presentation .mod-layout input[type=range],.ai-presentation .ai-manual input {min-height:24px;height:24px}
/* Keep the compact teaching frame, but let the standalone reading layout enlarge its charts. */
body:not(.ai-presentation) .ai-lab {container-type:inline-size}
@container (max-width:780px) {
  .cy-layout,.ai-plots {grid-template-columns:1fr}
  .cy-metrics,.mod-metrics {grid-template-columns:repeat(2,minmax(0,1fr))}
  .cy-heading:has(.cy-mode-controls) h2 {padding-right:0}
  .cy-mode-controls {position:static;margin:.5rem 0}
}
@media(prefers-reduced-motion:reduce) {.ai-lab * {animation:none!important;transition:none!important}}
.ai-full-lab {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.ai-full-lab:focus {z-index:10;top:8px;left:8px;width:auto;height:auto;clip-path:none;padding:12px;background:white;color:#14394a}
.ai-lab :is(figure,[data-mod-visual]),.cy-layout>section:has(>svg),.reading-content .stepfig {min-width:0;max-width:100%;overflow-x:auto}
@media(max-width:600px){
 body:not(.ai-presentation) .ai-lab svg {min-width:480px;max-height:none}
 .reading-content .stepfig svg {min-width:640px;max-height:none}
 .ai-presentation {overflow:auto}
 .ai-presentation .ai-lab {display:block;height:auto;min-height:100dvh;padding:12px;font:16px/1.5 system-ui}
 .ai-presentation .cy-layout {grid-template-columns:1fr}
 .ai-presentation :is(.ai-controls,.ai-metrics,.ai-actions,.ai-probe,.cy-metrics) {margin:12px 0}
 .ai-presentation .ai-controls {grid-template-columns:1fr}
 .ai-presentation .ai-teaching nav {flex-wrap:wrap;gap:8px}
 .ai-presentation :is(button,select,summary) {min-height:44px;height:auto;font-size:16px}
 .ai-presentation :is(label,.cy-feedback,.ai-teaching p,#ai-status,.ai-metrics span,.cy-metrics span,[data-mod-evaluation],[data-mod-status]) {font-size:16px;line-height:1.5}
 .ai-presentation :is(input[type=range],.ai-manual input) {height:32px;min-height:32px}
 .ai-presentation .ai-plots figure {height:auto}.ai-presentation .ai-plots svg {height:auto;min-width:480px;flex:none}
 .ai-presentation .ai-probe {overflow:visible}.ai-presentation .ai-manual #ai-parameters {grid-template-columns:1fr}
}
.cy-layout>section {min-width:0}
/* Give full experiments room for readable charts beside their controls. Lecture prose keeps its outline. */
@media(min-width:85rem){
 .workspace:has(.ai-lab):not(:has(.cy-lecture)) {grid-template-columns:15.5rem minmax(0,1fr)}
 .workspace:has(.ai-lab):not(:has(.cy-lecture)) .page-outline {display:none}
}
.ai-presentation [data-teaching-step="1"] .ai-probe {padding:5px}
.cy-data-table table {min-width:36rem}

/* The same story is readable without the fixed presentation artboard. */
.reading-content .story-board {display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0;line-height:1.5}
.reading-content .story-board article {padding:20px;border-radius:12px;background:#e2f1ee;min-width:0}
.reading-content .story-board h2,.reading-content .story-board h3 {margin:0 0 12px;color:inherit;font-size:1.3rem}
.reading-content .story-board .story-dark {background:#12394c;color:#fff}
.reading-content .story-board .story-label {font-size:.8rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.reading-content .story-board .story-big {font-size:2.6rem;line-height:1.1;font-weight:750}
.reading-content .story-board .story-question {grid-column:1/-1;margin:0;padding:14px 18px;background:#fff0db;border-left:5px solid #a45a13;color:#173e50}
.reading-content .story-board svg {width:100%;height:auto}
@media(max-width:800px) {.reading-content .story-board {grid-template-columns:1fr}}

.reading-content .lecture-thread {font-size:.85rem;font-weight:700;color:#345865;margin:20px 0 10px}
.reading-content .lecture-check {border:1px solid #a45a13;border-radius:8px;background:#fff4e4;color:#173e50;margin:12px 0 24px}
.reading-content .lecture-check summary {box-sizing:border-box;min-height:44px;padding:12px 16px;font-weight:650;cursor:pointer}
.reading-content .lecture-answer {padding:0 16px 12px;margin:0}
.reading-content .lecture-check summary:focus-visible {outline:3px solid #a94b00;outline-offset:2px}
.reading-content .lecture-check[open] .lecture-answer {animation:lecture-reveal .22s ease-out}
@keyframes lecture-reveal {from {opacity:0;transform:translateY(6px)} to {opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce) {.reading-content .lecture-check[open] .lecture-answer {animation:none}}

/* ==== algo- interactive computations (student/app/algos/demos.mjs) ==== */
.algo-demo {--algo-accent:#1d3a5c;--algo-accent-soft:#e3e9f0;--algo-activity:#8a3b22;--algo-activity-soft:#f3e6df;--algo-muted:#5b6770;--algo-rule:#d5dbe1;--algo-attack:#a33a22;--algo-attack-soft:#f9e7df;--algo-benign:#6f8fb0;--algo-ok:#24664e;--algo-ok-soft:#e7f2ed;--algo-focus:#a86f00;--algo-focus-soft:#fbf1dc;--algo-panel:#f4f6f8;--algo-grid:#eef1f4;--algo-node:#9aa5ae;--algo-ink:#1b1f24;--algo-fade:.35s ease;--algo-move:.55s cubic-bezier(.2,.7,.2,1);
  margin:1.5rem 0;min-width:0;max-width:100%;color:var(--algo-ink);}
.algo-fig {margin:0;padding:12px;display:grid;gap:10px;min-width:0;border:1px solid var(--algo-rule);border-radius:10px;background:#fff;}
.algo-head {display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 16px;font-size:.95rem;line-height:1.35;}
.algo-q b {color:var(--algo-accent);margin-right:.35em;}
.algo-count {color:var(--algo-muted);font-size:.82rem;font-variant-numeric:tabular-nums;}
.algo-body {display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:14px;align-items:start;}
.algo-stage {display:grid;gap:6px;min-width:0;}
.algo-svg {display:block;width:100%;height:auto;font-family:system-ui,-apple-system,"Segoe UI",sans-serif;}
.algo-side {display:grid;gap:10px;min-width:0;align-content:start;}
.algo-tex,.algo-live {min-width:0;overflow-x:auto;overflow-y:hidden;}
.algo-tex .katex-display,.algo-live .katex-display {margin:.25em 0;}
.algo-live {font-size:.9em;min-height:2.4em;padding:2px 8px;border-radius:6px;background:var(--algo-focus-soft);}
.algo-live:empty {display:none;}
.algo-stats {display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:0;}
.algo-stats div {min-width:0;padding:6px 8px;border-radius:6px;background:var(--algo-panel);}
.algo-stats dt {font-size:.75rem;color:var(--algo-muted);}
.algo-stats dd {margin:0;font-size:1.02rem;font-weight:700;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;}
.algo-extra {display:grid;gap:6px;min-width:0;}
.algo-legend {display:flex;flex-wrap:wrap;gap:4px 14px;margin:0;padding:0;list-style:none;font-size:.8rem;color:var(--algo-muted);}
.algo-legend li {display:inline-flex;align-items:center;gap:5px;margin:0;}
.algo-legend svg {width:14px;height:14px;flex:none;overflow:visible;}
.algo-controls {display:flex;flex-wrap:wrap;align-items:center;gap:8px;}
.algo-btn {font:inherit;font-weight:650;min-width:76px;min-height:44px;padding:.5rem .9rem;border:1px solid #456271;border-radius:7px;background:#fff;color:var(--algo-accent);cursor:pointer;}
.algo-btn:first-child {background:var(--algo-accent);border-color:var(--algo-accent);color:#fff;}
.algo-btn:hover:not(:disabled) {background:#e5f2ef;color:var(--algo-accent);}
.algo-btn:first-child:hover:not(:disabled) {background:#2b4f78;color:#fff;}
.algo-btn[aria-pressed="true"] {background:var(--algo-focus-soft);border-color:var(--algo-focus);}
.algo-btn:disabled {opacity:.45;cursor:default;}
.algo-select {display:flex;align-items:center;gap:8px;margin-left:auto;font-size:.9rem;}
.algo-select select {font:inherit;min-height:44px;min-width:0;padding:.4rem .5rem;border:1px solid #657c8c;border-radius:7px;background:#fff;color:var(--algo-ink);}
.algo-demo :focus-visible {outline:3px solid var(--algo-focus);outline-offset:2px;}
.algo-cap {margin:0;min-height:3em;padding:8px 12px;border-left:3px solid var(--algo-accent);background:var(--algo-panel);font-size:.95rem;line-height:1.45;}
.algo-range {display:grid;grid-template-columns:auto 1fr 3.2em;align-items:center;gap:8px;font-size:.9rem;}
.algo-range input {width:100%;min-width:0;height:32px;accent-color:var(--algo-accent);}
.algo-range output {font-weight:700;font-variant-numeric:tabular-nums;text-align:right;}
.algo-bar {position:relative;height:18px;border:1.5px solid var(--algo-accent);border-radius:3px;background:#fff;overflow:hidden;}
.algo-bar-fill {position:absolute;inset:0 auto 0 0;width:0;background:var(--algo-benign);transition:width var(--algo-move),background-color var(--algo-fade);}
.algo-bar-fill.is-attack {background:var(--algo-attack);}
.algo-bar-thr {position:absolute;top:0;bottom:0;left:50%;width:2px;margin-left:-1px;background:var(--algo-ink);}
.algo-bar-ticks {display:flex;justify-content:space-between;font-size:.75rem;color:var(--algo-muted);}
/* SVG marks (same roles as the slides' rd- classes) */
.algo-svg text {fill:var(--algo-ink);}
.algo-svg .algo-tick {font-size:12px;fill:var(--algo-muted);}
.algo-t10 {font-size:10px;} .algo-t11 {font-size:11px;} .algo-t13 {font-size:13px;} .algo-t15 {font-size:15px;}
.algo-svg .algo-muted {fill:var(--algo-muted);} .algo-b {font-weight:700;}
.algo-svg .algo-attack-ink {fill:var(--algo-attack);} .algo-svg .algo-benign-ink {fill:var(--algo-benign);} .algo-svg .algo-accent-ink {fill:var(--algo-accent);} .algo-svg .algo-focus-ink {fill:#7a5200;}
.algo-svg .algo-on-dark {fill:#fff;}
.algo-halo {paint-order:stroke;stroke:#fff;stroke-width:3.5px;stroke-linejoin:round;}
.algo-on-dark.algo-halo {stroke:none;}
.algo-axis {fill:none;stroke:var(--algo-muted);stroke-width:1.5;}
.algo-grid {stroke:var(--algo-grid);stroke-width:1;}
.algo-frame {fill:#fff;stroke:var(--algo-rule);}
.algo-fade {opacity:0;transition:opacity var(--algo-fade);}
.algo-fade.is-on {opacity:1;}
.algo-move {transition:transform var(--algo-move),opacity var(--algo-fade);}
.algo-geo {transition:y var(--algo-move),height var(--algo-move),width var(--algo-move),opacity var(--algo-fade);}
.algo-cell0 {fill:var(--algo-accent-soft);} .algo-cell1 {fill:var(--algo-ok-soft);} .algo-cell2 {fill:var(--algo-activity-soft);}
.algo-cell0.is-on,.algo-cell1.is-on,.algo-cell2.is-on {opacity:.85;}
.algo-ring {fill:none;stroke-width:1.75;stroke-dasharray:5 4;}
.algo-focus {fill:none;stroke:var(--algo-focus);stroke-width:2.5;}
.algo-seg {stroke:var(--algo-focus);stroke-width:2.5;}
.algo-x {fill:none;stroke-width:4;stroke-linecap:round;} .algo-x-halo {fill:none;stroke:#fff;stroke-width:8;stroke-linecap:round;}
.algo-query {fill:#fff;stroke:var(--algo-accent);stroke-width:2;transition:fill var(--algo-fade),stroke var(--algo-fade);}
.algo-query.is-attack {fill:var(--algo-attack);stroke:var(--algo-attack);}
.algo-unl {fill:#fff;stroke:var(--algo-node);stroke-width:1.5;}
.algo-mark-benign {fill:var(--algo-benign);}
.algo-mark-attack {fill:none;stroke:var(--algo-attack);stroke-width:2.5;stroke-linecap:round;}
.algo-mark-false {fill:#fff;stroke:var(--algo-benign);stroke-width:2;}
.algo-region-attack {fill:var(--algo-attack-soft);}
.algo-boundary {fill:none;stroke:var(--algo-accent);stroke-width:2.5;stroke-linejoin:round;}
.algo-trail {stroke:var(--algo-node);stroke-width:1.5;stroke-dasharray:6 5;}
.algo-trail.is-on {opacity:.9;}
.algo-cellbox {fill:var(--algo-panel);stroke:var(--algo-rule);stroke-width:1;transition:fill var(--algo-fade);}
.algo-cellbox.is-start {stroke:var(--algo-accent);stroke-width:2.5;}
.algo-hatch {stroke:var(--algo-node);stroke-width:1.5;}
.algo-path {fill:none;stroke:var(--algo-focus);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;opacity:0;}
.algo-path.is-on {stroke-dashoffset:0;opacity:1;transition:stroke-dashoffset 1.1s ease,opacity .2s ease;}
.algo-curve-benign {fill:none;stroke:var(--algo-benign);stroke-width:2;} .algo-curve-attack {fill:none;stroke:var(--algo-attack);stroke-width:2;}
.algo-tail-benign {fill:var(--algo-benign);opacity:.25;} .algo-tail-attack {fill:var(--algo-attack);opacity:.22;}
.algo-thr {stroke:var(--algo-ink);stroke-width:2;}
.algo-deckpt {fill:#fff;stroke:var(--algo-muted);stroke-width:1.5;}
.algo-marker {fill:var(--algo-focus);stroke:#fff;stroke-width:2;}
.algo-band {fill:var(--algo-accent-soft);} .algo-band.is-on {opacity:.9;}
.algo-mean {stroke:var(--algo-accent);stroke-width:2;}
.algo-shared {fill:var(--algo-focus-soft);stroke:var(--algo-focus);stroke-width:1.5;stroke-dasharray:4 3;}
.algo-whisker {fill:none;stroke:var(--algo-ink);stroke-width:2;}
.algo-slots {fill:none;stroke:var(--algo-accent);stroke-width:2;} .algo-rest {fill:none;stroke:var(--algo-muted);stroke-width:1.5;stroke-dasharray:5 4;}
@media(max-width:720px) {.algo-body {grid-template-columns:minmax(0,1fr);} .algo-select {margin-left:0;flex:1 1 100%;} .algo-select select {flex:1;}}
@media(prefers-reduced-motion:reduce) {.algo-demo *,.algo-demo svg * {transition:none!important;animation:none!important;}}
/* ==== end algo- interactive computations ==== */
/* Display maths (\[ … \]) scrolls inside its own box on narrow screens instead of widening the page. */
.math-display {overflow-x:auto;overflow-y:hidden;max-width:100%;}
/* ==== Part pages and course hubs ==== */
.cy-path-four {grid-template-columns:repeat(2,minmax(0,1fr))}
.part-open {padding:clamp(1rem,3vw,2rem);background:#102e42;color:#fff;border-radius:12px;border-top:5px solid #58d3ba;margin:0 0 2rem}
.part-open p {color:#fff;max-width:none}
.part-open a {color:#b9f1e2}
.part-open h2 {color:#fff!important;font-size:1.05rem;margin:0 0 .4rem}
.part-open ul {margin:0;padding-left:1.1rem}
.part-open .part-question {font-size:clamp(1.4rem,3vw,2.1rem);font-weight:700;line-height:1.2;margin:.5rem 0 .7rem;max-width:30ch}
.part-open-grid {display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:1.5rem;margin:1.2rem 0}
.part-route {display:flex;flex-wrap:wrap;gap:.35rem .5rem;align-items:center;margin:0}
.part-route a {display:inline-flex;align-items:center;min-height:32px;padding:.15rem .6rem;border:1px solid #58d3ba;border-radius:999px;text-decoration:none;font-size:.9rem}
.part-route a:hover {background:#1a4560}
.part-open :focus-visible {outline-color:#ffd08a}
.reading-content h3:has(+.slide-jump) {margin-bottom:.15rem}
.slide-jump {margin:0 0 .8rem;font-size:.9rem;color:#355569}
.part-answer {max-width:74ch;padding:.8rem 1rem;background:#e4f3ee;border-left:4px solid #00766b;border-radius:0 6px 6px 0}
.part-pager {display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;margin-top:2rem;padding-top:1rem;border-top:1px solid #c4cfd5}
.part-pager a {min-height:44px;padding:.5rem 0}
.part-pager [rel=next] {margin-left:auto;text-align:right}
.reading-content video {display:block;width:100%;max-width:60rem;height:auto;background:#102e42;border-radius:8px;margin:1rem 0}
.video-pending {max-width:74ch;padding:.8rem 1rem;background:#fff4e4;border-left:4px solid #a45a13}
@media(max-width:760px) {.cy-path-four,.part-open-grid {grid-template-columns:1fr}}
/* ==== end Part pages ==== */

/* Presentation mode: site chrome hidden, one section or exercise per screen, sized for a projector. */
.pm-start {float:right;margin:0 0 .5rem 1rem;padding:.35rem .9rem;border:1px solid var(--link);border-radius:6px;background:transparent;color:var(--link);font:inherit;font-weight:650;cursor:pointer}
.pm-start:hover {background:var(--link);color:var(--paper)}
.pm-off {display:none!important}
.pm-bar {position:fixed;inset:auto 0 0;z-index:30;display:flex;gap:.6rem;align-items:center;padding:.5rem 1rem;background:var(--paper);border-top:1px solid var(--line)}
.pm-bar[hidden] {display:none}
.pm-bar p {flex:1;min-width:0;margin:0;overflow:hidden;color:var(--muted);text-align:center;text-overflow:ellipsis;white-space:nowrap}
.pm-bar button {min-height:44px;padding:0 1rem;border:1px solid var(--link);border-radius:6px;background:var(--paper);color:var(--link);font:inherit;font-weight:650;cursor:pointer}
.pm-bar button:disabled {opacity:.4;cursor:default}
body.present .site-header,body.present .section-navigation,body.present .page-outline,body.present main>footer,body.present .breadcrumbs,body.present .pm-start {display:none}
body.present .workspace {display:block;max-width:none;padding:0}
body.present main {border:0;padding:1rem 1.5rem 5rem}
body.present .reading-content {max-width:min(1280px,100%);margin:0 auto;font-size:clamp(1.1rem,1.7vw,1.6rem);line-height:1.5}
body.present .reading-content img {max-height:68vh;width:auto;max-width:100%}
body.present .reading-content:has(.ex-part)>:not(.ex-part) {display:none}
body.present .ex-part {max-width:none}
body.present .ex-card {margin-top:.75rem}
