/* Shared slide rendering (used by preview, presenter, and exports) */

.slide {
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  padding: var(--slide-padding);
  color: var(--color-text);
  background: var(--slide-bg, var(--color-background));
  display: flex;
}

.slide-bg-lime { --slide-bg: var(--slide-bg-lime); }
.slide-bg-mist { --slide-bg: var(--slide-bg-mist); }

.slide-inner {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.slide-title .title {
  font-family: var(--font-heading);
  font-size: 40px;
  line-height: 1.05;
  letter-spacing: -0.02em;
  font-weight: 500;
}

.slide-title .subtitle {
  margin-top: 18px;
  font-size: 18px;
  color: rgba(11, 11, 11, 0.7);
  font-weight: 400;
  max-width: 60ch;
}

.slide-title {
  padding: 0;
  position: relative;
  overflow: hidden;
}
.slide-title .slide-inner {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
}
.slide-title .slide-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.02);
}
.slide-title .slide-inner::before {
  /* subtle readability layer without killing the background image */
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,0.22) 0%, rgba(0,0,0,0) 60%);
}

.slide-title .title-bar {
  position: absolute;
  left: 64px;
  right: 64px;
  bottom: 64px;
  width: auto; /* stretch to the right, keeping equal margins */
  background: var(--slide-bg, var(--slide-bg-lime));
  color: var(--color-text);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  padding: 78px 60px; /* ~3x vertical, ~2x horizontal padding (vs previous) */
  box-sizing: border-box;
  border-radius: 18px;
}

.slide-title .title-text {
  min-width: 0;
  flex: 1;
}

.slide-title .title-logo {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: flex-end;
}
.slide-title .logo {
  width: 210px;
  height: 56px;
  object-fit: contain;
}

.slide-content .heading {
  font-family: var(--font-heading);
  font-size: var(--font-size-heading);
  line-height: 1.1;
  margin-bottom: 18px;
}

.slide-content .slide-inner {
  justify-content: flex-start;
}

.slide-content .body {
  font-family: var(--font-body);
  font-size: var(--font-size-body);
  line-height: var(--line-height-body);
  columns: 2;
  column-gap: 64px;
  column-fill: auto; /* fill left column first, then flow to right */
  flex: 1;
  min-height: 0;
}

.slide-content .body p { margin: 0 0 14px; }
.slide-content .body ul,
.slide-content .body ol { margin: 0 0 14px 1.2em; padding: 0; }
.slide-content .body li { margin: 10px 0; }
.slide-content .body ul li::marker { color: var(--color-accent); }
.slide-content .body a { color: var(--color-accent); }

.slide-content .body p,
.slide-content .body ul,
.slide-content .body ol,
.slide-content .body li {
  break-inside: avoid;
}

.slide-image .slide-inner {
  padding: 0;
  justify-content: center;
}
.slide-image-full .image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 18px;
}
.slide-image-full .caption {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 16px 22px;
  background: rgba(0, 0, 0, 0.45);
  font-size: 20px;
}
.slide-image-full {
  position: relative;
}
.slide-image-centered .slide-inner {
  padding: var(--slide-padding);
}
.slide-image-centered .image {
  width: 100%;
  height: auto;
  max-height: calc(100% - 70px);
  object-fit: contain;
  border-radius: 18px;
}
.slide-image-centered .caption {
  margin-top: 14px;
  font-size: 20px;
  color: var(--color-text-muted);
}

/* Image + text split slide */
.slide-image-text {
  padding: 0; /* image should bleed to slide edges */
}
.slide-image-text .slide-inner {
  justify-content: flex-start;
  padding: 0;
}
.slide-image-text .split {
  width: 100%;
  height: 100%;
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr; /* lock to full height so swapping columns can't change vertical sizing */
  gap: 0;
  align-items: stretch; /* top align content; fill full height */
  min-height: 0;
  min-width: 0;
}
.slide-image-text .media {
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: rgba(0, 0, 0, 0.08);
  min-height: 0;
  min-width: 0;
}
.slide-image-text .media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}
.slide-image-text .copy {
  height: 100%;
  padding: var(--slide-padding);
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: stretch;
  min-height: 0;
  min-width: 0;
}
.slide-image-text .copy .heading {
  font-family: var(--font-heading);
  font-size: var(--font-size-heading);
  line-height: 1.1;
  margin-bottom: 18px;
}
.slide-image-text .copy .body {
  font-family: var(--font-body);
  font-size: var(--font-size-body);
  line-height: var(--line-height-body);
}
.slide-image-text .copy .body p { margin: 0 0 14px; }
.slide-image-text .copy .body ul,
.slide-image-text .copy .body ol { margin: 0 0 14px 1.2em; padding: 0; }
.slide-image-text .copy .body li { margin: 10px 0; }
.slide-image-text .copy .body ul li::marker { color: var(--color-accent); }
.slide-image-text .copy .body a { color: var(--color-accent); }
.slide-image-text .split.is-right .media { grid-column: 2; grid-row: 1; }
.slide-image-text .split.is-right .copy { grid-column: 1; grid-row: 1; }

