.reveal .slides section {
    text-align: left;
}

.reveal .controls .controls-arrow {
    color: #B15A2B;
}

.reveal .progress span {
    background: #B15A2B;
}

.reveal .text-blue {
    color: #B15A2B !important;
}

.reveal .text-red {
    color: #E62727 !important;
}

.reveal .text-light {
    color: #666 !important;
}

.reveal .text-center {
    text-align: center !important;
}

.reveal .bg-light {
    background-color: #F7EFE6 !important;
}

.reveal .text-purple {
    color: #7B5EA7 !important;
}

.reveal .text-green {
    color: #2E7D32 !important;
}

.reveal .text-orange {
    color: #C2610F !important;
}

.reveal .text-teal {
    color: #B15A2B !important;
}

.reveal a {
    color: #B15A2B;
}

.reveal ul,
.reveal ol {
    padding-left: 1rem;
    line-height: 1.4em;
    margin-top: 0.3em;
    margin-bottom: 0.3em;
}

.reveal ul ul,
.reveal ol ol,
.reveal ul ol,
.reveal ol ul {
    font-size: 0.9em;
}

.reveal .footer {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    text-align: left;
    font-size: 1rem;
    color: #888;
}

/* Hide footer when the first slide is showing */
.reveal section:first-of-type.present~.footer {
    display: none;
}

.reveal .keyword {
    color: #2F3E7A;
    font-weight: 700;
}

.reveal .inline-code {
    font-family: 'Courier New', Courier, monospace;
    background-color: #f4f4f4;
    padding: 2px 4px;
    border-radius: 4px;
    /* font-weight: bold; */
    text-transform: none !important;
}

.reveal .slide-badge-row {
    text-align: right;
    margin: 0 0 0.35em;
}

.reveal .self-study-badge {
    display: inline-block;
    background: #90A4AE;
    color: white;
    font-size: 0.42em;
    padding: 3px 10px;
    border-radius: 16px;
    font-weight: 600;
}

.reveal .advanced-badge {
    display: inline-block;
    background: #7B5EA7;
    color: white;
    font-size: 0.42em;
    padding: 3px 10px;
    border-radius: 16px;
    font-weight: 600;
}

/* Trang tiêu đề mạch: section.strand-title > div.strand-title-body
   (h2 > span.strand-number + tên mạch, p.strand-lead, p.strand-keys).
   Chép từ ../rl-plan/2627-1/lecture-slide.css ngày 2026-10-14. */
.reveal .slides section.strand-title {
    text-align: left;
}

.reveal .slides section.strand-title .strand-title-body {
    max-width: 26em;
    margin: 0;
    padding: .2em 0 .2em .9em;
    border-left: .2em solid #B15A2B;
}

/* Deck đặt center:false: đẩy khối xuống gần giữa khung. */
.reveal:not(.center) .slides section.strand-title .strand-title-body {
    margin-top: 4.5em;
}

.reveal .slides section.strand-title h2 {
    font-size: 1.9em;
    line-height: 1.15;
    margin: 0 0 .45em;
    padding: 0;
    border: 0;
    color: #2F3E7A;
    text-transform: none;
}

.reveal .slides section.strand-title .strand-number {
    display: block;
    font-size: .6em;
    font-weight: 600;
    color: #666;
    margin-bottom: .15em;
}

.reveal .slides section.strand-title .strand-lead {
    font-size: 1.05em;
    line-height: 1.35;
    margin: 0 0 .5em;
    color: #263238;
}

.reveal .slides section.strand-title .strand-keys {
    font-size: .9em;
    line-height: 1.35;
    color: #555;
    margin: 0;
}

@media (max-width: 760px) {
    .reveal .slides section.strand-title .strand-title-body,
    .reveal:not(.center) .slides section.strand-title .strand-title-body {
        max-width: none;
        margin-top: 1.2em;
    }

    .reveal .slides section.strand-title h2 {
        font-size: 1.5em;
    }
}

.reveal .fragment.blur {
    filter: blur(5px);
}

.reveal .fragment.blur.visible {
    filter: none;
}

.reveal .question-box {
    border: 3px solid #B15A2B;
    border-radius: 16px;
    padding: 0.75em;
    /* max-width: 700px; */
    margin: auto;
    background: #F7EFE6;
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15);
}

