/* ==========================================================================
   Home2 laboratory (hero + full page) — PAGE 1552 ONLY
   Enqueued exclusively by ski_school_child_home2_hero_assets() behind
   is_page( 1552 ), and every selector is additionally prefixed with
   body.page-id-1552 + the page-local classes .ski-home2-hero /
   .ski-home2-trust (set in the Divi module "CSS Class" fields). Nothing here
   can reach Home (ID 37) or any other page. Delete this file (and the guarded
   enqueue in functions.php) to fully revert to native Divi styling.
   ========================================================================== */

/* --- Hero shell: bottom-anchored editorial composition ------------------- */
body.page-id-1552 #ski-hero.ski-home2-hero {
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}

body.page-id-1552 #ski-hero.ski-home2-hero > .et_pb_fullwidth_header_overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  /* Legibility scrim. The module's native gradient attr does not compile in
     this Divi 5 build (verified: computed background is the photo only), so
     the scrim lives on the native overlay layer. It stays fixed while the
     photo layer parallaxes underneath. */
  background-image:
    linear-gradient(62deg, rgba(15, 36, 48, 0.9) 0%, rgba(15, 36, 48, 0.66) 32%, rgba(15, 36, 48, 0.2) 60%, rgba(15, 36, 48, 0) 80%),
    linear-gradient(0deg, rgba(15, 36, 48, 0.62) 0%, rgba(15, 36, 48, 0.2) 34%, rgba(15, 36, 48, 0) 55%);
}
@media (max-width: 980px) {
  body.page-id-1552 #ski-hero.ski-home2-hero > .et_pb_fullwidth_header_overlay {
    background-image: linear-gradient(180deg, rgba(15, 36, 48, 0.28) 0%, rgba(15, 36, 48, 0.08) 26%, rgba(15, 36, 48, 0.62) 52%, rgba(15, 36, 48, 0.92) 100%);
  }
}

body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_fullwidth_header_container {
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: none;
  margin: 0;
}

body.page-id-1552 #ski-hero.ski-home2-hero .header-content-container {
  display: block;
  width: 100%;
}

body.page-id-1552 #ski-hero.ski-home2-hero .header-content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  width: 100%;
  max-width: none;
  padding: 0;
  margin: 0;
  text-align: left;
}

/* Eyebrow: always first, with a short brand-blue rule */
body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_fullwidth_header_subhead {
  order: 0;
  display: inline-flex;
  align-items: center;
  gap: 14px;
  margin: 0 0 22px;
}
body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_fullwidth_header_subhead::before {
  content: "";
  flex: 0 0 auto;
  width: 36px;
  height: 2px;
  background: currentColor;
}

body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_module_header {
  order: 1;
  max-width: 16ch;
  margin: 0 0 24px;
  padding: 0;
  text-wrap: balance;
}

body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_header_content_wrapper {
  order: 2;
  text-align: left;
  margin: 0;
}
body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_header_content_wrapper p {
  margin: 0;
  padding: 0;
}

body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_header_button_wrapper {
  order: 3;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  align-items: center;
  gap: 12px 14px;
  margin: 28px 0 0;
}
body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_header_button_wrapper .et_pb_button {
  margin: 0;
}

/* Desktop: asymmetric two-column editorial grid.
   Left: eyebrow + large H1. Right (bottom-aligned): copy + CTAs behind a
   thin vertical rule. */
@media (min-width: 981px) {
  body.page-id-1552 #ski-hero.ski-home2-hero .header-content {
    display: grid;
    grid-template-columns: minmax(0, 1.65fr) minmax(300px, 1fr);
    grid-template-rows: auto 1fr auto;
    column-gap: clamp(48px, 6vw, 120px);
    align-items: end;
  }
  body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_fullwidth_header_subhead {
    grid-column: 1;
    grid-row: 1;
    justify-self: start;
  }
  body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_module_header {
    grid-column: 1;
    grid-row: 2 / span 2;
    align-self: end;
    margin: 0;
  }
  body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_header_content_wrapper,
  body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_header_button_wrapper {
    grid-column: 2;
    padding-left: 28px;
    border-left: 1px solid rgba(255, 255, 255, 0.28);
  }
  body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_header_content_wrapper {
    grid-row: 2;
    align-self: end;
    padding-bottom: 4px;
  }
  body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_header_button_wrapper {
    grid-row: 3;
    margin-top: 0;
    padding-top: 28px;
  }
}

/* Parallax media layer — created by home2-hero.js on desktop + fine pointer
   only. It copies the module's own native background, so the Divi setting
   stays the single source of truth; without JS the native background shows. */
body.page-id-1552 .ski-home2-hero-media {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 112%;
  z-index: 0;
  background-repeat: no-repeat;
  pointer-events: none;
  will-change: transform;
}

/* The hero's Divi block column is floated; without a new block formatting
   context that float intrudes into the Trust Strip once it is pulled up
   over the hero, collapsing the strip's flex width to 0. flow-root contains
   the float inside the hero row/section only. */
body.page-id-1552 .et_pb_section:has(.ski-home2-hero),
body.page-id-1552 .et_pb_row:has(.ski-home2-hero) {
  display: flow-root;
}

/* Hero mobile refinements */
@media (max-width: 980px) {
  body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_module_header {
    max-width: 18ch;
    margin-bottom: 18px;
  }
  body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_fullwidth_header_subhead {
    margin-bottom: 16px;
  }
  body.page-id-1552 #ski-hero.ski-home2-hero .et_pb_header_button_wrapper {
    margin-top: 24px;
  }
}

/* ==========================================================================
   HOME2 PAGE SYSTEM (page 1552 only)
   Semantic component classes live in the Divi "CSS Class" fields; every rule
   is prefixed with body.page-id-1552 so nothing leaves this page until the
   components are approved for reuse.
   ========================================================================== */
body.page-id-1552 {
  --ski-deep: #214A5E;
  --ski-blue: #26ADE2;
  --ski-ink: #0F2430;
  --ski-ice: #E8F1F5;
  --ski-snow: #FFFFFF;
  --ski-line: rgba(33, 74, 94, 0.16);
  --ski-muted: rgba(15, 36, 48, 0.72);
  /* Aligned to the project's own Content Max Width variable (1240px) so the
     full-bleed sections share one grid with the native Divi rows. */
  --ski-edge: max(48px, calc((100vw - 1240px) / 2));
  --ski-space: clamp(64px, 6vw, 96px);   /* ~86px at 1440 */
  --ski-space-dense: clamp(52px, 4.8vw, 76px);
  --ski-ease: cubic-bezier(0.2, 0.7, 0.2, 1);
  overflow-x: clip;
}
@media (max-width: 980px) {
  body.page-id-1552 { --ski-edge: 40px; --ski-space: 64px; --ski-space-dense: 56px; }
}
@media (max-width: 767px) {
  body.page-id-1552 { --ski-edge: 24px; --ski-space: 56px; --ski-space-dense: 48px; }
}
body.page-id-1552 [hidden] { display: none !important; }

/* ==========================================================================
   SIERRA CUT (page 1552 only)
   ONE registration/crop mark, defined once and placed three times: on the
   active service card, on the Full Day photograph and beside the Final CTA
   copy. Same 18px L, same 1.5px weight, same colour — only the corner it
   hugs changes, the way a real crop mark mirrors. It is never animated, never
   shadowed and never interactive.
   ========================================================================== */
body.page-id-1552 .ski-service-card.is-active::after,
body.page-id-1552 .ski-feature__media::before,
body.page-id-1552 .ski-final .ski-cta-box::after {
  content: "";
  position: absolute;
  z-index: 2;
  width: 18px;
  height: 18px;
  border-style: solid;
  border-color: var(--ski-blue);
  border-width: 1.5px 1.5px 0 0;
  pointer-events: none;
}
/* 1. active service card — top-right, inside the blue border */
body.page-id-1552 .ski-service-slider .ski-service-card { position: relative; }
body.page-id-1552 .ski-service-card.is-active::after {
  top: calc(var(--ski-card-pad) - 7px);
  right: calc(var(--ski-card-pad) - 7px);
}
/* 2. Full Day photograph — top-left, mirrored */
body.page-id-1552 .ski-feature__media::before {
  top: 22px;
  left: calc(var(--ski-edge) - 4px);
  border-width: 1.5px 0 0 1.5px;
}
/* 3. Final CTA — top-right of the copy block, pointing into the contour */
body.page-id-1552 .ski-final .ski-cta-box { position: relative; }
body.page-id-1552 .ski-final .ski-cta-box::after {
  top: 2px;
  right: -34px;
}
@media (max-width: 767px) {
  /* the photo mark would crowd a phone crop; the other two stay */
  body.page-id-1552 .ski-feature__media::before { display: none; }
  body.page-id-1552 .ski-final .ski-cta-box::after { right: -6px; }
}

