/* SKI
   Hoja propia de la página Ski. No depende de estilos ni variables del tema:
   todo lo que usa está definido acá y aislado bajo .ski.
   Tamaños de fuente y colores tomados del diseño original en 1440px.
   ----------------------------- */

@font-face { font-family: 'Cervo'; src: url('fonts/cervo-thin-italic.woff2') format('woff2'), url('fonts/cervo-thin-italic.woff') format('woff'); font-weight: 200; font-style: italic; font-display: swap; }
@font-face { font-family: 'Cervo'; src: url('fonts/cervo-light-italic.woff2') format('woff2'), url('fonts/cervo-light-italic.woff') format('woff'); font-weight: 300; font-style: italic; font-display: swap; }
@font-face { font-family: 'Cervo'; src: url('fonts/cervo-regular.woff2') format('woff2'), url('fonts/cervo-regular.woff') format('woff'); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'Cervo'; src: url('fonts/cervo-regular-italic.woff2') format('woff2'), url('fonts/cervo-regular-italic.woff') format('woff'); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: 'Cervo'; src: url('fonts/cervo-medium-italic.woff2') format('woff2'), url('fonts/cervo-medium-italic.woff') format('woff'); font-weight: 500; font-style: italic; font-display: swap; }
@font-face { font-family: 'Muller'; src: url('fonts/muller-regular.woff2') format('woff2'), url('fonts/muller-regular.woff') format('woff'); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'Muller'; src: url('fonts/muller-bold.woff2') format('woff2'), url('fonts/muller-bold.woff') format('woff'); font-weight: 700; font-style: normal; font-display: swap; }

.ski{
    /*
     * Unidades de pantalla en variables: con el zoom de 125% (ver ZOOM más abajo) se compensan.
     * --z es el zoom aplicado a la página; --ski-header-h (de ski.js) viene sin zoom y se divide por él.
     */
    --z: 1;
    --vw: 1vw;
    --vh: 1vh;
    --svh: 1vh;

    /* Colores */
    --c-white: #fff;
    --c-olive: #7c7d6b;
    --c-lime: #f1fbd2;
    --c-cream: #f9f5dc;
    --c-sand: #e3dfd5;
    --c-gold: #fbd897;
    --c-ink: #414141;
    --c-slate: #4a5868;
    --c-navy: #373b4d;
    --c-rust: #ba7656;
    --c-orange: #d1612d;
    --c-paper: #f0f0ed;
    --c-mist: #f4f4f2;
    --c-grey: #606060;
    --c-label: #606682;
    --c-line: rgba(219, 219, 219, 0.5);
    --c-field: #000;
    --c-field-hover: #0aa199;
    --c-field-focus: #05c8a1;
    --c-field-error: #ff4040;

    /* Familias */
    --f-display: 'Cervo', 'Arial Narrow', sans-serif;
    --f-body: 'Muller', 'Helvetica Neue', Arial, sans-serif;

    /* Escala tipográfica: el valor máximo es el del diseño en 1440px */
    --fs-hero: clamp(48px, min(calc(8.3 * var(--vw)), calc(13 * var(--vh))), 120px);
    --fs-hero-sub: clamp(26px, min(calc(4.4 * var(--vw)), calc(6.9 * var(--vh))), 63px);
    --fs-xl: clamp(36px, calc(3.62 * var(--vw)), 52px);
    --fs-l: clamp(34px, calc(3.48 * var(--vw)), 50px);
    --fs-h2: clamp(26px, calc(2.44 * var(--vw)), 35px);
    --fs-h3: clamp(24px, calc(2.02 * var(--vw)), 29px);
    --fs-price: clamp(22px, calc(1.95 * var(--vw)), 28px);
    --fs-title: clamp(22px, calc(1.81 * var(--vw)), 26px);
    --fs-meta: clamp(19px, calc(1.6 * var(--vw)), 23px);
    --fs-submit: clamp(20px, calc(1.6 * var(--vw)), 23px);
    --fs-strong: clamp(17px, calc(1.46 * var(--vw)), 21px);
    --fs-promo: clamp(16px, calc(1.39 * var(--vw)), 20px);
    --fs-lead: clamp(17px, calc(1.32 * var(--vw)), 19px);
    --fs-body: 16px;
    --fs-label: 15px;
    --fs-small: 13px;
    --fs-tiny: 12px;
    --ls: 0.05em;

    /* Espaciado */
    --s-1: 8px;
    --s-2: 16px;
    --s-3: 24px;
    --s-4: 32px;
    --s-5: 48px;
    --s-6: 64px;
    --s-7: 96px;
    --s-8: 128px;
    --gutter: clamp(20px, calc(5.5 * var(--vw)), 80px);
    --shift: max(0px, (calc(100 * var(--vw)) - 1440px) / 2);
    --radius: 8px;

    font-family: var(--f-body);
    font-size: var(--fs-body);
    font-weight: 400;
    font-style: normal;
    line-height: 1.4;
    letter-spacing: 0;
    color: var(--c-slate);
    background: var(--c-white);
    overflow-x: clip;
}

/*
 * Reset local: anula lo que el tema aplica a elementos genéricos.
 * :where() deja la especificidad en una sola clase para que los estilos de abajo ganen.
 */
.ski *,
.ski *::before,
.ski *::after{ box-sizing: border-box; }
.ski :where(h1, h2, h3, p, ul, li, figure, small, strong, em){
    margin: 0;
    padding: 0;
    font: inherit;
    letter-spacing: inherit;
    color: inherit;
    text-transform: inherit;
}
.ski ul{ list-style: none; }
.ski img{ display: block; max-width: 100%; height: auto; border: 0; }
.ski :where(a){ color: inherit; text-decoration: none; }

/* ZOOM
   -----------------------------
   Windows al 125% (o el navegador con zoom 125%) agranda todo un 25%: en una notebook la página se ve
   inmensa. Desde 981px de ancho (notebooks y monitores, con o sin pantalla táctil) se achica un poco el
   contenido, sin llevarlo del todo al 100% (así no queda chico). Dos escalones:
   - escala 1,2 a 1,3 (Windows o navegador al 125%): zoom 0,9
   - escala 1,3 a 1,45 (125% sumado a otro aumento, ej. Windows 125% + navegador 110%): zoom 0,85
   El 150% (notebooks chicas) queda como está: ahí el tamaño grande es a propósito.
   El zoom achica también vw/vh, por eso las variables se dividen por el mismo factor.
*/
@supports (height: 1svh){
    .ski{ --svh: 1svh; }
}
@media (min-width: 981px) and (min-resolution: 1.2dppx) and (max-resolution: 1.3dppx){
    .ski{
        zoom: 0.9;
        --z: 0.9;
        --vw: calc(1vw / 0.9);
        --vh: calc(1vh / 0.9);
        --svh: calc(1vh / 0.9);
    }
}
@media (min-width: 981px) and (min-resolution: 1.301dppx) and (max-resolution: 1.45dppx){
    .ski{
        zoom: 0.85;
        --z: 0.85;
        --vw: calc(1vw / 0.85);
        --vh: calc(1vh / 0.85);
        --svh: calc(1vh / 0.85);
    }
}

/* Estilos de texto reutilizables */
.ski-display{
    font-family: var(--f-display);
    font-weight: 500;
    font-style: italic;
    letter-spacing: var(--ls);
    text-transform: uppercase;
}

.ski-heading{
    font-family: var(--f-display);
    font-weight: 500;
    font-style: italic;
    font-size: var(--fs-h2);
    line-height: 1.25;
    letter-spacing: var(--ls);
    text-transform: uppercase;
    color: var(--c-ink);
}
.ski-heading > *{ display: block; letter-spacing: var(--ls); }
.ski-heading-accent{ color: var(--c-rust); }
.ski-heading-accent strong{ font-size: var(--fs-xl); line-height: 1.2; }

/* SLIDER
   ----------------------------- */

.ski-slider{ position: relative; overflow: hidden; background: var(--c-mist); touch-action: pan-y; }
.ski-slider-track{ position: relative; width: 100%; height: 100%; }
/*
 * Cambio de foto: la nueva entra con fundido, desenfocada y un poco agrandada, y se asienta;
 * la anterior queda visible debajo (ski-leaving) hasta que la nueva la cubre del todo.
 */
