/* Preserve the gallery's existing proportions while fitting the complete
   desktop stage, including its introduction and lower reading space. */
.services-scroll {
  --service-width: min(max(87.5vw, 280px), 1260px);
  --service-height: 612px;
  --service-card-padding: 48px;
  --service-caption-width: 584px;
  --service-inset: max(var(--gutter, 64px), calc((100vw - 1640px) / 2));
  --service-end-inset: max(0px, calc(100vw - var(--service-inset) - var(--service-width)));
  position: relative;
}
.services-stage { padding: clamp(104px, 10vh, 120px) 0 16px; }
.services-scroll.is-pinned .services-stage { position: sticky; top: var(--service-sticky-top, 0px); }
#aufgaben .services-intro { padding-bottom: clamp(56px, 6.5vh, 96px); }
#aufgaben .services-intro .basis-heading { margin-bottom: 0; }
#aufgaben .services-intro .j-label { margin-bottom: 16px; }
#aufgaben .services-intro h2 { font-size: clamp(40px, 4.5vw, 80px); }
.services-viewport {
  width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
  scroll-snap-type: x mandatory;
  scroll-padding-inline: var(--service-inset) var(--service-end-inset);
}
.services-viewport::-webkit-scrollbar { display: none; }
.services-scroll.is-pinned .services-viewport { overflow-x: hidden; scroll-snap-type: none; }
.services-viewport:focus-visible { outline-offset: -3px; }
#aufgaben .basis-service-grid {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: var(--service-width);
  grid-template-columns: none;
  gap: 20px;
  align-items: start;
  width: max-content;
  padding-inline: var(--service-inset) var(--service-end-inset);
}
.basis-service { min-width: 0; scroll-snap-align: start; }
.basis-service-card {
  position: relative;
  isolation: isolate;
  display: flex;
  align-items: flex-end;
  min-height: var(--service-height);
  overflow: hidden;
  border-radius: 28px;
  background: #101010;
  color: #fff;
}
.basis-service-art {
  position: absolute;
  inset: 0;
  z-index: -1;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: right top;
  -webkit-mask-image: none;
  mask-image: none;
  pointer-events: none;
  user-select: none;
}
.basis-service-card-light { background: #f3f3f3; color: #171717; }
.basis-service-card-orange { background: #ff602f; color: #171717; }
.basis-service-card .basis-index {
  position: absolute;
  top: var(--service-card-padding);
  left: var(--service-card-padding);
  margin: 0;
  font-size: 16px;
  line-height: 1;
  color: #ff602f;
}
.basis-service-card-orange .basis-index { color: #171717; }
#aufgaben .basis-service-card h3 {
  font: 600 28px/1.1428571429 var(--ui-font);
  letter-spacing: .007em;
  color: inherit;
  margin: 0;
  padding: var(--service-card-padding);
  padding-top: calc(var(--service-card-padding) * 2 + 16px);
  width: min(100%, calc(var(--service-caption-width) + var(--service-card-padding) * 2));
  overflow-wrap: break-word;
  box-sizing: border-box;
}
.basis-service-description {
  padding: 26px clamp(4px, 2.3vw, 36px) 0;
  max-width: 980px;
}
.basis-service-description p {
  font: 400 22px/1.55 var(--ui-font);
  letter-spacing: -.012em;
  color: #bdbdbd;
  margin: 0;
}
.basis-service-description .basis-evidence {
  font: 400 18px/1.55 var(--ui-font);
  color: #aaa;
  margin-top: 14px;
}
.services-gallery-controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2px;
  padding-top: 8px;
}
.services-gallery-controls button { display: grid; place-items: center; width: 48px; height: 44px; border-radius: 22px; }
.services-gallery-controls button > .service-dot { display: block; width: 7px; height: 7px; border-radius: 8px; background: #ffffff45; transition: width .25s ease, background .25s ease; }
.services-gallery-controls button[aria-current] > .service-dot { width: 30px; background: #ff602f; }
.services-gallery-controls button:hover > .service-dot { background: #fff; }
@media (min-width: 1069px) {
  /* The grid reserves the tallest description; keep navigation below it. */
  .services-gallery-controls { padding-top: 48px; }
  .services-stage { padding-bottom: 32px; }
  #aufgaben .services-intro { padding-bottom: 48px; }
  .basis-service-description p { font-size: 1.125rem; }
  .basis-service-description .basis-evidence { font-size: 1rem; }
}
@media (max-width: 1068px) {
  .services-scroll { --service-height: 576px; --service-card-padding: 44px; --service-caption-width: 555px; }
  #aufgaben .basis-service-card h3 { font-size: 24px; line-height: 1.1666666667; letter-spacing: .009em; }
  .basis-service-description p { font-size: 18px; }
}
@media (min-width: 1101px) {
  /* When the introduction scrolls out, keep the full reading area on screen. */
  .basis-preview .services-scroll.is-desktop-reading .services-gallery-controls { padding-top: 16px; }
  .basis-preview .services-scroll.is-desktop-reading .services-intro { opacity: var(--service-intro-opacity, 1); }
}
@media (max-width: 734px) {
  .services-scroll {
    --service-width: calc(max(min(420px, 87.5vw), 280px) - 20px);
    --service-inset: 22px;
    --service-height: 480px;
    --service-card-padding: 32px;
    --service-caption-width: 100%;
  }
  #aufgaben .services-intro { padding-bottom: 48px; }
  .basis-service-description { padding: 22px 4px 0; }
  .basis-service-description p { font-size: 18px; }
  .basis-service-description .basis-evidence { font-size: 18px; margin-top: 12px; }
  .basis-service-art { object-position: right top; -webkit-mask-image: none; mask-image: none; }
  #aufgaben .basis-service-card h3 { font-size: 17px; line-height: 1.2353641176; letter-spacing: -.022em; }
  .basis-service-card .basis-index { font-size: 14px; }
}
@media (prefers-reduced-motion: reduce) {
  .services-viewport { scroll-behavior: auto; }
  .services-gallery-controls button > .service-dot { transition: none; }
}