/* ==========================================================================
   BRAND CONTOUR GRAPHICS (page 1552 only)
   Three placements, none of them wallpaper. Each is oversized, cropped by
   its section's edge and anchored to something real (the content gutter or
   the section boundary); only 30-60% of each graphic is ever on screen.
   They sit on ::after because Divi owns the section's ::before, they are
   inert (pointer-events + aria) and they never affect flow, so they cannot
   create overflow. multiply drops the artwork's white field, which is what
   lets the same asset sit on Snow and on Ice.
   ========================================================================== */
body.page-id-1552 .ski-contour { position: relative; overflow: hidden; isolation: isolate; }
body.page-id-1552 .ski-contour::after {
  content: "";
  position: absolute;
  z-index: 0;
  background-repeat: no-repeat;
  background-size: contain;
  mix-blend-mode: multiply;
  pointer-events: none;
}
body.page-id-1552 .ski-contour > .et_pb_row { position: relative; z-index: 1; }

/* 1. SERVICES - enters from the lower left, starting one content gutter
   outside the column and running off the bottom edge. ~55% visible. */
body.page-id-1552 .ski-service-slider::after {
  left: calc(-1 * var(--ski-edge));
  bottom: -13%;
  width: min(1180px, 74vw);
  aspect-ratio: 1915 / 821;
  background-image: url("/wp-content/uploads/2026/09/ski-school-sierra-nevada-bg-logo-contornos-03.png");
  opacity: 0.55;
}

/* 2. PRACTICAL INFORMATION - asset 04 carries its contour mass on a diagonal
   from top-left to bottom-right, so it enters from the RIGHT EDGE at mid
   height: that crops away its empty top-right corner and keeps the lines off
   the heading column on the left. ~45% visible. */
body.page-id-1552 .ski-utility::after {
  right: calc(-1 * var(--ski-edge) - 6vw);
  top: 50%;
  transform: translateY(-48%);
  width: min(900px, 56vw);
  aspect-ratio: 1672 / 941;
  background-image: url("/wp-content/uploads/2026/09/ski-school-sierra-nevada-bg-logo-contornos-04.png");
  opacity: 0.42;
}

/* 3. FINAL CTA - the signature. This asset carries ~40% of its ink in the
   centre-right band, so anchoring it right puts the recognisable logo-derived
   mass squarely in the half opposite the copy. Largest scale on the page,
   bleeding off the right and past both section edges. ~60% visible. */
body.page-id-1552 .ski-final::after {
  right: calc(-1 * var(--ski-edge) - 7vw);
  top: 50%;
  transform: translateY(-50%);
  width: min(1160px, 66vw);
  aspect-ratio: 1672 / 941;
  background-image: url("/wp-content/uploads/2026/09/ski-school-sierra-nevada-bg-logo-contornos.png");
  opacity: 0.8;
}

@media (max-width: 980px) {
  body.page-id-1552 .ski-service-slider::after {
    left: -34vw;
    bottom: -6%;
    width: 150vw;
    opacity: 0.42;
  }
  /* the side graphic would cross the practical items on a narrow column,
     and readability wins */
  body.page-id-1552 .ski-utility::after { display: none; }
  body.page-id-1552 .ski-final::after {
    top: auto;
    bottom: -8%;
    right: -32vw;
    width: 132vw;
    transform: none;
    opacity: 0.5;
  }
}

/* --- Shared type: eyebrow + display H2 ----------------------------------- */
body.page-id-1552 .ski-eyebrow {
  margin: 0 0 14px !important;
}
body.page-id-1552 .ski-eyebrow .et_pb_text_inner {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  color: var(--ski-blue);
}
/* The one recurring editorial device on the page: a short blue rule leading
   into the technical label. Nothing else is added to a heading block. */
body.page-id-1552 .ski-eyebrow .et_pb_text_inner::before {
  content: "";
  flex: 0 0 auto;
  width: 32px;
  height: 2px;
  background: currentColor;
}
body.page-id-1552 .ski-eyebrow p {
  margin: 0 !important;
  padding: 0 !important;
  font-size: 12.5px !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase;
  color: var(--ski-blue) !important;
}
body.page-id-1552 .ski-display-h2,
body.page-id-1552 .ski-display-h2 .et_pb_heading_container {
  margin: 0 !important;
  text-align: left !important;
  transform: none !important;
}
body.page-id-1552 .ski-display-h2 .et_pb_module_header {
  margin: 0 !important;
  padding: 0 !important;
  max-width: 17ch;
  /* Section H2 tier: ~52px at 1440, ~30px at 390. */
  font-size: clamp(1.9rem, 1.1rem + 2.4vw, 3.25rem) !important;
  font-weight: 800 !important;
  line-height: 1.03 !important;
  letter-spacing: -0.03em !important;
  color: var(--ski-deep) !important;
  text-align: left !important;
  text-shadow: none !important;
  text-wrap: balance;
}
/* Quieter tier for the headings that live in a narrow left column
   (Practical Information, FAQ) — same system, one step down. */
body.page-id-1552 .ski-display-h2--sm .et_pb_module_header {
  max-width: 14ch;
  font-size: clamp(1.875rem, 1.1rem + 1.9vw, 2.9rem) !important;
  line-height: 1.06 !important;
}
/* The only two-tone headings on the page: brand identity (Why) and the
   conversion action (Booking Steps). Nothing else is coloured. */
/* Eyebrow -> heading -> content: one gap system for every section. */
body.page-id-1552 .ski-display-h2 + .et_pb_text,
body.page-id-1552 .ski-display-h2 + .et_pb_module { margin-top: 18px !important; }

/* --- Hero -> Trust Strip: flush surface change (no floating card) -------- */
body.page-id-1552 .ski-home2-trust {
  position: relative;
  z-index: 1;
  margin-top: 0;
  border-radius: 0;
  box-shadow: none;
}
@media (min-width: 981px) {
  body.page-id-1552 .ski-home2-trust .et_pb_blurb .et_pb_module_header {
    font-size: 15px !important;
    font-weight: 600 !important;
    letter-spacing: 0.01em !important;
    color: var(--ski-deep) !important;
  }
}

/* ==========================================================================
   SERVICE SLIDER — reusable component (.ski-service-slider)
   Centred "active card" rail: one selected card in the middle, the previous
   and next cards peeking in on either side. Native horizontal overflow +
   CSS scroll-snap (snap to centre) keep it fully usable with JS off.
   JS (home2-hero.js) adds: lateral arrows flanking the active card, a
   seamless infinite loop (aria-hidden clones either side), the .is-active
   state and a calm one-card autoplay.
   Sizing lives in custom properties so the component can be re-tuned or
   reused elsewhere by overriding --ski-rail-* on the section:
     --ski-rail-card   active card width
     --ski-rail-gap    gap between cards
     --ski-rail-img    image height / width ratio
     --ski-card-pad    inner padding (room for the active border)
   ========================================================================== */
