/* Lecture canvas: designed for ordinary laptop browser windows. */
:root {
  --lecture-width:1280px;
  --lecture-height:720px;
  --lecture-title:32px;
  --lecture-body:20px;
  --lecture-gap:24px;
  --lecture-plot:260px;
}
@media screen and (min-width:1025px) {
  .course-body:not(.reading) {grid-template-rows:52px minmax(0,1fr) 44px;}
  .course-body:not(.reading) .app-header {padding:0 20px;gap:16px;}
  .course-body:not(.reading) .brand {font-size:13px;}
  .course-body:not(.reading) .brand-mark {width:29px;height:29px;font-size:20px;}
  .course-body:not(.reading) .chapter-nav button {padding:0 9px;font-size:14px;}
  .course-body:not(.reading) .app-actions {font-size:13px;}
  .course-body:not(.reading) .app-actions button,
  .course-body:not(.reading) .app-actions a {padding:8px 6px;}
  .course-body:not(.reading) #lesson {padding:12px 16px;align-items:center;}
  .course-body:not(.reading) .lesson-page {width:min(var(--lecture-width),100%);height:100%;max-height:var(--lecture-height);align-self:center;}
  .course-body:not(.reading) .page-surface {padding:20px 28px 16px;min-height:100%;}
  .course-body:not(.reading) .page-heading {position:relative;}
  .course-body:not(.reading) .page-heading>.eyebrow {position:absolute;right:0;top:9px;font-size:13px;line-height:1.5;gap:8px;}
  .course-body:not(.reading) .page-heading h2 {font-size:var(--lecture-title);line-height:1.28;letter-spacing:-.02em;margin:0 128px 6px 0;}
  .course-body:not(.reading) .page-intro {font-size:18px;line-height:1.5;}
  .course-body:not(.reading) .lesson-layout {padding:14px 0;gap:var(--lecture-gap);}
  .course-body:not(.reading) .layout-split .lesson-layout {grid-template-columns:minmax(0,1.42fr) minmax(0,1fr);}
  .course-body:not(.reading) .lesson-visual {height:auto;gap:8px;}
  .course-body:not(.reading) .layout-focus .lesson-layout {display:flex;flex-direction:column;justify-content:center;align-items:stretch;}
  .course-body:not(.reading) .layout-focus .lesson-visual {height:auto;}
  .course-body:not(.reading) .key-points {gap:18px;}
  .course-body:not(.reading) .point h3 {font-size:21px;line-height:1.35;margin-bottom:6px;}
  .course-body:not(.reading) .point p {font-size:var(--lecture-body);line-height:1.55;}
  .course-body:not(.reading) .no-visual .key-points {gap:32px;}
  .course-body:not(.reading) .no-visual .point {padding:18px 0;}
  .course-body:not(.reading) .no-visual .point h3 {font-size:25px;margin-bottom:14px;}
  .course-body:not(.reading) .no-visual .point p {font-size:21px;line-height:1.7;}
  .course-body:not(.reading) .layout-table .lesson-layout {gap:18px;align-content:center;}
  .course-body:not(.reading) .layout-table .point h3 {font-size:19px;}
  .course-body:not(.reading) .layout-table .point p {font-size:18px;line-height:1.5;}
  .course-body:not(.reading) .lesson-takeaway {padding-top:10px;display:block;}
  .course-body:not(.reading) .lesson-takeaway>p {font-size:20px;line-height:1.5;max-width:none;}
  .course-body:not(.reading) .page-foot {display:none;}
  .course-body:not(.reading) .page-tools {position:fixed;right:18px;bottom:3px;z-index:var(--z-header);height:38px;align-items:center;gap:6px;margin:0;}
  .course-body:not(.reading) .page-tools button {font-size:13px;padding:7px 10px;min-height:32px;background:white;}
  .course-body:not(.reading) .page-tools button:hover {background:var(--cloud);}
  .course-body:not(.reading) .app-footer {padding:0 20px;}
  .course-body:not(.reading) .footer-help {display:none;}
  .course-body:not(.reading) .footer-section {width:310px;font-size:12px;}
  .course-body:not(.reading) .page-navigation {position:absolute;left:50%;transform:translateX(-50%);gap:18px;font-size:13px;height:100%;}
  .course-body:not(.reading) #page-count {font-size:15px;}
  .course-body:not(.reading) .chart {max-height:var(--lecture-plot);}
  .course-body:not(.reading) .layout-split .chart text {font-size:28px;}
  .course-body:not(.reading) .layout-split .chart text.value {font-size:30px;}
  .course-body:not(.reading) .plot-controls {gap:10px 14px;align-items:center;margin:0;}
  .course-body:not(.reading) .plot-controls label {flex-direction:row;align-items:center;gap:7px;font-size:16px;}
  .course-body:not(.reading) .plot-controls select {font-size:16px;padding:6px 9px;max-width:215px;}
  .course-body:not(.reading) .plot-controls .check {padding:5px 0;}
  .course-body:not(.reading) .plot-controls input[type=range] {width:150px;height:28px;}
  .course-body:not(.reading) .reset-plot,
  .course-body:not(.reading) .plot-controls>button {padding:7px 10px;font-size:14px;}
  .course-body:not(.reading) .plot-status,
  .course-body:not(.reading) .plot-inspect {font-size:16px;line-height:1.5;margin-top:4px;}
  .course-body:not(.reading) .plot-inspect {margin:0;padding:7px 12px;}
  .course-body:not(.reading) .plot-appendix {margin-top:5px;font-size:15px;}
  .course-body:not(.reading) .plot-appendix summary {padding:4px 0;}
  .course-body:not(.reading) .visual-table {font-size:18px;line-height:1.5;}
  .course-body:not(.reading) .visual-table th {font-size:16px;}
  .course-body:not(.reading) .visual-table th,
  .course-body:not(.reading) .visual-table td {padding:8px 12px;}
  .course-body:not(.reading) .raw-table {font-size:16px;line-height:1.5;}
  .course-body:not(.reading) .raw-table td,
  .course-body:not(.reading) .raw-table th {padding:8px 12px;}
  .course-body:not(.reading) .concept-diagram {gap:10px;}
  .course-body:not(.reading) .concept-diagram>div {padding:12px 16px;}
  .course-body:not(.reading) .concept-diagram strong {font-size:21px;}
  .course-body:not(.reading) .concept-diagram span {font-size:15px;}
  .course-body:not(.reading) .concept-diagram p {font-size:18px;line-height:1.5;margin-top:4px;}
  .course-body:not(.reading) .agenda-list {gap:6px 22px;}
  .course-body:not(.reading) .agenda-list>div {padding:10px 0;}
  .course-body:not(.reading) .agenda-list b {font-size:18px;}
  .course-body:not(.reading) .dataset-comparison th:not(:first-child),
  .course-body:not(.reading) .dataset-comparison td:not(:first-child) {text-align:center;}
  .course-body:not(.reading) .dataset-comparison td:first-child {color:var(--muted);}
  .course-body:not(.reading) .balance-track {height:54px;}
  .course-body:not(.reading) .balance-track>div {font-size:20px;}
  .course-body:not(.reading) .giant-stat {font-size:76px;line-height:1.2;margin:8px 0;}
  .course-body:not(.reading) .giant-stat small {font-size:32px;}
  .course-body:not(.reading) .sample-account {gap:12px 24px;font-size:16px;padding:2px 0 6px;}
  .course-body:not(.reading) .sample-account b {font-size:22px;}
  .course-body:not(.reading) .before-after {gap:24px;}
  .course-body:not(.reading) .before-after h3 {font-size:21px;margin-bottom:6px;}
  .course-body:not(.reading) .before-after .chart {max-height:240px;}
  .course-body:not(.reading) .historical-layout {gap:28px;}
  .course-body:not(.reading) .historical-layout img {height:210px;}
  .course-body:not(.reading) .historical-layout p {font-size:19px;line-height:1.6;margin-top:12px;}
  .course-body:not(.reading) .historical-layout h3 {font-size:22px;margin-bottom:10px;}
  .course-body:not(.reading) .historical-layout figcaption {font-size:14px;}
  .course-body:not(.reading) .worked-record {padding:18px 22px;}
  .course-body:not(.reading) .worked-record p {font-size:19px;line-height:1.6;}
  .course-body:not(.reading) .equations {font-size:28px;gap:16px;padding:10px;}
  .course-body:not(.reading) .probability-work {font-size:24px;line-height:1.8;padding:6px 18px;}
  .course-body:not(.reading) .probability-work strong {font-size:32px;}
  .course-body:not(.reading) .loss-calculation h3 {font-size:21px;margin-bottom:8px;}
  .course-body:not(.reading) .loss-calculation p {font-size:20px;line-height:1.65;}
  .course-body:not(.reading) .loss-calculation h3:not(:first-child) {margin-top:12px;}
  .course-body:not(.reading) .loss-formula {font-size:24px;margin-top:14px;}
  .course-body:not(.reading) .odds-layout h3,
  .course-body:not(.reading) .regularization-layout h3 {font-size:22px;}
  .course-body:not(.reading) .odds-layout section>p,
  .course-body:not(.reading) .regularization-layout p {font-size:19px;line-height:1.6;}
  .course-body:not(.reading) .code-lesson {grid-template-columns:minmax(0,1.36fr) minmax(0,1fr);gap:28px;}
  .course-body:not(.reading) .code-lesson .code-preview {font-size:16px;line-height:1.45;padding:16px;}
  .course-body:not(.reading) .code-reading h3 {font-size:22px;margin-bottom:12px;}
  .course-body:not(.reading) .code-reading p {font-size:18px;line-height:1.55;margin-top:9px;}
  .course-body:not(.reading) .code-reading small {font-size:16px;line-height:1.5;color:var(--muted);}
  .course-body:not(.reading) .threshold-main {grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:30px;}
  .course-body:not(.reading) .matrix {font-size:15px;border-spacing:4px;}
  .course-body:not(.reading) .matrix caption {font-size:17px;line-height:1.5;margin-bottom:10px;}
  .course-body:not(.reading) .matrix th {font-size:15px;line-height:1.4;}
  .course-body:not(.reading) .matrix td {padding:8px;font-size:15px;line-height:1.4;}
  .course-body:not(.reading) .matrix td b {font-size:34px;line-height:1.15;margin-top:5px;}
  .course-body:not(.reading) .threshold-analysis {min-width:0;display:flex;flex-direction:column;gap:10px;}
  .course-body:not(.reading) .metric-stack {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}
  .course-body:not(.reading) .metric-stack>div {font-size:14px;line-height:1.4;}
  .course-body:not(.reading) .metric-stack b {font-size:27px;line-height:1.2;margin-top:5px;}
  .course-body:not(.reading) .passenger-decision {grid-column:auto;display:block;padding:10px 14px;font-size:16px;line-height:1.6;}
  .course-body:not(.reading) .passenger-decision strong {font-size:18px;}
  .course-body:not(.reading) .decision-result {margin:0;}
  .course-body:not(.reading) .threshold-analysis .chart {max-height:90px;}
  .course-body:not(.reading) .calibration-layout {gap:26px;}
  .course-body:not(.reading) .calibration-layout .chart {max-height:270px;}
  .course-body:not(.reading) .leak-summary {font-size:26px;padding:14px 0;}
  .course-body:not(.reading) .assignment-links {gap:9px;}
  .course-body:not(.reading) .assignment-links a {font-size:20px;padding:10px 0;}
  .course-body:not(.reading) .cover {padding:0;min-height:100%;}
  .course-body:not(.reading) .cover-copy {padding:36px 48px;}
  .course-body:not(.reading) .cover h1 {font-size:88px;margin-top:40px;}
  .course-body:not(.reading) .cover h2 {font-size:34px;}
  .course-body:not(.reading) .cover-copy>p:not(.eyebrow) {font-size:19px;}
  .course-body:not(.reading) .cover-bottom {font-size:17px;padding-top:26px;}
  .course-body:not(.reading) .cover-bottom span {font-size:15px;}
}
@media screen and (min-width:1025px) and (max-height:700px) {
  :root {--lecture-plot:220px;--lecture-gap:24px;}
  .course-body:not(.reading) .page-surface {padding:16px 24px 12px;}
  .course-body:not(.reading) .page-heading h2 {font-size:30px;margin-bottom:5px;}
  .course-body:not(.reading) .page-heading>.eyebrow {top:7px;}
  .course-body:not(.reading) .page-intro {font-size:17px;line-height:1.45;}
  .course-body:not(.reading) .lesson-layout {padding:10px 0;}
  .course-body:not(.reading) .key-points {gap:14px;}
  .course-body:not(.reading) .point h3 {font-size:20px;margin-bottom:5px;}
  .course-body:not(.reading) .point p {font-size:20px;line-height:1.5;}
  .course-body:not(.reading) .layout-table .point p {font-size:18px;}
  .course-body:not(.reading) .visual-table td,
  .course-body:not(.reading) .visual-table th {padding:5px 11px;}
  .course-body:not(.reading) .raw-table td,
  .course-body:not(.reading) .raw-table th {padding:6px 10px;}
  .course-body:not(.reading) .plot-status {line-height:1.45;}
  .course-body:not(.reading) .before-after .chart {max-height:210px;}
  .course-body:not(.reading) .calibration-layout .chart {max-height:240px;}
  .course-body:not(.reading) .concept-diagram>div {padding:10px 14px;}
  .course-body:not(.reading) .concept-diagram p {font-size:18px;}
  .course-body:not(.reading) .historical-layout img {height:180px;}
  .course-body:not(.reading) .historical-layout figcaption {line-height:1.5;}
  .course-body:not(.reading) .historical-layout p {font-size:18px;}
  .course-body:not(.reading) .worked-record p {font-size:18px;}
  .course-body:not(.reading) .worked-record p+p {margin-top:6px;}
  .course-body:not(.reading) .equations {font-size:26px;gap:14px;}
  .course-body:not(.reading) .code-lesson .code-preview {font-size:16px;line-height:1.35;padding:12px;}
  .course-body:not(.reading) .code-reading p {font-size:18px;line-height:1.45;margin-top:7px;}
  .course-body:not(.reading) .loss-calculation p {font-size:19px;}
  .course-body:not(.reading) .loss-formula {font-size:22px;margin-top:10px;}
  .course-body:not(.reading) .cover-copy {padding:28px 44px;}
  .course-body:not(.reading) .cover h1 {font-size:80px;margin-top:28px;}
  .course-body:not(.reading) .cover h2 {font-size:32px;margin:12px 0 18px;}
  .course-body:not(.reading) .cover-bottom {padding-top:18px;}
}
/* Explicit native controls also remain comfortable on touch-enabled laptops. */
@media (pointer:coarse) {
  .page-tools button,.app-actions button,.plot-controls select,.reset-plot {min-height:44px;}
}
/* Knowledge dialogs fit the same ordinary viewport rather than a large monitor. */
#plot-dialog {width:min(1200px,96vw);}
#code-dialog {width:min(1180px,96vw);padding:20px;}
#code-dialog .dialog-heading {margin-bottom:10px;}
#code-dialog .dialog-heading h2 {font-size:23px;}
#code-dialog .kernel-bar {margin-bottom:10px;padding:8px 0;}
#code-dialog .session-scope {margin-bottom:10px;}
#code-dialog .cell-heading h3 {font-size:21px;}
#code-dialog .cell-note {font-size:16px;margin:7px 0 12px;}
#code-dialog .cell-editor textarea {height:clamp(220px,43dvh,340px);}
#code-dialog .cell-output {max-height:clamp(260px,53dvh,420px);overflow:auto;}
#code-dialog .cell-toolbar {margin:0 0 10px;}
#code-dialog .cell-action-status {min-height:0;}
.lab-main {max-width:1200px;}
.lab-body .cell-heading h3 {font-size:22px;}
.lab-body .cell-editor textarea {height:340px;}
.lab-body .cell-toolbar {margin:0 0 12px;}
@media(max-width:1024px) {
  .threshold-analysis {display:flex;flex-direction:column;gap:18px;min-width:0;}
  .threshold-main {grid-template-columns:1fr 1fr;}
  .threshold-analysis .passenger-decision {display:block;}
  .threshold-analysis .chart {max-height:105px;}
}
@media(max-width:600px) {
  #code-dialog {padding:16px;}
  #code-dialog .cell-editor textarea {height:300px;}
  .threshold-main {display:flex;flex-direction:column;}
  .threshold-analysis .chart {max-height:none;}
  .threshold-analysis .passenger-decision {font-size:17px;}
  .dataset-comparison {min-width:500px;}
}
@media print {
  .course-body .page-tools {display:none!important;}
  .threshold-analysis {min-width:0;}
  .threshold-analysis .metric-stack {display:flex;flex-direction:row;gap:16px;}
}
#code-dialog #embedded-cell:fullscreen .cell-editor textarea {height:65dvh;}
#code-dialog #embedded-cell:fullscreen .cell-output {max-height:75dvh;}
.lab-main {margin-top:22px;}
.lab-hero {padding:24px 28px;}
.lab-hero h1 {font-size:28px;margin:0 0 10px;}
.lab-hero p {font-size:17px;line-height:1.7;max-width:100%;}
.lab-downloads {margin-top:14px;font-size:15px;gap:14px 22px;}
@media(max-width:600px) {.lab-hero {padding:22px 20px;}.lab-hero h1 {font-size:26px;}}
@media print {
  .threshold-main {display:grid;grid-template-columns:1fr 1fr;gap:20px;}
  .threshold-analysis .metric-stack {display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
  .threshold-analysis .passenger-decision {font-size:14px;padding:10px;}
  .threshold-analysis .chart {max-height:100px;}
}
