Quick keys
— Navigate with ← → or spacebar.
F
fullscreen ·
S
speaker view ·
O
overview ·
Alt+Click
zoom
Navigation
×
<style> :root { --conf-ink: #0f172a; --conf-muted: #475569; --conf-soft: #e2e8f0; --conf-panel: rgba(255, 255, 255, 0.82); --conf-blue: #2563eb; --conf-blue-soft: rgba(37, 99, 235, 0.1); --conf-teal: #0f766e; --conf-teal-soft: rgba(15, 118, 110, 0.1); --conf-amber: #b45309; --conf-amber-soft: rgba(180, 83, 9, 0.11); --conf-rose: #be123c; --conf-rose-soft: rgba(190, 18, 60, 0.09); --conf-green: #15803d; --conf-green-soft: rgba(21, 128, 61, 0.1); } .reveal .slides { text-align: left; } .reveal section.conf-slide { box-sizing: border-box; width: 100%; height: 100%; padding: 54px 70px 44px; color: var(--conf-ink); background: linear-gradient(135deg, rgba(37, 99, 235, 0.055), rgba(255, 255, 255, 0) 32%), linear-gradient(225deg, rgba(15, 118, 110, 0.055), rgba(255, 255, 255, 0) 36%), #f8fafc; overflow: hidden; } .reveal section.conf-title { padding: 64px 82px 54px; } .reveal .conf-slide h1, .reveal .conf-slide h2, .reveal .conf-slide h3 { color: var(--conf-ink); letter-spacing: 0; text-transform: none; } .reveal .conf-slide h1 { font-size: 76px; line-height: 1.03; margin: 0; } .reveal .conf-slide h2 { font-size: 46px; line-height: 1.08; margin: 0 0 26px; } .reveal .conf-slide h3 { font-size: 25px; line-height: 1.18; margin: 0 0 10px; } .reveal .conf-slide p, .reveal .conf-slide li { color: var(--conf-muted); font-size: 24px; line-height: 1.36; } .reveal .conf-slide strong { color: var(--conf-ink); font-weight: 720; } .reveal .conf-kicker { color: var(--conf-teal); font-size: 18px; font-weight: 760; letter-spacing: 0.08em; margin-bottom: 14px; text-transform: uppercase; } .reveal .conf-subtitle { max-width: 950px; color: var(--conf-muted); font-size: 31px; line-height: 1.32; margin-top: 26px; } .reveal .conf-title-grid { display: grid; grid-template-columns: minmax(0, 1100px) 286px; gap: 42px; align-content: center; align-items: center; height: 100%; max-width: none; } .reveal .conf-title-main { min-width: 0; } .reveal .conf-title-qr { box-sizing: border-box; justify-self: end; width: 286px; padding: 18px; text-align: center; } .reveal .conf-title-qr img { display: block; width: 238px; height: 238px; max-width: none; max-height: none; object-fit: contain; margin: 0 auto 13px; border-radius: 0; box-shadow: none; } .reveal .conf-title-qr strong { display: block; color: var(--conf-ink); font-size: 21px; line-height: 1.15; } .reveal .conf-acl-logo { display: block; width: 300px; max-width: none; height: auto; margin: 0 0 48px; object-fit: contain; border-radius: 0; box-shadow: none; } .reveal .conf-meta { color: var(--conf-muted); font-size: 21px; line-height: 1.45; margin-top: 24px; } .reveal .conf-event-line { color: var(--conf-teal); font-size: 23px; font-weight: 760; line-height: 1.25; margin-top: 18px; } .reveal .conf-logo-row { display: flex; align-items: center; gap: 24px; margin-top: 40px; flex-wrap: nowrap; } .reveal .conf-logo-badge { display: flex; align-items: center; justify-content: center; height: 84px; padding: 10px 18px; border-radius: 14px; background: rgba(255, 255, 255, 0.92); box-shadow: 0 18px 46px rgba(15, 23, 42, 0.12); } .reveal .conf-logo-badge.nsf { width: 104px; height: 92px; padding: 7px; } .reveal .conf-logo-badge.scorio { width: 250px; } .reveal .conf-logo-row img { display: block; width: auto; max-width: none; height: 100%; max-height: none; object-fit: contain; border-radius: 0; box-shadow: none; margin: 0; } .reveal .conf-panel { border: 1px solid rgba(15, 23, 42, 0.14); border-radius: 8px; background: var(--conf-panel); box-shadow: 0 18px 46px rgba(15, 23, 42, 0.08); } .reveal .conf-title-card { padding: 24px; } .reveal .conf-title-card img { width: 100%; height: 370px; object-fit: contain; display: block; } .reveal .conf-title-metric { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 20px; } .reveal .conf-title-metric p, .reveal .conf-metric p { margin: 0; } .reveal .conf-title-metric strong, .reveal .conf-metric strong { display: block; color: var(--conf-blue); font-size: 34px; line-height: 1; } .reveal .conf-title-metric span, .reveal .conf-metric span { display: block; color: var(--conf-muted); font-size: 16px; line-height: 1.22; margin-top: 7px; } .reveal .conf-chip-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; } .reveal .conf-chip { display: inline-flex; align-items: center; border: 1px solid rgba(15, 23, 42, 0.14); border-radius: 999px; color: var(--conf-muted); background: rgba(255, 255, 255, 0.74); font-size: 16px; font-weight: 720; line-height: 1; padding: 9px 13px; } .reveal .conf-chip.blue { color: var(--conf-blue); background: var(--conf-blue-soft); border-color: rgba(37, 99, 235, 0.24); } .reveal .conf-chip.teal { color: var(--conf-teal); background: var(--conf-teal-soft); border-color: rgba(15, 118, 110, 0.24); } .reveal .conf-chip.amber { color: var(--conf-amber); background: var(--conf-amber-soft); border-color: rgba(180, 83, 9, 0.24); } .reveal .conf-grid { display: grid; gap: 18px; } .reveal .conf-grid.two { grid-template-columns: repeat(2, minmax(0, 1fr)); } .reveal .conf-grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); } .reveal .conf-grid.four { grid-template-columns: repeat(4, minmax(0, 1fr)); } .reveal .conf-card { border: 1px solid rgba(15, 23, 42, 0.13); border-radius: 8px; background: rgba(255, 255, 255, 0.78); padding: 20px 22px; min-height: 138px; box-shadow: 0 12px 28px rgba(15, 23, 42, 0.055); } .reveal .conf-card p { margin: 0; font-size: 20px; } .reveal .conf-num { color: var(--conf-blue); font-size: 18px; font-weight: 780; margin-bottom: 12px; } .reveal .conf-callout { border-left: 5px solid var(--conf-blue); border-radius: 8px; background: var(--conf-blue-soft); padding: 18px 22px; color: var(--conf-ink); font-size: 25px; line-height: 1.34; } .reveal .conf-callout.teal { border-left-color: var(--conf-teal); background: var(--conf-teal-soft); } .reveal .conf-callout.amber { border-left-color: var(--conf-amber); background: var(--conf-amber-soft); } .reveal .conf-callout.rose { border-left-color: var(--conf-rose); background: var(--conf-rose-soft); } .reveal .conf-big-question { margin-top: 24px; padding: 26px 30px; color: var(--conf-ink); font-size: 35px; line-height: 1.2; } .reveal .conf-equation { display: flex; align-items: center; justify-content: center; box-sizing: border-box; min-width: 0; min-height: 112px; max-width: 100%; overflow-x: auto; border: 1px solid rgba(15, 23, 42, 0.12); border-radius: 8px; background: rgba(15, 23, 42, 0.04); color: var(--conf-ink); font-size: 31px; line-height: 1.25; padding: 18px 22px; } /* Keep display math inside its panel instead of bleeding over the next column. Wide formulas still read best one size down: add `conf-equation sm` or give the equation a full-width row (see slide-patterns.md). */ .reveal .conf-equation .katex { max-width: 100%; } .reveal .conf-equation.sm { font-size: 24px; } .reveal .conf-figure { border: 1px solid rgba(15, 23, 42, 0.12); border-radius: 8px; background: rgba(255, 255, 255, 0.84); padding: 16px; } .reveal .conf-figure img { display: block; width: 100%; height: 100%; object-fit: contain; } .reveal .conf-figure figcaption { color: var(--conf-muted); font-size: 16px; line-height: 1.25; margin-top: 10px; } .reveal .conf-fig-short { height: 430px; } .reveal .conf-fig-mid { height: 540px; } .reveal .conf-fig-wide { height: 465px; } .reveal .conf-fig-tall { height: 610px; } .reveal .conf-split { display: grid; grid-template-columns: minmax(0, 0.98fr) minmax(420px, 0.82fr); gap: 30px; align-items: stretch; } .reveal .conf-split.reverse { grid-template-columns: minmax(420px, 0.76fr) minmax(0, 1fr); } .reveal .conf-metric { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 18px; } .reveal .conf-metric .conf-card { min-height: 104px; } .reveal .conf-mini-table, .reveal .conf-table { width: 100%; border-collapse: collapse; } .reveal .conf-mini-table { font-size: 18px; } .reveal .conf-table { font-size: 20px; } .reveal .conf-mini-table th, .reveal .conf-mini-table td, .reveal .conf-table th, .reveal .conf-table td { border-bottom: 1px solid rgba(15, 23, 42, 0.12); padding: 11px 10px; text-align: right; color: var(--conf-muted); } .reveal .conf-mini-table th:first-child, .reveal .conf-mini-table td:first-child, .reveal .conf-table th:first-child, .reveal .conf-table td:first-child { text-align: left; } .reveal .conf-mini-table th, .reveal .conf-table th { color: var(--conf-ink); font-weight: 760; } .reveal .conf-win { color: var(--conf-green) !important; font-weight: 760; background: rgba(21, 128, 61, 0.08); } .reveal .conf-loss { color: var(--conf-rose) !important; } .reveal .conf-flow { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-top: 18px; } .reveal .conf-flow .conf-card { min-height: 148px; } .reveal .conf-flow h3 { font-size: 23px; } .reveal .conf-list { margin: 0; padding-left: 1.1em; } .reveal .conf-list li { margin: 0 0 12px; } .reveal .conf-footer-note { position: absolute; left: 70px; right: 70px; bottom: 28px; color: rgba(71, 85, 105, 0.78); font-size: 16px; } .reveal .conf-takeaway-header { display: flex; align-items: center; gap: 24px; margin: 0 0 34px; } .reveal .conf-takeaway-icon { display: block; width: 104px; height: 104px; max-width: none; max-height: none; object-fit: contain; border-radius: 0; box-shadow: none; margin: 0; } .reveal .conf-takeaway-title { color: var(--conf-ink); font-size: 62px; line-height: 0.98; margin: 0; } .reveal .conf-takeaway-subtitle { color: var(--conf-teal); font-size: 28px; font-weight: 760; line-height: 1.12; margin-top: 12px; } .reveal .conf-takeaway-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; } .reveal .conf-takeaway-card { position: relative; min-height: 250px; padding: 30px 30px 28px; overflow: hidden; border-top: 5px solid var(--conf-teal); background: linear-gradient(180deg, rgba(15, 118, 110, 0.08), rgba(255, 255, 255, 0.82) 42%), rgba(255, 255, 255, 0.84); box-shadow: 0 18px 42px rgba(15, 23, 42, 0.09); } .reveal .conf-takeaway-card:nth-child(2) { border-top-color: var(--conf-blue); background: linear-gradient(180deg, rgba(37, 99, 235, 0.08), rgba(255, 255, 255, 0.82) 42%), rgba(255, 255, 255, 0.84); } .reveal .conf-takeaway-card:nth-child(3) { border-top-color: var(--conf-amber); background: linear-gradient(180deg, rgba(180, 83, 9, 0.08), rgba(255, 255, 255, 0.82) 42%), rgba(255, 255, 255, 0.84); } .reveal .conf-takeaway-num { display: inline-grid; place-items: center; width: 42px; height: 42px; margin-bottom: 20px; border-radius: 50%; background: var(--conf-teal-soft); color: var(--conf-teal); font-size: 22px; font-weight: 820; } .reveal .conf-takeaway-card:nth-child(2) .conf-takeaway-num { background: var(--conf-blue-soft); color: var(--conf-blue); } .reveal .conf-takeaway-card:nth-child(3) .conf-takeaway-num { background: var(--conf-amber-soft); color: var(--conf-amber); } .reveal .conf-takeaway-card h3 { font-size: 30px; line-height: 1.08; min-height: 42px; margin-bottom: 16px; } .reveal .conf-takeaway-card p { font-size: 25px; line-height: 1.34; min-height: 128px; } .reveal .conf-closing-layout { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; gap: 26px; align-items: stretch; height: 100%; } .reveal .conf-closing-main { display: grid; justify-items: center; align-content: start; text-align: center; padding-top: 8px; } .reveal .conf-closing-title { font-size: 72px; line-height: 1.03; margin: 0 0 18px; } .reveal .conf-closing-main .conf-subtitle { max-width: none; margin-top: 0; } .reveal .conf-closing-authors { color: var(--conf-muted); font-size: 22px; line-height: 1.25; margin-top: 12px; } .reveal .conf-qr-grid { display: grid; grid-auto-flow: column; grid-auto-columns: 260px; justify-content: center; gap: 24px; width: min(1120px, 100%); margin: 32px auto 0; } .reveal .conf-qr-item { border: 1px solid rgba(15, 23, 42, 0.13); border-radius: 8px; background: rgba(255, 255, 255, 0.82); padding: 18px; text-align: center; box-shadow: 0 12px 28px rgba(15, 23, 42, 0.055); } .reveal .conf-qr-item img { display: block; width: 210px; height: 210px; max-width: none; max-height: none; object-fit: contain; margin: 0 auto 12px; border-radius: 0; box-shadow: none; } .reveal .conf-qr-item strong { display: block; color: var(--conf-ink); font-size: 20px; line-height: 1.1; } .reveal .conf-contact-line { max-width: 1220px; margin: 18px auto 0; color: var(--conf-muted); font-size: 20px; line-height: 1.25; } .reveal .conf-contact-email { color: var(--conf-blue); font-weight: 780; white-space: nowrap; } .reveal .conf-ack-stack { display: grid; grid-template-columns: 450px 760px; justify-content: center; align-items: center; gap: 34px; width: 100%; margin: 0 auto; padding: 0; } .reveal .conf-ack-item { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 22px; align-items: center; border: 0; border-radius: 0; background: transparent; padding: 0; box-shadow: none; } .reveal .conf-ack-cwru { grid-template-columns: 290px minmax(0, 1fr); } .reveal .conf-ack-item img { display: block; width: auto; max-width: none; max-height: none; object-fit: contain; border-radius: 0; box-shadow: none; margin: 0; } .reveal .conf-ack-nsf img { width: 84px; height: 84px; } .reveal .conf-ack-cwru img { width: 270px; height: auto; } .reveal .conf-ack-item h3 { font-size: 26px; line-height: 1.08; margin: 0 0 8px; white-space: nowrap; } .reveal .conf-ack-item p { font-size: 22px; line-height: 1.18; margin: 0; white-space: nowrap; } .reveal .slides section.conf-slide .conf-acl-logo { width: 300px; max-width: none; height: auto; margin: 0 0 48px; border-radius: 0; box-shadow: none; } .reveal .slides section.conf-slide .conf-logo-row img { width: auto; max-width: none; height: 64px; max-height: none; border-radius: 0; box-shadow: none; margin: 0; } .reveal .slides section.conf-slide .conf-logo-badge.nsf img { width: 76px; height: 76px; } .reveal .slides section.conf-slide .conf-logo-badge.scorio img { width: 214px; height: auto; } .reveal .slides section.conf-slide .conf-qr-item img { width: 210px; height: 210px; max-width: none; max-height: none; border-radius: 0; box-shadow: none; margin: 0 auto 12px; } .reveal .slides section.conf-slide .conf-title-qr img { width: 238px; height: 238px; max-width: none; max-height: none; border-radius: 0; box-shadow: none; margin: 0 auto 13px; } .reveal .slides section.conf-slide .conf-ack-item img { max-width: none; max-height: none; border-radius: 0; box-shadow: none; margin: 0; } .reveal .slides section.conf-slide .conf-ack-nsf img { width: 84px; height: 84px; } .reveal .slides section.conf-slide .conf-ack-cwru img { width: 270px; height: auto; } .reveal .conf-title-thesis { max-width: 1080px; color: var(--conf-muted); font-size: 29px; line-height: 1.28; margin-top: 28px; } .reveal .conf-slide .conf-lead { max-width: 1210px; color: var(--conf-muted); font-size: 30px; line-height: 1.28; margin: -8px 0 28px; } .reveal .conf-slide .conf-small { color: var(--conf-muted); font-size: 18px; line-height: 1.3; } .reveal .conf-stat-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-top: 20px; } .reveal .conf-stat { border: 1px solid rgba(15, 23, 42, 0.12); border-radius: 8px; background: rgba(255, 255, 255, 0.78); padding: 18px 18px 16px; min-height: 112px; box-shadow: 0 12px 28px rgba(15, 23, 42, 0.055); } .reveal .conf-stat strong { display: block; color: var(--conf-blue); font-size: 43px; line-height: 1; } .reveal .conf-stat span { display: block; color: var(--conf-muted); font-size: 17px; line-height: 1.22; margin-top: 9px; } .reveal .conf-slide .conf-table.compact { font-size: 17px; } .reveal .conf-slide .conf-table.compact th, .reveal .conf-slide .conf-table.compact td { padding: 8px 8px; } .reveal .conf-slide .conf-table.wide-text td, .reveal .conf-slide .conf-table.wide-text th { text-align: left; } .reveal .conf-slide .conf-table.wide-text td:last-child, .reveal .conf-slide .conf-table.wide-text th:last-child { text-align: right; } .reveal .conf-slide .conf-table .conf-method-cell { color: var(--conf-ink); font-weight: 720; } .reveal .conf-two-thirds { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(420px, 0.72fr); gap: 28px; align-items: stretch; } .reveal .conf-figure-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(390px, 0.52fr); gap: 24px; align-items: stretch; } .reveal .conf-figure-grid.reverse { grid-template-columns: minmax(390px, 0.52fr) minmax(0, 1fr); } .reveal .conf-figure-grid .conf-figure { height: 590px; } .reveal .conf-figure-grid .conf-figure.short { height: 500px; } .reveal .conf-stack { display: grid; gap: 16px; align-content: start; } .reveal .conf-target-card { min-height: 210px; } .reveal .conf-target-card .conf-equation { min-height: 82px; margin-bottom: 16px; font-size: 27px; } .reveal .conf-method-map { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; margin-top: 20px; } .reveal .conf-method-map .conf-card { min-height: 255px; } .reveal .conf-method-map .conf-equation { min-height: 76px; font-size: 23px; margin-bottom: 14px; } .reveal .conf-rule-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 13px; margin-top: 26px; } .reveal .conf-rule-grid .conf-card { min-height: 190px; padding: 18px 18px; } .reveal .conf-rule-grid h3 { font-size: 22px; } .reveal .conf-code { box-sizing: border-box; max-width: 100%; overflow-x: auto; border: 1px solid rgba(15, 23, 42, 0.14); border-radius: 8px; background: #111827; color: #e5e7eb; font-size: 20px; line-height: 1.42; margin: 0; padding: 24px 26px; white-space: pre; } .reveal .conf-code .kw { color: #67e8f9; } .reveal .conf-code .fn { color: #a7f3d0; } .reveal .conf-code .arg { color: #fbbf24; } .reveal .conf-qrs-small { display: grid; grid-template-columns: repeat(2, 180px); gap: 18px; justify-content: start; margin-top: 16px; } .reveal .conf-qrs-small .conf-qr-item { padding: 14px; } .reveal .conf-qrs-small .conf-qr-item img { width: 144px; height: 144px; } .reveal .conf-scorio-header { display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: 24px; align-items: center; margin-bottom: 18px; } .reveal .conf-scorio-logo-panel { display: flex; align-items: center; justify-content: flex-start; height: 104px; } .reveal .conf-scorio-logo-panel img { display: block; width: 202px; height: auto; max-width: none; max-height: none; border-radius: 0; box-shadow: none; margin: 0; } .reveal .conf-scorio-header h2 { font-size: 40px; line-height: 1.08; margin: 0; } .reveal .conf-scorio-app { border: 1px solid rgba(15, 118, 110, 0.22); border-radius: 999px; background: var(--conf-teal-soft); color: var(--conf-teal); font-size: 17px; font-weight: 780; line-height: 1; padding: 11px 15px; text-align: center; } .reveal .conf-scorio-layout { display: grid; grid-template-columns: minmax(0, 0.66fr) minmax(0, 1.34fr); gap: 18px; align-items: stretch; } .reveal .conf-scorio-panel, .reveal .conf-api-board { border: 1px solid rgba(15, 23, 42, 0.13); border-radius: 8px; background: rgba(255, 255, 255, 0.8); box-shadow: 0 12px 28px rgba(15, 23, 42, 0.055); } .reveal .conf-scorio-panel { padding: 18px; } .reveal .conf-scorio-panel h3, .reveal .conf-api-board h3 { font-size: 23px; line-height: 1.08; margin: 0 0 12px; } .reveal .conf-scorio-code { font-size: 15px; line-height: 1.34; padding: 16px 18px; } .reveal .conf-scorio-note { color: var(--conf-muted); font-size: 18px; line-height: 1.26; margin-top: 14px; } .reveal .conf-scorio-note strong { color: var(--conf-ink); } .reveal .conf-scorio-use { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 14px; } .reveal .conf-scorio-use .conf-scorio-app { display: grid; place-items: center; min-height: 52px; border: 1px solid rgba(15, 118, 110, 0.22); border-radius: 999px; background: var(--conf-teal-soft); color: var(--conf-teal); font-size: 15px; font-weight: 780; line-height: 1.08; padding: 10px 12px; text-align: center; } .reveal .conf-api-board { padding: 16px 18px 14px; } .reveal .conf-api-board h3 { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; } .reveal .conf-api-board h3 span { color: var(--conf-muted); font-size: 15px; font-weight: 680; } .reveal .conf-api-group { padding: 8px 0; border-top: 1px solid rgba(15, 23, 42, 0.11); } .reveal .conf-api-head { display: flex; align-items: baseline; gap: 12px; margin-bottom: 4px; } .reveal .conf-api-head code { color: var(--conf-ink); font-size: 16px; font-weight: 820; } .reveal .conf-api-head span { color: var(--conf-teal); font-size: 14px; font-weight: 760; } .reveal .conf-api-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 16px; row-gap: 2px; } .reveal .conf-slide .conf-api-line { color: var(--conf-muted); font-size: 13px; line-height: 1.22; margin: 0 0 5px; } .reveal .conf-slide .conf-api-line strong { display: inline; color: var(--conf-ink); font-size: 13px; font-weight: 800; } .reveal .conf-slide .conf-api-line code { display: inline-block; border-radius: 5px; background: rgba(15, 23, 42, 0.055); color: var(--conf-ink); font-size: 11.5px; line-height: 1.18; margin: 0 2px 3px 0; padding: 2px 5px; } .reveal .conf-slide .conf-fit-list li { font-size: 21px; line-height: 1.28; margin-bottom: 10px; } .reveal .conf-slide .conf-tight-list li { font-size: 19px; line-height: 1.24; margin-bottom: 8px; } .reveal .conf-banner { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 18px; align-items: center; border: 1px solid rgba(15, 23, 42, 0.13); border-radius: 8px; background: rgba(255, 255, 255, 0.78); padding: 18px 22px; margin-top: 20px; } .reveal .conf-banner-number { color: var(--conf-blue); font-size: 54px; font-weight: 780; line-height: 1; } .reveal .conf-banner p { margin: 0; font-size: 23px; line-height: 1.26; } .reveal .conf-label { display: inline-flex; align-items: center; border-radius: 999px; background: rgba(15, 23, 42, 0.08); color: var(--conf-ink); font-size: 15px; font-weight: 760; line-height: 1; padding: 8px 10px; text-transform: uppercase; } .reveal .conf-figure img.no-stretch { height: auto; max-height: 100%; } /* deck-specific additions (after the theme) */ .reveal .conf-dagger { color: var(--conf-blue); font-weight: 780; } </style> <!-- .slide: class="conf-slide conf-title" data-background-color="#F8FAFC" --> <div class="conf-title-grid"> <div class="conf-title-main"> <img class="conf-acl-logo" src="/assets/slides/2026-09-28-mis-ground/miccai.svg" alt="MICCAI 2026" /> <h1>Medical Image Spatial Grounding with Semantic Sampling</h1> <div class="conf-event-line">MICCAI 2026 · Strasbourg, France · Sept 27 – Oct 1, 2026</div> <div class="conf-meta"> <strong>Andrew Seohwan Yu<span class="conf-dagger">†</span></strong>, <strong>Mohsen Hariri<span class="conf-dagger">†</span></strong>, Kunio Nakamura, Mingrui Yang, Xiaojuan Li, Vipin Chaudhary<br /> <span class="conf-small">Case Western Reserve University · Cleveland Clinic · Cleveland, OH, USA · <span class="conf-dagger">†</span>equal contribution </span> </div> <div class="conf-logo-row"> <span class="conf-logo-badge"><img src="/assets/slides/2026-09-28-mis-ground/cwru.svg" alt="Case Western Reserve University" /></span> <span class="conf-logo-badge nsf"><img src="/assets/slides/2026-09-28-mis-ground/nsf.svg" alt="National Science Foundation" /></span> <span class="conf-logo-badge ccf"><img src="/assets/slides/2026-09-28-mis-ground/ccf.webp" alt="Cleveland Clinic Foundation" /></span> </div> </div> <aside class="conf-title-qr conf-panel" aria-label="Interactive slides QR code"> <img src="/assets/slides/2026-09-28-mis-ground/slide_qr.svg" alt="QR code for the interactive slides" /> <strong>Scan for interactive slides</strong> </aside> </div> Note: Video VLMs are quietly good at 3D medical grounding once you stop letting language slip. MIS-Ground isolates where they break, and a free decode-time fix recovers thirteen points. --- <!-- .slide: class="conf-slide" data-background-color="#F8FAFC" --> <div class="conf-kicker">Motivation</div> <h2>The failures are in the words, not the pixels</h2> <p class="conf-lead">VLMs ground objects in natural images and video well, yet stumble on anatomy in 3D medical scans. Prior work logs the aggregate failure but never says which factor breaks the model.</p> <div class="conf-two-thirds"> <div class="conf-stack"> <div class="conf-callout">A model that recognizes a structure can still flip <strong>superior</strong> to <strong>inferior</strong>, or drift to an adjacent anatomical term, on one unlucky decode.</div> <div class="conf-grid two"> <div class="conf-card"> <div class="conf-num">01</div> <h3>Vision is mostly fine</h3> <p>The structure is detected; the recognition signal is there in the image.</p> </div> <div class="conf-card"> <div class="conf-num">02</div> <h3>Language is brittle</h3> <p>Directional and anatomical phrasing tips over under long chain-of-thought reasoning.</p> </div> </div> </div> <div class="conf-panel conf-title-card"> <h3>The question we actually ask</h3> <div class="conf-big-question">Where, exactly, does 3D medical spatial grounding break — and can we fix it without training?</div> <div class="conf-chip-row"> <span class="conf-chip blue">modality</span> <span class="conf-chip teal">orientation</span> <span class="conf-chip amber">terminology</span> </div> </div> </div> Note: Earlier studies reported near-random grounding and concluded the models cannot see. Our claim is narrower and more useful: the recognition is there, but the decoding is fragile, and that is fixable at inference time. --- <!-- .slide: class="conf-slide" data-background-color="#F8FAFC" --> <div class="conf-kicker">Contributions</div> <h2>A controlled benchmark plus a training-free decode-time fix</h2> <div class="conf-grid two"> <div class="conf-card"> <h3>MIS-Ground</h3> <p>A factorial benchmark that isolates the modality, orientation, prompt, and terminology factors behind medical spatial grounding — not just an aggregate score.</p> </div> <div class="conf-card"> <h3>MIS-SemSam</h3> <p>Semantic sampling at decode time: training-free, model-agnostic, no extra forward passes. A drop-in replacement for the final pick-next-token step.</p> </div> </div> <div class="conf-stat-row"> <div class="conf-stat"><strong>+13.06%</strong><span>MIS-SemSam over Qwen3-VL-32B</span></div> <div class="conf-stat"><strong>66.5%</strong><span>overall accuracy, best open-weights</span></div> <div class="conf-stat"><strong>> Gemini 3 Flash</strong><span>open weights pass a strong closed reference</span></div> <div class="conf-stat"><strong>video-native</strong><span>trained on natural scenes, not scans</span></div> </div> <div class="conf-callout teal" style="margin-top: 22px;">Public at github.com/asy51/mis-ground — benchmark and code.</div> Note: Two deliverables. The benchmark says where grounding breaks; the decode rule recovers most of the loss for free. The headline is that a video-native open model, with this one change, edges past Gemini 3 Flash. --- <!-- .slide: class="conf-slide" data-background-color="#F8FAFC" --> <div class="conf-kicker">Benchmark design</div> <h2>One factorial sweep, five grounding factors</h2> <p class="conf-lead">Every question is a point in a grid: cross modality with view, coordinate convention, prompt type, and terminology, then ask it three ways.</p> <div class="conf-grid three"> <div class="conf-card"> <div class="conf-num">01</div> <h3>Modality × slice direction</h3> <p>CT and MRI, rendered axial / coronal / sagittal by multi-planar reconstruction.</p> </div> <div class="conf-card"> <div class="conf-num">02</div> <h3>Coordinate convention</h3> <p>RAS storage (origin at the RAS-most point) versus standard viewing orientation.</p> </div> <div class="conf-card"> <div class="conf-num">03</div> <h3>Visual prompt</h3> <p>Mask, bounding box, point / centroid, colored and labeled A–F.</p> </div> <div class="conf-card"> <div class="conf-num">04</div> <h3>Terminology</h3> <p>Anatomical (superior) versus colloquial (above) direction terms.</p> </div> <div class="conf-card"> <div class="conf-num">05</div> <h3>Question type</h3> <p>Open-ended, closed-True, and closed-inverted-False, near-evenly split.</p> </div> <div class="conf-card"> <div class="conf-num">06</div> <h3>Three RQs, two ABs</h3> <p>Each cell maps to a research question or an ablation, so a failure points at a factor.</p> </div> </div> Note: The point of the factorial is attribution. When a model misses, we can say it was the RAS flip or the colloquial term, not just that it scored low. To our knowledge this is the first controlled, factorial probe of 3D anatomical grounding. --- <!-- .slide: class="conf-slide" data-background-color="#F8FAFC" --> <div class="conf-kicker">Data and scale</div> <h2>1,160 volumes turned into 33,864 grounded questions</h2> <div class="conf-split"> <figure class="conf-figure conf-fig-mid"> <img src="/assets/slides/2026-09-28-mis-ground/fig1.webp" alt="Sample question-answer pairs from MIS-Ground: a CT axial scan with labeled organs (RQ1), an MRI sagittal knee scan with anatomical direction questions (RQ2), and labeled boxes on a blank background (AB2)" /> <figcaption>Sample QA pairs. CT axial in standard viewing (RQ1), MRI sagittal in RAS storage (RQ2), and labeled boxes on a blank background (AB2).</figcaption> </figure> <div> <div class="conf-stat-row" style="grid-template-columns: repeat(2, minmax(0, 1fr));"> <div class="conf-stat"><strong>1,160</strong><span>3D volumes</span></div> <div class="conf-stat"><strong>2,320</strong><span>2D slices</span></div> <div class="conf-stat"><strong>33,864</strong><span>questions</span></div> <div class="conf-stat"><strong>~84%</strong><span>CT-weighted aggregate</span></div> </div> <div class="conf-callout" style="margin-top: 18px;"><strong>CT</strong> — TotalSegmentator: 1,228 torso scans, 67 anatomical components.</div> <div class="conf-callout teal" style="margin-top: 14px;"><strong>MRI</strong> — OAI knee: 209 DESS scans, 10 components.</div> </div> </div> Note: The aggregate leans CT because we sampled it harder to balance components, so read scores at the benchmark level rather than as a clinical-readiness claim. The figure is one volume seen three ways, each generating several questions. --- <!-- .slide: class="conf-slide" data-background-color="#F8FAFC" --> <div class="conf-kicker">Models and protocol</div> <h2>Four open families against 3D-medical and Gemini references</h2> <div class="conf-two-thirds"> <div> <table class="conf-table compact wide-text" aria-label="Model families evaluated on MIS-Ground"> <thead><tr><th>Family</th><th>Sizes</th><th>Note</th></tr></thead> <tbody> <tr><td class="conf-method-cell">Qwen2.5-VL</td><td>3B – 72B</td><td>72B underperforms for its size</td></tr> <tr><td class="conf-method-cell">Qwen3-VL</td><td>2B – 32B</td><td>best open-weights backbone</td></tr> <tr><td class="conf-method-cell">Molmo 2</td><td>4B, 8B</td><td>competitive mid-range</td></tr> <tr><td class="conf-method-cell">MedGemma (+1.5)</td><td>4B, 27B</td><td>follows format, weak answers</td></tr> <tr><td class="conf-method-cell">M3D</td><td>7B</td><td class="conf-loss">15.9% — resize / format</td></tr> <tr><td class="conf-method-cell">Med3DVLM</td><td>7B</td><td class="conf-loss">0.0% — malformed output</td></tr> <tr><td class="conf-method-cell">Gemini 2.5 / 3 Flash</td><td>closed</td><td>strong reference point</td></tr> </tbody> </table> </div> <div class="conf-panel conf-title-card"> <h3>Inference, held fixed</h3> <ul class="conf-list conf-fit-list"> <li>Reasoning enabled; max new tokens 8,912; temperature 0.5.</li> <li>Same sampling config for every model, for a fair comparison.</li> <li>Bayesian credible intervals report performance under limited trials.</li> <li>Missing answer tags drop the question — instruction-following, hit the smallest models hardest.</li> </ul> </div> </div> Note: The two 3D-medical VLMs collapse from aggressive input resizing and rigid formatting, not necessarily absent capability, so don't read them as a verdict on 3D medical VLMs. Gemini matters because it shows the benchmark is hard beyond our own method. --- <!-- .slide: class="conf-slide" data-background-color="#F8FAFC" --> <div class="conf-kicker">Headline result</div> <h2>Semantic sampling tops open weights, above Gemini 3 Flash</h2> <div class="conf-split"> <figure class="conf-figure conf-fig-mid"> <img src="/assets/slides/2026-09-28-mis-ground/fig2.webp" alt="Overall MIS-Ground accuracy versus model size; the MIS-SemSam curve reaches 66.5% at 32B, crossing above the Gemini 3 Flash Preview reference line near 60%" /> <figcaption>Overall accuracy by family and size. MIS-SemSam is Qwen3-VL with semantic sampling; the dashed line is Gemini 3 Flash Preview.</figcaption> </figure> <div class="conf-stack"> <div class="conf-callout teal"><strong>66.5%</strong> overall for MIS-SemSam at 32B — the best open-weights result on MIS-Ground.</div> <div class="conf-card"> <h3>Size matters, version more</h3> <p>Accuracy tracks scale, but Qwen3-VL beats the larger Qwen2.5-VL-72B — iteration over raw size.</p> </div> <div class="conf-callout">The MIS-SemSam curve crosses the ~60% Gemini 3 Flash line: an open model passes a strong closed reference.</div> </div> </div> Note: This is the one slide to remember. A video-native open model, trained on natural scenes, with a free decode-time change, clears a strong closed reference on 3D medical grounding. Everything after this explains why. --- <!-- .slide: class="conf-slide" data-background-color="#F8FAFC" --> <div class="conf-kicker">Method</div> <h2>Rescore the next token by its semantic neighborhood</h2> <p class="conf-lead">When the model is unsure among several phrasings of one concept, aggregate the probability mass of its semantic neighbors instead of trusting one token's logit.</p> <div class="conf-equation">\[ \mathrm{Score}_t(c)=\sum_{k\in\mathcal{K}(c)} w_{c,k} p_t\big(S_{\mathrm{tid}}[c,k]\big),\qquad w_{c,k}=\max\big(0, S_{\mathrm{val}}[c,k]\big) \]</div> <div class="conf-grid three" style="margin-top: 20px;"> <div class="conf-card"> <h3>Offline neighborhoods</h3> <p>Cosine k-NN over content tokens only; special and control tokens are excluded because they form embedding hubs.</p> </div> <div class="conf-card"> <h3>At step t</h3> <p>After the top-M / top-p filter, a non-content candidate defers to default decoding; otherwise rescore by neighborhood mass.</p> </div> <div class="conf-card"> <h3>Pick</h3> <p>Argmax for reproducibility, or sample for chain-of-thought. No extra forward passes, only table lookups.</p> </div> </div> Note: The intuition is one line: if many neighbors of a candidate also carry mass, the model means that region of the vocabulary, so commit to it. Excluding control tokens is what makes it work for VLMs, where image and role markers would otherwise poison the neighbor structure. --- <!-- .slide: class="conf-slide" data-background-color="#F8FAFC" --> <div class="conf-kicker">RQ1</div> <h2>Video VLMs really do read the third dimension</h2> <div class="conf-two-thirds"> <div> <div class="conf-stat-row"> <div class="conf-stat"><strong>77.6%</strong><span>slice-direction accuracy</span></div> <div class="conf-stat"><strong>68.0%</strong><span>cross-slice relations</span></div> <div class="conf-stat"><strong>71.7%</strong><span>in-plane relations</span></div> <div class="conf-stat"><strong>56.9%</strong><span>overall on 3D</span></div> </div> <div class="conf-callout teal" style="margin-top: 20px;">3D overall (56.9%) is on par with 2D (58.8%): serializing a volume as a stack of slices is a workable interface.</div> </div> <div class="conf-panel conf-title-card"> <h3>Why it counts</h3> <ul class="conf-list conf-fit-list"> <li>Cross-slice questions cannot be answered from any single slice.</li> <li>68.0% there, close to 71.7% in-plane, means real volumetric reasoning.</li> <li>The model names the slice direction correctly 77.6% of the time.</li> </ul> </div> </div> Note: The cross-slice number is the one to highlight: those answers are impossible from a single frame, so getting them near in-plane accuracy is evidence the model integrates across the stack rather than guessing per slice. --- <!-- .slide: class="conf-slide" data-background-color="#F8FAFC" --> <div class="conf-kicker">RQ2</div> <h2>Anatomical terms win, until the view flips</h2> <div class="conf-split"> <table class="conf-table wide-text conf-panel" aria-label="Anatomical versus colloquial terms by orientation"> <thead><tr><th>Orientation</th><th>Anatomical</th><th>Colloquial</th></tr></thead> <tbody> <tr><td class="conf-method-cell">Standard viewing</td><td class="conf-win">69.4%</td><td>57.8%</td></tr> <tr><td class="conf-method-cell">RAS storage</td><td>50.2%</td><td class="conf-win">59.85%</td></tr> </tbody> </table> <div class="conf-stack"> <div class="conf-callout">In a normal view the model leans on anatomical priors and wins with anatomical terms.</div> <div class="conf-callout amber">Flip into RAS storage and those priors fight the pixels — colloquial terms, tied to the current view, take over.</div> </div> </div> Note: Anatomical terms are invariant to how the image is shown; colloquial terms describe the current view. So the RAS reversal is the tell: under a non-standard orientation the model's body-knowledge prior conflicts with what it sees, and the view-relative wording wins. --- <!-- .slide: class="conf-slide" data-background-color="#F8FAFC" --> <div class="conf-kicker">RQ3</div> <h2>Visual prompts help or hurt by how much they conflict</h2> <div class="conf-grid three"> <div class="conf-card"> <h3>Standard view</h3> <p>Baseline 57.6%. Points, boxes, masks add only <strong>+2.97 / +2.33 / +2.52%</strong> — modest, no conflict.</p> </div> <div class="conf-card"> <h3>RAS + anatomical</h3> <p>Strong 75.3% baseline, but prompts fight the flipped view: <strong class="conf-loss">−13.33%</strong> points, <strong class="conf-loss">−9.22%</strong> boxes.</p> </div> <div class="conf-card"> <h3>Forced colloquial</h3> <p>Weak 45.1% baseline with no prior to lean on: prompts help, up to <strong>+8.23%</strong>.</p> </div> </div> <div class="conf-callout teal" style="margin-top: 24px;">A prompt is evidence the model must reconcile: it helps when there is no prior, and hurts when it contradicts a strong one.</div> Note: The counterintuitive cell is RAS plus anatomical: adding a correct box drops accuracy thirteen points, because the box reinforces the conflicting view while the model is trying to hold its anatomical prior. Prompt density is not the story; conflict is. --- <!-- .slide: class="conf-slide" data-background-color="#F8FAFC" --> <div class="conf-kicker">Ablations</div> <h2>The prior is real, and reasoning survives without the scan</h2> <div class="conf-grid two"> <div class="conf-card"> <h3>AB1 — anatomy prior</h3> <div class="conf-stat-row" style="grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 14px;"> <div class="conf-stat"><strong>69.3%</strong><span>text-only, anatomical</span></div> <div class="conf-stat"><strong>74.0%</strong><span>with image, anatomical</span></div> <div class="conf-stat"><strong>40.4%</strong><span>text-only, colloquial</span></div> </div> <p style="margin-top: 14px;">Anatomical relations survive with no image at all; colloquial ones collapse, because there is no pretrained prior for view-relative phrasing.</p> </div> <div class="conf-card"> <h3>AB2 — abstract reasoning</h3> <div class="conf-stat-row" style="grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 14px;"> <div class="conf-stat"><strong>64.2%</strong><span>points, blank background</span></div> <div class="conf-stat"><strong>60.4%</strong><span>boxes, blank background</span></div> </div> <p style="margin-top: 14px;">With the scan removed and only labeled boxes on white, the model still reads spatial relationships — the geometry, not the anatomy, carries it.</p> </div> </div> Note: AB1 measures how much the model leans on memorized anatomy: drop the image and anatomical accuracy barely falls, but colloquial accuracy craters. AB2 shows the complementary skill, pure spatial reasoning on abstract shapes, is intact. --- <!-- .slide: class="conf-slide" data-background-color="#F8FAFC" --> <div class="conf-takeaway-header"> <img class="conf-takeaway-icon" src="/assets/slides/2026-09-28-mis-ground/takeaway.webp" alt="" aria-hidden="true" /> <div> <h2 class="conf-takeaway-title">Takeaways</h2> <div class="conf-takeaway-subtitle">A controlled benchmark exposes language-side brittleness</div> </div> </div> <div class="conf-takeaway-grid"> <div class="conf-card conf-takeaway-card"> <div class="conf-takeaway-num">1</div> <h3>Attribute the failure</h3> <p>MIS-Ground varies modality, view, prompt, and terminology so a low score points at a factor, not a fog.</p> </div> <div class="conf-card conf-takeaway-card"> <div class="conf-takeaway-num">2</div> <h3>Recover it for free</h3> <p>Semantic sampling at decode time adds 13.06% to Qwen3-VL-32B — no training, no extra passes.</p> </div> <div class="conf-card conf-takeaway-card"> <div class="conf-takeaway-num">3</div> <h3>3D is within reach</h3> <p>Video-native VLMs ground anatomy in 3D well enough to pass a strong closed reference.</p> </div> </div> Note: Leave them with the reframing: medical grounding is not hopeless, it is brittle in a specific, fixable place. The benchmark finds it and the decode rule patches it, cheaply enough to use on any model that exposes logits. --- <!-- .slide: class="conf-slide" data-background-color="#F8FAFC" --> <div class="conf-closing-layout"> <div class="conf-closing-main"> <h1 class="conf-closing-title">Thank you! Questions?</h1> <div class="conf-subtitle">Medical Image Spatial Grounding with Semantic Sampling</div> <div class="conf-qr-grid" aria-label="Project links"> <div class="conf-qr-item"> <img src="/assets/slides/2026-09-28-mis-ground/slide_qr.svg" alt="QR code for the interactive slides" /> <strong>Slides</strong> </div> <div class="conf-qr-item"> <img src="/assets/slides/2026-09-28-mis-ground/qr_codes/02_arxiv.svg" alt="QR code for the arXiv paper" /> <strong>arXiv</strong> </div> <div class="conf-qr-item"> <img src="/assets/slides/2026-09-28-mis-ground/qr_codes/01_github.svg" alt="QR code for the MIS-Ground GitHub repository" /> <strong>Benchmark</strong> </div> </div> </div> <div class="conf-ack-stack" aria-label="Acknowledgments"> <div class="conf-ack-item conf-ack-nsf"> <img src="/assets/slides/2026-09-28-mis-ground/nsf.svg" alt="National Science Foundation" /> <div> <h3>NSF Awards</h3> <p>2117439, 2320952</p> </div> </div> <div class="conf-ack-item conf-ack-cwru"> <img src="/assets/slides/2026-09-28-mis-ground/cwru-hpc.webp" alt="Case Western Reserve University" /> <div> <h3>High Performance Computing (HPC)</h3> <p>Center at CWRU</p> </div> </div> </div> </div> Note: Close on the public release and the two QRs: scan for these slides, or for the benchmark and code on GitHub. Thank NSF awards 2117439 and 2320952 and the High Performance Computing Center at CWRU.