body.page-id-1552 .ski-service-slider {
  /* Resting composition: a modest card centred on the page axis, with the
     previous and next cards fully previewed and a further pair cropped by
     the section edges. The rail reads as an editorial row rather than one
     giant card, and the blue border (not sheer size) marks the active one. */
  --ski-rail-card: clamp(300px, 24vw, 360px);
  --ski-rail-gap: clamp(20px, 2vw, 32px);
  /* the rail's side padding centres the active card on the page axis; the
     same value places the arrows on its two edges */
  --ski-rail-edge: calc((100% - var(--ski-rail-card)) / 2);
  --ski-rail-img: 0.75;    /* 4:3 editorial crop on desktop */
  --ski-card-pad: 22px;
  position: relative;
  padding: var(--ski-space) 0 var(--ski-space-dense) !important;
  overflow: hidden;
}
@media (min-width: 768px) and (max-width: 980px) {
  body.page-id-1552 .ski-service-slider {
    --ski-rail-card: clamp(280px, 40vw, 340px);
    --ski-rail-gap: 20px;
    --ski-rail-img: 0.8;
    --ski-card-pad: 18px;
  }
}
@media (max-width: 767px) {
  body.page-id-1552 .ski-service-slider {
    /* one card + ~32px of each neighbour at 390px; the crop stays vertical
       here because a phone has height to spend and width to save */
    --ski-rail-card: calc(100vw - 88px);
    --ski-rail-gap: 12px;
    --ski-rail-img: 1.1;
    --ski-card-pad: 16px;
  }
}

body.page-id-1552 .ski-service-slider__head {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: flex-end !important;
  justify-content: space-between !important;
  gap: 32px;
  width: 100% !important;
  max-width: none !important;
  margin: 0 0 clamp(26px, 2.6vw, 40px) !important;
  padding: 0 var(--ski-edge) !important;
  box-sizing: border-box;
}
body.page-id-1552 .ski-service-slider__head > .et_pb_column {
  flex: 1 1 auto !important;
  width: auto !important;
  margin: 0 !important;
}
/* Technical position indicator, injected by home2-hero.js into the header
   row and driven by the slider's own active-card state. Never shows a clone
   position; sits opposite the H2 so it reads as an index, not a control. */
body.page-id-1552 .ski-service-slider__count {
  flex: 0 0 auto;
  margin: 0 0 6px !important;
  padding: 0 !important;
  font-family: var(--gvid-b5547a12-68b7-4dee-9a11-c6f6c6f0d32b), system-ui, sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.22em;
  line-height: 1;
  color: var(--ski-deep);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
body.page-id-1552 .ski-service-slider__count-now { color: var(--ski-blue); }
body.page-id-1552 .ski-service-slider__count-sep {
  display: inline-block;
  margin: 0 2px 0 4px;
  opacity: 0.45;
}
@media (max-width: 767px) {
  body.page-id-1552 .ski-service-slider__count {
    font-size: 12px;
    letter-spacing: 0.18em;
    margin-bottom: 3px !important;
  }
}

body.page-id-1552 .ski-service-slider__viewport {
  position: relative;
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: stretch !important;
  justify-content: flex-start !important;
  gap: var(--ski-rail-gap) !important;
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  /* side padding IS the peek + gap: it sets the resting composition and lets
     the first/last card centre even without the loop */
  /* vertical room for the active card's shadow, which would otherwise be
     clipped by the rail's own overflow */
  padding: 22px var(--ski-rail-edge) 44px !important;
  box-sizing: border-box;
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  scrollbar-color: var(--ski-deep) rgba(33, 74, 94, 0.12);
}
body.page-id-1552 .ski-service-slider__viewport::-webkit-scrollbar { height: 3px; }
body.page-id-1552 .ski-service-slider__viewport::-webkit-scrollbar-track { background: rgba(33, 74, 94, 0.12); }
body.page-id-1552 .ski-service-slider__viewport::-webkit-scrollbar-thumb { background: var(--ski-deep); }
/* Looping rail (JS on): the scrollbar no longer maps to real position */
body.page-id-1552 .ski-service-slider__viewport.is-looping { scrollbar-width: none; }
body.page-id-1552 .ski-service-slider__viewport.is-looping::-webkit-scrollbar { display: none; }
body.page-id-1552 .ski-service-slider__viewport.is-jumping { scroll-behavior: auto !important; }
body.page-id-1552 .ski-service-slider__viewport.is-jumping .ski-service-card { transition: none !important; }
body.page-id-1552 .ski-service-slider__viewport:focus-visible {
  outline: 2px solid var(--ski-blue);
  outline-offset: -2px;
}

/* --- Card ---------------------------------------------------------------- */
body.page-id-1552 .ski-service-slider .ski-service-card {
  flex: 0 0 var(--ski-rail-card) !important;
  width: var(--ski-rail-card) !important;
  max-width: none !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding: var(--ski-card-pad) var(--ski-card-pad) calc(var(--ski-card-pad) + 4px) !important;
  box-sizing: border-box !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 0 !important; /* Divi column flex gap would double the image/text spacing */
  scroll-snap-align: center;
  scroll-snap-stop: always;
  background: transparent !important;
  border: 0 !important;
  border-top: 2px solid rgba(38, 173, 226, 0.32) !important;
  border-radius: 0 0 10px 10px !important;
  box-shadow: none !important;
  overflow: visible !important;
  transform-origin: 50% 50%;
}
body.page-id-1552 .ski-service-slider .ski-service-card:hover,
body.page-id-1552 .ski-service-slider .ski-service-card:focus-within {
  box-shadow: none !important;
}
/* Active / selected card: a fine Ski School Blue line on a clean snow
   surface. Side cards stay calmer (only once JS has an active card). */
body.page-id-1552 .ski-service-slider .ski-service-card.is-active {
  border-top-color: var(--ski-blue) !important;
  background: #fff !important;
  box-shadow: 0 8px 24px rgba(15, 36, 48, 0.05) !important;
}
/* The recede state is gated behind .is-looping (i.e. after boot) so the
   entrance reveal keeps control of opacity until then. */
body.page-id-1552 .ski-service-slider__viewport.is-looping .ski-service-card {
  opacity: 0.84 !important; /* beats the reveal system's inline opacity */
  transform: scale(0.97);
}
body.page-id-1552 .ski-service-slider__viewport.is-looping .ski-service-card.is-active {
  opacity: 1 !important;
  /* the lift is safe now that the arrow anchor is measured from layout
     geometry rather than from the transformed box */
  transform: scale(1) translateY(-5px);
}
@media (prefers-reduced-motion: no-preference) {
  body.page-id-1552 .ski-service-slider .ski-service-card {
    transition:
      transform 480ms var(--ski-ease),
      opacity 480ms var(--ski-ease),
      border-color 420ms var(--ski-ease),
      box-shadow 480ms var(--ski-ease) !important;
  }
}
@media (max-width: 767px) {
  /* a smaller delta on a phone, where the card is already near-full-width */
  body.page-id-1552 .ski-service-slider__viewport.is-looping .ski-service-card {
    opacity: 0.86 !important;
    transform: scale(0.985);
  }
  body.page-id-1552 .ski-service-slider__viewport.is-looping .ski-service-card.is-active {
    transform: scale(1) translateY(-3px);
  }
}
/* last, so it also wins over the mobile delta above */
@media (prefers-reduced-motion: reduce) {
  /* hierarchy survives, the movement does not */
  body.page-id-1552 .ski-service-slider__viewport.is-looping .ski-service-card,
  body.page-id-1552 .ski-service-slider__viewport.is-looping .ski-service-card.is-active {
    transform: none;
  }
  body.page-id-1552 .ski-service-slider__viewport.is-looping .ski-service-card {
    opacity: 0.85 !important;
  }
}

body.page-id-1552 .ski-service-card .et_pb_image {
  width: 100% !important;
  height: auto !important;
  margin: 0 0 18px !important;
  border-radius: 3px;
  overflow: hidden;
}
body.page-id-1552 .ski-service-card .et_pb_image_wrap {
  display: block;
  width: 100% !important;
  height: auto !important;
  aspect-ratio: 1 / var(--ski-rail-img);
  border-radius: 8px;
  overflow: hidden;
}
body.page-id-1552 .ski-service-card .et_pb_image img {
  display: block;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
  object-position: 50% 40%;
  transition: transform 0.8s var(--ski-ease);
}
/* Crop tuning keyed to the image itself (survives card re-ordering) */
body.page-id-1552 .ski-service-card img[src*="IMG_0654"] { object-position: 50% 28%; }
body.page-id-1552 .ski-service-card img[src*="clase-de-snowboard"] { object-position: 50% 12%; }
body.page-id-1552 .ski-service-card img[src*="clases-de-esqui_99"] { object-position: 40% 45%; }
body.page-id-1552 .ski-service-card img[src*="full-day-cresta"] { object-position: 50% 45%; }
body.page-id-1552 .ski-service-card img[src*="clase-a-medida-familia"] { object-position: 50% 30%; }

body.page-id-1552 .ski-service-card .et_pb_group {
  flex: 1 1 auto;
  display: flex !important;
  flex-direction: column !important;
  gap: 8px !important;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
}
body.page-id-1552 .ski-service-card .et_pb_group > .et_pb_text:first-child p {
  margin: 0 !important;
  padding: 0 !important;
  font-size: 11.5px !important;
  font-weight: 700 !important;
  letter-spacing: 0.16em !important;
  text-transform: uppercase;
  color: var(--ski-blue) !important;
}
body.page-id-1552 .ski-service-card .et_pb_heading { margin: 0 !important; }
body.page-id-1552 .ski-service-card .et_pb_heading .et_pb_module_header {
  margin: 0 !important;
  padding: 0 !important;
  /* card tier, sized for a ~350px card rather than a full-width one */
  font-size: clamp(1.25rem, 1.05rem + 0.5vw, 1.4rem) !important;
  font-weight: 800 !important;
  line-height: 1.2 !important;
  letter-spacing: -0.022em !important;
  color: var(--ski-deep) !important;
}
body.page-id-1552 .ski-service-card .et_pb_group > .et_pb_text:last-child {
  flex: 1 1 auto;
  display: flex !important;
  flex-direction: column;
  margin: 2px 0 0 !important;
}
body.page-id-1552 .ski-service-card .et_pb_group > .et_pb_text:last-child .et_pb_text_inner {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
}
body.page-id-1552 .ski-service-card .et_pb_group > .et_pb_text:last-child p {
  margin: 0 0 16px;
  padding: 0;
  max-width: 34ch;
  font-size: 16px;
  line-height: 1.55;
  color: var(--ski-muted);
}
body.page-id-1552 .ski-service-card .et_pb_group > .et_pb_text:last-child p:has(> strong:only-child) {
  max-width: none;
  margin: auto 0 0;
  padding: 12px 0;
  border-top: 1px solid var(--ski-line);
  border-bottom: 1px solid var(--ski-line);
  font-size: 12px;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--ski-deep);
}
body.page-id-1552 .ski-service-card .et_pb_group > .et_pb_text:last-child p:has(> a) {
  margin: 14px 0 0;
}
body.page-id-1552 .ski-service-card .et_pb_group > .et_pb_text:last-child a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 44px;
  font-size: 15px;
  font-weight: 700 !important;
  color: var(--ski-deep) !important;
  text-decoration: underline;
  text-decoration-color: transparent;
  text-underline-offset: 5px;
  transition: text-decoration-color 0.2s ease, color 0.2s ease;
}
body.page-id-1552 .ski-service-card .et_pb_group > .et_pb_text:last-child a:hover,
body.page-id-1552 .ski-service-card .et_pb_group > .et_pb_text:last-child a:focus-visible {
  text-decoration-color: currentColor;
}
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  body.page-id-1552 .ski-service-card.is-active:hover .et_pb_image img { transform: scale(1.03); }
}
@media (max-width: 767px) {
  body.page-id-1552 .ski-service-card .et_pb_image { margin-bottom: 20px !important; }
  body.page-id-1552 .ski-service-card .et_pb_group { padding: 0 2px !important; }
  body.page-id-1552 .ski-service-card .et_pb_group > .et_pb_text:last-child p { font-size: 16px; }
}

