/* Lecture 21 only. Loaded after lecture19.css; every rule is scoped to .l21-deck.
   Same text sizes as Lecture 20. */

.reveal.l21-deck .kicker { font-size: 22px; }
.reveal.l21-deck .composite-summary-slide > .slide-lead { font-size: 27px; }

/* Problem definitions: two panels, each with a Given row and a Goal row. */
.reveal.l21-deck .l21-defs .l21-def-body { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; width: 1400px; margin: auto 0 0; flex-shrink: 0; }
.reveal.l21-deck .l21-defs .l21-def-card { box-sizing: border-box; padding: 22px 26px 24px; border: 3px solid var(--blue); border-radius: 14px; background: white; }
.reveal.l21-deck .l21-defs .l21-def-card-red { border-color: #ff4756; }
.reveal.l21-deck .l21-defs .l21-def-head { margin-bottom: 14px; }
.reveal.l21-deck .l21-defs .l21-def-index { display: inline-block; padding: 4px 16px; border-radius: 18px; background: var(--blue); color: white; font-size: 22px; font-weight: 800; }
.reveal.l21-deck .l21-defs .l21-def-card-red .l21-def-index { background: #ff4756; }
.reveal.l21-deck .l21-defs .l21-def-head h3 { margin: 10px 0 0; color: var(--ink); font-size: 31px; line-height: 1.2; }
.reveal.l21-deck .l21-defs .l21-def-row { display: grid; grid-template-columns: 86px 1fr; gap: 14px; align-items: baseline; padding: 12px 0; border-top: 1px solid var(--line); }
.reveal.l21-deck .l21-defs .l21-def-tag { color: var(--blue); font-size: 23px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; }
.reveal.l21-deck .l21-defs .l21-def-card-red .l21-def-tag { color: #ff4756; }
.reveal.l21-deck .l21-defs .l21-def-row p { margin: 0; color: var(--ink); font-size: 25px; line-height: 1.45; }
.reveal.l21-deck .l21-defs .l21-def-note { color: var(--ink-2); font-size: 22px; font-weight: 700; }
.reveal.l21-deck .l21-defs > .bb-takeaway { margin-top: 26px; }
.reveal.l21-deck .l21-defs::after { margin-top: auto; }

/* Partition-vote slide: give the bottom caption room below the panels. */
.reveal.l21-deck .l19-partition-poison .search-figure,
.reveal.l21-deck .l19-partition-poison .search-figure > svg { height: 445px; }

/* Small definition note under a takeaway. */
.reveal.l21-deck .l21-note { width: 1400px; margin: 8px 0 0; color: var(--ink-2); font-size: 22px; font-weight: 600; line-height: 1.3; flex-shrink: 0; }

/* Paper-figure slides: figure on the left, short points on the right. */
.reveal.l21-deck .l21-fig-body { display: grid; grid-template-columns: var(--fig-w, 860px) 1fr; gap: 36px; width: 1400px; margin: auto 0; align-items: center; flex-shrink: 0; }
.reveal.l21-deck .l21-fig-body.l21-fig-wide { grid-template-columns: 1fr; gap: 22px; }
.reveal.l21-deck .l21-fig-img { margin: 0; }
.reveal.l21-deck .l21-fig-img img { display: block; width: 100%; height: auto; max-height: 470px; object-fit: contain; border: 1px solid var(--line); border-radius: 8px; background: white; }
.reveal.l21-deck .l21-fig-img figcaption { margin-top: 6px; color: var(--ink-2); font-size: 22px; font-weight: 600; text-align: center; }
.reveal.l21-deck .l21-fig-points { display: grid; gap: 18px; margin: 0; padding: 0; list-style: none; }
.reveal.l21-deck .l21-fig-wide .l21-fig-points { grid-template-columns: repeat(3, 1fr); gap: 24px; }
.reveal.l21-deck .l21-fig-points li { margin: 0; padding: 4px 0 4px 18px; border-left: 5px solid var(--blue); color: var(--ink-2); font-size: 24px; line-height: 1.3; }
.reveal.l21-deck .l21-fig-points li.l21-red { border-left-color: #ff4756; }
.reveal.l21-deck .l21-fig-points li strong { display: block; margin-bottom: 4px; color: var(--ink); font-size: 27px; font-weight: 800; }
.reveal.l21-deck .l21-fig-points mjx-container { font-size: 100% !important; }
.reveal.slides section.l21-fig.present, .reveal .slides > section.l21-fig.present { display: flex !important; flex-direction: column; }
.reveal.l21-deck .l21-fig > .l19-eq { margin-top: 18px; flex-shrink: 0; }
.reveal.l21-deck .l21-fig > .bb-takeaway { margin-top: 18px; flex-shrink: 0; }
.reveal.l21-deck .l21-fig::after { content: ''; margin-top: auto; }
.reveal.l21-deck .l21-fig-center img { width: auto; max-width: 1400px; max-height: 500px; margin: 0 auto; }

/* Min-min slide. */
.reveal.l21-deck .l21-minmin .l21-mm-big { width: 1400px; margin: auto 0 0; padding: 14px 0 8px; border: 3px solid #ff4756; border-radius: 14px; background: #fff7f8; font-size: 34px; text-align: center; flex-shrink: 0; }
.reveal.l21-deck .l21-minmin .l21-mm-row { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; width: 1400px; margin-top: 20px; flex-shrink: 0; }
.reveal.l21-deck .l21-minmin .l21-mm-card { padding: 14px 22px; border: 2.5px solid #b7c3d8; border-radius: 12px; background: white; }
.reveal.l21-deck .l21-minmin .l21-mm-red { border-color: #ff4756; background: #fff1f2; }
.reveal.l21-deck .l21-minmin .l21-mm-tag { color: var(--ink); font-size: 25px; font-weight: 800; }
.reveal.l21-deck .l21-minmin .l21-mm-eq { margin: 6px 0; font-size: 32px; }
.reveal.l21-deck .l21-minmin .l21-mm-card p { margin: 4px 0 0; color: var(--ink-2); font-size: 24px; line-height: 1.3; }
.reveal.l21-deck .l21-minmin .l21-mm-steps { width: 1400px; margin: 18px 0 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; flex-shrink: 0; }
.reveal.l21-deck .l21-minmin .l21-mm-steps li { padding-left: 16px; border-left: 5px solid var(--blue); color: var(--ink-2); font-size: 23px; line-height: 1.3; }
.reveal.l21-deck .l21-minmin .l21-mm-steps b { display: block; color: var(--ink); font-size: 25px; }

/* Merged min-min + results layout. */
.reveal.l21-deck .l21-minmin .l21-mm-top { display: grid; grid-template-columns: 1fr 470px; gap: 28px; align-items: stretch; width: 1400px; margin: auto 0 0; flex-shrink: 0; }
.reveal.l21-deck .l21-minmin .l21-mm-top .l21-mm-big { width: auto; margin: 0; display: flex; align-items: center; justify-content: center; }
.reveal.l21-deck .l21-minmin .l21-mm-res { display: grid; grid-template-columns: 290px 1fr; gap: 28px; align-items: center; width: 1400px; margin-top: 22px; flex-shrink: 0; }
.reveal.l21-deck .l21-minmin .l21-mm-res img { max-height: 290px; }

/* Problem cards on the Neural Cleanse and DECREE slides: aligned Given / Find / Flag rows. */
.reveal.l21-deck .l21-pcard { position: absolute; box-sizing: border-box; padding: 0 22px; color: var(--ink); text-align: left; }
.reveal.l21-deck .l21-pc-row { display: grid; grid-template-columns: 76px 1fr; gap: 12px; align-items: baseline; padding: 11px 0; border-top: 1px solid var(--line); }
.reveal.l21-deck .l21-pc-row:first-child { border-top: 0; }
.reveal.l21-deck .l21-pc-tag { color: var(--blue); font-size: 22px; font-weight: 800; text-transform: uppercase; letter-spacing: .03em; }
.reveal.l21-deck .l21-pc-row p { margin: 0; font-size: 27px; font-weight: 600; line-height: 1.3; }
.reveal.l21-deck .l21-pc-flag .l21-pc-tag, .reveal.l21-deck .l21-pc-flag p { color: #ff4756; font-weight: 800; }
.reveal.l21-deck .l21-pc-key { margin: 10px 0 0; padding-top: 10px; border-top: 2px solid var(--line); color: var(--ink-2); font-size: 22px; font-weight: 600; line-height: 1.3; }
.reveal.l21-deck .l21-pcard mjx-container { margin: 0 !important; }
.reveal.l21-deck .summary-next span { font-size: 22px; }

/* Mitigation slide: one row per method, with how it works and its limit. */
.reveal.l21-deck .l21-mitlim .l21-mit-head, .reveal.l21-deck .l21-mitlim .composite-points li { display: grid; grid-template-columns: 250px 1.2fr 1fr; gap: 24px; align-items: baseline; }
.reveal.l21-deck .l21-mitlim .l21-mit-head { width: 1400px; margin: 18px 0 4px; padding-bottom: 6px; border-bottom: 3px solid var(--ink); color: var(--ink); font-size: 23px; font-weight: 800; flex-shrink: 0; }
.reveal.l21-deck .l21-mitlim .l21-mit-head span:last-child { color: #d6334a; }
.reveal.l21-deck .l21-mitlim .composite-points { width: 1400px; margin: 0; padding: 0; }
.reveal.l21-deck .l21-mitlim .composite-points li { margin: 0; padding: 12px 0; border-bottom: 1px solid var(--line); list-style: none; }
.reveal.l21-deck .l21-mitlim .composite-points li::before { display: none; }
.reveal.l21-deck .l21-mitlim .composite-points li strong { font-size: 27px; }
.reveal.l21-deck .l21-mitlim .composite-points li span, .reveal.l21-deck .l21-mitlim .l21-lim { margin: 0; font-size: 24px; line-height: 1.3; }
.reveal.l21-deck .l21-mitlim .l21-lim { color: #d6334a; font-style: normal; font-weight: 600; }

/* Unlearnable slide: the authors' photo replaces the pipeline on the last click. */
.reveal.l21-deck .l21-ue-stack { display: grid; }
.reveal.l21-deck .l21-ue-stack img { grid-area: 1 / 1; }