.ski-slider-slide{
    position: absolute;
    inset: 0;
    overflow: hidden;
    opacity: 0;
    visibility: hidden;
    transition: opacity 1.4s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s linear 1.4s;
}
.ski-slider-slide img{
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(1.08);
    filter: blur(6px);
    transition: transform 2.4s cubic-bezier(0.2, 0.7, 0.2, 1), filter 1.2s ease;
}
.ski-slider-slide.ski-active{
    z-index: 2;
    opacity: 1;
    visibility: visible;
    transition: opacity 1.4s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s;
}
.ski-slider-slide.ski-active img{ transform: scale(1); filter: none; }
.ski-slider-slide.ski-leaving{ z-index: 1; opacity: 1; visibility: visible; transition: none; }
.ski-slider-slide.ski-leaving img{ transform: scale(1.03); filter: none; transition: transform 1.4s ease; }
/* Cambio con las flechas: el mismo fundido pero corto, para poder pasar fotos seguido */
.ski-slider.ski-quick .ski-slider-slide.ski-active{ transition: opacity 0.45s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s; }
.ski-slider.ski-quick .ski-slider-slide.ski-active img{ transition: transform 0.8s cubic-bezier(0.2, 0.7, 0.2, 1), filter 0.4s ease; }
.ski-slider-nav{
    position: absolute;
    right: var(--s-2);
    bottom: var(--s-2);
    z-index: 3;
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 4px 6px;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.35);
    color: var(--c-white);
    font: 400 var(--fs-small)/1 var(--f-body);
}
.ski-slider-btn{
    width: 28px;
    height: 28px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: inherit;
    font: 400 22px/1 var(--f-body);
    cursor: pointer;
}
.ski-slider-btn:hover{ background: rgba(255, 255, 255, 0.2); }
/* Slider con lightbox: toda la foto es el link (sin lupa) */
.ski-slider-zoom{ display: block; height: 100%; cursor: zoom-in; }

/*
 * Servicios y After: la foto se agranda despacio todo el tiempo que está en pantalla.
 * La misma animación sigue en ski-leaving, así no salta al empezar el cambio.
 */
.ski-services-slider .ski-slider-slide img,
.ski-after-slider .ski-slider-slide img{ transform: none; transition: filter 1.2s ease; }
.ski-services-slider .ski-slider-slide:is(.ski-active, .ski-leaving) img,
.ski-after-slider .ski-slider-slide:is(.ski-active, .ski-leaving) img{ animation: ski-kenburns 8s linear both; }
.ski-services-slider .ski-slider-slide.ski-leaving img,
.ski-after-slider .ski-slider-slide.ski-leaving img{ transition: none; }
@keyframes ski-kenburns{ from{ transform: scale(1); } to{ transform: scale(1.12); } }

@media (prefers-reduced-motion: reduce){
    .ski-slider-slide img{ animation: none !important; }
    .ski-slider-slide,
    .ski-slider-slide img{ transition: none !important; }
    .ski-slider-slide img{ transform: none; filter: none; }
}

/* PORTADA
   ----------------------------- */

/* Ocupa la pantalla visible debajo del header (--ski-header-h lo calcula ski.js). */
.ski-hero{
    position: relative;
    display: grid;
    /* El panel nunca baja de 440px ni pasa de 700px, así la foto no se come al texto ni al revés */
    grid-template-columns: minmax(0, 1fr) clamp(440px, 44%, 700px);
    height: calc(calc(100 * var(--vh)) - var(--ski-header-h, 0px) / var(--z));
    height: calc(calc(100 * var(--svh)) - var(--ski-header-h, 0px) / var(--z));
    min-height: 520px;
    max-height: 960px;
}
.ski-hero-media{ position: relative; overflow: hidden; background: var(--c-olive); }
.ski-hero-media img{
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    animation: ski-unveil 1.8s cubic-bezier(0.2, 0.7, 0.2, 1) both, ski-zoom 24s ease-in-out 1.8s infinite alternate;
}
/* Entrada: un panel del color del fondo cubre la foto y se retira hacia la derecha */
.ski-hero-media::after{
    content: '';
    position: absolute;
    inset: 0 -2px 0 0;
    z-index: 1;
    background: var(--c-olive);
    transform-origin: right center;
    animation: ski-wipe 1.1s cubic-bezier(0.77, 0, 0.18, 1) 0.1s both;
    pointer-events: none;
}
/* El panel se monta 1px sobre la foto para que no quede una línea en la unión (anchos con decimales) */
.ski-hero-panel{
    position: relative;
    z-index: 1;
    margin-left: -1px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: clamp(var(--s-5), calc(12 * var(--vh)), var(--s-8));
    /* Más aire a la derecha: el contenido se corre hacia el centro de la pantalla */
    padding: var(--s-5) clamp(var(--s-5), calc(7 * var(--vw)), 120px) var(--s-5) var(--s-5);
    background: var(--c-olive);
}
/* El título se mide contra el ancho del panel (y el alto de pantalla), no contra la ventana */
@supports (container-type: inline-size){
    .ski-hero-panel{
        container-type: inline-size;
        --fs-hero: clamp(44px, min(24cqi, calc(13 * var(--vh))), 120px);
        --fs-hero-sub: clamp(24px, min(12.6cqi, calc(6.9 * var(--vh))), 63px);
    }
}
.ski-hero-head{
    position: relative;
    align-self: center;
    padding-top: clamp(40px, calc(8 * var(--vh)), 80px);
}
.ski-hero-stamp{
    position: absolute;
    top: 0;
    right: -12%;
    width: clamp(90px, min(calc(12.5 * var(--vw)), calc(19 * var(--vh))), 180px);
    translate: 0 -30%;
    animation: ski-pop 0.9s cubic-bezier(0.34, 1.56, 0.64, 1) 0.55s both;
}
/* Igual que el original: el sello se oscurece. Además se balancea despacio. */
.ski-hero-stamp img{ filter: brightness(0.4); animation: ski-sway 9s ease-in-out infinite alternate; }
.ski-hero-title{
    font-family: var(--f-display);
    font-weight: 500;
    font-style: italic;
    line-height: 0.9;
    letter-spacing: var(--ls);
    text-transform: uppercase;
    color: var(--c-white);
}
.ski-hero-title span{
    display: block;
    font-size: var(--fs-hero);
    letter-spacing: var(--ls);
    animation: ski-rise 1s cubic-bezier(0.2, 0.7, 0.2, 1) 0.15s both;
}
.ski-hero-title small{
    display: block;
    margin-top: 0.2em;
    padding-left: 1.6em;
    white-space: nowrap;
    letter-spacing: var(--ls);
    font-size: var(--fs-hero-sub);
    color: var(--c-lime);
    animation: ski-rise 1s cubic-bezier(0.2, 0.7, 0.2, 1) 0.35s both;
}
.ski-hero-logos{
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--s-6);
    animation: ski-rise 1s cubic-bezier(0.2, 0.7, 0.2, 1) 0.8s both;
}
.ski-hero-logos img{ width: auto; max-height: clamp(48px, calc(9.5 * var(--vh)), 85px); }
.ski-hero-logos > :first-child img,
.ski-hero-logos > img:first-child{ max-height: clamp(70px, calc(14.5 * var(--vh)), 133px); }

/* Indicador de scroll, centrado abajo del panel */
.ski-hero-scroll{
    position: absolute;
    left: 80%;
    bottom: var(--s-2);
    z-index: 2;
    width: 24px;
    height: 56px;
    margin-left: -12px;
    animation: ski-fade 1s ease 1.2s both;
}
/* Riel tenue */
.ski-hero-scroll::before{
    content: '';
    position: absolute;
    top: 0;
    height: 40px;
    left: 50%;
    width: 1px;
    background: rgba(255, 255, 255, 0.25);
}
/* La línea se dibuja hacia abajo y se recoge; la punta rebota al final de cada pasada */
.ski-hero-scroll span{
    position: absolute;
    top: 0;
    left: 50%;
    width: 1px;
    height: 40px;
    background: var(--c-white);
    animation: ski-draw 1.3s cubic-bezier(0.65, 0, 0.35, 1) infinite;
}
.ski-hero-scroll::after{
    content: '';
    position: absolute;
    left: 50%;
    bottom: 6px;
    width: 9px;
    height: 9px;
    margin-left: -4px;
    border-right: 1px solid var(--c-white);
    border-bottom: 1px solid var(--c-white);
    transform: rotate(45deg);
    animation: ski-nudge 1.3s cubic-bezier(0.65, 0, 0.35, 1) infinite;
}
.ski-hero-scroll:hover span,
.ski-hero-scroll:hover::after{ animation-duration: 0.8s; }

@keyframes ski-rise{ from{ opacity: 0; transform: translateY(28px); } }
@keyframes ski-pop{ from{ opacity: 0; transform: scale(0.6) rotate(-25deg); } }
@keyframes ski-fade{ from{ opacity: 0; } }
/* Vaivén suave: nunca pasa de ±16°, así el texto del sello siempre se lee derecho */
@keyframes ski-sway{ from{ transform: rotate(-16deg); } to{ transform: rotate(16deg); } }
@keyframes ski-wipe{ from{ transform: scaleX(1); } to{ transform: scaleX(0); } }
@keyframes ski-unveil{ from{ transform: scale(1.15); } }
@keyframes ski-zoom{ from{ transform: scale(1); } to{ transform: scale(1.08) translate(-1%, -1%); } }
@keyframes ski-draw{
    0%{ transform: scaleY(0); transform-origin: top; }
    45%{ transform: scaleY(1); transform-origin: top; }
    46%{ transform: scaleY(1); transform-origin: bottom; }
    90%, 100%{ transform: scaleY(0); transform-origin: bottom; }
}
@keyframes ski-nudge{
    0%, 35%{ opacity: 0.3; transform: translateY(-4px) rotate(45deg); }
    55%{ opacity: 1; transform: translateY(3px) rotate(45deg); }
    75%, 100%{ opacity: 0.3; transform: translateY(-4px) rotate(45deg); }
}