/* --- Arrows: flank the ACTIVE card (always centred at rest) --------------
   Injected by JS as a sibling of the scrolling viewport and positioned
   against the section, so they never scroll. Vertically centred on the
   active card's image; --ski-rail-mid (its middle) is measured by JS. */
body.page-id-1552 .ski-service-slider__controls {
  --ski-arrow: 44px;
  position: absolute;
  z-index: 3;
  left: 0;
  right: 0;
  /* --ski-rail-mid is measured by home2-hero.js from the active card's own
     image box, so the arrows stay centred on it whatever the crop resolves
     to. The fallback keeps them sane before the script runs. */
  top: var(--ski-rail-mid, 280px);
  height: 0;
  margin: 0;
  pointer-events: none;
}
body.page-id-1552 .ski-service-slider__btn {
  position: absolute;
  top: calc(var(--ski-arrow) / -2);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--ski-arrow);
  height: var(--ski-arrow);
  margin: 0;
  padding: 0;
  border: 1px solid #DCE6EB;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 1px 4px rgba(15, 36, 48, 0.06);
  color: var(--ski-deep);
  cursor: pointer;
  pointer-events: auto;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
  transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease;
}
/* Desktop/tablet: straddling the active card's left and right edges, which
   sit exactly --ski-rail-edge in from each side of the section. */
body.page-id-1552 .ski-service-slider__btn:first-child {
  left: calc(var(--ski-rail-edge) - var(--ski-arrow) / 2);
  right: auto;
}
body.page-id-1552 .ski-service-slider__btn:last-child {
  right: calc(var(--ski-rail-edge) - var(--ski-arrow) / 2);
  left: auto;
}
body.page-id-1552 .ski-service-slider__btn svg {
  display: block;
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.5;
  stroke-linecap: square;
  pointer-events: none;
}
@media (hover: hover) and (pointer: fine) {
  body.page-id-1552 .ski-service-slider__btn:hover {
    border-color: var(--ski-blue);
    color: var(--ski-blue);
    background: #fff;
  }
}
body.page-id-1552 .ski-service-slider__btn:active {
  border-color: var(--ski-deep);
  background: var(--ski-ice);
}
body.page-id-1552 .ski-service-slider__btn:focus-visible {
  outline: 2px solid var(--ski-blue);
  outline-offset: 2px;
}
body.page-id-1552 .ski-service-slider__btn:disabled {
  opacity: 0.3;
  cursor: default;
}
@media (max-width: 767px) {
  /* Mobile: hug the inside of the active card's image so both peeking
     neighbours stay fully visible. */
  body.page-id-1552 .ski-service-slider__btn:first-child {
    left: calc(var(--ski-rail-edge) + var(--ski-card-pad) + 7px);
    right: auto;
  }
  body.page-id-1552 .ski-service-slider__btn:last-child {
    right: calc(var(--ski-rail-edge) + var(--ski-card-pad) + 7px);
    left: auto;
  }
}

/* ==========================================================================
   WHY — photo-led, reasons as trust arguments
   ========================================================================== */
body.page-id-1552 .ski-why {
  padding: 0 !important;
}
body.page-id-1552 .ski-why__row {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: stretch !important;
  gap: 0 !important;
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
}
body.page-id-1552 .ski-why__media {
  order: -1;
  flex: 0 0 40% !important;
  width: 40% !important;
  max-width: none !important;
  min-height: 440px;
  margin: 0 !important;
  border-radius: 0 !important;
  overflow: hidden;
}
body.page-id-1552 .ski-why__media img,
body.page-id-1552 .ski-why__media .et_pb_image {
  border-radius: 0 !important;
}
body.page-id-1552 .ski-why__media img { object-position: 50% 40%; }
body.page-id-1552 .ski-why__content {
  flex: 1 1 auto !important;
  width: auto !important;
  margin: 0 !important;
  padding: var(--ski-space-dense) var(--ski-edge) var(--ski-space-dense) clamp(36px, 4vw, 72px) !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
}
body.page-id-1552 .ski-why__lead { margin: 16px 0 26px !important; }
body.page-id-1552 .ski-why__lead p {
  margin: 0;
  padding: 0;
  max-width: 34ch;
  font-size: clamp(1.0625rem, 0.95rem + 0.35vw, 1.25rem);
  font-weight: 600;
  line-height: 1.45;
  color: var(--ski-deep);
}
/* A fixed icon column so every title and every description starts on the
   same vertical axis. The divider lives on the TEXT cell, not the row, so
   it begins at the text axis and the icons sit outside the ruled column —
   editorial index, not a settings list. */
