.kso-root {
  --kso-progress: 0;
  --kso-end-scale: .78;
  --kso-end-radius: 20px;
  --kso-page-bg: #f5f2ec;
  --kso-overlay: rgba(0,0,0,.28);
  --kso-media-position: center center;
  --kso-scroll-height: 180vh;
  position: relative;
  width: 100vw;
  max-width: none;
  margin-left: calc(50% - 50vw);
  background: var(--kso-page-bg);
  overflow: clip;
}

.kso-scroll-zone {
  position: relative;
  height: var(--kso-scroll-height);
  min-height: 120vh;
}

.kso-sticky {
  position: sticky;
  top: 0;
  height: 100svh;
  display: grid;
  place-items: center;
  overflow: visible;
}

.kso-frame {
  position: relative;
  width: 100vw;
  height: 100svh;
  overflow: hidden;
  border-radius: calc(var(--kso-progress) * var(--kso-end-radius));
  transform: scale(calc(1 - var(--kso-progress) * (1 - var(--kso-end-scale))));
  transform-origin: center center;
  background: #111;
  will-change: transform, border-radius;
}

.kso-media,
.kso-gallery,
.kso-gallery__item,
.kso-image,
.kso-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.kso-image,
.kso-video,
.kso-gallery__item {
  object-fit: cover;
  object-position: var(--kso-media-position);
}

.kso-media {
  transform: scale(1);
  transition: none;
}

.kso-inner-zoom .kso-media {
  transform: scale(calc(1.045 - var(--kso-progress) * .045));
  will-change: transform;
}

.kso-gallery__item {
  opacity: 0;
  transition: opacity 1.1s cubic-bezier(.22,.61,.36,1);
}
.kso-gallery__item.is-active { opacity: 1; }

.kso-shade {
  position: absolute;
  inset: 0;
  z-index: 2;
  background: var(--kso-overlay);
  pointer-events: none;
}

.kso-copy {
  position: absolute;
  inset: 0;
  z-index: 3;
  display: flex;
  color: #fff;
  pointer-events: none;
}

.kso-copy__inner {
  width: min(780px, 88vw);
}

.kso-h-left .kso-copy { justify-content: flex-start; text-align: left; }
.kso-h-center .kso-copy { justify-content: center; text-align: center; }
.kso-h-right .kso-copy { justify-content: flex-end; text-align: right; }
.kso-v-top .kso-copy { align-items: flex-start; }
.kso-v-center .kso-copy { align-items: center; }
.kso-v-bottom .kso-copy { align-items: flex-end; }

.kso-eyebrow,
.kso-after__label {
  font-size: 11px;
  line-height: 1.2;
  letter-spacing: .18em;
  text-transform: uppercase;
  opacity: .82;
  margin: 0 0 18px;
}

.kso-title {
  margin: 0;
  font-size: clamp(42px, 6vw, 96px);
  line-height: .98;
  font-weight: 500;
  letter-spacing: -.035em;
}

.kso-intro {
  margin: 24px auto 0;
  max-width: 620px;
  font-size: clamp(15px, 1.4vw, 20px);
  line-height: 1.55;
  opacity: .92;
}
.kso-h-left .kso-intro { margin-left: 0; }
.kso-h-right .kso-intro { margin-right: 0; }

.kso-copy,
.kso-scroll-hint {
  will-change: opacity, transform;
}
.kso-text-fade .kso-copy { opacity: calc(1 - min(1, var(--kso-progress) * 1.65)); transform: translateY(calc(var(--kso-progress) * -18px)); }
.kso-text-fast .kso-copy { opacity: calc(1 - min(1, var(--kso-progress) * 2.7)); transform: translateY(calc(var(--kso-progress) * -20px)); }
.kso-text-keep .kso-copy { opacity: 1; }

.kso-scroll-hint {
  position: absolute;
  z-index: 4;
  left: 50%;
  bottom: 26px;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  opacity: calc(1 - min(1, var(--kso-progress) * 3));
}
.kso-scroll-hint span {
  width: 1px;
  height: 34px;
  background: currentColor;
  animation: ksoPulse 1.8s ease-in-out infinite;
}
.kso-scroll-hint em {
  font-style: normal;
  font-size: 9px;
  letter-spacing: .16em;
}
@keyframes ksoPulse {
  0%,100% { transform: scaleY(.55); transform-origin: top; opacity: .45; }
  50% { transform: scaleY(1); opacity: 1; }
}

