/* Give short steps a stable action area; long content still fits the usable viewport. */
html:has(.onboarding-shell) { overflow: hidden; }
.onboarding-shell {
  height: auto;
  max-height: calc(var(--onboarding-viewport-height, 100dvh) - var(--onboarding-bottom-inset, 0px));
  min-height: min(560px, calc(var(--onboarding-viewport-height, 100dvh) - var(--onboarding-bottom-inset, 0px)));
  padding-bottom: 0;
  overflow: hidden;
}
.onboarding-shell:has(.onboarding-actions:empty) {
  height: calc(var(--onboarding-viewport-height, 100dvh) - var(--onboarding-bottom-inset, 0px));
}
.onboarding-content { flex: 1 1 auto; min-height: 0; overscroll-behavior-y: contain; padding-bottom: 0; scroll-padding-bottom: 12px; }
.onboarding-content > .step-enter { flex-shrink: 0; }
/* Leave room for selected outlines, focus rings and pressed-state shadows.
   Compensating margins preserve the existing control width and alignment. */
.onboarding-shell:not(.first-intro-shell):not(.second-intro-shell) .onboarding-content {
  margin-inline: -8px;
  padding-inline: 8px;
}
.onboarding-actions {
  position: relative;
  flex: 0 0 auto;
  z-index: 20;
  padding: 24px 0 max(16px, env(safe-area-inset-bottom, 0px));
  background: transparent;
  pointer-events: none;
}
.onboarding-actions:empty { display: none; }
.onboarding-actions button { pointer-events: auto; }
.onboarding-actions .ds-cta { margin: 0; }
.onboarding-actions .onb-vote-actions { margin-top: 0; }
.onboarding-actions .onboarding-rating-controls { width: 100%; }