@media (prefers-reduced-motion: reduce){
    .ski-hero *,
    .ski-hero-media img,
    .ski-hero-media::after,
    .ski-hero-scroll::after{ animation: none !important; }
    .ski-hero-media::after{ display: none; }
}

/* SERVICIOS
   ----------------------------- */

.ski-services{
    display: grid;
    grid-template-columns: 52fr 48fr;
    min-height: clamp(600px, calc(60.7 * var(--vw)), 874px);
    margin-top: 46px;
    background: var(--c-mist);
}
.ski-services-info{
    position: relative;
    isolation: isolate;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: var(--s-7) var(--gutter) var(--s-7) clamp(var(--s-4), calc(10.6 * var(--vw)), 160px);
}
.ski-services-info::before{
    content: '';
    position: absolute;
    inset: 0;
    z-index: -1;
    background: var(--ski-texture) left center / cover no-repeat;
    opacity: 0.35;
    pointer-events: none;
}
.ski-services-list{
    max-width: 380px;
    margin: var(--s-5) 0 0 56px;
}
.ski-services-list li{
    position: relative;
    padding-left: var(--s-2);
    font-family: var(--f-display);
    font-size: var(--fs-body);
    line-height: 1.15;
    color: var(--c-slate);
}
.ski-services-list li + li{ margin-top: var(--s-2); }
.ski-services-list li::before{
    content: '';
    position: absolute;
    top: 0.45em;
    left: 0;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: currentColor;
}
.ski-services-icons{
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 85px));
    gap: 12px;
    margin-top: var(--s-6);
    margin-left: var(--s-3);
}
.ski-services-icons img{ width: 100%; height: auto; aspect-ratio: 1; object-fit: contain; }
/* Entre 981 y 1279px la columna es angosta: los íconos mantienen su tamaño y pasan a dos filas */
@media (min-width: 981px) and (max-width: 1279px){
    .ski-services-icons{ display: flex; flex-wrap: wrap; margin-left: 0; }
    .ski-services-icons img{ width: 85px; }
}

/* AFTER
   ----------------------------- */

.ski-after{
    position: relative;
    isolation: isolate;
    display: grid;
    grid-template-columns: min(calc(52 * var(--vw)), 744px) minmax(0, 400px);
    align-items: start;
    column-gap: var(--s-5);
    padding: clamp(var(--s-7), calc(14 * var(--vw)), 200px) var(--gutter) var(--s-6) calc(min(calc(12 * var(--vw)), 173px) + var(--shift));
}
/* Franja con la textura detrás de la foto */
.ski-after::before{
    content: '';
    position: absolute;
    top: clamp(var(--s-6), calc(7.4 * var(--vw)), 107px);
    left: 0;
    z-index: -1;
    width: calc(min(calc(32.5 * var(--vw)), 467px) + var(--shift));
    height: min(calc(16 * var(--vw)), 233px);
    background: var(--c-mist) var(--ski-texture) left center / cover no-repeat;
}
.ski-after-media{ position: relative; }
.ski-after-side{
    position: absolute;
    top: max(calc(-10.5 * var(--vw)), -151px);
    right: calc(100% + min(calc(3.5 * var(--vw)), 50px));
    width: min(282px, calc(calc(8.5 * var(--vw)) + var(--shift)));
    height: min(calc(26.5 * var(--vw)), 385px);
    overflow: hidden;
}
.ski-after-side img{ width: 100%; height: 100%; object-fit: cover; object-position: right center; }
/*
 * Parallax: --ski-par (de ski.js) va de -1 a 1 según dónde está la sección en pantalla.
 * La foto lateral se desliza dentro de su recorte (agrandada para tener margen) y la franja de textura va al revés.
 */
.ski-after-side img{ transform: translateY(calc(var(--ski-par, 0) * 36px)) scale(1.22); will-change: transform; }
.ski-after::before{ transform: translateY(calc(var(--ski-par, 0) * -56px)); will-change: transform; }
/* 3:2, la proporción de las fotos: no se recortan tanto como en el formato panorámico del original */
.ski-after-slider{ aspect-ratio: 3 / 2; }
.ski-after-info{ padding-top: var(--s-2); }
.ski-after-info p{
    margin-top: var(--s-3);
    font-family: var(--f-display);
    font-style: italic;
    font-size: var(--fs-lead);
    line-height: 1.1;
    letter-spacing: var(--ls);
    color: var(--c-navy);
}

/* PAQUETES
   ----------------------------- */

.ski-packages{
    display: grid;
    grid-template-columns: 47fr 53fr;
    background: var(--c-olive);
    color: var(--c-white);
}
.ski-packages-media{ position: relative; min-height: 100%; }
.ski-packages-slider{ position: absolute; inset: 0; }
/* Las placas quedan contra el borde derecho de la foto; la última se asoma sobre el panel */
.ski-packages-badges{
    position: absolute;
    top: var(--s-6);
    right: 0;
    z-index: 3;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0;
}
.ski-packages-badges img{ width: clamp(150px, calc(16 * var(--vw)), 232px); }
.ski-packages-badges img:first-child{ width: clamp(130px, calc(14 * var(--vw)), 200px); }
.ski-packages-badges img:last-child:not(:first-child){ width: clamp(170px, calc(18.5 * var(--vw)), 268px); margin-right: clamp(-48px, calc(-2.8 * var(--vw)), -24px); }
/* Columna de contenido de ancho fijo, corrida hacia el centro de la pantalla */
.ski-packages-list{
    /* El aire de la derecha se achica rápido en laptops chicas para que las tres temporadas no se aprieten */
    padding: var(--s-7) clamp(var(--s-4), calc(25 * var(--vw)) - 216px, 180px) var(--s-7) clamp(var(--s-4), calc(4 * var(--vw)), var(--s-6));
}
.ski-packages-list > *{
    max-width: 560px;
    margin-inline: auto;
}
/* Laptops chicas e iPad horizontal: la foto cede ancho para que las tres temporadas respiren */
@media (min-width: 981px) and (max-width: 1199px){
    .ski-packages{ grid-template-columns: 38fr 62fr; }
    .ski-packages-list{ padding-inline: var(--s-4); }
    .ski-packages .ski-pack-dates{ font-size: 15px; }
}

.ski-pack + .ski-pack{
    margin-top: var(--s-5);
    padding-top: var(--s-5);
    border-top: 1px solid var(--c-line);
}
.ski-pack-head{
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: var(--s-1) var(--s-3);
    margin-bottom: var(--s-4);
}
.ski-pack-head h3{
    font-family: var(--f-display);
    font-weight: 500;
    font-style: italic;
    font-size: var(--fs-l);
    line-height: 1.1;
    letter-spacing: var(--ls);
    text-transform: uppercase;
    color: var(--c-lime);
}
.ski-pack-head em{ color: var(--c-gold); }
.ski-pack-duration{
    font-family: var(--f-display);
    font-weight: 500;
    font-style: italic;
    font-size: var(--fs-meta);
    line-height: 1.1;
    letter-spacing: var(--ls);
    text-transform: uppercase;
}
.ski-pack-seasons{
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}
.ski-pack-season{
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}
.ski-pack-season + .ski-pack-season{ border-left: 1px solid var(--c-line); }
.ski-pack-dates{
    display: flex;
    align-items: flex-end;
    justify-content: center;
    align-self: stretch;
    min-height: calc(2 * 1.1em + var(--s-2));
    padding: 0 var(--s-1) var(--s-2);
    border-bottom: 1px solid var(--c-line);
    font-size: var(--fs-body);
    line-height: 1.1;
    letter-spacing: var(--ls);
    text-transform: uppercase;
}
.ski-pack-label{
    margin-top: var(--s-2);
    font-family: var(--f-display);
    font-weight: 500;
    font-style: italic;
    font-size: var(--fs-label);
    line-height: 1.1;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--c-lime);
}
.ski-pack-price{
    margin-top: 2px;
    padding-bottom: var(--s-2);
    font-family: var(--f-display);
    font-weight: 400;
    font-style: italic;
    font-size: var(--fs-price);
    line-height: 1.1;
    letter-spacing: var(--ls);
}
.ski-pack-foot{
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    justify-content: center;
    gap: 12px;
    margin-top: var(--s-4);
}
/*
 * Misma altura que el botón y aire parejo alrededor del texto.
 * El tema le saca el padding de abajo al último <p> de cada bloque: este selector le gana.
 */