.kso-placeholder {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  background: linear-gradient(135deg,#1f1f1c,#4b4a43);
  color: rgba(255,255,255,.7);
  font-size: 13px;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.kso-after {
  position: relative;
  z-index: 1;
  background: var(--kso-page-bg);
  color: #171714;
  padding: 110px 24px 130px;
}
.kso-after__inner {
  width: 100%;
  max-width: 720px;
  margin-inline: auto;
}
.kso-after--left .kso-after__inner { margin-left: clamp(24px, 9vw, 150px); margin-right: auto; text-align: left; }
.kso-after--center .kso-after__inner { margin-inline: auto; text-align: center; }
.kso-after--right .kso-after__inner { margin-left: auto; margin-right: clamp(24px, 9vw, 150px); text-align: right; }
.kso-after__heading {
  margin: 0;
  font-size: clamp(36px, 4vw, 68px);
  line-height: 1.02;
  letter-spacing: -.03em;
  font-weight: 500;
}
.kso-after__text {
  margin-top: 26px;
  font-size: clamp(16px, 1.35vw, 20px);
  line-height: 1.7;
  opacity: .82;
}
.kso-after__text p:first-child { margin-top: 0; }
.kso-after__text p:last-child { margin-bottom: 0; }

@media (max-width: 767px) {
  .kso-root { --kso-end-scale: .92; }
  .kso-copy__inner { width: 100%; }
  .kso-title { font-size: clamp(38px, 12vw, 62px); }
  .kso-after--left .kso-after__inner,
  .kso-after--right .kso-after__inner { margin-inline: auto; }
}

@media (prefers-reduced-motion: reduce) {
  .kso-root { --kso-progress: 1 !important; }
  .kso-scroll-zone { height: 100svh !important; min-height: 100svh; }
  .kso-frame, .kso-media, .kso-copy, .kso-scroll-hint { transition: none !important; animation: none !important; }
  .kso-gallery__item { transition: none !important; }
}

/* Elementor editor: keep the widget visible and editable instead of relying on iframe scroll state. */
.elementor-editor-active .kso-scroll-zone { height: 100svh !important; min-height: 100svh; }
.elementor-editor-active .kso-sticky { position: relative; }
.elementor-editor-active .kso-root { --kso-progress: .32; }

/* ============================================================
   Kautz Story — Editorial Intro
   Magazine-style text opening with optional Drop Cap.
============================================================ */
.ksei-root {
  position: relative;
  width: 100%;
  color: #1b1b18;
  background: transparent;
}

.ksei-inner {
  width: 100%;
  max-width: 760px;
  margin-inline: auto;
}

.ksei-kicker {
  margin: 0 0 22px;
  color: #6f6b62;
  font-size: 10px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: .19em;
  text-transform: uppercase;
}

.ksei-heading {
  margin: 0 0 32px;
  color: #171714;
  font-size: clamp(32px, 4vw, 58px);
  font-weight: 500;
  line-height: 1.03;
  letter-spacing: -.035em;
}

.ksei-body {
  font-size: clamp(17px, 1.25vw, 20px);
  font-weight: 400;
  line-height: 1.72;
  letter-spacing: -.01em;
  orphans: 3;
  widows: 3;
}

.ksei-body > * {
  break-inside: avoid-column;
}

.ksei-body p {
  margin: 0 0 1.15em;
}

.ksei-body p:last-child {
  margin-bottom: 0;
}

.ksei--lead .ksei-body > p:first-of-type {
  font-size: 118%;
  line-height: 1.58;
}

.ksei--dropcap .ksei-body > p:first-of-type::first-letter {
  float: left;
  color: #13271B;
  font-size: 4.7em;
  font-weight: 500;
  line-height: .72;
  letter-spacing: -.04em;
  margin: .06em .11em 0 0;
  padding: 0;
}

/* Avoid awkward column splitting directly after an editorial heading. */
.ksei-body > p:first-of-type {
  break-before: avoid;
}

@media (max-width: 767px) {
  .ksei-body {
    column-count: 1 !important;
    font-size: 17px;
    line-height: 1.68;
  }

  .ksei--dropcap .ksei-body > p:first-of-type::first-letter {
    font-size: 3.7em;
  }
}

/* ============================================================
   Kautz Story — Editorial Media
   Flexible magazine image compositions with per-card copy.
============================================================ */
.ksem-root {
  --ksem-copy-gap: 12px;
  position: relative;
  width: 100%;
  background: transparent;
  color: #1b1b18;
}

.ksem-inner {
  width: 100%;
  max-width: 1440px;
  margin-inline: auto;
}

.ksem-grid {
  display: grid;
  width: 100%;
  gap: 30px;
  align-items: start;
}

.ksem-card {
  --ksem-card-offset: 0px;
  --ksem-media-position: center center;
  min-width: 0;
  transform: translateY(var(--ksem-card-offset));
}

.ksem-media {
  position: relative;
  width: 100%;
  overflow: hidden;
  background: #ece9e2;
  isolation: isolate;
}

.ksem-image,
.ksem-placeholder {
  display: block;
  width: 100%;
  height: 100%;
}

.ksem-image {
  object-fit: cover;
  object-position: var(--ksem-media-position);
}

.ksem-placeholder {
  min-height: 260px;
  display: grid;
  place-items: center;
  background: linear-gradient(135deg, #e9e5dc, #d8d2c6);
  color: rgba(19,39,27,.48);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .17em;
  text-transform: uppercase;
}

/* Individual ratio overrides. */
.ksem-card--ratio-wide .ksem-media { aspect-ratio: 16 / 9 !important; }
.ksem-card--ratio-landscape .ksem-media { aspect-ratio: 3 / 2 !important; }
.ksem-card--ratio-classic .ksem-media { aspect-ratio: 4 / 3 !important; }
.ksem-card--ratio-square .ksem-media { aspect-ratio: 1 / 1 !important; }
.ksem-card--ratio-portrait .ksem-media { aspect-ratio: 4 / 5 !important; }
.ksem-card--ratio-tall .ksem-media { aspect-ratio: 2 / 3 !important; }
.ksem-card--ratio-slim .ksem-media { aspect-ratio: 9 / 16 !important; }

/* Single image compositions. */
.ksem-layout--single_full .ksem-grid,
.ksem-layout--single_wide .ksem-grid,
.ksem-layout--single_narrow .ksem-grid {
  grid-template-columns: minmax(0, 1fr);
}
.ksem-layout--single_full .ksem-card--ratio-auto .ksem-media { aspect-ratio: 16 / 9; }
.ksem-layout--single_wide .ksem-card {
  width: min(82%, 1160px);
  margin-inline: auto;
}
.ksem-layout--single_wide .ksem-card--ratio-auto .ksem-media { aspect-ratio: 3 / 2; }
.ksem-layout--single_narrow .ksem-card {
  width: min(54%, 760px);
  margin-inline: auto;
}
.ksem-layout--single_narrow .ksem-card--ratio-auto .ksem-media { aspect-ratio: 4 / 5; }

/* Two-image compositions. */
.ksem-layout--pair_equal .ksem-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.ksem-layout--pair_equal .ksem-card--ratio-auto .ksem-media { aspect-ratio: 4 / 5; }

.ksem-layout--pair_offset .ksem-grid {
  grid-template-columns: repeat(12, minmax(0, 1fr));
  align-items: start;
}
.ksem-layout--pair_offset .ksem-card {
  grid-column: span 6;
}
.ksem-layout--pair_offset .ksem-card:nth-child(even) {
  grid-column: 8 / span 5;
  margin-top: clamp(48px, 7vw, 120px);
}
.ksem-layout--pair_offset .ksem-card--ratio-auto .ksem-media { aspect-ratio: 3 / 4; }

/* Three-image magazine rhythms. */
.ksem-layout--triptych_slim .ksem-grid,
.ksem-layout--triptych_stagger .ksem-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.ksem-layout--triptych_slim .ksem-card--ratio-auto .ksem-media { aspect-ratio: 9 / 16; }
.ksem-layout--triptych_stagger .ksem-card--ratio-auto .ksem-media { aspect-ratio: 3 / 4; }
.ksem-layout--triptych_stagger .ksem-card:nth-child(3n + 2) {
  margin-top: clamp(36px, 5vw, 92px);
}
.ksem-layout--triptych_stagger .ksem-card:nth-child(3n + 3) {
  margin-top: clamp(12px, 2vw, 38px);
}

/* One large image with two smaller side moments. */
.ksem-layout--feature_side .ksem-grid {
  grid-template-columns: repeat(12, minmax(0, 1fr));
  grid-auto-flow: dense;
}
.ksem-layout--feature_side .ksem-card:nth-child(3n + 1) {
  grid-column: 1 / span 8;
  grid-row: span 2;
}
.ksem-layout--feature_side .ksem-card:nth-child(3n + 2),
.ksem-layout--feature_side .ksem-card:nth-child(3n + 3) {
  grid-column: 9 / span 4;
}
.ksem-layout--feature_side .ksem-card:nth-child(3n + 1).ksem-card--ratio-auto .ksem-media { aspect-ratio: 4 / 5; }
.ksem-layout--feature_side .ksem-card:nth-child(3n + 2).ksem-card--ratio-auto .ksem-media,
.ksem-layout--feature_side .ksem-card:nth-child(3n + 3).ksem-card--ratio-auto .ksem-media { aspect-ratio: 4 / 3; }

.ksem-layout--grid .ksem-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.ksem-layout--grid .ksem-card--ratio-auto .ksem-media { aspect-ratio: 4 / 5; }

/* Small editorial copy outside the image. */
.ksem-copy--outside {
  color: #1b1b18;
}
.ksem-card--text-above_left .ksem-copy--outside,
.ksem-card--text-above_right .ksem-copy--outside {
  margin-bottom: var(--ksem-copy-gap);
}
.ksem-card--text-below_left .ksem-copy--outside,
.ksem-card--text-below_right .ksem-copy--outside {
  margin-top: var(--ksem-copy-gap);
}
.ksem-card--align-right .ksem-copy--outside { text-align: right; }
.ksem-card--align-center .ksem-copy--outside { text-align: center; }

.ksem-eyebrow {
  margin: 0;
  color: #6f6b62;
  font-size: 10px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: .18em;
  text-transform: uppercase;
}
.ksem-card-title {
  margin-top: 7px;
  font-size: clamp(16px, 1.35vw, 21px);
  font-weight: 500;
  line-height: 1.14;
  letter-spacing: -.02em;
}
.ksem-caption {
  margin-top: 7px;
  max-width: 42em;
  font-size: 12px;
  line-height: 1.45;
  opacity: .68;
}
.ksem-card--align-right .ksem-caption { margin-left: auto; }
.ksem-card--align-center .ksem-caption { margin-inline: auto; }

/* Text placed directly inside an image. */
.ksem-card__overlay::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  background: rgba(0,0,0,.28);
  pointer-events: none;
}
.ksem-card__overlay-copy {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  color: #fff;
  padding: 22px;
  pointer-events: none;
}
.ksem-card__overlay-copy .ksem-eyebrow { color: inherit; }
.ksem-card__overlay-copy .ksem-caption { opacity: .82; }
.ksem-card--text-overlay_top_left .ksem-card__overlay-copy { justify-content: flex-start; align-items: flex-start; text-align: left; }
.ksem-card--text-overlay_top_right .ksem-card__overlay-copy { justify-content: flex-start; align-items: flex-end; text-align: right; }
.ksem-card--text-overlay_center .ksem-card__overlay-copy { justify-content: center; align-items: center; text-align: center; }
.ksem-card--text-overlay_bottom_left .ksem-card__overlay-copy { justify-content: flex-end; align-items: flex-start; text-align: left; }
.ksem-card--text-overlay_bottom_right .ksem-card__overlay-copy { justify-content: flex-end; align-items: flex-end; text-align: right; }
.ksem-card--text-overlay_top_right .ksem-caption,
.ksem-card--text-overlay_bottom_right .ksem-caption { margin-left: auto; }
.ksem-card--text-overlay_center .ksem-caption { margin-inline: auto; }

@media (max-width: 1024px) {
  .ksem-layout--single_narrow .ksem-card { width: min(68%, 680px); }
  .ksem-layout--feature_side .ksem-card:nth-child(3n + 1) { grid-column: 1 / span 7; }
  .ksem-layout--feature_side .ksem-card:nth-child(3n + 2),
  .ksem-layout--feature_side .ksem-card:nth-child(3n + 3) { grid-column: 8 / span 5; }
}

@media (max-width: 767px) {
  .ksem-root { overflow: hidden; }

  .ksem--mobile-stack .ksem-grid,
  .ksem--mobile-stack.ksem-layout--pair_offset .ksem-grid,
  .ksem--mobile-stack.ksem-layout--feature_side .ksem-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .ksem--mobile-stack .ksem-card,
  .ksem--mobile-stack.ksem-layout--pair_offset .ksem-card,
  .ksem--mobile-stack.ksem-layout--feature_side .ksem-card:nth-child(n) {
    grid-column: 1 / -1;
    grid-row: auto;
    width: 100%;
    margin: 0;
    transform: none;
  }

  .ksem--mobile-stack .ksem-card + .ksem-card {
    margin-top: 22px;
  }

  .ksem-layout--single_wide .ksem-card,
  .ksem-layout--single_narrow .ksem-card { width: 100%; }

  .ksem-layout--grid:not(.ksem--mobile-stack) .ksem-grid,
  .ksem-layout--triptych_slim:not(.ksem--mobile-stack) .ksem-grid,
  .ksem-layout--triptych_stagger:not(.ksem--mobile-stack) .ksem-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .ksem-card-title { font-size: 17px; }
  .ksem-caption { font-size: 11px; }
}