body.page-id-1552 .ski-why__reason {
  /* One icon system. NOTE: each PNG's artwork fills ~87.5% of its 96px
     canvas (measured: 83-84px wide of 96), so --ski-ico is the BOX and the
     visible ink lands at ~0.875 of it. 46px box => ~40px of visible icon.
     The icon is centred on the whole title + description block via
     align-self, not anchored to the title's first line. --ski-ico-nudge is
     the small optical correction that follows. */
  --ski-ico: 46px;
  --ski-ico-col: 56px;
  --ski-ico-gap: 18px;
  --ski-ico-nudge: -1px;
  display: grid !important;
  grid-template-columns: var(--ski-ico-col) minmax(0, 1fr);
  column-gap: var(--ski-ico-gap);
  align-items: start;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
}
/* Branded line icons, cropped from the brand sheet with the pale disc
   removed. One fixed icon column, so every title and description starts on
   the same axis whatever the icon's own proportions are. */
body.page-id-1552 .ski-why__reason .ski-why__icon {
  grid-column: 1;
  /* The text cell always sets the row height (its content plus 16/18px of
     padding is taller than the icon box), so centring the icon in the grid
     row centres it on the title + description block. The -1px corrects the
     16-top / 18-bottom padding asymmetry, which would otherwise leave the
     icon one pixel below the block's true optical centre. */
  align-self: center;
  transform: translateY(var(--ski-ico-nudge));
  width: var(--ski-ico) !important;
  max-width: var(--ski-ico) !important;
  margin: 0 !important;
  padding: 0 !important;
  text-align: left !important;
  line-height: 0;
  overflow: visible;
}
body.page-id-1552 .ski-why__reason .ski-why__icon .et_pb_image_wrap {
  display: block;
  width: var(--ski-ico) !important;
  height: var(--ski-ico) !important;
}
body.page-id-1552 .ski-why__reason .ski-why__icon img {
  display: block;
  width: var(--ski-ico) !important;
  height: var(--ski-ico) !important;
  object-fit: contain;
  border-radius: 0 !important;
}
/* Optical compensation: this one PNG carries the most transparent margin
   (art 70px tall of 96 vs 77px for the others), so it renders ~10% shorter
   at identical CSS dimensions. Keyed to the filename so it survives any
   re-ordering, and a transform so it costs no layout. */
body.page-id-1552 .ski-why__reason .ski-why__icon img[src*="atencion-personal"] {
  transform: scale(1.06);
}
@media (max-width: 980px) {
  body.page-id-1552 .ski-why__reason {
    --ski-ico: 40px;
    --ski-ico-col: 47px;
    --ski-ico-gap: 15px;
  }
}
body.page-id-1552 .ski-why__reason .et_pb_text {
  margin: 0 !important;
  padding: 16px 0 18px !important;
  border-top: 1px solid var(--ski-line);
}
body.page-id-1552 .ski-why__reason:last-child .et_pb_text {
  border-bottom: 1px solid var(--ski-line);
}
body.page-id-1552 .ski-why__reason h4 {
  margin: 0 0 6px !important;
  padding: 0 !important;
  font-size: 18px !important;
  font-weight: 700 !important;
  line-height: 1.3 !important;
  letter-spacing: -0.01em !important;
  color: var(--ski-deep) !important;
}
body.page-id-1552 .ski-why__reason p {
  margin: 0;
  padding: 0;
  max-width: 56ch;
  font-size: 16px;
  line-height: 1.55;
  color: var(--ski-muted);
}
@media (max-width: 980px) {
  body.page-id-1552 .ski-why__row { flex-direction: column !important; }
  body.page-id-1552 .ski-why__media {
    flex: 0 0 auto !important;
    width: 100% !important;
    min-height: 0;
  }
  body.page-id-1552 .ski-why__media .et_pb_image { height: clamp(300px, 88vw, 480px) !important; }
  body.page-id-1552 .ski-why__content {
    width: 100% !important;
    padding: var(--ski-space) var(--ski-edge) !important;
  }
}

/* ==========================================================================
   BOOKING STEPS — large numerals on a single technical rule
   ========================================================================== */
body.page-id-1552 .ski-steps {
  --ski-step-gap: clamp(28px, 3.4vw, 72px);
  --ski-step-num: clamp(2.75rem, 1.8rem + 2.2vw, 3.75rem);
  padding: var(--ski-space-dense) 0 !important;
}
body.page-id-1552 .ski-steps > .et_pb_row {
  width: 100% !important;
  max-width: none !important;
  padding-left: var(--ski-edge) !important;
  padding-right: var(--ski-edge) !important;
  box-sizing: border-box;
}
/* Heading and the 01/02/03 rule read as one composition: the gap below the
   heading is now smaller than the 26px the steps themselves sit on. */
body.page-id-1552 .ski-steps > .et_pb_row:first-child {
  margin-bottom: clamp(16px, 1.6vw, 24px) !important;
}
body.page-id-1552 .ski-steps .ski-booking-steps-row::before { content: none !important; display: none !important; }
body.page-id-1552 .ski-steps .ski-booking-steps-row {
  position: relative;
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0 var(--ski-step-gap) !important;
}
/* Desktop: one continuous technical rule carries the three steps left to
   right; a blue tick marks where each step starts. */
body.page-id-1552 .ski-steps .ski-booking-steps-row::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--ski-line);
  pointer-events: none;
}
body.page-id-1552 .ski-steps .ski-booking-steps-row > .et_pb_column {
  position: relative;
  width: auto !important;
  margin: 0 !important;
  padding: 26px 0 0 !important;
  border-top: 0 !important;
  text-align: left !important;
}
body.page-id-1552 .ski-steps .ski-booking-steps-row > .et_pb_column::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  width: 64px;
  height: 3px;
  background: var(--ski-blue);
}
/* Directional chevron in the gap, level with the numerals: 01 > 02 > 03. */
body.page-id-1552 .ski-steps .ski-booking-steps-row > .et_pb_column:not(:last-child)::after {
  content: "";
  position: absolute;
  top: calc(26px + var(--ski-step-num) * 0.42);
  right: calc(var(--ski-step-gap) / -2 - 5px);
  width: 10px;
  height: 10px;
  border-top: 1.5px solid var(--ski-blue);
  border-right: 1.5px solid var(--ski-blue);
  transform: rotate(45deg);
  opacity: 0.7;
}
body.page-id-1552 .ski-steps .ski-step-badge {
  display: block !important;
  width: auto !important;
  height: auto !important;
  margin: 0 0 12px !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: none !important;
  box-shadow: none !important;
}
body.page-id-1552 .ski-steps .ski-step-badge p {
  margin: 0 !important;
  padding: 0 !important;
  font-family: "Plus Jakarta Sans", system-ui, sans-serif !important;
  font-size: var(--ski-step-num) !important;
  font-weight: 800 !important;
  line-height: 0.9 !important;
  letter-spacing: -0.04em !important;
  color: var(--ski-deep) !important;
}
body.page-id-1552 .ski-steps .et_pb_blurb .et_pb_main_blurb_image { display: none !important; }
body.page-id-1552 .ski-steps .et_pb_blurb,
body.page-id-1552 .ski-steps .et_pb_blurb_content {
  width: 100%;
  padding: 0 !important;
  max-width: none !important;
  margin: 0 !important;
  align-items: flex-start !important;
  text-align: left !important;
}
body.page-id-1552 .ski-steps .et_pb_blurb_container,
body.page-id-1552 .ski-steps .et_pb_blurb .et_pb_module_header,
body.page-id-1552 .ski-steps .et_pb_blurb_description {
  width: 100%;
  padding: 0 !important;
  text-align: left !important;
}
body.page-id-1552 .ski-steps .et_pb_blurb .et_pb_module_header {
  margin: 0 0 6px !important;
  padding: 0 !important;
  font-size: clamp(1.1875rem, 1.05rem + 0.35vw, 1.375rem) !important;
  font-weight: 700 !important;
  line-height: 1.3 !important;
  color: var(--ski-deep) !important;
}
body.page-id-1552 .ski-steps .et_pb_blurb_description p {
  margin: 0;
  padding: 0;
  max-width: 34ch;
  font-size: 16.5px;
  line-height: 1.6;
  color: var(--ski-muted);
}
@media (max-width: 980px) {
  body.page-id-1552 .ski-steps { --ski-step-gap: 28px; }
}
@media (max-width: 767px) {
  body.page-id-1552 .ski-steps { --ski-step-num: 3rem; }
  body.page-id-1552 .ski-steps .ski-booking-steps-row {
    grid-template-columns: minmax(0, 1fr);
    row-gap: 40px !important;
  }
  /* the continuous desktop rule gives way to a rule per step */
  body.page-id-1552 .ski-steps .ski-booking-steps-row::after { display: none; }
  body.page-id-1552 .ski-steps .ski-booking-steps-row > .et_pb_column {
    display: grid !important;
    grid-template-columns: 64px minmax(0, 1fr);
    column-gap: 14px;
    align-items: start;
    padding-top: 26px !important;
    border-top: 1px solid var(--ski-line) !important;
  }
  body.page-id-1552 .ski-steps .ski-booking-steps-row > .et_pb_column::before { width: 48px; }
  /* a hairline drop in the numeral gutter continues the progression down the
     page, so 01 -> 02 -> 03 reads vertically as one run */
  body.page-id-1552 .ski-steps .ski-booking-steps-row > .et_pb_column:not(:last-child) {
    background-image: linear-gradient(var(--ski-line), var(--ski-line));
    background-repeat: no-repeat;
    background-position: 23px calc(26px + var(--ski-step-num) + 6px);
    background-size: 1px calc(100% - 26px - var(--ski-step-num) + 6px);
  }
  /* 01 -> 02 -> 03 reads vertically: the same chevron, turned downwards and
     aligned under the numeral. */
  body.page-id-1552 .ski-steps .ski-booking-steps-row > .et_pb_column:not(:last-child)::after {
    top: auto;
    right: auto;
    bottom: -28px;
    left: 19px;
    transform: rotate(135deg);
  }
  body.page-id-1552 .ski-steps .ski-step-badge { margin: 0 !important; }
  body.page-id-1552 .ski-steps .ski-step-badge p { font-size: var(--ski-step-num) !important; }
}