.ski .ski-pack p.ski-pack-dinner{
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 56px;
    padding: 10px 22px;
    border-radius: var(--radius);
    background: rgba(47, 46, 46, 0.21);
    font-family: var(--f-display);
    font-weight: 500;
    font-style: italic;
    font-size: var(--fs-strong);
    line-height: 1.1;
    letter-spacing: var(--ls);
    text-align: center;
    text-transform: uppercase;
    color: var(--c-cream);
}
.ski-pack-dinner small{
    display: block;
    margin-top: 2px;
    font-weight: 400;
    font-size: var(--fs-label);
    text-transform: none;
}
.ski-pack-btn{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 178px;
    min-height: 56px;
    padding: var(--s-2) var(--s-3);
    border: 1px solid rgba(252, 220, 205, 0.74);
    border-radius: var(--radius);
    background: var(--c-gold);
    font: 700 var(--fs-tiny)/1 var(--f-body);
    letter-spacing: var(--ls);
    color: var(--c-grey);
    transition: background-color 0.2s ease, color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}
/* Flecha que aparece al pasar el mouse y empuja hacia abajo, al formulario */
.ski-pack-btn::after{
    content: '';
    width: 0;
    height: 10px;
    margin-left: 0;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10' fill='none' stroke='%23414141' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 1v8M1.5 5.5L5 9l3.5-3.5'/%3E%3C/svg%3E") center / 10px no-repeat;
    opacity: 0;
    transition: width 0.25s ease, margin 0.25s ease, opacity 0.25s ease;
}
.ski-pack-btn:hover,
.ski-pack-btn:focus-visible{ background: var(--c-cream); color: var(--c-ink); transform: translateY(-2px); box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15); }
.ski-pack-btn:hover::after,
.ski-pack-btn:focus-visible::after{ width: 10px; margin-left: 10px; opacity: 1; animation: ski-bob 0.9s ease-in-out infinite; }
.ski-pack-btn:active{ transform: translateY(0) scale(0.97); box-shadow: none; }
@keyframes ski-bob{ 50%{ transform: translateY(3px); } }

/* Paquete elegido: al llegar al formulario su opción late una vez */
.ski-contact-form .wpcf7-list-item.ski-picked input[type=radio]{ animation: ski-ping 0.9s ease-out 2; }
.ski-contact-form .wpcf7-list-item.ski-picked .wpcf7-list-item-label{ color: var(--c-orange); transition: color 0.3s ease; }
@keyframes ski-ping{
    0%{ box-shadow: inset 0 0 0 4px var(--c-paper), 0 0 0 0 rgba(209, 97, 45, 0.5); }
    100%{ box-shadow: inset 0 0 0 4px var(--c-paper), 0 0 0 12px rgba(209, 97, 45, 0); }
}
@media (prefers-reduced-motion: reduce){
    .ski-pack-btn::after,
    .ski-contact-form .wpcf7-list-item.ski-picked input[type=radio]{ animation: none; }
}

.ski-packages-promo{
    margin-top: var(--s-5);
    padding: 12px var(--s-2);
    border-radius: 10px;
    background: rgba(222, 99, 42, 0.57);
    font-family: var(--f-display);
    font-weight: 400;
    font-style: italic;
    font-size: var(--fs-promo);
    line-height: 1.1;
    letter-spacing: var(--ls);
    text-align: center;
}
.ski-packages-note{
    margin-top: var(--s-3);
    font-family: var(--f-display);
    font-weight: 300;
    font-style: italic;
    font-size: var(--fs-strong);
    line-height: 1.1;
    letter-spacing: var(--ls);
    text-transform: uppercase;
    color: var(--c-sand);
}
.ski-packages-legal{
    margin-top: var(--s-1);
    font-family: var(--f-display);
    font-weight: 500;
    font-style: italic;
    font-size: var(--fs-tiny);
    line-height: 1.1;
    letter-spacing: var(--ls);
}

/* GALERÍA
   ----------------------------- */

.ski-gallery{
    display: flex;
    flex-direction: column;
    gap: 5px;
    padding: 36px 0 4px;
}
.ski-gallery-band{
    display: flex;
    gap: 5px;
    height: clamp(300px, calc(34.7 * var(--vw)), 600px);
}
.ski-gallery-col{
    display: flex;
    flex-direction: column;
    flex: var(--w) 1 0;
    min-width: 0;
    gap: 5px;
}
.ski-gallery-row{ display: flex; gap: 5px; min-height: 0; }
.ski-gallery-row-top{ flex: 0 0 calc(var(--top) - 2.5px); }
.ski-gallery-row-bottom,
.ski-gallery-row:only-child{ flex: 1 1 0; }
.ski-gallery figure{ flex: var(--g, 1) 1 0; min-width: 0; overflow: hidden; background: var(--c-mist); }
.ski-gallery-link{ position: relative; display: block; height: 100%; overflow: hidden; cursor: zoom-in; }
.ski-gallery-link::before,
.ski-gallery-link::after{
    content: '';
    position: absolute;
    z-index: 1;
    opacity: 0;
    pointer-events: none;
}
/*
 * Marco fino que se cierra sobre la foto; su sombra enorme oscurece apenas lo que queda afuera.
 */
