/* Proximity is local to an illustrated idea. Space between ideas and scenes
   stays intact; surplus height surrounds the group, never splits its parts.
   Portrait's existing side-by-side groups are deliberately preserved. */

/* Inicio: the illustrations, labels and descriptions form one visual unit. */
.course-shell:not(.portrait) .intro-scene .intro-outcome{
  grid-template-rows:auto auto auto auto;
  align-content:center;
  row-gap:7px;
}
.course-shell:not(.portrait) .intro-scene .intro-outcome .intro-object{
  height:auto;
  max-height:none;
  margin-bottom:-12px;
}
.course-shell:not(.portrait) .intro-scene .intro-outcome .intro-step-number{
  margin:0;
}
.course-shell:not(.portrait) .intro-scene .intro-outcome h2{margin:0}
.course-shell:not(.portrait) .intro-scene .intro-lane{
  grid-template-rows:auto auto;
  align-content:center;
  gap:10px;
}
.course-shell:not(.portrait) .intro-scene .intro-lane .intro-stage-art{
  width:min(100%,300px);
  height:auto;
  aspect-ratio:1;
  margin-bottom:-16px;
}

/* Fundamentos: intrinsic rows prevent spare stage height from separating
   an icon from the idea it represents. Transparent padding stays uncropped. */
.course-shell:not(.portrait) .fund-purpose-stop{
  grid-template-rows:auto auto auto auto;
  align-content:center;
  gap:8px;
}
.course-shell:not(.portrait) .fund-purpose-stop .fund-symbol{
  height:auto;
  max-height:none;
  margin-bottom:-14px;
}
.course-shell:not(.portrait) .fund-summary-value{
  grid-template-rows:auto auto;
  align-content:center;
  gap:8px;
}
.course-shell:not(.portrait) .fund-summary-value .fund-symbol{
  height:auto;
  max-height:none;
  margin-bottom:-14px;
}

/* Políticas: keep each illustrated explanation together while retaining the
   separators between review levels, the next cycle and supporting examples. */
.course-shell:not(.portrait) .policy-review-main,
.course-shell:not(.portrait) .policy-summary-stop,
.course-shell:not(.portrait) .policy-indicator-art,
.course-shell:not(.portrait) .policy-goal-visual{
  grid-template-rows:auto auto;
  align-content:center;
  gap:10px;
}
.course-shell:not(.portrait) .policy-review-main .policy-symbol,
.course-shell:not(.portrait) .policy-summary-stop .policy-symbol,
.course-shell:not(.portrait) .policy-indicator-art .policy-symbol,
.course-shell:not(.portrait) .policy-goal-visual .policy-goal-art{
  height:auto;
  max-height:none;
  margin-bottom:-12px;
}
.course-shell:not(.portrait) .policy-review-main .policy-image{
  height:auto;
  aspect-ratio:210/175;
  max-height:none;
  margin-bottom:-8px;
}
.course-shell:not(.portrait) .policy-review-main .policy-number{margin-bottom:6px}
.course-shell:not(.portrait) .policy-review-main p{margin-top:7px}
.course-shell:not(.portrait) .policy-indicator-art>span:last-child{line-height:1.25}

/* Despacho: retain the travel lanes below evidence and the result band below
   the closing actions. Only their internal image/title spacing is compacted. */
.course-shell:not(.portrait) .dispatch-evidence-source>.dispatch-evidence,
.course-shell:not(.portrait) .dispatch-closing-route>.dispatch-seek{
  grid-template-rows:auto auto auto;
  align-content:center;
  gap:12px;
}
.course-shell:not(.portrait) .dispatch-evidence-source .dispatch-art,
.course-shell:not(.portrait) .dispatch-evidence-source .dispatch-symbol,
.course-shell:not(.portrait) .dispatch-evidence-source .dispatch-person,
.course-shell:not(.portrait) .dispatch-closing-route .dispatch-art,
.course-shell:not(.portrait) .dispatch-closing-route .dispatch-symbol{
  max-height:none;
  margin-bottom:0;
}

/* Cadena: product pairs stay centered inside their own card; uneven heading
   lengths no longer leave an artificial blank line above their descriptions. */
