/* Visual polish and progressive motion; the page remains usable without JS. */
:root {
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-spring: cubic-bezier(0.16, 1, 0.3, 1);
  --reveal-distance: 40px;
  --reveal-distance-lg: 52px;
  --reveal-duration: 0.95s;
}
@media (prefers-reduced-motion: no-preference) {
  html.js .section-heading,
  html.js .experience-card,
  html.js .price-panel,
  html.js .route-card,
  html.js .know-visual,
  html.js .know-item,
  html.js .perk,
  html.js .gallery-grid figure,
  html.js .stay-card,
  html.js .booking {
    transition:
      translate var(--reveal-duration) var(--ease-spring),
      opacity calc(var(--reveal-duration) * 0.92) var(--ease-spring),
      scale var(--reveal-duration) var(--ease-spring);
    transition-delay: var(--reveal-delay, 0ms);
    backface-visibility: hidden;
  }
  html.js .section-heading:not(.is-revealed),
  html.js .stay-card:not(.is-revealed),
  html.js .booking:not(.is-revealed) {
    translate: 0 var(--reveal-distance-lg);
    opacity: 0;
    scale: 0.94;
  }
  html.js .experience-card:not(.is-revealed),
  html.js .price-panel:not(.is-revealed),
  html.js .route-card:not(.is-revealed),
  html.js .know-visual:not(.is-revealed) {
    translate: 0 var(--reveal-distance);
    opacity: 0;
    scale: 0.96;
  }
  html.js .know-item:not(.is-revealed),
  html.js .perk:not(.is-revealed),
  html.js .gallery-grid figure:not(.is-revealed) {
    translate: 0 32px;
    opacity: 0;
    scale: 0.97;
  }
  html.js .is-revealed {
    translate: none;
    opacity: 1;
    scale: none;
  }
}
::selection {
  background: #ffd8cc;
  color: #0b2919;
}
a:focus-visible {
  outline: 3px solid #e58367;
  outline-offset: 6px;
}
.hero a:focus-visible,
.booking a:focus-visible {
  outline-color: #fffaf4;
}
html {
  scroll-padding-top: 24px;
}
body .reading-progress {
  position: fixed;
  z-index: 100;
  inset: 0 0 auto;
  height: 3px;
  background: #e58367;
  transform: scaleX(0);
  transform-origin: left;
  pointer-events: none;
}
body .hero {
  overflow: hidden;
}
body .hero-inner {
  position: relative;
  padding-top: 13rem;
  padding-bottom: 9rem;
}
body .hero-copy {
  position: relative;
  z-index: 2;
}
body h1 em {
  position: relative;
  display: inline-block;
  padding-bottom: 0.16em;
}
.hero-underline {
  position: absolute;
  width: 98%;
  height: 0.16em;
  left: 0;
  bottom: -0.02em;
  overflow: visible;
  fill: none;
  stroke: #e58367;
  stroke-width: 3;
  stroke-linecap: round;
}
body .site-nav img {
  transition:
    transform 0.4s var(--ease-out),
    box-shadow 0.4s;
}
body .site-nav > a {
  position: relative;
}
body .site-nav > a::after {
  content: "TOURS PRIVADOS EN E-BIKE";
  position: absolute;
  left: 50%;
  bottom: -1.25rem;
  width: max-content;
  transform: translateX(-50%);
  color: #fffaf4;
  font:
    9px/1 "DM Mono",
    monospace;
  letter-spacing: 0.16em;
  text-shadow: 0 2px 10px #061b10;
}
body .nav-links a:not(.mini-cta) {
  position: relative;
  padding-block: 0.5rem;
}
body .nav-links a:not(.mini-cta)::after {
  content: "";
  position: absolute;
  inset: auto 0 0;
  height: 2px;
  background: #ffd8cc;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.35s var(--ease-out);
}
body .nav-links a:hover::after,
body .nav-links a:focus-visible::after {
  transform: scaleX(1);
}
body .button,
body .mini-cta {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  transition:
    transform 0.35s var(--ease-out),
    box-shadow 0.35s,
    background 0.35s;
}
body .button-primary {
  color: #0b2919;
  background: #ed9a80;
  box-shadow:
    0 5px 0 #b7664f,
    0 14px 28px #071f1330;
}
body .button-primary:hover {
  background: #f4ae96;
  box-shadow:
    0 7px 0 #b7664f,
    0 20px 30px #071f1326;
}
body .button:active,
body .mini-cta:active {
  transform: translateY(2px) scale(0.98);
}
body .button::after {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  background: linear-gradient(110deg, transparent 25%, #ffffff45 48%, transparent 70%);
  transform: translateX(-130%);
  transition: transform 0.65s var(--ease-out);
  pointer-events: none;
}
body .button:hover::after {
  transform: translateX(130%);
}
.forest-postcard {
  position: absolute;
  z-index: 1;
  width: 290px;
  right: 0;
  bottom: 150px;
  padding: 25px 18px 18px;
  border: 1px solid #fffaf480;
  border-radius: 12px 12px 38px 12px;
  background: #fffaf4;
  color: #173521;
  box-shadow: 0 24px 60px #051a1650;
  rotate: 6deg;
}
.forest-postcard::before {
  content: "";
  position: absolute;
  top: -13px;
  left: 90px;
  width: 90px;
  height: 29px;
  background: #ed9a80d9;
  transform: rotate(-10deg);
}
.postcard-stamp {
  display: block;
  font:
    10px/1.6 "DM Mono",
    monospace;
  letter-spacing: 0.14em;
  text-align: center;
}
.forest-postcard img {
  margin: 14px auto;
  width: 100%;
  height: auto;
}
.postcard-note {
  display: block;
  text-align: center;
  font-size: 14px;
  font-weight: 700;
}
.scroll-invitation {
  position: absolute;
  z-index: 3;
  bottom: 55px;
  left: max(1rem, calc((100% - 1180px) / 2));
  display: flex;
  gap: 12px;
  align-items: center;
  color: #fffaf4;
  text-decoration: none;
  font:
    11px/1.4 "DM Mono",
    monospace;
  letter-spacing: 0.08em;
}
.scroll-invitation span {
  display: grid;
  place-items: center;
  width: 31px;
  height: 42px;
  border: 1px solid #ffffff65;
  border-radius: 999px;
}
.scroll-invitation .icon {
  width: 16px;
  height: 16px;
}
body .section-heading h2 {
  font-weight: 800;
}
body .section-heading .eyebrow::before {
  width: 24px;
  height: 8px;
  border-radius: 50%;
  transform: rotate(-25deg);
}
body .routes-wrap {
  position: relative;
  background-image: repeating-radial-gradient(
    ellipse at 0 100%,
    transparent 0 42px,
    #aa473807 43px 44px,
    transparent 45px 85px
  );
}
body .route-card {
  border: 1px solid #ffffff50;
  transition:
    box-shadow 0.45s var(--ease-out),
    translate 0.45s var(--ease-out);
}
body .route-media img {
  transition-duration: 0.8s;
}
body .level {
  padding: 0.45rem 0.8rem;
  box-shadow: 0 3px 12px #03170d20;
}
body .route-stat {
  border-radius: 12px;
}
body .route-content .departure {
  color: #fffaf4;
}
body .include-item,
body .perk {
  transition:
    translate 0.35s var(--ease-out),
    box-shadow 0.35s,
    border-color 0.35s;
}
body .perk-icon {
  transition: transform 0.5s var(--ease-out);
}
body .perk-custom {
  position: relative;
  border: 1px dashed #aa473880;
}
body .know-visual {
  background-image: repeating-radial-gradient(
    ellipse at 15% 25%,
    transparent 0 35px,
    #1735210a 36px 37px,
    transparent 38px 65px
  );
}
body .know-number {
  color: #0b2919;
  background: #ed9a80;
}
body .gallery-grid {
  grid-auto-flow: dense;
}
body .gallery-grid figure {
  border: 1px solid #ffffff26;
}
body .gallery-grid img {
  transition:
    transform 0.8s var(--ease-out),
    filter 0.8s;
}
body .booking {
  box-shadow: 0 25px 65px #aa473824;
}
body .booking::after {
  content: "";
  position: absolute;
  top: -120px;
  right: -110px;
  width: 380px;
  height: 380px;
  border: 1px solid #ffffff20;
  box-shadow:
    0 0 0 32px #ffffff08,
    0 0 0 65px #ffffff06;
  border-radius: 50%;
  pointer-events: none;
}
body .booking-copy {
  position: relative;
  z-index: 1;
}
@media (hover: hover) and (pointer: fine) {
  body .site-nav a:hover img {
    transform: rotate(-3deg) translateY(-2px);
    box-shadow: 0 16px 32px #04180d40;
  }
  body .route-card:hover {
    translate: 0 -7px;
    box-shadow: 0 28px 45px #14301e30;
  }
  body .route-card:hover .route-media img {
    transform: scale(1.075);
  }
  body .include-item:hover,
  body .perk:hover {
    translate: 0 -5px;
    box-shadow: 0 15px 30px #14301e10;
    border-color: #87a48c80;
  }
  body .perk:hover .perk-icon {
    transform: rotate(-9deg) scale(1.08);
  }
  body .gallery-grid figure:hover img {
    transform: scale(1.065);
    filter: saturate(1.1);
  }
}
@media (prefers-reduced-motion: no-preference) {
  body .hero-copy > * {
    translate: 0 52px;
    scale: 0.92;
    animation: hero-arrive 1.05s var(--ease-spring) forwards;
    backface-visibility: hidden;
  }
  body .hero-copy > :nth-child(1) {
    animation-delay: 0.05s;
  }
  body .hero-copy > :nth-child(2) {
    animation-delay: 0.14s;
  }
  body .hero-copy > :nth-child(3) {
    animation-delay: 0.24s;
  }
  body .hero-copy > :nth-child(4) {
    animation-delay: 0.36s;
  }
  body .hero-copy > :nth-child(5) {
    animation-delay: 0.48s;
  }
  .hero-underline path {
    stroke-dasharray: 1000;
    stroke-dashoffset: 1000;
    animation: draw-trail 1.8s 0.7s var(--ease-spring) forwards;
  }
  .forest-postcard {
    opacity: 0;
    translate: 0 64px;
    rotate: 14deg;
    scale: 0.9;
    animation: postcard-arrive 1.25s 0.45s var(--ease-spring) forwards;
    backface-visibility: hidden;
  }
  .scroll-invitation {
    opacity: 0;
    translate: 0 20px;
    animation: scroll-invite-in 1s 0.75s var(--ease-spring) forwards;
  }
  .scroll-invitation span {
    animation: nudge 2.2s 1.6s ease-in-out infinite;
  }
}
@keyframes hero-arrive {
  to {
    opacity: 1;
    translate: none;
    scale: none;
  }
}
@keyframes draw-trail {
  to {
    stroke-dashoffset: 0;
  }
}
@keyframes postcard-arrive {
  to {
    opacity: 1;
    translate: none;
    rotate: 6deg;
    scale: none;
  }
}
@keyframes scroll-invite-in {
  to {
    opacity: 1;
    translate: none;
  }
}
@keyframes nudge {
  0%,
  100% {
    translate: 0 0;
  }
  50% {
    translate: 0 9px;
  }
}
@media (max-width: 1100px) {
  .forest-postcard {
    display: none;
  }
}
@media (max-width: 620px) {
  body .hero-inner {
    padding-top: 12rem;
    padding-bottom: 8rem;
  }
  body .hero-copy > * {
    animation: none;
    opacity: 1;
    translate: none;
    scale: none;
  }
  body .hero-underline path {
    animation: none;
    stroke-dashoffset: 0;
  }
  body .site-nav > a::after {
    bottom: -1rem;
    font-size: 7px;
    letter-spacing: 0.12em;
  }
  body .section {
    width: calc(100% - 2rem);
  }
  body .includes-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  body .include-item {
    padding: 0.85rem;
    font-size: 0.9rem;
  }
  body .price-option {
    flex-direction: row;
    align-items: center;
  }
  body .price-option strong {
    font-size: 1.5rem;
  }
  body .experience-card,
  body .price-panel {
    padding: 1.5rem;
  }
  .scroll-invitation {
    font-size: 10px;
    bottom: 48px;
  }
}
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important;
  }
  body .hero-copy > *,
  .forest-postcard,
  .scroll-invitation {
    opacity: 1;
    translate: none;
    rotate: none;
    scale: none;
  }
  html.js .section-heading:not(.is-revealed),
  html.js .experience-card:not(.is-revealed),
  html.js .price-panel:not(.is-revealed),
  html.js .route-card:not(.is-revealed),
  html.js .know-visual:not(.is-revealed),
  html.js .know-item:not(.is-revealed),
  html.js .perk:not(.is-revealed),
  html.js .gallery-grid figure:not(.is-revealed),
  html.js .stay-card:not(.is-revealed),
  html.js .booking:not(.is-revealed),
  html.js .is-revealed {
    opacity: 1;
    translate: none;
    scale: none;
    transition: none;
  }
  body .hero-underline path {
    stroke-dashoffset: 0;
  }
  body .route-card,
  body .perk,
  body .include-item {
    translate: none !important;
  }
}
