/* Piezas propias del sitio de ASENCORR · Trumao (sobre la base de sections.css, ya en los colores
   del logo: azul rey #2252e6, azul claro #5b8ff5, azul profundo #14309e y gris #5b5f69). */

/* Barra superior blanca, para el logo a color. */
.site-bar{background:rgba(255,255,255,.97);color:#0e2672;border-bottom:1px solid rgba(14,38,114,.12);box-shadow:0 6px 24px rgba(3,10,38,.18)}
.site-bar .logo{--logo-h:48px}
.site-bar .logo img{filter:none}
.site-bar__nav a{color:rgba(14,38,114,.7)}
.site-bar__nav a:hover,.site-bar__nav a[aria-current="true"]{color:#0e2672}
.site-bar__nav a[aria-current="true"]{box-shadow:inset 0 -2px 0 #2252e6}
.site-bar .pill-button{background:linear-gradient(90deg,#2252e6,#5b8ff5);box-shadow:0 8px 22px rgba(34,82,230,.35)}
.site-bar__menu{color:#0e2672}
.mobile-menu .logo img,.footer .logo img{height:64px;width:auto;filter:none}
.footer .logo img{height:72px}

/* Inicio: el video de la L/M Valentina III con el azul del logo encima, más intenso a la izquierda (donde
   va el texto) y abajo; la lancha queda a la vista a la derecha. Abajo, las olas del logo. */
.hero--river .hero__background{background:#061541}
.hero__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:62% 50%}
.hero__tint{position:absolute;inset:0;background:linear-gradient(90deg,rgba(6,21,65,.9) 0%,rgba(14,38,114,.72) 34%,rgba(34,82,230,.18) 62%,transparent 80%),linear-gradient(180deg,rgba(6,21,65,.5),transparent 22%,transparent 72%,rgba(6,21,65,.7))}
/* Celular: el video (apaisado) completo arriba, a todo el ancho bajo la barra, y el texto debajo. */
@media(max-width:767px){
  .hero__video{inset:var(--header-height) 0 auto;height:56.25vw;object-position:center}
  .hero__tint{background:linear-gradient(180deg,transparent calc(var(--header-height) + 40vw),#061541 calc(var(--header-height) + 56.25vw))}
  .hero--river .hero__body{align-items:flex-start;padding-top:calc(var(--header-height) + 56.25vw + 28px)}
}
@keyframes boat-bob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-10px) rotate(-1.4deg)}}
.hero__waves{position:absolute;left:0;bottom:0;width:200%;height:clamp(120px,22vh,220px)}
.hero__wave{animation:waves-run 18s linear infinite}
.hero__wave--a{fill:rgba(91,143,245,.18)}
.hero__wave--b{fill:rgba(141,146,156,.22);animation-duration:26s}
@keyframes waves-run{to{transform:translateX(-50%)}}

/* Nosotros: el video de las banderas ya viene recortado en 3:4 y centrado en ellas
   (.claude/video-banderas.ps1), igual que el marco. */
.about__photo video{object-position:center;transform:scale(1.05)}
/* Con el recorte justo, el acercamiento de las fotos (12 %) cortaba la punta de la bandera: aquí 5 %,
   con el mismo desplazamiento suave al hacer scroll. */
@supports (animation-timeline:view()){
  .about__photo video{animation-name:flag-drift}
  @keyframes flag-drift{from{transform:translateY(-2%) scale(1.05)}to{transform:translateY(2%) scale(1.05)}}
}

/* Nosotros: foto del muelle con su rótulo. */
.about__photo--caption{position:relative}
.about__photo--caption figcaption{position:absolute;left:14px;bottom:14px;padding:7px 13px;border-radius:999px;background:rgba(6,21,65,.78);color:#fff;font:700 12px/1.3 var(--sans);letter-spacing:.06em}

/* Nuestra lancha: video de la L/M zarpando. */
.vessel-photo{position:relative;margin:0;border-radius:26px;overflow:hidden;aspect-ratio:4/5;box-shadow:0 30px 70px rgba(20,24,40,.45)}
.vessel-photo img,.vessel-photo video{display:block;width:100%;height:100%;object-fit:cover;object-position:center 42%;transition:transform 1.2s cubic-bezier(.16,1,.3,1)}
.vessel-photo:hover img,.vessel-photo:hover video{transform:scale(1.05)}
.vessel-photo figcaption{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;gap:2px;padding:48px 22px 20px;background:linear-gradient(0deg,rgba(6,21,65,.88),transparent);color:#fff;font-size:13.5px}
.vessel-photo figcaption strong{font:400 1.6rem/1 var(--display);letter-spacing:.03em;text-transform:uppercase}
@media(max-width:899px){.vessel-photo{aspect-ratio:4/3}}

/* Contacto · Cómo llegar: el letrero del camino, con el texto encima. */
.arrive{position:relative;display:block;margin:0 0 18px;min-height:clamp(240px,32vw,360px);border-radius:24px;overflow:hidden;isolation:isolate;box-shadow:0 24px 60px rgba(0,0,0,.35)}
.arrive img{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:center 45%;transition:transform 1.2s cubic-bezier(.16,1,.3,1)}
.arrive:hover img{transform:scale(1.04)}
.arrive::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(6,21,65,.92) 0%,rgba(6,21,65,.7) 45%,rgba(6,21,65,.1) 100%)}
.arrive__text{display:flex;flex-direction:column;gap:8px;max-width:440px;padding:clamp(24px,4vw,40px)}
.arrive__kicker{font:800 11px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:#8fb3ff}
.arrive strong{font:400 clamp(1.6rem,3vw,2.3rem)/1.05 var(--display);text-transform:uppercase}
.arrive__text > span:not([class]){color:rgba(255,255,255,.85);line-height:1.55}
.arrive__go{display:inline-flex;align-self:flex-start;gap:8px;margin-top:6px;padding:10px 16px;border-radius:999px;background:#fff;color:#0e2672;font:800 13px var(--sans)}
/* Celular: la foto arriba (se ve el letrero completo) y el texto debajo. */
@media(max-width:600px){
  .arrive{min-height:0;background:#0e2672}
  .arrive img{position:static;display:block;aspect-ratio:4/3;height:auto}
  .arrive::before{display:none}
}

/* Nuestra lancha (sección gris). */
.vessel-sec__grid{display:grid;gap:clamp(28px,5vw,64px);align-items:center}
@media(min-width:900px){.vessel-sec__grid{grid-template-columns:1fr 1fr}}
.vessel-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:26px 0 0}
.vessel-facts div{padding:16px 18px;border:1px solid var(--line-strong);border-radius:16px;background:var(--surface)}
.vessel-facts dt{font-size:11px;letter-spacing:.16em;text-transform:uppercase;opacity:.8}
.vessel-facts dd{margin:6px 0 0;font:700 15px/1.35 var(--sans)}
@media(max-width:560px){.vessel-facts{grid-template-columns:1fr}}

/* Mapa del río en relieve: la ruta se dibuja más lento (4 s) y la lancha la recorre en 16 s (sections.js). */
.route-path.is-active{animation-duration:4s}
/* Mapa del río en relieve: el río en el morado azulado del mapa del cliente, sobre el valle. */
.route-map--river .route-map__river{fill:none;stroke:#5a46c8;stroke-width:9;stroke-linecap:round;stroke-linejoin:round;opacity:.95;filter:drop-shadow(0 0 6px rgba(20,10,80,.45))}
.route-map__compass circle{fill:rgba(6,21,65,.7);stroke:rgba(255,255,255,.5);stroke-width:1.5}
.route-map__compass path{fill:#fff}
.route-map__compass text{fill:#fff;font:800 13px/1 var(--sans)}

/* La travesía: tres piezas verticales (dos videos y una foto). */
.journey__head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:12px 32px;margin-bottom:clamp(28px,4vw,48px)}
.journey__head .display{margin-bottom:0}
.journey__head .lead{max-width:46ch;margin:0}
.journey__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(12px,1.8vw,24px);align-items:start}
.journey__item{position:relative;margin:0;border-radius:26px;overflow:hidden;aspect-ratio:9/16;max-height:640px;background:#0e2672;box-shadow:0 30px 70px rgba(0,0,0,.4)}
.journey__item img,.journey__item video{display:block;width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.16,1,.3,1)}
.journey__item:hover img,.journey__item:hover video{transform:scale(1.04)}
.journey__item figcaption{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;gap:2px;padding:56px 20px 18px;background:linear-gradient(0deg,rgba(6,21,65,.85),transparent);color:#fff;font-size:13px}
.journey__item figcaption strong{font:400 1.5rem/1 var(--display);letter-spacing:.03em;text-transform:uppercase}
.journey__hint{display:none}
/* Celular: las tres piezas en fila, se pasan de lado. */
@media(max-width:767px){
  .journey__grid{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;margin-inline:calc(-1 * var(--gutter));padding:4px var(--gutter) 18px;scroll-padding-inline:var(--gutter);scrollbar-width:none}
  .journey__grid::-webkit-scrollbar{display:none}
  .journey__item{flex:0 0 72%;scroll-snap-align:center;max-height:none}
  .journey__hint{display:block;margin:6px 0 0;font-size:12.5px;letter-spacing:.08em;color:var(--muted);text-align:right}
}

/* Itinerario: las dos temporadas, con los días y la hora de salida del sentido elegido. */
.seasons{display:grid;gap:14px;margin-top:20px}
@media(min-width:640px){.seasons{grid-template-columns:1fr 1fr}}
.season{padding:18px;border:1px solid var(--line);border-radius:18px;background:var(--surface)}
.season.is-current{border-color:var(--accent);box-shadow:0 0 0 3px rgba(63,122,243,.15)}
.season header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-bottom:12px}
.season h4{margin:0;font:800 1rem var(--sans)}
.season header span{font-size:13px;color:var(--muted)}
.season__badge{margin-left:auto;padding:3px 10px;border-radius:999px;background:var(--accent);color:#fff;font:800 11px/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase}
.season__trips{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.season__trips li{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:var(--card);border:1px solid var(--line)}
.season__trips li span{flex:1;text-transform:capitalize;font-weight:600}
.season__trips li strong{font:800 1.05rem var(--sans);color:var(--price)}
.season__trips li small{padding:2px 8px;border-radius:999px;background:#16c172;color:#fff;font:800 10px/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase}
.season__trips li.is-next{border-color:#16c172}
.season__other{margin:16px 0 0;padding:12px 14px;border-left:3px solid var(--accent);background:var(--surface);border-radius:0 12px 12px 0;font-size:14px;line-height:1.5}
.season__valid{margin:10px 0 0;font-size:12.5px;color:var(--muted)}

/* Tarifas: los valores de texto («$10 por kilo adicional») pueden partirse en dos líneas, y el panel
   nunca se sale de la pantalla (en celular, «Carga» empujaba la tabla hacia la derecha). */
.schedule__body > *{min-width:0}
.fare-table td:first-child{width:50%}
.fare-table td.is-text{white-space:normal;font-size:13px;line-height:1.35}
.fares__valid{white-space:normal;line-height:1.5}
@media(max-width:767px){
  .fare-table{font-size:13.5px}
  .fares__valid{font-size:10px;letter-spacing:.08em}
}

/* Datos de la ruta (próxima salida, frecuencia, etc.): letra más chica en celular. */
@media(max-width:767px){
  .route-card__facts{gap:10px}
  .route-card__facts div{padding:11px 12px}
  .route-card__facts dd{font-size:.92rem;line-height:1.3}
  .route-card__facts dd small{font-size:12px}
}

/* Blog (5 fotos): arriba la grande y dos verticales; abajo dos que ocupan media fila cada una, así
   no quedan huecos. En celular (2 columnas) van a lo ancho. */
.post--half{grid-column:span 2;grid-row:span 2}
.post--half .post__media{object-position:50% 55%}

/* Blog en celular: fotos apiladas como instantáneas (sections.js). Cada foto lleva marco blanco y
   las de atrás asoman corridas y un poco giradas; la de arriba sale hacia la izquierda al tocarla. */
.blog__stack-hint{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:18px 4px 0;font-size:12.5px;letter-spacing:.06em;color:var(--muted)}
.blog__stack-hint b{padding:4px 10px;border-radius:999px;background:rgba(255,255,255,.1);color:#fff;font:800 12px/1.3 var(--sans)}
@media(max-width:767px){
  .blog__grid.is-stack{display:block;position:relative;height:calc((100vw - 2 * var(--gutter)) * 1.22);margin:6px 8px 0}
  .blog__grid.is-stack .post{
    --rot:0deg;
    position:absolute;inset:0;width:100%;height:100%;border:7px solid #fff;border-radius:18px;
    opacity:1!important;z-index:calc(10 - var(--depth,0));
    transform:translate(calc(var(--depth,0) * 9px),calc(var(--depth,0) * -10px)) rotate(var(--rot)) scale(calc(1 - var(--depth,0) * .04))!important;
    transition:transform .38s cubic-bezier(.2,.8,.2,1),opacity .38s,box-shadow .38s!important;
    box-shadow:0 18px 40px rgba(0,0,0,.45);cursor:pointer;touch-action:pan-y;
  }
  .blog__grid.is-stack .post[data-depth="1"]{--rot:-4deg}
  .blog__grid.is-stack .post[data-depth="2"]{--rot:5deg}
  .blog__grid.is-stack .post[data-depth="3"],.blog__grid.is-stack .post[data-depth="4"]{--rot:-2deg;opacity:0!important}
  .blog__grid.is-stack .post .post__text{transform:none}
  .blog__grid.is-stack .post .post__media{transform:none;border-radius:11px}
  /* Sale hacia la izquierda girando; la que vuelve entra desde la derecha. */
  .blog__grid.is-stack .post.is-leaving{transform:translate(-115%,30px) rotate(-14deg)!important;opacity:0!important}
  .blog__grid.is-stack .post.is-entering{transform:translate(115%,30px) rotate(14deg)!important;opacity:0!important;transition:none!important}
}
@media(min-width:768px){.blog__stack-hint{display:none}}

/* Notas del itinerario: dos columnas que fluyen (como un diario), con el mismo espacio entre cada
   nota; antes se alineaban por filas y una nota larga dejaba un salto grande al lado. */
.schedule .notes{display:block;columns:1}
.schedule .notes li{break-inside:avoid;margin:0 0 10px}
@media(min-width:900px){.schedule .notes{columns:2;column-gap:40px}}

/* Contacto solo con tarjetas (sin formulario mientras no haya correo). */
.contact__grid--cards{grid-template-columns:1fr!important}
.contact__grid--cards .contact__cards{display:grid;gap:14px}
@media(min-width:768px){.contact__grid--cards .contact__cards{grid-template-columns:1fr 1fr}}

/* Cierre: el logo es apaisado. */
.finale__logo--wide{width:min(320px,70vw);height:auto}