.course-shell:not(.portrait) .chain-product-choice{
  grid-template-rows:auto auto;
  align-content:center;
  gap:10px;
}
.course-shell:not(.portrait) .chain-product-choice .chain-symbol{
  width:min(100%,275px);
  height:auto;
  max-height:none;
  margin-bottom:-10px;
}
.course-shell:not(.portrait) .chain-summary-controls>.chain-seek{gap:9px}
.course-shell:not(.portrait) .chain-summary-controls h2,
.course-shell:not(.portrait) .chain-summary-controls p{min-height:0}
.course-shell:not(.portrait) .chain-summary-controls .chain-old-symbol{
  margin-bottom:-10px;
}

/* Reference guides have variable copy lengths. Their flexible illustration
   row remains available, but its artwork sits next to its copy. A size query
   reduces BOTH dimensions of atlas cells when the available row is short. */
.course-shell:not(.portrait) .rg-beat{gap:11px}
.course-shell:not(.portrait) .rg-visual{
  container-type:size;
  align-items:flex-end;
  padding:4px 6px 0;
}
.course-shell:not(.portrait) .rg-art{
  --group-art-limit:220px;
  width:min(100cqw,100cqh,var(--group-art-limit));
  height:auto;
  aspect-ratio:1;
  max-height:none;
}
.course-shell:not(.portrait) .rg-art-image{
  width:min(100cqw,calc(100cqh * 1.5),245px);
  height:auto;
  aspect-ratio:1.5;
  object-fit:contain;
}
.course-shell:not(.portrait) .rg-copy p{margin-top:8px}
.course-shell:not(.portrait) .rg-layout-metric .rg-art{--group-art-limit:170px}
.course-shell:not(.portrait) .rg-beat-scale .rg-art{--group-art-limit:125px}
/* The secondary ideas in a split layout are already horizontal groups. */
.course-shell:not(.portrait) .rg-layout-split:not(.rg-count-2) .rg-beat:not(:first-child) .rg-visual{
  align-items:center;
}
.course-shell:not(.portrait) .rg-layout-split:not(.rg-count-2) .rg-beat:not(:first-child) .rg-art{
  --group-art-limit:110px;
  width:min(100cqw,100cqh,var(--group-art-limit));
  height:auto;
}
.course-shell:not(.portrait) .rg-layout-split.rg-count-2 .rg-beat:last-child .rg-art{
  width:min(100cqw,100cqh,220px);
  height:auto;
  max-height:none;
}

/* The approved 4.6 layout is retained: merely anchor art to its copy. */
.course-shell:not(.portrait) .concept-art{align-self:end}

/* Compact portrait grids already group art beside text. Preserve their
   placement, and ensure their square sprites cannot be squeezed in height. */
.course-shell.portrait .fund-summary-value{
  grid-template-rows:auto auto;
  align-content:center;
}
.course-shell.portrait .fund-summary-value .fund-symbol,
.course-shell.portrait .policy-summary-stop .policy-symbol,
.course-shell.portrait .dispatch-evidence-source .dispatch-symbol,
.course-shell.portrait .dispatch-evidence-source .dispatch-person,
.course-shell.portrait .dispatch-closing-route .dispatch-symbol{
  max-height:none;
}

/* Follow-up audit: the route atlas has 49–80 px of alpha below each 512 px
   scene. Compact these vertical groups only; 6.12 and horizontal pairs keep
   the approved layout. The space between participants and arrows is intact. */
.course-shell:not(.portrait) .chain-participant{gap:9px}
.course-shell:not(.portrait) .chain-participant h2{min-height:0;line-height:1.15}
.course-shell:not(.portrait) .chain-participant>.chain-symbol{margin-bottom:-15px}
.course-shell:not(.portrait) .chain-trace-route>.chain-seek{gap:7px}
.course-shell:not(.portrait) .chain-trace-route>.chain-seek>:is(.chain-symbol,.chain-old-symbol){margin-bottom:-10px}
.course-shell:not(.portrait) .chain-distinction-side{gap:8px}
.course-shell:not(.portrait) .chain-distinction-side>.chain-symbol{margin-bottom:-12px}
.course-shell:not(.portrait) .chain-threat-story:not(.chain-threat-network) .chain-threat-hero{gap:9px}
.course-shell:not(.portrait) .chain-threat-story:not(.chain-threat-network) .chain-threat-hero>.chain-symbol{margin-bottom:-12px}