/* Split partner/title slide */
.slide-partner-split {
  padding: 0;
  background: #000;
}
.slide-partner-split .slide-inner {
  padding: 0;
}
.slide-partner-split .split-50 {
  width: 100%;
  height: 100%;
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 0; /* prevent grid auto-min sizing from reflowing the row */
  min-width: 0;
}
.slide-partner-split .left {
  background: #fff;
  padding: 0;
  display: flex;
  align-items: center; /* vertical center */
  min-height: 0;
  min-width: 0;
  overflow: hidden; /* keep left content from affecting right panel sizing */
}
.slide-partner-split .logo-stack {
  padding-left: 9%;
  padding-right: 9%;
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: 52px; /* 40–60px */
  max-height: 100%;
  overflow: hidden;
}
.slide-partner-split .partner-logo {
  display: block;
  /* Keep all partner logos visually consistent: fixed height, varying width */
  height: 78px;
  width: auto;
  max-width: 60%;
  object-fit: contain;
  object-position: left center;
}
.slide-partner-split .right {
  position: relative;
  overflow: hidden;
  min-height: 0;
  min-width: 0;
}
.slide-partner-split .right .bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transform: scale(1.02);
}
.slide-partner-split .right .overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 60%, rgba(0, 0, 0, 1) 100%);
}
.slide-partner-split .right .text {
  position: absolute;
  left: 9%;
  bottom: 9%;
  right: 9%;
  color: #fff;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.slide-partner-split .right .badge {
  display: inline-block;
  background: #d4e600;
  color: #000;
  font-family: var(--font-body);
  font-size: 14px;
  letter-spacing: 0.12em;
  font-weight: 700;
  text-transform: uppercase;
  padding: 10px 14px;
  border-radius: 999px;
  margin-bottom: 22px; /* 20–30 */
}
.slide-partner-split .right .title {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 64px;
  line-height: 1.05;
  margin: 0 0 16px; /* 15–20 */
}
.slide-partner-split .right .subtitle {
  font-family: var(--font-body);
  font-size: 22px;
  line-height: 1.25;
  opacity: 0.95;
}

/* Quote slide */
.slide-quote {
  color: var(--quote-text-color);
  --g1x: 55%;
  --g1y: 12%;
  --g2x: 92%;
  --g2y: 92%;
  --g3x: 10%;
  --g3y: 92%;
  position: relative;
  overflow: hidden;
  background: #242424; /* fallback */
}
.slide-quote::before {
  content: "";
  position: absolute;
  inset: -12%;
  background:
    radial-gradient(circle at var(--g1x) var(--g1y),
      #abc44b 0%,
      rgba(171, 196, 75, 0.72) 16%,
      rgba(171, 196, 75, 0.32) 42%,
      rgba(171, 196, 75, 0.12) 62%,
      rgba(171, 196, 75, 0) 84%),
    radial-gradient(circle at var(--g2x) var(--g2y),
      #385c5c 0%,
      rgba(56, 92, 92, 0.55) 20%,
      rgba(56, 92, 92, 0.22) 48%,
      rgba(56, 92, 92, 0.08) 68%,
      rgba(56, 92, 92, 0) 88%),
    radial-gradient(circle at var(--g3x) var(--g3y),
      #242424 0%,
      rgba(36, 36, 36, 0.65) 22%,
      rgba(36, 36, 36, 0.28) 52%,
      rgba(36, 36, 36, 0.12) 72%,
      rgba(36, 36, 36, 0) 92%),
    #242424;
  /* Make the gradient larger than the slide so background-position animation is visible */
  background-size: 220% 220%;
  background-position: 0% 35%;
  will-change: background-position;
  animation: sb-gradient-pan 80s ease-in-out infinite alternate;
}
.slide-quote .slide-inner {
  position: relative;
  z-index: 1;
  justify-content: space-between;
}
.slide-quote .quote-text {
  font-family: var(--font-heading);
  font-size: var(--font-size-title);
  line-height: 1.05;
  letter-spacing: -0.02em;
  max-width: 32ch;
  margin-top: 8px;
}
.slide-quote .quote-author {
  color: var(--quote-author-color);
  font-family: var(--font-body);
  font-size: 22px;
  line-height: 1.2;
}
.slide-quote .quote-author .name {
  font-family: var(--font-heading);
  font-size: 26px;
  margin-bottom: 6px;
}
.slide-quote .quote-author .role {
  opacity: 0.95;
}