/* ==========================================================================
   FEATURED — Full Day: panoramic photo + offset editorial panel
   ========================================================================== */
body.page-id-1552 .ski-feature {
  padding: var(--ski-space-dense) 0 !important;
  background-image: none !important;
}
/* Photo and panel share one canvas: the photograph bleeds off the left edge,
   the snow panel bleeds off the right and sits low against it, so neither
   reads as a card dropped into a section. */
body.page-id-1552 .ski-feature__row {
  display: grid !important;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  align-items: end !important;
  gap: 0 !important;
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  box-sizing: border-box;
}
body.page-id-1552 .ski-feature__media {
  position: relative;
  grid-column: 1 / 9;
  grid-row: 1;
  width: auto !important;
  margin: 0 !important;
  padding: 0 !important;
}
/* One vertical micro label on the photograph's outer edge — brand language
   only, no invented data. Desktop-only; it would crowd a phone. */
@media (min-width: 981px) {
  body.page-id-1552 .ski-feature__media::after {
    content: "FULL DAY / SIERRA NEVADA";
    position: absolute;
    left: var(--ski-edge);
    bottom: 28px;
    z-index: 2;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    font-family: var(--gvid-b5547a12-68b7-4dee-9a11-c6f6c6f0d32b), system-ui, sans-serif;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.3em;
    color: #fff;
    opacity: 0.72;
    pointer-events: none;
  }
}
body.page-id-1552 .ski-feature__media .et_pb_image {
  width: 100% !important;
  height: clamp(400px, 52vh, 580px) !important;
  /* desktop override lives below, keyed to viewport WIDTH so the photo's
     height no longer drifts against the content panel on short screens */
  margin: 0 !important;
  border-radius: 0 !important;
  overflow: hidden;
}
body.page-id-1552 .ski-feature__media .et_pb_image_wrap {
  display: block;
  width: 100% !important;
  height: 100% !important;
  border-radius: 0 !important;
  overflow: hidden;
}
body.page-id-1552 .ski-feature__media img {
  display: block;
  width: 100% !important;
  height: 100% !important;
  border-radius: 0 !important;
  object-fit: cover;
  object-position: 50% 55%;
}
body.page-id-1552 .ski-feature__panel {
  grid-column: 7 / 13;
  grid-row: 1;
  position: relative;
  z-index: 2;
  align-self: end;
  width: auto !important;
  max-width: none !important;
  margin: 0 0 clamp(24px, 2.6vw, 48px) !important;
  padding: clamp(32px, 3vw, 48px) !important;
  padding-right: max(var(--ski-edge), clamp(32px, 3vw, 48px)) !important;
  background: var(--ski-snow) !important;
  box-sizing: border-box;
}
body.page-id-1552 .ski-feature__panel .ski-display-h2 .et_pb_module_header {
  max-width: 12ch;
  font-size: clamp(2rem, 1.2rem + 2.3vw, 3.4rem) !important;
}
body.page-id-1552 .ski-feature__panel .ski-display-h2 + .et_pb_text { margin: 16px 0 0 !important; }
body.page-id-1552 .ski-feature__panel .ski-display-h2 + .et_pb_text p {
  margin: 0;
  padding: 0;
  max-width: 48ch;
  font-size: 17px;
  line-height: 1.6;
  color: var(--ski-muted);
}
body.page-id-1552 .ski-feature__meta { margin: 22px 0 26px !important; }
/* Technical rail: micro label in Ski School Blue, value in Deep Alpine, one
   hairline per row. No boxes, no badges. */
body.page-id-1552 .ski-feature__meta p {
  margin: 0;
  padding: 0;
  border-bottom: 1px solid var(--ski-line);
  color: var(--ski-deep);
}
body.page-id-1552 .ski-feature__meta .ski-meta-row {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr);
  align-items: baseline;
  column-gap: 16px;
  padding: 11px 0;
  border-top: 1px solid var(--ski-line);
  font-size: 15px;
  line-height: 1.5;
}
body.page-id-1552 .ski-feature__meta .ski-meta-row strong {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ski-blue);
}
@media (max-width: 480px) {
  body.page-id-1552 .ski-feature__meta .ski-meta-row {
    grid-template-columns: 78px minmax(0, 1fr);
    column-gap: 12px;
  }
}
body.page-id-1552 .ski-feature__panel .et_pb_button_module_wrapper { margin: 0 !important; }
body.page-id-1552 #page-container .ski-feature__panel .ski-btn { min-height: 46px; }

/* --- Desktop: the photograph as the section's visual base ----------------
   Both columns sit in the same grid cell and inherit align-items:end, so the
   photo is bottom-anchored to the panel. Growing only its height therefore
   extends it UPWARD past the panel's top edge while the existing lower
   protrusion (the panel's own bottom margin) is left exactly as it was.
   The grid row simply becomes taller, so nothing escapes its container:
   no negative margins, no transforms, no overflow, no z-index, no clipping.
   ~110px of top protrusion at 1440. */
@media (min-width: 981px) {
  body.page-id-1552 .ski-feature__media .et_pb_image {
    height: clamp(540px, 40vw, 640px) !important;
  }
}
@media (max-width: 980px) {
  body.page-id-1552 .ski-feature { padding-top: 0 !important; }
  body.page-id-1552 .ski-feature__row { display: block !important; padding: 0 !important; }
  body.page-id-1552 .ski-feature__media .et_pb_image { height: clamp(300px, 92vw, 560px) !important; }
  body.page-id-1552 .ski-feature__panel {
    width: auto !important;
    margin: 0 !important;
    padding: 40px var(--ski-edge) 0 !important;
    background: transparent !important;
  }
}

/* ==========================================================================
   IMMERSIVE — Real Experience: full-bleed emotional peak
   ========================================================================== */