.reveal .question-title {
    /* font-size: 1.2em; */
    font-weight: bold;
    color: #B15A2B;
    margin-bottom: 0.5em;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.reveal .question-content {
    /* font-size: 1.4em; */
    line-height: 1.4;
    color: #333;
}

/* Pipeline diagram */

.reveal .pipeline {
    display: flex;
    justify-content: center;
    align-items: stretch;
    gap: 0.5em;
    margin-top: 1em;
    flex-wrap: wrap;
}

.reveal .pipeline .stage {
    background: #F7EFE6;
    border: 2px solid #B15A2B;
    border-radius: 10px;
    padding: 0.5em;
    width: 140px;
    text-align: center;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}

.reveal .pipeline .stage-title {
    font-weight: bold;
    color: #B15A2B;
    margin-bottom: 0.5em;
}

.reveal .pipeline .stage-desc {
    font-size: 0.8em;
    color: #333;
}

.reveal .pipeline .arrow {
    display: flex;
    align-items: center;
    font-size: 1.5em;
    color: #B15A2B;
}

.reveal .caption {
    text-align: center;
    margin-top: 0.8em;
    font-size: 0.8em;
    font-style: italic;
    color: #666;
}

/* ============================================
   Part 1 outline decks
   ============================================ */
.reveal .outline-grid-2,
.reveal .outline-grid-3,
.reveal .outline-grid-4 {
    display: grid;
    gap: 12px;
}

.reveal .outline-grid-2 {
    grid-template-columns: repeat(2, 1fr);
}

.reveal .outline-grid-3 {
    grid-template-columns: repeat(3, 1fr);
}

.reveal .outline-grid-4 {
    grid-template-columns: repeat(4, 1fr);
}

.reveal .outline-card {
    border-radius: 8px;
    padding: 10px 13px;
    background: #fafafa;
    border-left: 5px solid #90A4AE;
}

.reveal .outline-card p,
.reveal .stub-slide p {
    margin: 0.35em 0 0;
}

.reveal .outline-blue {
    background: #e3f2fd;
    border-left-color: #1565c0;
}

.reveal .outline-green {
    background: #e8f5e9;
    border-left-color: #2e7d32;
}

.reveal .outline-orange {
    background: #fff3e0;
    border-left-color: #ef6c00;
}

.reveal .outline-red {
    background: #ffebee;
    border-left-color: #c62828;
}

.reveal .outline-purple {
    background: #f3e5f5;
    border-left-color: #7b1fa2;
}

.reveal .outline-card strong.outline-title {
    color: #263238;
}

.reveal .stub-slide {
    border: 1px dashed #b0bec5;
    border-radius: 8px;
    padding: 10px 13px;
    background: #fbfbfb;
}

.reveal .stub-label {
    display: inline-block;
    color: #546e7a;
    font-size: 0.68em;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 0.2em;
}

.reveal .objective-box {
    background: #fff3e0;
    border-left: 5px solid #ff9800;
    border-radius: 8px;
    padding: 12px 16px;
}

.reveal .source-note {
    margin-top: 0.55em;
    color: #666;
    font-size: 0.75em;
    font-style: italic;
}

@media (max-width: 900px) {
    .reveal .outline-grid-3,
    .reveal .outline-grid-4 {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 680px) {
    .reveal .outline-grid-2,
    .reveal .outline-grid-3,
    .reveal .outline-grid-4 {
        grid-template-columns: 1fr;
    }
}

.reveal .fst-italic {
    font-style: italic;
}

/* Responsive: stack nicely on narrow displays */
@media (max-width: 900px) {
    .reveal .pipeline {
        font-size: 0.8em;
    }

    .reveal .stage {
        width: 160px;
    }
}

@media (max-width: 680px) {
    .reveal .pipeline {
        gap: 0.6em;
    }

    .reveal .arrow {
        display: none;
    }

    .reveal .stage {
        width: 100%;
        max-width: 420px;
    }
}

/* Hide line numbers ONLY for code blocks with class 'no-line-numbers' */
.reveal pre code.no-line-numbers .hljs-ln-numbers {
    display: none !important;
}

/* Line numbers (when data-line-numbers): tránh wrap số 2 chữ số */
.reveal pre code .hljs-ln-numbers,
.reveal pre code .hljs-ln-numbers .hljs-ln-n {
    white-space: nowrap !important;
    text-align: right;
    padding-right: 8px;
    min-width: 1.6em;
    color: #888;
    user-select: none;
}

.reveal pre code .hljs-ln-line {
    vertical-align: top;
}

/* ============================================
   Sudoku grid (lec10) — 9x9 with thick 3x3 borders
   ============================================ */
.reveal .sudoku-grid {
    border-collapse: collapse;
    margin: 0 auto;
    font-size: 0.9em;
    font-family: var(--font-sans, sans-serif);
}

.reveal .sudoku-grid td {
    width: 34px;
    height: 34px;
    text-align: center;
    border: 1px solid #999;
    padding: 0;
}

.reveal .sudoku-grid tr:first-child td       { border-top: 2px solid #333; }
.reveal .sudoku-grid tr:nth-child(3n) td     { border-bottom: 2px solid #333; }
.reveal .sudoku-grid tr:last-child td        { border-bottom: 2px solid #333; }
.reveal .sudoku-grid td:first-child          { border-left: 2px solid #333; }
.reveal .sudoku-grid td:nth-child(3n)        { border-right: 2px solid #333; }
.reveal .sudoku-grid td:last-child           { border-right: 2px solid #333; }

.reveal .sudoku-grid td.highlight {
    background: #fff3cd;
    font-weight: bold;
}

/* Modifier: large grid (more readable on projector) */
.reveal .sudoku-grid--lg td {
    width: 46px;
    height: 46px;
    font-size: 1.15em;
}

/* Course deck components, extracted from Lecture 02.
   Opt in with .reveal.course-deck; existing decks keep their current styles.
   Typography belongs here, not in individual HTML <style> blocks. */

.reveal.course-deck .lecture-title { font-size: 1.8em; color: #2f3e7a; line-height: 1.2; }

.reveal.course-deck .course-name { font-size: .85em; margin-top: 1.2em; }

.reveal.course-deck .term-name { font-size: .7em; }

.reveal.course-deck .motivation-slide { font-size: 30px; text-align: left; }

.reveal.course-deck .motivation-slide h2 { font-size: 1.35em; color: #2f3e7a; margin-bottom: .55em; }

.reveal.course-deck .motivation-slide p { line-height: 1.35; margin: .45em 0; }

.reveal.course-deck .motivation-grid { display: grid; grid-template-columns: .95fr 1.05fr; gap: 30px; align-items: center; }

.reveal.course-deck .motivation-figure { width: 100%; max-height: 325px; object-fit: contain; }

.reveal.course-deck .motivation-example { margin: 0 0 .65em; padding-left: 16px; border-left: 3px solid #2f3e7a; }

.reveal.course-deck .motivation-example strong { color: #2f3e7a; }

.reveal.course-deck .motivation-example p { font-size: .9em; margin: .15em 0 0; }

.reveal.course-deck .motivation-takeaway { color: #2f3e7a; }

.reveal.course-deck .motivation-source { font-size: 18px; color: #526070; }

.reveal.course-deck .requirements-list { display: grid; gap: 18px; }

.reveal.course-deck .requirement { display: grid; grid-template-columns: 45px 1fr; gap: 16px; align-items: start; }

.reveal.course-deck .requirement-number { background: #edf4ff; color: #2f3e7a; border-radius: 50%; text-align: center; line-height: 45px; }

.reveal.course-deck .requirement h3 { font-size: 1em; color: #2f3e7a; margin: 0; text-transform: none; }

.reveal.course-deck .requirement p { font-size: .9em; margin: .2em 0 0; }

.reveal.course-deck .sum-machines { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: .6em; }

.reveal.course-deck .sum-machine { border: 2px solid #2f3e7a; border-radius: 8px; padding: 10px; text-align: center; }

.reveal.course-deck .sum-machine h3 { color: #2f3e7a; font-size: .9em; margin: 0; text-transform: none; }

.reveal.course-deck .sum-machine p { margin: .25em 0 0; }

.reveal.course-deck .sum-connector { display: block; width: 100%; height: 38px; }

.reveal.course-deck .sum-slide .sum-result { text-align: center; background: #edf4ff; padding: .2em; margin: 0 auto .5em; width: 65%; border-radius: 8px; }

.reveal.course-deck .sum-properties { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; text-align: center; color: #2f3e7a; }

.reveal.course-deck .sum-property p { margin: .1em 0; font-size: .9em; }

.reveal.course-deck .sum-generalization { margin-top: .5em; }

.reveal.course-deck .sum-slide .motivation-source { font-size: 23px; }

.reveal.course-deck .rack-slide .rack-figure { display:block; width:100%; height:330px; object-fit:contain; margin:0; }

.reveal.course-deck .rack-points { display:grid; grid-template-columns:1fr 1fr; gap:30px; }

.reveal.course-deck .rack-points h3 { font-size:28px; color:#2f3e7a; text-transform:none; margin:0; }

.reveal.course-deck .rack-points p { font-size:25px; margin:.2em 0; }

.reveal.course-deck .rack-slide > p { font-size:26px; }

.reveal.course-deck .rack-slide > .motivation-source { font-size:18px; }

.reveal.course-deck .model-slide h1 { font-size:1.35em; color:#2f3e7a; margin-bottom:.55em; }

.reveal.course-deck .model-slide .cards,
.reveal.course-deck .wordcount-slide .io-cols { display:grid; grid-template-columns:1fr 1fr; gap:22px; }

.reveal.course-deck .model-slide .card,
.reveal.course-deck .wordcount-slide .col { padding:18px; border:1px solid #bec8d9; border-left:4px solid #2f3e7a; border-radius:7px; background:#f8fafc; }

.reveal.course-deck .model-slide h3,
.reveal.course-deck .wordcount-slide h3 { font-size:29px; text-transform:none; color:#2f3e7a; margin:0 0 .25em; }

.reveal.course-deck .model-slide .card p,
.reveal.course-deck .wordcount-slide .col p { font-size:27px; margin:0; }

.reveal.course-deck .model-slide .takeaway { color:#2f3e7a; font-size:28px; margin-top:.7em; }

.reveal.course-deck .wordcount-slide .main-formula { margin-top:.8em; font-size:27px; }

.reveal.course-deck .wordcount-slide .formula { text-align:center; font-size:34px; color:#2f3e7a; }

.reveal.course-deck .wordcount-slide .difficulties { border-top:2px solid #bec8d9; padding-top:10px; }

.reveal.course-deck .wordcount-slide .difficulties p { font-size:26px; }

.reveal.course-deck .capability-heading { display:flex; gap:14px; align-items:center; margin-bottom:10px; }

.reveal.course-deck .model-slide .capability-heading h3 { font-size:27px; margin:0; }

.reveal.course-deck .capability-icon { width:58px; height:60px; flex-shrink:0; color:#2f3e7a; }

.reveal.course-deck .wordcount-layout { display:grid; grid-template-columns:minmax(0,7fr) minmax(0,3fr); gap:28px; align-items:center; }

.reveal.course-deck .wordcount-content .io-cols { gap:16px; }

.reveal.course-deck .wordcount-content .col { padding:14px; }

.reveal.course-deck .wordcount-content .col p { font-size:26px; }

.reveal.course-deck .wordcount-content .main-formula { font-size:26px; margin-top:.6em; }

.reveal.course-deck .wordcount-content .difficulties p { font-size:25px; }

.reveal.course-deck .wordcount-picture { border-left:1px solid #bec8d9; padding-left:20px; text-align:center; color:#2f3e7a; }

.reveal.course-deck .wordcount-picture .picture-label { font-size:26px; margin:0 0 18px; }

.reveal.course-deck .document-stack { display:flex; align-items:center; justify-content:center; gap:8px; height:190px; margin:auto; }

.reveal.course-deck .document-sheet { box-sizing:border-box; width:78px; height:145px; padding:12px; flex-shrink:0; border:2px solid #2f3e7a; border-radius:5px; background:white; font-size:25px; }

.reveal.course-deck .document-sheet i { display:block; height:3px; background:#a5afc0; margin:16px 0 0; }

.reveal.course-deck .document-sheet i:last-child { width:65%; }

.reveal.course-deck .wordcount-arrow { display:block; width:50px; height:60px; margin:5px auto; }

.reveal.course-deck .count-output { font-size:26px; margin:0 auto; width:100%; }

.reveal.course-deck .count-output th,
.reveal.course-deck .count-output td { text-align:center; padding:.3em; }

.reveal.course-deck .wordcount-picture .picture-caption { font-size:22px; margin:.65em 0 0; }

.reveal.course-deck .wordmap-cards { display:grid; grid-template-columns:1fr 1fr; gap:24px; }

.reveal.course-deck .wordmap-cards .card { padding:18px; border:2px solid #bec8d9; border-radius:8px; }

.reveal.course-deck .wordmap-slide h3,
.reveal.course-deck .taskflow-slide h3,
.reveal.course-deck .wordtrace-slide h3 { font-size:29px; text-transform:none; color:#2f3e7a; margin:0 0 12px; }

.reveal.course-deck .wordmap-cards p { font-size:25px; }

.reveal.course-deck .wordmap-cards pre { box-shadow:none; margin:16px 0; width:100%; font-size:22px; background:#edf4ff; padding:12px; box-sizing:border-box; }

.reveal.course-deck .wordmap-cards code { font-family:monospace; white-space:pre-wrap; padding:0; line-height:1.5; max-height:none; }

.reveal.course-deck .wordmap-strip { border-left:4px solid #2f3e7a; padding-left:16px; margin-top:18px; }

.reveal.course-deck .wordmap-strip p { font-size:26px; margin:6px 0; }

.reveal.course-deck .taskflow-diagram { display:grid; grid-template-columns:1fr .85fr 1fr; gap:20px; align-items:center; }

.reveal.course-deck .task-card { background:#f8fafc; border:2px solid #bec8d9; border-radius:7px; padding:14px; margin:12px 0; font-size:25px; color:#2f3e7a; }

.reveal.course-deck .task-card span { color:#526070; font-size:23px; }

.reveal.course-deck .taskflow-arrows svg { display:block; width:100%; height:215px; }

.reveal.course-deck .taskflow-arrows p { text-align:center; font-size:23px; }

.reveal.course-deck .taskflow-foot,
.reveal.course-deck .taskflow-lead { font-size:27px; }

.reveal.course-deck .wordtrace-diagram { display:grid; grid-template-columns:1.25fr 1fr 1fr; gap:24px; }

.reveal.course-deck .trace-col { background:#f8fafc; border:1px solid #bec8d9; border-radius:8px; padding:18px; }

.reveal.course-deck .trace-doc + .trace-doc { border-top:1px solid #bec8d9; margin-top:15px; padding-top:8px; }

.reveal.course-deck .trace-input { font-size:26px; color:#2f3e7a; }

.reveal.course-deck .trace-pairs,
.reveal.course-deck .trace-groups,
.reveal.course-deck .trace-out { font-size:28px; list-style:none; margin:0; }

.reveal.course-deck .trace-pairs li { margin:5px 0; }

.reveal.course-deck .trace-groups li,
.reveal.course-deck .trace-out li { margin:28px 0; padding:10px; border-left:3px solid #2f3e7a; }

.reveal.course-deck .trace-total { font-size:25px; color:#2f3e7a; }

.reveal.course-deck .taskflow-diagram { align-items:start; gap:10px; }

.reveal.course-deck .task-group { display:flex; flex-direction:column; gap:12px; }

.reveal.course-deck .task-group h3 { height:36px; margin:0; }

.reveal.course-deck .task-group .task-card { height:90px; box-sizing:border-box; margin:0; padding:12px; }

.reveal.course-deck .reduce-tasks { margin-top:51px; }

.reveal.course-deck .taskflow-arrows svg { margin-top:48px; height:294px; }

.reveal.course-deck .taskflow-arrows p { margin:0; font-size:21px; }

.reveal.course-deck .taskflow-foot { font-size:25px; }

.reveal.course-deck .formal-slide > p { font-size:27px; }

.reveal.course-deck .formal-slide .formal-equation { font-size:36px; color:#2f3e7a; text-align:center; margin:.65em 0; }

.reveal.course-deck .formal-domains { display:grid; grid-template-columns:1fr 1fr; gap:24px; }

.reveal.course-deck .formal-domains p { font-size:26px; }

.reveal.course-deck .formal-visual { display:grid; grid-template-columns:1fr 30px 135px 30px 1.25fr; gap:12px; align-items:center; margin:24px 0; }

.reveal.course-deck .formal-node { background:#f8fafc; border:2px solid #bec8d9; border-radius:8px; padding:18px; text-align:center; font-size:26px; }

.reveal.course-deck .formal-node p { font-size:25px; margin:.35em 0; }

.reveal.course-deck .formal-node strong,
.reveal.course-deck .formal-function { color:#2f3e7a; }

.reveal.course-deck .formal-function { border:2px solid #2f3e7a; background:#edf4ff; padding:20px 8px; text-align:center; border-radius:8px; font-size:29px; }

.reveal.course-deck .formal-arrow { color:#2f3e7a; font-size:32px; text-align:center; }

.reveal.course-deck .formal-slide .formal-takeaway { color:#2f3e7a; font-size:27px; margin-top:.6em; }

.reveal.course-deck .formal-slide .formal-example-note { font-size:24px; color:#526070; }

.reveal.course-deck .group-visual { display:grid; grid-template-columns:1.1fr 28px 1fr 28px 1.15fr; gap:10px; align-items:center; margin-top:24px; }

.reveal.course-deck .phase-flow { display:grid; grid-template-columns:1fr 22px 1fr 22px 1fr 22px 1fr; gap:7px; margin:28px 0; align-items:center; }

.reveal.course-deck .phase-card { padding:14px; border:2px solid #bec8d9; border-radius:8px; background:#f8fafc; min-height:250px; }

.reveal.course-deck .phase-card h3 { color:#2f3e7a; font-size:26px; text-transform:none; min-height:63px; margin:0; }

.reveal.course-deck .phase-card p { font-size:24px; }

.reveal.course-deck .phase-card > span { display:block; color:#526070; font-size:21px; }

.reveal.course-deck .formal-code { font-size:23px; line-height:1.35; width:100%; box-sizing:border-box; padding:16px; margin:16px 0; background:#edf4ff; box-shadow:none; }

.reveal.course-deck .formal-code code { padding:0; white-space:pre-wrap; max-height:none; }

.reveal.course-deck .formal-slide .motivation-source { font-size:18px; }

.reveal.course-deck .combine-slide h2 { font-size:38px; line-height:1.15; }

.reveal.course-deck .combine-slide .conditions { font-size:26px; margin:8px 0 8px 28px; }

.reveal.course-deck .combine-slide .conditions li { margin:8px 0; }

.reveal.course-deck .model-check-slide ol { font-size:30px; line-height:1.45; }

.reveal.course-deck .model-check-slide li { margin:22px 0; }

.reveal.course-deck .example-slide h1,
.reveal.course-deck .example-slide h2 { font-size:38px; color:#2f3e7a; line-height:1.18; margin-bottom:22px; }

.reveal.course-deck .example-slide h3 { font-size:28px; color:#2f3e7a; text-transform:none; margin:0 0 12px; }

.reveal.course-deck .example-slide p,
.reveal.course-deck .example-slide li { font-size:28px; line-height:1.35; }

.reveal.course-deck .example-slide li { margin:12px 0; }

.reveal.course-deck .ex-grid2 { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:24px; align-items:start; }

.reveal.course-deck .ex-card { border:1px solid #bec8d9; border-left:4px solid #2f3e7a; border-radius:8px; background:#f8fafc; padding:18px; }

.reveal.course-deck .example-slide .ex-equation { font-size:34px; color:#2f3e7a; text-align:center; margin:20px 0; }

.reveal.course-deck .example-slide pre.ex-code { font-size:24px; line-height:1.4; margin:14px 0; padding:16px; box-sizing:border-box; background:#edf4ff; box-shadow:none; width:100%; }

.reveal.course-deck .example-slide pre.ex-code code { padding:0; max-height:none; white-space:pre-wrap; }

.reveal.course-deck .example-slide .ex-table { width:100%; font-size:25px; line-height:1.35; margin:18px 0; border-collapse:collapse; }

.reveal.course-deck .example-slide .ex-table th { color:#2f3e7a; background:#edf4ff; }

.reveal.course-deck .example-slide .ex-table th,
.reveal.course-deck .example-slide .ex-table td { padding:10px 14px; vertical-align:top; border-bottom:1px solid #bec8d9; }

.reveal.course-deck .example-slide .ex-note { font-size:24px; color:#526070; }

.reveal.course-deck .example-slide .ex-takeaway { font-size:28px; color:#2f3e7a; margin-top:18px; }

.reveal.course-deck .example-slide .ex-source { font-size:18px; color:#526070; }

.reveal.course-deck .example-slide svg { max-width:100%; }

.reveal.course-deck .example-slide .ex-card { font-size:28px; line-height:1.35; margin:12px 0; }

.reveal.course-deck .example-slide .ex-grid2 .ex-card { margin:0; }

.reveal.course-deck .example-slide .ex-figure { margin:18px 0 0; text-align:center; }

.reveal.course-deck #lec02-s03-03 .ex-grid2,
.reveal.course-deck #lec02-s03-13 .ex-grid2 { grid-template-columns:repeat(3,minmax(0,1fr)); }

.reveal.course-deck #lec02-s03-03 .ex-card svg,
.reveal.course-deck #lec02-s03-08 .ex-card svg,
.reveal.course-deck #lec02-s03-13 .ex-card svg { display:block; width:46px; height:46px; margin-bottom:14px; }

.reveal.course-deck .example-slide .ex-distinct-functions { font-size:25px; }

.reveal.course-deck .matrix-block-trace { display:grid; grid-template-columns:0.9fr 1.1fr; gap:24px; align-items:center; }

.reveal.course-deck #lec02-s03-05 .matrix-block-trace .ex-equation { font-size:30px; }

.reveal.course-deck #lec02-s03-05 .matrix-block-trace .ex-table { font-size:23px; margin:0; }

.reveal.course-deck #lec02-s03-05 .matrix-block-trace th,
.reveal.course-deck #lec02-s03-05 .matrix-block-trace td { padding:8px 10px; }

.reveal.course-deck .cost-slide { font-size: 30px; text-align: left; }

.reveal.course-deck .cost-slide h2 { font-size: 38px; color: #2f3e7a; line-height: 1.18; margin-bottom: 20px; }

.reveal.course-deck .cost-open h1 { font-size: 1.6em; color: #2f3e7a; line-height: 1.2; margin-bottom: .4em; }

.reveal.course-deck .cost-open .cost-lead { font-size: 30px; line-height: 1.35; max-width: 1050px; margin: .3em 0 .7em; }

.reveal.course-deck .cost-icons { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 28px; margin: 24px 0 18px; }

.reveal.course-deck .cost-icon-card { border: 2px solid #2f3e7a; border-radius: 10px; background: #f8fafc; padding: 22px 16px; text-align: center; }

.reveal.course-deck .cost-icon-card p { font-size: 28px; margin: 14px 0 0; color: #2f3e7a; }

.reveal.course-deck .cost-icon-card svg { display: block; margin: 0 auto; }

.reveal.course-deck .cost-slide .cost-note { font-size: 26px; color: #526070; }

.reveal.course-deck .cost-slide .ex-figure { margin: 16px auto 0; text-align: center; }

.reveal.course-deck .cost-slide .ex-figure svg { display: block; margin: 0 auto; max-width: 100%; }

.reveal.course-deck .cost-slide .cost-figure { display: block; margin: 0 auto; width: 100%; max-height: 340px; object-fit: contain; }

.reveal.course-deck .cost-slide .ex-equation { font-size: 34px; color: #2f3e7a; text-align: center; margin: 18px 0; }

.reveal.course-deck .cost-slide .ex-table { width: 100%; font-size: 28px; line-height: 1.35; margin: 16px 0; border-collapse: collapse; }

.reveal.course-deck .cost-slide .ex-table th { color: #2f3e7a; background: #edf4ff; }

.reveal.course-deck .cost-slide .ex-table th,
.reveal.course-deck .cost-slide .ex-table td { padding: 10px 14px; vertical-align: top; border-bottom: 1px solid #bec8d9; }

.reveal.course-deck .cost-slide .quiz-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 36px; align-items: start; }

.reveal.course-deck .cost-slide .ex-note { font-size: 24px; color: #526070; margin: 10px 0; }

.reveal.course-deck .cost-slide .ex-takeaway { font-size: 28px; color: #2f3e7a; margin-top: 16px; }

.reveal.course-deck .cost-slide .ex-source { font-size: 18px; color: #526070; margin-top: 8px; }

.reveal.course-deck .cost-slide ol { font-size: 28px; line-height: 1.4; }

.reveal.course-deck .cost-slide ol li { margin: 14px 0; }

.reveal.course-deck .cost-slide .cost-assumptions {font-size:26px; line-height:1.3; color:#526070; margin:10px 0;}

.reveal.course-deck #lec02-s04-04 .cost-figure {max-height:290px;}

.reveal.course-deck #lec02-s04-04 .ex-equation {margin:10px 0; font-size:32px;}

.reveal.course-deck #lec02-s04-11 .ex-table {font-size:26px; margin-top:0;}

.reveal.course-deck #lec02-s04-11 .ex-table td,
.reveal.course-deck #lec02-s04-11 .ex-table th {padding:7px 10px;}

.reveal.course-deck .system-slide .self-study-badge { font-size: 22px; }

.reveal.course-deck .practice-badge { display: inline-block; background: #1565c0; color: white; font-size: 22px; padding: 3px 10px; border-radius: 16px; font-weight: 600; }

.reveal.course-deck .practical-slide pre.ex-code { background: #272822; color: #f8f8f2; }

.reveal.course-deck .practical-slide .hljs-comment { color: #b8bdac; }


/* Shared semantic roles used by both decks. */
.reveal.course-deck .math-large { font-size: 34px; color: #2f3e7a; text-align: center; }
.reveal.course-deck .agenda-slide { font-size: 42px; }
.reveal.course-deck .agenda-slide h2 { font-size: 1.6em; line-height: 1.2; }
.reveal.course-deck .agenda-slide li { font-size: inherit; line-height: 1.4; }
.reveal.course-deck .title-slide { font-size: 42px; }
.reveal.course-deck .title-slide .institution-name { font-size: .7em; }
.reveal.course-deck .slide-detail { font-size: 26px; }
.reveal.course-deck .supporting-text { font-size: 28px; }
.reveal.course-deck .model-slide > h1 { font-size: 1.35em; color: #2f3e7a; margin-bottom: .55em; }
.reveal.course-deck .model-slide .card > h3 { font-size: 29px; color: #2f3e7a; text-transform: none; }
.reveal.course-deck .cost-slide .card h3 { font-size: 28px; color: #2f3e7a; text-transform: none; }
.reveal.course-deck .example-slide { font-size: 30px; }
.reveal.course-deck .model-slide .ex-table { font-size: 28px; }
/* ============================================================
   pagerank-components.css — COMPONENTS của Lecture03 (PageRank)
   Chỉ chứa bố cục / diagram / card / table / code / chú thích.
   Typography chung (h1/h2/h3, p/li, section[data-slide-id])
   do các role class dùng chung bên ngoài đảm nhiệm — KHÔNG lặp ở đây.
   Mọi selector đều trong phạm vi .reveal.lecture-pagerank
   để không ảnh hưởng deck khác. Không dùng !important.
   ============================================================ */

/* ---------- Bố cục dùng chung ---------- */
.reveal.lecture-pagerank .grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: .8em; }
.reveal.lecture-pagerank .pr-slide .grid2 { align-items: center; }
.reveal.lecture-pagerank .card { border: 1px solid #ddd; border-radius: 8px; padding: .5em .65em; }
.reveal.lecture-pagerank .math-large { text-align: center; }
.reveal.lecture-pagerank .check { background: #edf4ff; border: 2px solid #2f3e7a; border-radius: 8px; padding: .35em .55em; margin-top: 24px; }
.reveal.lecture-pagerank .note-source { color: #444; }

/* ---------- Figure / caption / source ---------- */
.reveal.lecture-pagerank .pr-slide .main-figure { height: 320px; width: 100%; object-fit: contain; display: block; }
.reveal.lecture-pagerank .caption { font-size: 26px; }
.reveal.lecture-pagerank .source-note { font-size: 18px; }
.reveal.lecture-pagerank #lec03-s04-03 .main-figure { height: 365px; }
.reveal.lecture-pagerank #lec03-s04-09 .main-figure { height: 350px; }
.reveal.lecture-pagerank #pagerank-cost .main-figure { max-width: 100%; max-height: 330px; object-fit: contain; }
.reveal.lecture-pagerank #lec03-s05-06 .main-figure { display: block; height: 330px; margin: 0 auto; }
.reveal.lecture-pagerank #summary-exercises .ex-figure { width: 100%; max-height: 380px; object-fit: contain; display: block; }

/* ---------- Code (gom pre/code 24px duy nhất) ---------- */
.reveal.lecture-pagerank pre { font-size: 24px; line-height: 1.3; width: 100%; }
.reveal.lecture-pagerank #pagerank-practice pre code { max-height: none; }
.reveal.lecture-pagerank .inline-code {
    font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
    background: #eef1fa; border-radius: 4px; padding: 1px 8px; font-size: 26px;
}
.reveal.lecture-pagerank #pagerank-practice .inline-code-wrap {
    font-size: 26px; font-family: 'Courier New', Courier, monospace;
    word-break: break-all; white-space: normal;
}

/* ---------- Bảng ---------- */
.reveal.lecture-pagerank table {  border-collapse: collapse; margin: 0 auto; }
.reveal.lecture-pagerank #web-ranking-problem table { line-height: 1.25; }
.reveal.lecture-pagerank #web-ranking-problem table th,
.reveal.lecture-pagerank #web-ranking-problem table td { padding: .22em .3em; }
.reveal.lecture-pagerank #pagerank-model th,
.reveal.lecture-pagerank #pagerank-model td { padding: 5px 14px; text-align: center; }
.reveal.lecture-pagerank #large-graph th,
.reveal.lecture-pagerank #large-graph td { border: 1px solid #9aa6c8; padding: 6px 16px; text-align: center; }
.reveal.lecture-pagerank #large-graph th { background: #e6ebfa; color: #2f3e7a; }
.reveal.lecture-pagerank #pagerank-practice th,
.reveal.lecture-pagerank #pagerank-practice td { padding: 6px 16px; text-align: left; border-bottom: 1px solid #d5d9e8; }
.reveal.lecture-pagerank #pagerank-cost .cost-table { margin: 16px auto; }
.reveal.lecture-pagerank #pagerank-cost .cost-table th,
.reveal.lecture-pagerank #pagerank-cost .cost-table td { border: 1px solid #b9c2dd; padding: 8px 18px; text-align: left; }
.reveal.lecture-pagerank #pagerank-cost .cost-table th { background: #eef1fa; color: #2f3e7a; }
.reveal.lecture-pagerank #summary-exercises table.ex-table { margin: 8px auto; }
.reveal.lecture-pagerank #summary-exercises table.ex-table th,
.reveal.lecture-pagerank #summary-exercises table.ex-table td { border: 1px solid #b0bec5; padding: 6px 14px; text-align: center; }
.reveal.lecture-pagerank #summary-exercises table.ex-table th { background: #edf4ff; color: #2f3e7a; }

/* ---------- Ghi chú ma trận ---------- */
.reveal.lecture-pagerank .matrix-note { font-size: 26px; }

/* ---------- Card riêng theo phần ---------- */
.reveal.lecture-pagerank #large-graph .card { border: 1px solid #c8d0e8; border-radius: 10px; padding: 16px 22px; background: #f7f9ff; }
.reveal.lecture-pagerank #pagerank-practice .card { padding: 14px 20px; }
.reveal.lecture-pagerank #pagerank-cost .cost-cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-top: 24px; }
.reveal.lecture-pagerank #pagerank-cost .cost-cards .card { text-align: center; padding: 16px 12px; }
.reveal.lecture-pagerank #pagerank-cost .cost-cards h3 { margin: 10px 0 6px; }
.reveal.lecture-pagerank #pagerank-cost .cost-cards p { margin: 0; }
.reveal.lecture-pagerank #pagerank-cost .math-large { margin: 14px 0; }
.reveal.lecture-pagerank #pagerank-cost .phase-labels { display: flex; flex-wrap: wrap; gap: 10px 24px; font-size: 26px; margin: 18px 0; }
.reveal.lecture-pagerank #pagerank-practice .slide-badge-row { margin: 4px 0 10px; }
.reveal.lecture-pagerank #summary-exercises .exercise-header { font-size: 20px; color: #666666; margin: 4px 0 8px 0; }
.reveal.lecture-pagerank #summary-exercises .answer-box { border-left: 6px solid #2f3e7a; background: #edf4ff; padding: 10px 18px; border-radius: 4px; margin: 10px 0; }
.reveal.lecture-pagerank #summary-exercises .answer-box p { margin: 4px 0; }
.reveal.lecture-pagerank #summary-exercises .link-check { font-size: 26px; color: #2f3e7a; margin-top: 8px; }

/* Lecture 03: dữ liệu, phép biến đổi và kết quả cùng một mạch nhìn. */
.reveal.lecture-pagerank .visual-flow,
.reveal.lecture-pagerank .visual-sources { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px; margin:24px 0; }
.reveal.lecture-pagerank .visual-flow.four-steps { grid-template-columns:repeat(4,minmax(0,1fr)); }
.reveal.lecture-pagerank .flow-step,
.reveal.lecture-pagerank .source-term { position:relative; padding:18px; border:1px solid #c8d0e8; border-top:4px solid #2f3e7a; border-radius:6px; background:#f7f9ff; }
.reveal.lecture-pagerank .flow-step h3,
.reveal.lecture-pagerank .source-term h3 { color:#2f3e7a; text-transform:none; }
.reveal.lecture-pagerank .flow-step:not(:last-child)::after { content:"→"; position:absolute; right:-29px; top:43%; color:#2f3e7a; }
.reveal.lecture-pagerank .source-term:not(:last-child)::after { content:"+"; position:absolute; right:-27px; top:43%; color:#2f3e7a; }
.reveal.lecture-pagerank .visual-result { padding:12px 18px; background:#edf4ff; border-left:5px solid #2f3e7a; text-align:center; margin:12px 0; }
.reveal.lecture-pagerank .io-flow { gap:76px; }
.reveal.lecture-pagerank .io-flow .card:first-child { position:relative; }
.reveal.lecture-pagerank .io-flow .card:first-child::after { content:"→"; position:absolute; right:-56px; top:45%; color:#2f3e7a; }
.reveal.lecture-pagerank .mass-bar { display:flex; margin:24px 0; min-height:76px; border:2px solid #2f3e7a; border-radius:6px; overflow:hidden; }
.reveal.lecture-pagerank .mass-bar > span { display:flex; align-items:center; justify-content:center; gap:8px; background:#edf4ff; padding:10px 4px; box-sizing:border-box; }
.reveal.lecture-pagerank .dead-mass > span:first-child { width:75%; }
.reveal.lecture-pagerank .dead-mass > span:last-child { width:25%; background:repeating-linear-gradient(45deg,#fff3e0,#fff3e0 8px,#ffe4c1 8px,#ffe4c1 10px); border-left:2px dashed #bd6834; }
.reveal.lecture-pagerank .complete-mass > span:first-child { width:60%; }
.reveal.lecture-pagerank .complete-mass > span:nth-child(2) { width:20%; background:#fff3e0; border-left:2px solid #bd6834; }
.reveal.lecture-pagerank .complete-mass > span:last-child { width:20%; background:#e8f5e9; border-left:2px solid #2e7d32; }
.reveal.lecture-pagerank .pr-slide .short-figure { height:230px; }

.reveal.lecture-pagerank .source-term { display:flex; flex-direction:column; }
.reveal.lecture-pagerank .source-term > p:last-child { margin-top:auto; }

.reveal.lecture-pagerank .block-matrix { width:100%; }
.reveal.lecture-pagerank #large-graph .block-matrix th:nth-child(4),
.reveal.lecture-pagerank #large-graph .block-matrix td:nth-child(4) { border-left:4px solid #bd6834; }
.reveal.lecture-pagerank #large-graph .block-matrix tr:nth-child(4) > * { border-top:4px solid #bd6834; }
.reveal.lecture-pagerank .block-matrix tr:nth-child(-n+3) td:nth-child(-n+3),
.reveal.lecture-pagerank .block-matrix tr:nth-child(n+4) td:nth-child(n+4) { background:#edf4ff; }
.reveal.lecture-pagerank .trace-focus { background:#fff3e0; }
.reveal.lecture-pagerank .trace-table { width:100%; }
.reveal.lecture-pagerank .sum-flow .flow-step:first-child::after { content:"+"; }
.reveal.lecture-pagerank .sum-flow .flow-step:nth-child(2)::after { content:"="; }
.reveal.lecture-pagerank .phase-timeline { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:4px; margin:20px 0; }
.reveal.lecture-pagerank .phase-timeline > div { border-top:5px solid #2f3e7a; background:#edf4ff; padding:14px; }
.reveal.lecture-pagerank .phase-timeline > div:nth-child(even) { border-color:#bd6834; background:#fff3e0; }
.reveal.lecture-pagerank .code-trace { display:grid; grid-template-columns:minmax(0,3fr) minmax(0,1fr); gap:24px; align-items:center; }
.reveal.lecture-pagerank .trace-side { padding-left:18px; border-left:3px solid #bd6834; }
.reveal.lecture-pagerank .trace-side h3 { text-transform:none; color:#2f3e7a; }

/* Lecture 04: bố cục theo storyboard; thang chữ dùng các vai trò chung. */
.reveal.lecture-pagerank-advanced .l04-split-35 { grid-template-columns:minmax(0,35fr) minmax(0,65fr); }
.reveal.lecture-pagerank-advanced .l04-split-40 { grid-template-columns:minmax(0,40fr) minmax(0,60fr); }
.reveal.lecture-pagerank-advanced .l04-split-45 { grid-template-columns:minmax(0,45fr) minmax(0,55fr); }
.reveal.lecture-pagerank-advanced .l04-split-55 { grid-template-columns:minmax(0,55fr) minmax(0,45fr); }
.reveal.lecture-pagerank-advanced .l04-split-60 { grid-template-columns:minmax(0,60fr) minmax(0,40fr); }
.reveal.lecture-pagerank-advanced .l04-split-65 { grid-template-columns:minmax(0,65fr) minmax(0,35fr); }
.reveal.lecture-pagerank-advanced .l04-split-70 { grid-template-columns:minmax(0,70fr) minmax(0,30fr); }
.reveal.lecture-pagerank-advanced .l04-vcenter { align-items:center; }
.reveal.lecture-pagerank-advanced .l04-thirds { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; }
.reveal.lecture-pagerank-advanced .l04-stack { display:grid; gap:20px; }
.reveal.lecture-pagerank-advanced .l04-center { text-align:center; }
.reveal.lecture-pagerank-advanced .l04-figure { display:block; width:100%; max-height:370px; object-fit:contain; margin:0 auto; }
.reveal.lecture-pagerank-advanced .l04-figure-short { max-height:270px; }
.reveal.lecture-pagerank-advanced .l04-figure-tall { max-height:430px; }
.reveal.lecture-pagerank-advanced .l04-full-figure { display:block; width:100%; height:400px; object-fit:contain; margin:0 auto; }
.reveal.lecture-pagerank-advanced .l04-data { border-left:4px solid #2f3e7a; padding:8px 16px; background:#f8fafc; margin:14px 0; }
.reveal.lecture-pagerank-advanced .l04-warning { border-left:4px solid #b15a2b; padding:8px 16px; background:#fff7ed; margin:14px 0; }
.reveal.lecture-pagerank-advanced .l04-data p,
.reveal.lecture-pagerank-advanced .l04-warning p { margin:6px 0; }
.reveal.lecture-pagerank-advanced .l04-topic { padding:24px; border-left:4px solid #2f3e7a; background:#f8fafc; text-align:center; }
.reveal.lecture-pagerank-advanced .l04-query { display:flex; align-items:center; justify-content:center; min-height:200px; border:2px solid #bec8d9; border-radius:8px; color:#2f3e7a; }
.reveal.lecture-pagerank-advanced .l04-agenda .ex-grid2 { gap:54px; align-items:start; }
.reveal.lecture-pagerank-advanced .l04-agenda ol { margin:0; padding-left:1.3em; }
.reveal.lecture-pagerank-advanced .l04-agenda li { margin-bottom:18px; }
.reveal.lecture-pagerank-advanced .l04-title-top { margin-bottom:28px; }
.reveal.lecture-pagerank-advanced .l04-title-top .course-name { margin:0 0 10px; }
.reveal.lecture-pagerank-advanced .l04-title-main { text-align:center; }
.reveal.lecture-pagerank-advanced .l04-title-source { margin-top:24px; }
.reveal.lecture-pagerank-advanced .l04-pseudocode { width:100%; line-height:1.28; }
.reveal.lecture-pagerank-advanced .ex-table .l04-focus { background:#fff7ed; }
.reveal.lecture-pagerank-advanced .ex-table th[scope="row"] { white-space:nowrap; }
.reveal.lecture-pagerank-advanced .l04-source-row { display:flex; justify-content:space-between; gap:24px; }

.reveal.lecture-pagerank-advanced .l04-trace-columns { grid-template-columns:minmax(0,30fr) minmax(0,30fr) minmax(0,40fr); }

.reveal.lecture-pagerank-advanced .l04-flow-stack { gap:10px; }
.reveal.lecture-pagerank-advanced .l04-flow-figure { display:block; width:85%; height:270px; object-fit:contain; margin:0 auto; }
.reveal.lecture-pagerank-advanced .l04-compact-stack { gap:8px; }

/* Bài 04: chừa vùng dữ kiện và sản phẩm dưới sơ đồ chuỗi bài tập. */
.reveal.lecture-pagerank-advanced .l04-chain-diagram { height:160px; }

/* Bài 05: bố cục và kích thước hình; giữ thang chữ của course-deck. */
.reveal.lecture-minhash .mh-figure { margin: 12px 0; }
.reveal.lecture-minhash .mh-figure img { display: block; width: 100%; max-height: 340px; margin: 0 auto; object-fit: contain; }
.reveal.lecture-minhash .mh-short img { max-height: 225px; }
.reveal.lecture-minhash .mh-wide img { max-height: 280px; }
.reveal.lecture-minhash .mh-matrix-split { grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr); align-items: center; }
.reveal.lecture-minhash .mh-near-equal { grid-template-columns: minmax(0, .96fr) minmax(0, 1.04fr); align-items: center; }
.reveal.lecture-minhash .ex-table th[scope="row"] { white-space: nowrap; }
.reveal.lecture-minhash .ex-grid2 > div { min-width: 0; }
.reveal.lecture-minhash .mh-figure + .ex-equation { margin-top: 8px; }

/* Bài 05: dấu nhận diện ô đầu và vùng an toàn của điều khiển. */
.reveal.lecture-minhash .ex-table .mh-selected { outline: 3px solid #2f3e7a; outline-offset: -3px; font-weight: 700; background: #edf4ff; }
.reveal.lecture-minhash .mh-inset { box-sizing: border-box; padding-left: 28px; padding-right: 28px; }
.reveal.lecture-minhash .mh-trace td { white-space: nowrap; }

/* Bài 06: chỉ bố cục và kích thước hình; dùng thang chữ course-deck. */
.reveal.course-deck.lecture-lsh .lsh-figure { margin: 10px 0; }
.reveal.course-deck.lecture-lsh .lsh-figure img { display: block; width: 100%; max-height: 365px; margin: 0 auto; object-fit: contain; }
.reveal.course-deck.lecture-lsh .lsh-short img { max-height: 250px; }
.reveal.course-deck.lecture-lsh .ex-grid2 > div { min-width: 0; }
.reveal.course-deck.lecture-lsh .lsh-code-split { grid-template-columns: minmax(0, 3fr) minmax(0, 1fr); align-items: center; }
.reveal.course-deck.lecture-lsh .ex-table td { overflow-wrap: normal; }
.reveal.course-deck.lecture-lsh .slides > section > section { box-sizing: border-box; padding-left: 28px; padding-right: 28px; }

.reveal.course-deck.lecture-lsh .lsh-orientation { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: 36px; align-items: center; }

/* Bài 01: chỉ chiều cao hình SVG; dùng thang chữ course-deck. */
.reveal.course-deck.lecture-bigdata .l01-figure { margin: 10px 0; }
.reveal.course-deck.lecture-bigdata .l01-figure img { display: block; width: 100%; max-height: 320px; margin: 0 auto; object-fit: contain; }
.reveal.course-deck.lecture-bigdata .l01-short img { max-height: 245px; }
.reveal.course-deck.lecture-bigdata .l01-map img { max-height: 470px; }

/* Bài 07: bố cục, hình và hộp câu hỏi; dùng thang chữ course-deck. */
.reveal.course-deck.lecture-ann .slides > section > section { box-sizing: border-box; padding-left: 28px; padding-right: 28px; }
.reveal.course-deck.lecture-ann .ann-figure { margin: 10px 0; }
.reveal.course-deck.lecture-ann .ann-figure img { display: block; width: 100%; max-height: 360px; margin: 0 auto; object-fit: contain; }
.reveal.course-deck.lecture-ann .ann-short img { max-height: 270px; }
.reveal.course-deck.lecture-ann .ex-grid2 > div { min-width: 0; }
.reveal.course-deck.lecture-ann .ex-card h3 { font-size: 1em; color: #2f3e7a; text-transform: none; margin: 0 0 .25em; }
.reveal.course-deck.lecture-ann .ex-card.ann-accent { border-left-color: #b15a2b; background: #fdf6ef; }
.reveal.course-deck.lecture-ann .ann-question { background: #edf4ff; border: 2px solid #2f3e7a; border-radius: 8px; padding: 10px 16px; margin-top: 16px; }
.reveal.course-deck.lecture-ann .ann-blank { height: 1.2em; border-bottom: 2px dotted #777; }
.reveal.course-deck.lecture-ann .ann-code-split { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); align-items: center; }
.reveal.course-deck.lecture-ann .ann-orientation { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 36px; align-items: center; }
.reveal.course-deck.lecture-ann .ann-figure-split { grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); align-items: center; }
.reveal.course-deck.lecture-ann .ann-trace-split { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; }
.reveal.course-deck.lecture-ann .example-slide .ann-compact th, .reveal.course-deck.lecture-ann .example-slide .ann-compact td { padding: 5px 10px; }
.reveal.course-deck.lecture-ann .ex-table th[scope="row"] { white-space: nowrap; }
.reveal.course-deck.lecture-ann .ex-table .ann-selected { outline: 3px solid #2f3e7a; outline-offset: -3px; font-weight: 700; background: #edf4ff; }