/* Chapter title slide (same gradient family as quote, but deterministic "random-ish" control points per slide) */
.slide-chapter-title {
  color: #fff;
  --g1x: 58%;
  --g1y: 14%;
  --g2x: 90%;
  --g2y: 90%;
  --g3x: 12%;
  --g3y: 90%;
  position: relative;
  overflow: hidden;
  background: #242424; /* fallback */
}
.slide-chapter-title::before {
  content: "";
  position: absolute;
  inset: -12%;
  background:
    radial-gradient(circle at var(--g1x) var(--g1y),
      #abc44b 0%,
      rgba(171, 196, 75, 0.7) 18%,
      rgba(171, 196, 75, 0.3) 44%,
      rgba(171, 196, 75, 0.12) 66%,
      rgba(171, 196, 75, 0) 88%),
    radial-gradient(circle at var(--g2x) var(--g2y),
      #385c5c 0%,
      rgba(56, 92, 92, 0.52) 22%,
      rgba(56, 92, 92, 0.22) 52%,
      rgba(56, 92, 92, 0.08) 72%,
      rgba(56, 92, 92, 0) 92%),
    radial-gradient(circle at var(--g3x) var(--g3y),
      #242424 0%,
      rgba(36, 36, 36, 0.62) 24%,
      rgba(36, 36, 36, 0.28) 56%,
      rgba(36, 36, 36, 0.12) 76%,
      rgba(36, 36, 36, 0) 94%),
    #242424;
  background-size: 220% 220%;
  background-position: 100% 55%;
  will-change: background-position;
  animation: sb-gradient-pan 100s ease-in-out infinite alternate-reverse;
}
.slide-chapter-title .slide-inner {
  position: relative;
  z-index: 1;
  justify-content: center; /* vertical center */
  align-items: flex-start; /* left align */
}
.slide-chapter-title .title {
  font-family: var(--font-heading);
  font-size: var(--font-size-title);
  line-height: 1.05;
  letter-spacing: -0.02em;
  max-width: 34ch;
}

@keyframes sb-gradient-pan {
  0% { background-position: -20% 20%; }
  25% { background-position: 120% 40%; }
  50% { background-position: 100% 80%; }
  75% { background-position: -10% 60%; }
  100% { background-position: -20% 20%; }
}

@media (prefers-reduced-motion: reduce) {
  .slide-quote::before,
  .slide-chapter-title::before {
    animation: none;
  }
}

/* Presenter layout (also used in standalone export) */
.presenter-shell {
  height: 100vh;
  display: grid;
  grid-template-rows: var(--presenter-topbar-height) 1fr 56px;
}
.presenter-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 16px;
  background: rgba(0, 0, 0, 0.35);
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}
.presenter-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}
.presenter-title {
  font-family: var(--font-heading);
  font-size: 16px;
}
.presenter-help {
  font-size: 12px;
  color: var(--color-text-muted);
}
.deck {
  position: relative;
  overflow: hidden;
  background: #000;
}
.deck-slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transform: translateX(20px);
  transition: opacity 220ms ease, transform 220ms ease;
}
.deck-slide.is-active {
  opacity: 1;
  transform: translateX(0);
}
.presenter-progress {
  padding: 10px 16px;
  background: rgba(0, 0, 0, 0.35);
  border-top: 1px solid rgba(255, 255, 255, 0.12);
}
.presenter-progress-text {
  font-size: 12px;
  color: var(--color-text-muted);
  margin-bottom: 6px;
}
.presenter-progress-bar {
  height: 6px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.15);
  overflow: hidden;
}
.presenter-progress-fill {
  height: 100%;
  width: 0%;
  background: var(--color-accent);
}


