.slide-definition .slide-content {
  width: 100%;
  align-self: center;
  padding: 51.2px 64px;
}

.slide-definition .eyebrow { margin-bottom: 0.65rem; }

.slide-definition h2 {
  max-width: none;
  font-size: 60.16px;
}

.slide-definition .statement-body {
  max-width: 68ch;
  margin: 1rem 0 0;
  color: var(--ink);
  font-size: 19.2px;
  line-height: 1.45;
}

.definition-visual {
  min-height: 0;
  margin-top: 25.6px;
  overflow: hidden;
}

.slide-definition .definition-visual svg {
  width: 100%;
  height: 100%;
  display: block;
  font-family: var(--font-body);
  shape-rendering: geometricPrecision;
}

/* The three-row register uses only structural rails and rules. There is no
   surrounding figure frame. */

.definition-visual .definition-stage-rail {
  fill: none;
  stroke: var(--border-strong);
  stroke-width: 1;
}

.definition-visual .definition-stage-rule {
  fill: none;
  stroke: var(--border-hairline);
  stroke-width: 1;
}

.definition-visual .definition-stage-number {
  fill: var(--text-accent);
  font-family: var(--font-display);
  font-size: 20px;
  font-weight: var(--fw-medium);
  letter-spacing: var(--ls-title);
}

.definition-visual .pipeline-label {
  fill: var(--text-primary);
  font-family: var(--font-mono);
  font-size: 10.5px;
  font-weight: var(--fw-semibold);
  letter-spacing: 0.035em;
}

.definition-visual .definition-stage-subtitle {
  fill: var(--text-secondary);
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: var(--fw-regular);
}

.definition-visual .definition-flow-arrow {
  fill: var(--border-strong);
  stroke: none;
}

/* A familiar, code-native outline replaces the former stack of filled blobs. */
.definition-visual .definition-user-head,
.definition-visual .definition-user-body {
  fill: none;
  stroke: var(--border-strong);
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}

.definition-visual .definition-user-label {
  fill: var(--text-muted);
  font-family: var(--font-mono);
  font-size: 10.5px;
  font-weight: var(--fw-medium);
  letter-spacing: 0.08em;
  text-anchor: middle;
}

/* Input and recommendation cards share the same 2:3 frame and caption system.
   Rank is the only additional state on the recommendation side. */
.definition-visual .poster-fallback { fill: var(--surface-recessed); }

.slide-definition .definition-visual .movie-poster-frame,
.slide-definition .definition-visual .movie-rank-poster-card .movie-poster-frame {
  fill: none;
  stroke: var(--border-strong);
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}

.definition-visual .poster-fallback-label {
  fill: var(--text-muted);
  font-family: var(--font-mono);
  font-size: 13px;
  font-weight: var(--fw-medium);
  letter-spacing: 0.04em;
  text-anchor: middle;
}

.definition-visual .definition-poster-image { opacity: 0; }
.definition-visual .has-poster .definition-poster-image { opacity: 1; }

.slide-definition .definition-visual .poster-card-title {
  fill: var(--text-primary);
  font-family: var(--font-body);
  font-size: 13.5px;
  font-weight: var(--fw-semibold);
  letter-spacing: 0;
}

.slide-definition .definition-visual .poster-card-year {
  fill: var(--text-muted);
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: var(--fw-regular);
  letter-spacing: 0;
}

.slide-definition .definition-visual .rank-one .movie-poster-frame {
  stroke: var(--border-highlight);
  stroke-width: 2;
}

.slide-definition .definition-visual .rank-badge {
  fill: var(--ink-1);
  stroke: none;
}

.slide-definition .definition-visual .rank-badge-text {
  fill: var(--text-inverse);
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: var(--fw-semibold);
  text-anchor: middle;
}

/* Model-neutral encoding apparatus: ordered items enter a named sequence
   encoder and leave as catalog-item scores. */
.definition-visual .encoder-token {
  stroke: var(--border-hairline);
  stroke-width: 1;
}

.definition-visual .encoder-token-one { fill: var(--seq-2); }
.definition-visual .encoder-token-two { fill: var(--seq-4); }
.definition-visual .encoder-token-three { fill: var(--seq-6); }

.definition-visual .encoder-token-text {
  fill: var(--text-primary);
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: var(--fw-semibold);
  text-anchor: middle;
}

.definition-visual .encoder-model-block {
  fill: var(--blue-100);
  stroke: none;
}

.slide-definition .definition-visual .model-title {
  fill: var(--text-primary);
  font-family: var(--font-body);
  font-size: 17px;
  font-weight: var(--fw-semibold);
  text-anchor: middle;
}

.definition-visual .model-apparatus-label {
  fill: var(--text-muted);
  font-family: var(--font-mono);
  font-size: 10.5px;
  font-weight: var(--fw-regular);
  text-anchor: middle;
}

.definition-visual .score-bar { fill: var(--data-ink); }
.definition-visual .score-bar-one { opacity: 1; }
.definition-visual .score-bar-two { opacity: 0.55; }
.definition-visual .score-bar-three { opacity: 0.78; }
.definition-visual .score-bar-four { opacity: 0.38; }
.definition-visual .score-bar-five { opacity: 0.65; }

.definition-visual .definition-more-mark {
  fill: var(--text-secondary);
  font-family: var(--font-display);
  font-size: 36px;
  font-weight: var(--fw-medium);
  text-anchor: middle;
}

/* Builds are cumulative. Context remains visible but muted until introduced;
   there are deliberately no entrance, pulse, dash, or rank animations. */
.definition-stage {
  opacity: var(--dim-opacity);
  filter: var(--dim-filter);
  transition: none;
}

.definition-stage.is-revealed,
.definition-stage.is-current {
  opacity: 1;
  filter: none;
}

.definition-visual .definition-poster-image,
.definition-model.is-current .encoder-model-block,
.definition-model.is-current .definition-flow-arrow,
.definition-rank.is-current .definition-flow-arrow,
.definition-rank.is-current .recommendation-card {
  animation: none;
  transition: none;
}