body.page-id-1552 .ski-immersive {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  display: flex !important;
  flex-direction: column !important;
  justify-content: flex-end !important;
  min-height: max(540px, 76svh);
  padding: var(--ski-space) 0 clamp(56px, 5.5vw, 88px) !important;
  /* the full-bleed photo rises a little into the Full Day block's lower
     whitespace, so the two sections read as one editorial sequence */
  margin-top: calc(-1 * clamp(0px, 2.4vw, 36px));
  background-position: 50% 42% !important;
}
body.page-id-1552 .ski-immersive::before {
  z-index: 0;
  background:
    linear-gradient(72deg, rgba(15, 36, 48, 0.78) 0%, rgba(15, 36, 48, 0.3) 48%, rgba(15, 36, 48, 0) 72%),
    linear-gradient(0deg, rgba(15, 36, 48, 0.85) 0%, rgba(15, 36, 48, 0.2) 50%, rgba(15, 36, 48, 0.1) 100%) !important;
}
body.page-id-1552 .ski-immersive__media {
  position: absolute;
  left: 0;
  right: 0;
  top: -8%;
  height: 116%;
  z-index: -1;
  background-repeat: no-repeat;
  pointer-events: none;
  will-change: transform;
}
body.page-id-1552 .ski-immersive > .et_pb_row {
  position: relative;
  z-index: 1;
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 var(--ski-edge) !important;
  box-sizing: border-box;
}
body.page-id-1552 .ski-immersive > .et_pb_row > .et_pb_column { max-width: 760px; }
body.page-id-1552 .ski-immersive .ski-eyebrow p { color: #fff !important; }
body.page-id-1552 .ski-immersive .ski-display-h2 .et_pb_module_header {
  max-width: 16ch;
  font-size: clamp(2rem, 1.2rem + 2.5vw, 3.5rem) !important;
  color: #fff !important;
}
body.page-id-1552 .ski-immersive .ski-display-h2 + .et_pb_text { margin: 18px 0 28px !important; }
body.page-id-1552 .ski-immersive .ski-display-h2 + .et_pb_text p {
  margin: 0;
  padding: 0;
  max-width: 46ch;
  font-size: 18px;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.88) !important;
}
body.page-id-1552 #page-container .ski-immersive .ski-btn-outline {
  color: #fff !important;
  border: 2px solid rgba(255, 255, 255, 0.9) !important;
  background: transparent !important;
}
body.page-id-1552 #page-container .ski-immersive .ski-btn-outline:hover,
body.page-id-1552 #page-container .ski-immersive .ski-btn-outline:focus-visible {
  background: #fff !important;
  color: var(--ski-deep) !important;
}
@media (max-width: 980px) {
  body.page-id-1552 .ski-immersive {
    min-height: max(520px, 82svh);
    margin-top: 0;
  }
}

/* ==========================================================================
   UTILITY — practical info, compact two-column index
   ========================================================================== */
body.page-id-1552 .ski-utility,
body.page-id-1552 .ski-faq {
  display: grid !important;
  grid-template-columns: minmax(0, 4fr) minmax(0, 8fr);
  column-gap: clamp(40px, 4.5vw, 88px);
  align-items: start;
  padding: var(--ski-space) var(--ski-edge) !important;
}
/* Extra air after the full-bleed Real Experience peak: impact -> breathing
   space -> content. */
body.page-id-1552 .ski-utility {
  padding-top: calc(var(--ski-space) * 1.05) !important;
}
body.page-id-1552 .ski-faq {
  border-top: 1px solid var(--ski-line);
}
body.page-id-1552 .ski-utility > .et_pb_row,
body.page-id-1552 .ski-faq > .et_pb_row {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
}
body.page-id-1552 .ski-utility > .et_pb_row > .et_pb_column:only-child,
body.page-id-1552 .ski-faq > .et_pb_row:first-child > .et_pb_column {
  background-image: none !important;
}
/* A practical index, not a grid of cards: full-width rows separated by
   hairlines, title and description on one baseline. */
body.page-id-1552 .ski-utility__grid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  column-gap: clamp(32px, 3.2vw, 56px) !important;
  row-gap: 0 !important;
  border-bottom: 1px solid var(--ski-line);
}
body.page-id-1552 .ski-utility__grid > .et_pb_column {
  width: auto !important;
  max-width: none !important;
  flex: 1 1 auto !important;
  margin: 0 !important;
  padding: 24px 0 !important;
  border: 0 !important;
  border-top: 1px solid var(--ski-line) !important;
}

body.page-id-1552 .ski-utility__grid .et_pb_blurb { margin: 0 !important; }
body.page-id-1552 .ski-utility__grid .et_pb_blurb_content {
  display: flex !important;
  flex-direction: row !important;
  align-items: flex-start !important;
  gap: var(--ski-pico-gap);
  width: 100%;
  max-width: none !important;
  text-align: left !important;
}
/* Branded line icons + technical index. The icon is the identity, the index
   is small metadata above the title, so the two never compete.
   --ski-pico is the BOX: each PNG's artwork fills ~87.5% of its 96px canvas,
   so a 46px box renders ~40px of visible icon. Same system and the same
   numbers as the Why section, so the two icon columns agree. */
body.page-id-1552 .ski-utility__grid {
  counter-reset: ski-util;
  --ski-pico: 52px;
  --ski-pico-col: 56px;
  --ski-pico-gap: 16px;
  /* dial this if the centred icon still wants to sit lower */
  --ski-pico-nudge: 0px;
}
body.page-id-1552 .ski-utility__grid > .et_pb_column { counter-increment: ski-util; }
body.page-id-1552 .ski-utility__grid .et_pb_main_blurb_image {
  display: block !important;
  flex: 0 0 var(--ski-pico-col);
  width: var(--ski-pico-col) !important;
  /* Centred on the WHOLE index + title + description block, not on the
     index/title pair — anchoring to that pair resolved to a ~1px top margin,
     which is what made the icons read as top-aligned. The content column is
     always taller than the icon, so it sets the row height and this centres
     against it. */
  align-self: center;
  transform: translateY(var(--ski-pico-nudge));
  margin: 0 !important;
  padding: 0 !important;
  line-height: 0;
}
body.page-id-1552 .ski-utility__grid .et_pb_main_blurb_image img {
  display: block;
  width: var(--ski-pico) !important;
  height: var(--ski-pico) !important;
  object-fit: contain;
  border-radius: 0 !important;
  opacity: 1;
}
/* Index moves into the CONTENT column, above the title */
body.page-id-1552 .ski-utility__grid .et_pb_blurb_container::before {
  content: counter(ski-util, decimal-leading-zero);
  display: block;
  margin: 0 0 4px;
  font-family: var(--gvid-b5547a12-68b7-4dee-9a11-c6f6c6f0d32b), system-ui, sans-serif;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.12em;
  line-height: 1.4;
  color: var(--ski-blue);
  font-variant-numeric: tabular-nums;
}
/* The arrow appears only once an item actually links somewhere, so it can
   never promise an affordance that isn't there. */
body.page-id-1552 .ski-utility__grid .et_pb_blurb_content:has(a)::after {
  content: "";
  flex: 0 0 auto;
  align-self: center;
  width: 8px;
  height: 8px;
  border-top: 1.5px solid var(--ski-blue);
  border-right: 1.5px solid var(--ski-blue);
  transform: rotate(45deg);
  opacity: 0.8;
}
body.page-id-1552 .ski-utility__grid .et_pb_blurb_container {
  flex: 1 1 auto;
  padding: 0 !important;
  text-align: left !important;
}
/* The item title carries this section, so it sits at the H3 tier rather than
   reading as a caption inside a large white canvas. */
body.page-id-1552 .ski-utility__grid .et_pb_module_header {
  margin: 0 0 6px !important;
  padding: 0 !important;
  font-size: 20px !important;
  font-weight: 700 !important;
  line-height: 1.35 !important;
  letter-spacing: -0.015em !important;
  color: var(--ski-deep) !important;
}
body.page-id-1552 .ski-utility__grid .et_pb_blurb_description p {
  margin: 0;
  padding: 0;
  max-width: 60ch;
  font-size: 16.5px;
  line-height: 1.6;
  color: var(--ski-muted);
}
@media (max-width: 980px) {
  /* recomposed, not shrunk: one item per row, smaller icon, tighter column */
  body.page-id-1552 .ski-utility__grid {
    grid-template-columns: minmax(0, 1fr) !important;
    --ski-pico: 42px;
    --ski-pico-col: 48px;
    --ski-pico-gap: 14px;
  }
  body.page-id-1552 .ski-utility__grid > .et_pb_column { padding: 18px 0 !important; }
}

