.cite-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.4ch;
  font-size: 1em;            /* controls text size; badge img will match height */
  line-height: 1;
  white-space: nowrap;
}

.cite-badge > img {
  /* Respect the HTML width/height exactly */
  width: auto !important;
  height: auto !important;
  max-width: none !important;
  max-height: none !important;
  object-fit: none !important;
  /* Reset any inherited styles */
  margin: 0 !important;
  padding: 0 !important;
  border: none !important;
  box-shadow: none !important;
}

.alert { color:#FFAA7F; font-weight:bold; }
.alert-soft { color:#FFB27F; font-weight:bold; }

.bullet-box {
  background: rgba(255,255,255,0.02);  /* faint light tint */
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 8px;
  padding: 0.1em 0.5em;
  text-align: centre;
}

.bullet-box ul {
  list-style-position: inside;      /* bullets come inside the box */
  margin: 0;
  padding-left: 0.8em;
  display: inline-block;            /* shrink to content so centering works */
  text-align: left;                 /* keep bullets left relative to text */
  list-style:disc inside;
  padding:0;
  font-size:1em;
  line-height:1.1;
}

.bullet-box li {
 text-indent: -1.35em;          /* pull first line back so text aligns */
 padding-left: 1.35em;          /* ensure wrapped lines align with the first */
 margin:.65em 0;
}

.bullet-box-noback {
  padding: 0.1em 0.5em;
  text-align: centre;
}

.bullet-box-noback ul {
  list-style-position: inside;      /* bullets come inside the box */
  margin: 0;
  padding-left: 0.8em;
  display: inline-block;            /* shrink to content so centering works */
  text-align: left;                 /* keep bullets left relative to text */
  list-style:disc inside;
  padding:0;
  font-size:1em;
  line-height:1.1;
}

.bullet-box-noback li {
 text-indent: -1.35em;          /* pull first line back so text aligns */
 padding-left: 1.35em;          /* ensure wrapped lines align with the first */
 margin:.65em 0;
}

.two-col-slide { display:flex; flex-wrap:wrap; gap:2rem; align-items:center; justify-content:center; }
.text-col { flex:1 1 600px; font-size:1.0em; text-align:center; }
.img-col { flex:1 1 360px; text-align:center; position:relative; }
.text-col-thin { flex:1 1 400px; font-size:1.25em; }
.img-col-wide { flex:1 1 700px; text-align:center; position:relative; }


.section-break { display:flex; flex-direction:column; justify-content:center; align-items:center; text-align:center; }
.section-break h1 { font-size:3.2em; margin:0 0 0.3em; }
.section-break .subtitle { font-size:1.2em; opacity:.7; margin:0; }
.section-break .sb-line { width:50%; border:0; border-top:3px solid #fff; margin:.6em auto; opacity:.6; }

.cluster-posteriors-list { list-style:disc inside; margin:0; padding:0; font-size:1em; line-height:1.1; }
.cluster-posteriors-list li { margin:.65em 0; }
.cluster-posteriors-list li strong { font-weight:600; color:#fff; }

/* Bring slide titles closer to the top */
.reveal .slide-title {
  margin-top: -0.5em !important;   /* adjust as needed */
  margin-bottom: 0.6em;           /* keep space below for readability */
}

/* 3 equal columns */
.three-col-grid,
 .three-col-grid{
  display:grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 2rem;
  align-items:start;
  justify-items:center;
  margin-top:1rem;
}

/* Consistent header height so baselines line up */
.col h4{
  font-weight:300;
  font-size:0.8em;
  margin: 0 0 .5rem 0;
  min-height: 1.6em;            /* same title block height */
  display:flex; align-items:flex-end; justify-content:center;
  text-align:center;
}

/* The magic: identical frames for all media */
.media-frame{
  width: 100%;
  height: 30vh;                  /* set once — all three match */
  border:1px solid rgba(255,255,255,.18);
  border-radius:8px;
  overflow:hidden;               /* hide overflow if any */
  display:flex; align-items:center; justify-content:center;
  background: rgba(255,255,255,.02);
}

/* Make images/videos fill the frame while preserving aspect */
.media-frame img,
.media-frame video{
  width: 100%;
  height: 100%;
  object-fit: contain;           /* fits inside same box */
  display:block;
}

/* Show a PRELIMINARY ribbon on slides that opt-in with data-prelim */
.reveal section[data-prelim]::after{
  content: "PRELIMINARY";
  position: fixed;             /* viewport-relative, not affected by slide transforms */
  top: -1.2rem;
  right: -3.2rem;              /* nudge so the strip crosses the corner */
  transform: rotate(28deg);
  z-index: 9999;
  pointer-events: none;

  /* style */
  background: #FFAA7F;         /* your alert color family */
  color: #111;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
  padding: .10rem 2.5rem;
  border-radius: 4px;
  box-shadow: 0 6px 18px rgba(0,0,0,.35);
  opacity: .9;
}

/* Optional: smaller ribbon when exporting to PDF */
@media print {
  .reveal section[data-prelim]::after{
    top: 0.6rem;
    right: -2.6rem;
    padding: .25rem 3.2rem;
    transform: rotate(28deg) scale(.9);
  }
}

/* Bottom conclusion */
.reveal .conclusion-box {
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, rgba(255,170,127,0.1), rgba(255,170,127,0.05));
  border: 2px solid rgba(255,170,127,0.3);
  border-radius: 8px;
  padding: 0.6rem 1rem;
  margin-bottom: 0.4rem !important;
  text-align: center;
}

.reveal .conclusion-text {
  font-size: 0.95em;
  font-weight: 500;
}