.ski-gallery-link::before{
    inset: 14px;
    border: 1px solid rgba(255, 255, 255, 0.8);
    box-shadow: 0 0 0 100vmax rgba(20, 22, 18, 0.22);
    transform: scale(1.08);
    transition: opacity 0.45s ease, transform 0.7s cubic-bezier(0.2, 0.7, 0.2, 1);
    will-change: transform, opacity;
}
/* "+" en un círculo translúcido que entra girando */
.ski-gallery-link::after{
    top: 50%;
    left: 50%;
    width: 56px;
    height: 56px;
    margin: -28px 0 0 -28px;
    border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, 0.6);
    background: rgba(20, 22, 18, 0.3) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.4' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center / 22px no-repeat;
    transform: scale(0.5) rotate(-90deg);
    transition: opacity 0.4s ease 0.05s, transform 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 0.05s;
    will-change: transform, opacity;
}
/* Cada foto en su propia capa desde el principio: así el zoom no tiembla al empezar ni al terminar */
.ski-gallery img{
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(1.001);
    backface-visibility: hidden;
    will-change: transform;
    transition: transform 1.4s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.ski-gallery-link:hover img,
.ski-gallery-link:focus-visible img{ transform: scale(1.06); }
.ski-gallery-link:hover::before,
.ski-gallery-link:focus-visible::before{ opacity: 1; transform: none; }
.ski-gallery-link:hover::after,
.ski-gallery-link:focus-visible::after{ opacity: 1; transform: none; }
.ski-gallery-link:focus-visible{ outline: 2px solid var(--c-orange); outline-offset: -2px; }
@media (prefers-reduced-motion: reduce){
    .ski-gallery img,
    .ski-gallery-link::before,
    .ski-gallery-link::after{ transition: opacity 0.2s ease; transform: none !important; }
}

/* Lightbox (Fancybox): fondo y botones en la paleta de la página */
.fancybox-container .fancybox-bg{ background: #1c1d18; }
.fancybox-is-open .fancybox-bg{ opacity: 0.94; }
.fancybox-container .fancybox-button{ background: transparent; color: rgba(255, 255, 255, 0.8); }
.fancybox-container .fancybox-button:hover{ color: #fff; }
.fancybox-container .fancybox-infobar{ font-family: 'Muller', 'Helvetica Neue', Arial, sans-serif; letter-spacing: 0.05em; }
.fancybox-container .fancybox-progress{ background: #fbd897; }
.fancybox-container .fancybox-thumbs{ background: #1c1d18; }
.fancybox-container .fancybox-thumbs__list a::before{ border-color: #fbd897; }

/* CONTACTO
   ----------------------------- */

.ski-contact{
    padding: var(--s-7) var(--gutter) 0;
    background: var(--c-paper);
}
.ski-contact-title{
    font-family: var(--f-display);
    font-weight: 500;
    font-style: italic;
    font-size: var(--fs-title);
    line-height: 1.1;
    text-align: center;
    text-transform: uppercase;
    color: var(--c-ink);
}
.ski-contact-title > *{ display: block; }
.ski-contact-title strong{
    font-weight: 400;
    font-size: var(--fs-h3);
    color: var(--c-orange);
}

.ski-contact-form{
    max-width: 640px;
    margin: var(--s-6) auto 0;
    -webkit-user-select: none;
    user-select: none;
}
/* Lo que se escribe sí se puede seleccionar */
.ski-contact-form :is(input, textarea){ -webkit-user-select: text; user-select: text; }
.ski-contact-form .wpcf7-form{
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px var(--s-4);
    margin: 0;
}
.ski-contact-form .wpcf7-form > p,
.ski-contact-form .ski-field{ margin: 0; padding: 0; }
.ski-contact-form .ski-field-full,
.ski-contact-form .wpcf7-response-output,
.ski-contact-form .ski-submit{ grid-column: 1 / -1; }
.ski-contact-form label{
    display: block;
    margin: 0;
    pointer-events: auto;
    font: 400 var(--fs-label)/1 var(--f-body);
    letter-spacing: 0;
    text-transform: none;
    color: var(--c-label);
}
.ski-contact-form input:not([type=submit]):not([type=radio]),
.ski-contact-form select,
.ski-contact-form textarea{
    display: block;
    width: 100%;
    height: auto;
    margin: var(--s-1) 0 0;
    padding: 6px 0;
    border: 0;
    border-bottom: 2px solid var(--c-field);
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    transition: border-color 0.2s ease;
    font: 400 var(--fs-label)/1.3 var(--f-body);
    letter-spacing: 0;
    color: var(--c-ink);
}
.ski-contact-form textarea{ height: 40px; min-height: 40px; resize: vertical; }

/* Flecha de los desplegables (la misma en el <select> nativo y en el propio) */
.ski-contact-form select,
.ski-select-trigger{
    padding-right: 24px;
    background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23414141' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right 4px center / 10px 6px no-repeat;
    appearance: none;
    -webkit-appearance: none;
    cursor: pointer;
}

/* Desplegable propio (escritorio) */
.ski-select{ position: relative; }
.ski-contact-form .ski-select-native{
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 1px;
    margin: 0;
    padding: 0;
    opacity: 0;
    pointer-events: none;
}
.ski-select-trigger{
    display: block;
    width: 100%;
    min-height: 36px;
    margin: var(--s-1) 0 0;
    padding-block: 6px;
    padding-left: 0;
    border: 0;
    border-bottom: 2px solid var(--c-field);
    border-radius: 0;
    font: 400 var(--fs-label)/1.3 var(--f-body);
    text-align: left;
    color: var(--c-ink);
    transition: border-color 0.2s ease;
}
.ski-select-trigger:hover{ border-bottom-color: var(--c-field-hover); }
.ski-select-trigger:focus-visible,
.ski-select.ski-open .ski-select-trigger{ outline: none; border-bottom-color: var(--c-field-focus); }
.ski-select.ski-open .ski-select-trigger{ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 5l4-4 4 4' fill='none' stroke='%23414141' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.ski-select.ski-invalid .ski-select-trigger{ border-bottom-color: var(--c-field-error); }
.ski-select-list{
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    z-index: 20;
    max-height: 232px;
    margin: 0;
    padding: 6px 0;
    overflow-y: auto;
    list-style: none;
    background: var(--c-white);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-4px);
    transition: opacity 0.15s ease, transform 0.15s ease, visibility 0s linear 0.15s;
}
.ski-select.ski-open .ski-select-list{
    opacity: 1;
    visibility: visible;
    transform: none;
    transition: opacity 0.15s ease, transform 0.15s ease;
}
.ski-select-option{
    padding: 9px var(--s-2);
    font: 400 var(--fs-label)/1.2 var(--f-body);
    color: var(--c-ink);
    cursor: pointer;
}
.ski-select-option.ski-active{ background: var(--c-paper); }
.ski-select-option[aria-selected=true]{ color: var(--c-field-focus); }
/*
 * Estados de los campos como el original (hover, error y foco).
 * El tema ya tiene reglas para .wpcf7-form con !important; estas son más específicas para ganarles.
 */
.ski-contact-form .wpcf7-form :is(input, select, textarea):hover{ border-bottom-color: var(--c-field-hover); }
.ski-contact-form .wpcf7-form :is(input, select, textarea).wpcf7-not-valid{ border-bottom-color: var(--c-field-error) !important; }
.ski-contact-form .wpcf7-form :is(input, select, textarea):focus{ outline: none; box-shadow: none; border-bottom-color: var(--c-field-focus) !important; }
.ski-contact-form .wpcf7-form .wpcf7-not-valid-tip{
    padding: 4px 0 0 !important;
    font-size: var(--fs-tiny);
    color: var(--c-field-error) !important;
}

/* Campo de fecha: ícono de calendario a la derecha */
.ski-contact-form .wpcf7-form input.ski-date{
    padding-right: 28px;
    background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23414141' stroke-width='1.2' stroke-linecap='round'%3E%3Crect x='1.5' y='3' width='13' height='11.5' rx='1'/%3E%3Cpath d='M1.5 6.5h13M5 1.5v3M11 1.5v3'/%3E%3C/svg%3E") right 2px center / 16px 16px no-repeat;
    cursor: pointer;
}
.ski-contact-form .wpcf7-radio{ display: flex; flex-wrap: wrap; gap: var(--s-1) var(--s-5); margin-top: var(--s-2); }
.ski-contact-form .wpcf7-list-item{ margin: 0; }
.ski-contact-form .wpcf7-list-item label{
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: #323232;
    cursor: pointer;
}
.ski-contact-form input[type=radio]{
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    margin: 0;
    border: 1px solid var(--c-ink);
    border-radius: 50%;
    background: var(--c-label);
    box-shadow: inset 0 0 0 9px var(--c-paper);
    appearance: none;
    -webkit-appearance: none;
    cursor: pointer;
    transition: border-color 0.2s ease, box-shadow 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.ski-contact-form input[type=radio]:checked{ box-shadow: inset 0 0 0 4px var(--c-paper); }
.ski-contact-form label:hover input[type=radio]:not(:checked){ box-shadow: inset 0 0 0 7px var(--c-paper); }
.ski-contact-form input[type=radio]:active{ transform: scale(0.9); }
@media (prefers-reduced-motion: reduce){
    .ski-contact-form input[type=radio]{ transition: border-color 0.2s ease; }
}
.ski-contact-form label:hover input[type=radio]{ border-color: var(--c-field-hover); }
.ski-contact-form input[type=radio]:focus-visible{ border-color: var(--c-field-focus); outline: none; }
.ski-contact-form .wpcf7-not-valid input[type=radio]{ border-color: var(--c-field-error); }
.ski-contact-form .ski-submit{ text-align: center; }
.ski-contact-form input[type=submit]{
    min-width: 214px;
    min-height: 46px;
    margin: 0;
    padding: var(--s-1) var(--s-4);
    border: 0;
    border-radius: 0;
    background: var(--c-ink);
    font-family: var(--f-display);
    font-weight: 300;
    font-style: italic;
    font-size: var(--fs-submit);
    line-height: 1.2;
    letter-spacing: 0;
    text-transform: uppercase;
    color: var(--c-white);
    cursor: pointer;
    transition: background-color 0.2s ease;
}
.ski-contact-form input[type=submit]:hover{ background: var(--c-orange); }
.ski-contact-form .wpcf7-spinner{ position: absolute; }
/* Campo trampa del antispam: fuera de la pantalla, las personas no lo ven */
.ski-contact-form .ski-hp{ position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* FORMULARIO: mejoras sobre la base
   ----------------------------- */

/*
 * Etiquetas que flotan: con el campo vacío y sin foco la etiqueta se apoya sobre la línea;
 * al entrar o al tener dato sube y se achica. ski.js pone ski-filled en el campo cuando tiene dato.
 */
.ski-float label{ position: relative; }
.ski-label{
    position: relative;
    z-index: 2;
    display: block;
    transform-origin: left top;
    pointer-events: none;
    transition: transform 0.3s cubic-bezier(0.2, 0.7, 0.2, 1), color 0.3s ease;
}
.ski-float.ski-filled .ski-label,
.ski-float:focus-within .ski-label{ transform: scale(0.87); }
.ski-float:not(.ski-filled):not(:focus-within) .ski-label{ transform: translateY(31px); color: #323232; }
.ski-float:focus-within .ski-label{ color: var(--c-orange); }

/* Línea naranja que se dibuja de izquierda a derecha al entrar al campo */
.ski-float .wpcf7-form-control-wrap{ position: relative; display: block; }
.ski-float .wpcf7-form-control-wrap::after{
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1;
    height: 2px;
    background: var(--c-orange);
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 0.45s cubic-bezier(0.2, 0.7, 0.2, 1);
    pointer-events: none;
}
.ski-float:focus-within .wpcf7-form-control-wrap::after{ transform: scaleX(1); }
/* El aviso de error va debajo, fuera del alto del campo (así la línea queda sobre el borde) */
.ski-contact-form .wpcf7-form .ski-float .wpcf7-not-valid-tip{
    position: absolute;
    top: 100%;
    left: 0;
    animation: ski-tip-in 0.3s ease both;
}
.ski-contact-form .wpcf7-form .wpcf7-not-valid-tip{ animation: ski-tip-in 0.3s ease both; }
@keyframes ski-tip-in{ from{ opacity: 0; transform: translateY(-4px); } }

/* Paquetes como tarjetas: la elegida se pinta de verde oliva */
.ski-contact-form .ski-packs .wpcf7-radio{
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-top: var(--s-2);
}
.ski-contact-form .ski-packs .wpcf7-list-item{ position: relative; margin: 0; }
.ski-contact-form .ski-packs .wpcf7-list-item label{
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: 100%;
    min-height: 84px;
    padding: var(--s-2) 12px;
    border: 1px solid #d6d6cc;
    background: var(--c-white);
    text-align: center;
    cursor: pointer;
    transition: border-color 0.25s ease, background-color 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease;
}
.ski-contact-form .ski-packs .wpcf7-list-item label:hover{ border-color: var(--c-olive); transform: translateY(-2px); box-shadow: 0 8px 18px rgba(0, 0, 0, 0.07); }
/* El radio queda para el teclado y los lectores de pantalla, pero no se ve */
.ski-contact-form .ski-packs input[type=radio]{
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    border: 0;
    border-radius: 0;
    background: none;
    box-shadow: none;
    opacity: 0;
    cursor: pointer;
}
.ski-contact-form .ski-packs .wpcf7-list-item-label{
    margin: 0;
    font-family: var(--f-display);
    font-weight: 500;
    font-style: italic;
    font-size: 19px;
    line-height: 1.05;
    text-transform: uppercase;
    color: var(--c-ink);
    transition: color 0.25s ease;
}
.ski-pack-meta{ font: 400 12px/1.3 var(--f-body); color: var(--c-label); transition: color 0.25s ease; }
/* Tilde en la esquina de la elegida */
.ski-contact-form .ski-packs .wpcf7-list-item label::after{
    content: '';
    position: absolute;
    top: 8px;
    right: 8px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--c-gold) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='%23414141' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6.2l2 2 4-4.4'/%3E%3C/svg%3E") center / 12px no-repeat;
    opacity: 0;
    transform: scale(0.4);
    transition: opacity 0.2s ease, transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.ski-contact-form .ski-packs label:has(input:checked){ border-color: var(--c-olive); background: var(--c-olive); }
.ski-contact-form .ski-packs label:has(input:checked) .wpcf7-list-item-label{ color: var(--c-white); }
.ski-contact-form .ski-packs label:has(input:checked) .ski-pack-meta{ color: var(--c-lime); }
.ski-contact-form .ski-packs label:has(input:checked)::after{ opacity: 1; transform: none; }
.ski-contact-form .ski-packs label:has(input:focus-visible){ outline: 2px solid var(--c-orange); outline-offset: 2px; }
.ski-contact-form .ski-packs .wpcf7-not-valid label{ border-color: var(--c-field-error); }
/* Paquete elegido desde CONSULTAR: la tarjeta late */
.ski-contact-form .ski-packs .wpcf7-list-item.ski-picked label{ animation: ski-card-ping 0.9s ease-out 2; }
.ski-contact-form .ski-packs .wpcf7-list-item.ski-picked input[type=radio]{ animation: none; }
@keyframes ski-card-ping{
    0%{ box-shadow: 0 0 0 0 rgba(209, 97, 45, 0.5); }
    100%{ box-shadow: 0 0 0 12px rgba(209, 97, 45, 0); }
}

/* Botón Enviar: mismo gesto que CONSULTAR y puntos mientras se envía */
.ski-contact-form .ski-send{
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 214px;
    min-height: 50px;
    margin: 0;
    padding: var(--s-1) var(--s-4);
    border: 0;
    border-radius: 0;
    background: var(--c-ink);
    font-family: var(--f-display);
    font-weight: 300;
    font-style: italic;
    font-size: var(--fs-submit);
    line-height: 1.2;
    text-transform: uppercase;
    color: var(--c-white);
    cursor: pointer;
    transition: background-color 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease;
}
.ski-send-text{ display: inline-flex; align-items: center; transition: opacity 0.2s ease; }
.ski-send-text::after{
    content: '';
    width: 0;
    height: 12px;
    margin-left: 0;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 12' fill='none' stroke='%23fff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 6h12M8 1l5 5-5 5'/%3E%3C/svg%3E") left center / 14px 12px no-repeat;
    opacity: 0;
    transition: width 0.25s ease, margin 0.25s ease, opacity 0.25s ease;
}
.ski-contact-form .ski-send:hover,
.ski-contact-form .ski-send:focus-visible{ background: var(--c-orange); transform: translateY(-2px); box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15); outline: none; }
.ski-send:hover .ski-send-text::after,
.ski-send:focus-visible .ski-send-text::after{ width: 14px; margin-left: 12px; opacity: 1; animation: ski-nudge-x 0.9s ease-in-out infinite; }
.ski-contact-form .ski-send:active{ transform: translateY(0) scale(0.97); box-shadow: none; }
@keyframes ski-nudge-x{ 50%{ transform: translateX(3px); } }
.ski-send-dots{ position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: 6px; opacity: 0; transition: opacity 0.2s ease; }
.ski-send-dots i{ width: 6px; height: 6px; border-radius: 50%; background: currentColor; animation: ski-dot 1s ease-in-out infinite; }
.ski-send-dots i:nth-child(2){ animation-delay: 0.15s; }
.ski-send-dots i:nth-child(3){ animation-delay: 0.3s; }
@keyframes ski-dot{ 0%, 80%, 100%{ transform: translateY(0); opacity: 0.4; } 40%{ transform: translateY(-5px); opacity: 1; } }
.ski-contact-form .wpcf7-form.submitting .ski-send{ background: var(--c-olive); pointer-events: none; transform: none; box-shadow: none; }
.ski-contact-form .wpcf7-form.submitting .ski-send-text{ opacity: 0; }
.ski-contact-form .wpcf7-form.submitting .ski-send-dots{ opacity: 1; }
.ski-contact-form .wpcf7-form .wpcf7-spinner{ display: none; }

/* Errores: el campo tiembla una vez y el aviso general va corto y centrado */
.ski-field.ski-shake{ animation: ski-shake 0.45s cubic-bezier(0.36, 0.07, 0.19, 0.97); }
@keyframes ski-shake{
    15%, 75%{ transform: translateX(-5px); }
    35%{ transform: translateX(6px); }
    55%{ transform: translateX(-3px); }
}
.ski-contact-form .wpcf7 form .wpcf7-response-output{
    margin: calc(var(--s-3) * -1) 0 0 !important;
    padding: 0 !important;
    border: 0 !important;
    font: 400 var(--fs-small)/1.5 var(--f-body);
    text-align: center;
    color: var(--c-field-error);
}
.ski-contact-form .wpcf7 form.sent .wpcf7-response-output{ color: var(--c-olive); }
@media (prefers-reduced-motion: reduce){
    .ski-label,
    .ski-float .wpcf7-form-control-wrap::after,
    .ski-contact-form .ski-packs .wpcf7-list-item label{ transition: none; }
    .ski-field.ski-shake,
    .ski-send-dots i,
    .ski-send:hover .ski-send-text::after,
    .ski-contact-form .ski-packs .wpcf7-list-item.ski-picked label{ animation: none; }
}

/* Consulta enviada: el formulario se va y en su lugar queda el resumen (lo arma ski.js) */
.ski-contact-form .wpcf7-form{ transition: opacity 0.4s ease, transform 0.4s ease; }
.ski-contact-form.ski-leaving .wpcf7-form{ opacity: 0; transform: translateY(-12px); pointer-events: none; }
.ski-contact-form.ski-done .wpcf7-form{ display: none; }
.ski-sent{
    max-width: 520px;
    margin: 0 auto;
    padding: var(--s-6) var(--s-5) var(--s-5);
    background: var(--c-white);
    text-align: center;
    -webkit-user-select: text;
    user-select: text;
    outline: none;
}
.ski-sent > *{ opacity: 0; transform: translateY(16px); }
.ski-sent.ski-show > *{ animation: ski-sent-in 0.6s cubic-bezier(0.2, 0.7, 0.2, 1) both; }
.ski-sent.ski-show > :nth-child(2){ animation-delay: 0.35s; }
.ski-sent.ski-show > :nth-child(3){ animation-delay: 0.45s; }
.ski-sent.ski-show > :nth-child(4){ animation-delay: 0.55s; }
.ski-sent.ski-show > :nth-child(5){ animation-delay: 0.65s; }
@keyframes ski-sent-in{ to{ opacity: 1; transform: none; } }
/* Tilde que se dibuja dentro de un círculo */
.ski-sent-check{ display: block; width: 72px; height: 72px; margin: 0 auto var(--s-4); }
.ski-sent-check circle{ fill: none; stroke: var(--c-olive); stroke-width: 1.5; stroke-dasharray: 214; stroke-dashoffset: 214; }
.ski-sent-check path{ fill: none; stroke: var(--c-orange); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 40; stroke-dashoffset: 40; }
.ski-sent.ski-show .ski-sent-check circle{ animation: ski-stroke 0.8s ease-out 0.1s forwards; }
.ski-sent.ski-show .ski-sent-check path{ animation: ski-stroke 0.4s ease-out 0.75s forwards; }
@keyframes ski-stroke{ to{ stroke-dashoffset: 0; } }
.ski-sent-title{
    margin: 0;
    padding: 0;
    font-family: var(--f-display);
    font-weight: 500;
    font-style: italic;
    font-size: var(--fs-h2);
    line-height: 1.1;
    text-transform: uppercase;
    color: var(--c-ink);
}
.ski-sent-text{
    margin: var(--s-2) 0 0;
    padding: 0;
    font: 400 var(--fs-label)/1.5 var(--f-body);
    color: var(--c-grey);
}
.ski-sent-summary{
    margin: var(--s-5) 0 0;
    padding: var(--s-3) 0 0;
    border-top: 1px solid var(--c-sand);
    text-align: left;
}
.ski-sent-row{
    display: grid;
    grid-template-columns: 130px minmax(0, 1fr);
    gap: var(--s-2);
    padding: 10px 0;
    border-bottom: 1px solid var(--c-mist);
}
.ski-sent-row dt{ font: 400 var(--fs-small)/1.4 var(--f-body); text-transform: uppercase; letter-spacing: 0.08em; color: var(--c-label); }
.ski-sent-row dd{ margin: 0; font: 400 var(--fs-label)/1.4 var(--f-body); color: var(--c-ink); overflow-wrap: anywhere; white-space: pre-line; }
.ski-sent-again{
    margin-top: var(--s-4);
    padding: 0;
    border: 0;
    border-bottom: 1px solid currentColor;
    background: none;
    font: 400 var(--fs-small)/1.6 var(--f-body);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--c-orange);
    cursor: pointer;
}
.ski-sent-again:hover{ color: var(--c-ink); }
@media (prefers-reduced-motion: reduce){
    .ski-sent > *,
    .ski-sent.ski-show > *{ opacity: 1; transform: none; animation: none; }
    .ski-sent .ski-sent-check :is(circle, path){ stroke-dashoffset: 0; animation: none; }
}

.ski-contact-location{
    position: relative;
    margin: var(--s-7) calc(var(--gutter) * -1) 0;
}
.ski-contact-map{
    height: clamp(360px, calc(33 * var(--vw)), 480px);
    overflow: hidden;
    background: #e1ddd6;
}
/*
 * 300px de más a la izquierda esconden el recuadro de Google. El iframe es 600px + 2 × --pin más ancho,
 * así el pin (que Google pone en el centro del iframe) queda --pin a la derecha del centro del mapa.
 */
.ski-contact-map{ --pin: 200px; }
.ski-contact-map iframe{
    display: block;
    width: calc(100% + 600px + 2 * var(--pin));
    max-width: none;
    height: 100%;
    margin-left: -300px;
    border: 0;
    outline: 0;
}
.ski-contact-map,
.ski-contact-map iframe:focus,
.ski-contact-map iframe:focus-visible{ outline: none !important; box-shadow: none !important; }
.ski-contact-card{
    position: absolute;
    top: 0;
    bottom: 0;
    left: calc(min(calc(12.2 * var(--vw)), 176px) + var(--shift));
    display: flex;
    flex-direction: column;
    justify-content: center;
    width: 375px;
    padding: var(--s-5);
    background: var(--c-white);
    font-size: var(--fs-small);
    line-height: 1.35;
    text-align: center;
    color: var(--c-slate);
}
.ski-contact-text{
    font-family: var(--f-display);
    font-style: italic;
    font-size: var(--fs-lead);
    line-height: 1.3;
    letter-spacing: 0.02em;
    color: var(--c-navy);
}
/* Dirección separada del texto por una línea corta */
.ski-contact-address{
    position: relative;
    margin-top: var(--s-4);
    padding-top: var(--s-4);
    font-size: var(--fs-tiny);
    line-height: 1.6;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--c-label);
}
.ski-contact-address::before{
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    width: 32px;
    height: 1px;
    margin-left: -16px;
    background: var(--c-rust);
}
.ski-contact-card img{ max-width: 124px; margin: var(--s-4) auto 0; filter: grayscale(1) contrast(1.1) brightness(0.9); }
.ski-contact-location > .ski-contact-card:only-child{ position: static; margin: 0 auto var(--s-7); }

/* CALENDARIO (flatpickr del formulario)
   Más específico que los estilos globales del tema para no tocar el buscador del header.
   ----------------------------- */

.flatpickr-calendar.ski-calendar{
    width: 320px;
    margin-top: 6px;
    padding: var(--s-2);
    border: 0;
    border-radius: 0;
    background: #fff;
    box-shadow: 0 16px 40px rgba(0, 0, 0, 0.14);
    font-family: 'Muller', 'Helvetica Neue', Arial, sans-serif;
}
.flatpickr-calendar.ski-calendar::before,
.flatpickr-calendar.ski-calendar::after{ display: none; }
.ski-calendar .flatpickr-months{ align-items: center; padding-bottom: 12px; }
.ski-calendar .flatpickr-months .flatpickr-month{ height: 36px; color: #414141; fill: #414141; }
.ski-calendar .flatpickr-current-month{
    left: 0;
    width: 100%;
    padding: 6px 0 0;
    font-family: 'Cervo', 'Arial Narrow', sans-serif;
    font-style: italic;
    font-weight: 500;
    font-size: 20px;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}
.ski-calendar .flatpickr-current-month .flatpickr-monthDropdown-months,
.ski-calendar .flatpickr-current-month input.cur-year{
    font: inherit;
    letter-spacing: inherit;
    color: inherit;
}
.ski-calendar .flatpickr-current-month .flatpickr-monthDropdown-months{
    margin: 0;
    padding: 0 2px;
    border: 0;
    background: transparent;
    appearance: none;
    -webkit-appearance: none;
    text-transform: uppercase;
}
.ski-calendar .flatpickr-current-month .flatpickr-monthDropdown-months:hover,
.ski-calendar .numInputWrapper:hover{ background: transparent; }
.ski-calendar .numInputWrapper span{ display: none; }
.ski-calendar .flatpickr-prev-month,
.ski-calendar .flatpickr-next-month{
    top: var(--s-2);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    padding: 0;
    border-radius: 50%;
    transition: background-color 0.2s ease;
}
.ski-calendar .flatpickr-prev-month{ left: var(--s-2); }
.ski-calendar .flatpickr-next-month{ right: var(--s-2); }
.ski-calendar .flatpickr-prev-month svg,
.ski-calendar .flatpickr-next-month svg{ width: 12px; height: 12px; fill: #414141; }
.ski-calendar .flatpickr-prev-month:hover,
.ski-calendar .flatpickr-next-month:hover{ background: #f0f0ed; }
.ski-calendar .flatpickr-prev-month:hover svg,
.ski-calendar .flatpickr-next-month:hover svg{ fill: #d1612d; }
.ski-calendar .flatpickr-prev-month.flatpickr-disabled{ display: none; }
.ski-calendar .flatpickr-innerContainer{ margin-top: 0; }
.ski-calendar .flatpickr-rContainer,
.ski-calendar .flatpickr-days,
.ski-calendar .dayContainer{ width: 288px; min-width: 288px; max-width: 288px; }
.ski-calendar .flatpickr-weekdays{ height: 28px; }
.ski-calendar span.flatpickr-weekday{
    font-size: 11px;
    font-weight: 400;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #606682;
}
.ski-calendar .flatpickr-day{
    max-width: 40px;
    height: 40px;
    margin: 1px 0;
    border: 1px solid transparent;
    border-radius: 50%;
    font-size: 14px;
    line-height: 38px;
    color: #414141;
    transition: background-color 0.15s ease, color 0.15s ease;
}
.ski-calendar .flatpickr-day:hover,
.ski-calendar .flatpickr-day:focus{ border-color: transparent; background: #f0f0ed; }
.ski-calendar .flatpickr-day.today{ border-color: #7c7d6b; }
.ski-calendar .flatpickr-day.today:hover{ border-color: #7c7d6b; background: #f0f0ed; color: #414141; }
.ski-calendar .flatpickr-day.prevMonthDay,
.ski-calendar .flatpickr-day.nextMonthDay{ color: #b9bab0; }
.ski-calendar .flatpickr-day.flatpickr-disabled,
.ski-calendar .flatpickr-day.flatpickr-disabled:hover{ background: transparent; color: #d4d4cf; cursor: default; }
.ski-calendar .flatpickr-day.selected,
.ski-calendar .flatpickr-day.selected:hover,
.ski-calendar .flatpickr-day.selected:focus{
    background: #7c7d6b !important;
    border-color: #7c7d6b !important;
    color: #fff !important;
}

/* TABLET
   ----------------------------- */

@media (max-width: 980px){
    .ski{ --gutter: 32px; }

    .ski-hero,
    .ski-services,
    .ski-after,
    .ski-packages{ grid-template-columns: 1fr; }

    .ski-hero{ height: auto; min-height: 0; max-height: none; }
    .ski-hero-media{ aspect-ratio: 16 / 10; }
    .ski-hero-panel{ gap: var(--s-5); padding: var(--s-6) var(--gutter) var(--s-5); }
    .ski-hero-head{ position: static; align-self: stretch; padding-top: 0; }
    .ski-hero-title span{ font-size: clamp(48px, calc(11 * var(--vw)), 120px); }
    .ski-hero-title small{ font-size: clamp(26px, calc(5.8 * var(--vw)), 63px); }
    .ski-hero-stamp{ top: calc(var(--s-6) * -1); right: var(--gutter); width: 130px; translate: none; }
    .ski-hero-scroll{ display: none; }
    .ski-hero-panel{ position: relative; }
    .ski-hero-logos img{ max-height: 70px; }
    .ski-hero-logos > :first-child img,
    .ski-hero-logos > img:first-child{ max-height: 105px; }

    .ski-services{ min-height: 0; margin-top: 0; }
    .ski-services-info{ padding: var(--s-6) var(--gutter); }
    .ski-services-list{ max-width: none; margin-left: 0; }
    .ski-services-icons{ margin-left: 0; }
    .ski-services-slider{ margin-top: 0; aspect-ratio: 4 / 3; }

    /* After: primero el texto sobre gris, separado de la sección anterior por un aire blanco */
    .ski-after{ row-gap: 0; margin-top: 40px; padding: 0; }
    .ski-after-info{ order: -1; padding: var(--s-6) var(--gutter); background: var(--c-mist); }
    .ski-after::before,
    .ski-after-side{ display: none; }

    .ski-packages{ margin-top: 40px; }
    .ski-packages-media{ aspect-ratio: 4 / 3; }
    /* Placas abajo a la izquierda: los controles del carrusel quedan libres a la derecha */
    .ski-packages-badges{ top: auto; bottom: calc(var(--s-4) * -1); left: var(--gutter); right: auto; flex-direction: row; align-items: flex-end; gap: var(--s-2); }
    .ski-packages-badges img{ width: 150px; }
    .ski-packages-badges img:first-child{ width: 130px; }
    .ski-packages-badges img:last-child:not(:first-child){ margin-right: 0; }
    .ski-packages-list{ max-width: none; padding: var(--s-7) var(--gutter) var(--s-5); }

    .ski-gallery-band{ flex-wrap: wrap; height: auto; }
    .ski-gallery-col{ flex: 1 1 calc(50% - 3px); height: calc(55 * var(--vw)); }

    .ski-contact{ padding-top: var(--s-6); }
    .ski-contact-location{ margin-top: var(--s-6); padding-bottom: var(--s-6); }
    .ski-contact-map{ --pin: 0px; height: 260px; }
    .ski-contact-card{ position: relative; left: auto; width: auto; max-width: 420px; margin: calc(var(--s-5) * -1) auto 0; }
}

/* MOBILE
   ----------------------------- */

@media (max-width: 640px){
    .ski{ --gutter: 30px; --fs-body: 15px; }

    /*
     * Portada a pantalla completa con el celular vertical: el panel toma lo que necesita
     * (tamaños atados al alto de pantalla) y la foto ocupa el resto.
     */
    .ski-hero{
        display: flex;
        flex-direction: column;
        height: calc(calc(100 * var(--vh)) - var(--ski-header-h, 0px) / var(--z));
        height: calc(calc(100 * var(--svh)) - var(--ski-header-h, 0px) / var(--z));
        min-height: 540px;
        max-height: 920px;
    }
    .ski-hero-media{ flex: 1 1 auto; min-height: 200px; aspect-ratio: auto; }
    .ski-hero-panel{
        flex: 0 0 auto;
        gap: clamp(var(--s-3), calc(4.5 * var(--vh)), var(--s-5));
        padding: clamp(var(--s-5), calc(8 * var(--vh)), 72px) var(--gutter) clamp(var(--s-3), calc(4 * var(--vh)), 40px);
    }
    .ski-hero-title span{ font-size: clamp(44px, min(calc(14 * var(--vw)), calc(7.5 * var(--vh))), 72px); }
    .ski-hero-title small{ padding-left: 1.2em; font-size: clamp(24px, min(calc(7.2 * var(--vw)), calc(3.9 * var(--vh))), 38px); }
    /* Sello: un poco más a la izquierda y más abajo, montado sobre el corte con la foto */
    .ski-hero-stamp{ --stamp: clamp(84px, calc(12 * var(--vh)), 112px); width: var(--stamp); top: calc(var(--stamp) * -0.22); right: calc(var(--gutter) + 17px); }
    .ski-hero-logos{ gap: var(--s-5); }
    .ski-hero-logos img{ max-height: clamp(44px, calc(7.5 * var(--vh)), 60px); }
    .ski-hero-logos > :first-child img,
    .ski-hero-logos > img:first-child{ max-height: clamp(64px, calc(11 * var(--vh)), 92px); }

    .ski-services-info{ padding-block: var(--s-6); }
    .ski-services-list{ margin-top: var(--s-4); }
    /* 3 arriba y 2 abajo, centrados */
    .ski-services-icons{
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        gap: 12px;
        width: 100%;
        max-width: calc(3 * 85px + 2 * 12px);
        margin: var(--s-5) auto 0;
    }
    .ski-services-icons img{ width: calc((100% - 2 * 12px) / 3); }
    .ski-services-slider{ aspect-ratio: 1 / 1; }

    /*
     * Sin carrusel: un aire blanco separa del After. "News 2026" va a la izquierda montada sobre el corte
     * (se sube sobre el aire y la foto de arriba); "3 pagos sin interés" a la derecha, más abajo, ya en el verde.
     */
    .ski-packages-media{ z-index: 3; aspect-ratio: auto; min-height: 0; padding: 0 var(--gutter); }
    .ski-packages-slider{ display: none; }
    .ski-packages-badges{ position: static; flex-direction: row-reverse; justify-content: space-between; align-items: flex-start; gap: var(--s-2); }
    .ski-packages-badges img:last-child:not(:first-child){ width: 48%; max-width: 200px; margin: -64px 0 0; }
    .ski-packages-badges img:first-child{ width: 44%; max-width: 180px; margin-top: var(--s-5); }
    .ski-packages-list{ padding-top: var(--s-5); }
    /* El subtítulo (duración) siempre debajo del nombre */
    .ski-pack-head{ flex-direction: column; align-items: flex-start; gap: 6px; margin-bottom: var(--s-2); }
    .ski-pack-head h3{ font-size: clamp(38px, calc(11 * var(--vw)), 46px); }
    .ski-pack-duration{ font-size: clamp(21px, calc(6 * var(--vw)), 25px); }
    .ski-pack-seasons{ grid-template-columns: 1fr; }
    .ski-pack-season{
        display: grid;
        grid-template-columns: 1fr auto;
        grid-template-areas: "dates label" "dates price";
        align-items: center;
        column-gap: var(--s-2);
        padding: var(--s-2) 0;
        text-align: left;
    }
    .ski-pack-season + .ski-pack-season{ border-left: 0; border-top: 1px solid var(--c-line); }
    .ski-pack-dates{ grid-area: dates; justify-content: flex-start; align-items: center; min-height: 0; padding: 0; border: 0; }
    .ski-pack-label{ grid-area: label; margin: 0; text-align: right; }
    .ski-pack-price{ grid-area: price; padding: 0; text-align: right; }
    .ski-pack-foot{ flex-direction: column; align-items: stretch; margin-top: var(--s-2); }
    .ski-pack-btn{ width: 100%; }

    .ski-gallery{ padding: var(--s-2) 0; }
    .ski-gallery-col{ height: calc(75 * var(--vw)); }

    .ski-contact-form{ margin-top: var(--s-4); }
    .ski-contact-form .wpcf7-form{ grid-template-columns: 1fr; gap: var(--s-3); }
    .ski-contact-form .ski-packs .wpcf7-radio{ grid-template-columns: 1fr; gap: 8px; }
    .ski-contact-form .ski-packs .wpcf7-list-item label{ min-height: 64px; }
    .ski-contact-card{ margin-inline: var(--gutter); }
    .ski-sent{ padding: var(--s-5) var(--s-3) var(--s-4); }
    .ski-sent-row{ grid-template-columns: 1fr; gap: 2px; }
}