/* ==========================================================================
   FAQ — calm hairline accordion
   ========================================================================== */
body.page-id-1552 .ski-faq .ski-bg-shape-faq { display: none !important; }
body.page-id-1552 .ski-faq__list {
  display: flex !important;
  flex-direction: column !important;
  gap: 0 !important;
}
body.page-id-1552 .ski-faq__list > .et_pb_column {
  width: 100% !important;
  margin: 0 !important;
}
body.page-id-1552 .ski-faq .et_pb_accordion { margin: 0 !important; }
body.page-id-1552 .ski-faq .et_pb_toggle {
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-bottom: 1px solid var(--ski-line) !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}
body.page-id-1552 .ski-faq__list > .et_pb_column:first-child .et_pb_toggle:first-child {
  border-top: 1px solid var(--ski-line) !important;
}
body.page-id-1552 .ski-faq .et_pb_toggle_title {
  position: relative;
  margin: 0 !important;
  padding: 18px 56px 18px 0 !important;
  font-size: clamp(1.0625rem, 1rem + 0.3vw, 1.1875rem) !important;
  font-weight: 700 !important;
  line-height: 1.35 !important;
  color: var(--ski-deep) !important;
  cursor: pointer;
}
body.page-id-1552 .ski-faq .et_pb_toggle_title::before {
  content: "" !important;
  position: absolute;
  top: 50% !important;
  right: 4px !important;
  left: auto !important;
  width: 16px;
  height: 16px;
  margin-top: -8px !important;
  font-size: 0 !important;
  background:
    linear-gradient(var(--ski-blue), var(--ski-blue)) center / 16px 2px no-repeat,
    linear-gradient(var(--ski-blue), var(--ski-blue)) center / 2px 16px no-repeat;
}
body.page-id-1552 .ski-faq .et_pb_toggle_open .et_pb_toggle_title::before {
  display: block !important;
  background:
    linear-gradient(var(--ski-blue), var(--ski-blue)) center / 16px 2px no-repeat,
    linear-gradient(var(--ski-blue), var(--ski-blue)) center / 2px 0 no-repeat;
}
@media (prefers-reduced-motion: no-preference) {
  body.page-id-1552 .ski-faq .et_pb_toggle_title::before { transition: background-size 0.25s ease; }
}
@media (hover: hover) and (pointer: fine) {
  body.page-id-1552 .ski-faq .et_pb_toggle_title:hover { color: var(--ski-blue) !important; }
}
body.page-id-1552 .ski-faq .et_pb_toggle_title:focus-visible {
  outline: 2px solid var(--ski-blue);
  outline-offset: 3px;
}
body.page-id-1552 .ski-faq .et_pb_toggle_content {
  padding: 0 56px 22px 0 !important;
  max-width: 68ch;
  font-size: 16.5px;
  line-height: 1.65;
  color: var(--ski-muted);
}
body.page-id-1552 .ski-faq .et_pb_toggle_content p { margin: 0; padding: 0; }

@media (max-width: 980px) {
  body.page-id-1552 .ski-utility,
  body.page-id-1552 .ski-faq {
    grid-template-columns: minmax(0, 1fr);
    row-gap: 36px;
  }
}
@media (max-width: 767px) {
  body.page-id-1552 .ski-faq .et_pb_toggle_title { padding: 22px 44px 22px 0 !important; }
  body.page-id-1552 .ski-faq .et_pb_toggle_content { padding: 0 0 22px !important; }
}

/* ==========================================================================
   FINAL CTA — light, typographic conversion moment (never merges with the
   deep-blue footer)
   ========================================================================== */
body.page-id-1552 .ski-final {
  position: relative;
  overflow: hidden;
  padding: var(--ski-space) var(--ski-edge) !important;
  border-top: 1px solid var(--ski-line);
}
/* The cropped brand-contour graphic is now the section's own native Divi
   background (multiply, oversized, right-anchored) rather than a second
   decorative layer stacked on top of it. */
body.page-id-1552 .ski-final > .et_pb_row {
  position: relative;
  z-index: 1;
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
}
body.page-id-1552 .ski-final > .et_pb_row > .et_pb_column {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
}
/* Copy left, contour artwork right: the column stops well short of the
   graphic instead of running under it. */
@media (min-width: 981px) {
  body.page-id-1552 .ski-final > .et_pb_row > .et_pb_column { max-width: 58% !important; }
}
/* Technical index aligned with the heading — the page's closing echo of the
   01/05 and 01-02-03 language used earlier. */
body.page-id-1552 .ski-final .ski-cta-box::before {
  content: "SKI SCHOOL / SIERRA NEVADA";
  display: block;
  margin: 0 0 18px;
  font-family: var(--gvid-b5547a12-68b7-4dee-9a11-c6f6c6f0d32b), system-ui, sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.26em;
  line-height: 1;
  color: var(--ski-blue);
  opacity: 0.85;
}
body.page-id-1552 .ski-final .ski-cta-box {
  max-width: 640px;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  text-align: left !important;
}
body.page-id-1552 .ski-final .et_pb_promo_description,
body.page-id-1552 .ski-final .et_pb_promo_description div,
body.page-id-1552 .ski-final .et_pb_promo_content,
body.page-id-1552 .ski-final .et_pb_button_wrapper {
  padding: 0 !important;
  text-align: left !important;
}
body.page-id-1552 .ski-final .et_pb_promo_description .et_pb_module_header {
  max-width: 13ch;
  margin: 0 !important;
  padding: 0 0 18px !important;
  font-size: clamp(2rem, 1.25rem + 2.7vw, 3.5rem) !important;
  font-weight: 800 !important;
  line-height: 1.02 !important;
  letter-spacing: -0.03em !important;
  color: var(--ski-deep) !important;
  text-align: left !important;
  text-wrap: balance;
}
body.page-id-1552 .ski-final .et_pb_promo_content p {
  margin: 0;
  padding: 0;
  max-width: 46ch;
  font-size: 18px;
  line-height: 1.6;
  color: var(--ski-muted) !important;
}
body.page-id-1552 .ski-final .et_pb_button_wrapper {
  margin: 28px 0 0 !important;
  text-align: left !important;
}
body.page-id-1552 .ski-final .et_pb_promo_button {
  display: inline-flex !important;
  align-items: center;
  min-height: 46px;
  padding: 10px 24px !important;
  border: 2px solid transparent !important;
  border-radius: 10px !important;
  background: var(--ski-deep) !important;
  color: #fff !important;
  font-size: 15px !important;
  font-weight: 700 !important;
}
body.page-id-1552 .ski-final .et_pb_promo_button::after { display: none !important; }
body.page-id-1552 .ski-final .et_pb_promo_button:hover,
body.page-id-1552 .ski-final .et_pb_promo_button:focus-visible {
  background: var(--ski-blue) !important;
  color: var(--ski-ink) !important;
}
body.page-id-1552 .ski-final .et_pb_button_module_wrapper { margin: 10px 0 0 !important; }
body.page-id-1552 #page-container .ski-final .ski-final__secondary {
  min-height: 44px;
  padding: 10px 0 !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  color: var(--ski-deep) !important;
  font-size: 16px !important;
  font-weight: 600 !important;
  text-decoration: underline;
  text-underline-offset: 5px;
  transform: none !important;
}
body.page-id-1552 #page-container .ski-final .ski-final__secondary::after { display: none !important; }
@media (max-width: 767px) {
  body.page-id-1552 .ski-final .et_pb_button_wrapper,
  body.page-id-1552 .ski-final .et_pb_promo_button { width: 100%; }
  body.page-id-1552 .ski-final .et_pb_promo_button { justify-content: center; }
  body.page-id-1552 .ski-final .ski-final__secondary { width: 100%; text-align: center; }
}

/* Happy Hour photo: the sun sits right of centre; frame it with the trees instead of cutting it off. */
body.page-id-1552 .ski-service-card img[src*="happy-hour_Ski-School"] { object-position: 62% 50%; }
