/* base.css — regras partilhadas por home.css, tours.css e detail.css */
* { box-sizing:border-box }
body.menu-open { overflow:hidden }
a { color:inherit }
button,input,select { font:inherit }
.madeira-tourism-logo-wrap { margin:22px auto 14px }
.booking-modal-eyebrow,.booking-modal-title { text-align:center }
.booking-status.is-success { color:var(--success) }
.hamburger-menu-panel.open .hamburger-menu-link { animation:menuLinkIn 340ms var(--ease-ios) both }
.hamburger-menu-panel.open .hamburger-menu-link:nth-child(2) { animation-delay:45ms }
.hamburger-menu-panel.open .hamburger-menu-link:nth-child(3) { animation-delay:90ms }
.hamburger-menu-panel.open .hamburger-menu-link:nth-child(4) { animation-delay:135ms }
.hamburger-menu-panel.open .hamburger-menu-link:nth-child(5) { animation-delay:180ms }
.hamburger-menu-panel.open .hamburger-menu-link:nth-child(6) { animation-delay:225ms }
.booking-total-pill:empty { display:none }
html[data-page="home"] .tours-custom-cta { margin-top:var(--ttv-block-gap); }
html[data-page="home"] .tours-section { padding-bottom:0; }
html[data-page="home"] .why-ride-section { padding-top:var(--ttv-block-gap); }
html[data-page="home"] .why-ride-section .section-header { margin-bottom:32px; }
/* Nav rearrangement: company logo on the left, language selector + hamburger grouped on the right */
.nav-logo-link { position:absolute;
  left:24px;
  top:50%;
  transform:translateY(-50%);
  display:inline-flex;
  align-items:center;
  border-radius:8px; }
.nav-logo-link:focus-visible { outline:2px solid var(--gold);outline-offset:6px; }
.nav-logo-img { display:block;
  height:38px;
  width:auto; }
.nav-right-cluster { position:absolute;
  right:24px;
  top:50%;
  transform:translateY(-50%);
  display:flex;
  align-items:center;
  gap:8px; }
.nav-right-cluster .lang-select { position:relative;left:auto;right:auto;top:auto;transform:none; }
.nav-right-cluster .hamburger-menu-btn { position:relative;left:auto;right:auto;top:auto;transform:none; }
.tour-spec-unit:empty { display:none;
  margin:0; }
.tour-detail-kicker { width:100%;
  margin:0 0 9px;
  text-align:center;
  font-family:var(--font-body);
  font-size:.74rem;
  font-weight:700;
  line-height:1.2;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--gold-ink); }
.tour-detail-rule { display:block;
  width:52px;
  height:3px;
  margin:0 auto 18px;
  border-radius:2px;
  background:var(--gold); }
.tour-card-body,
.tour-name,
.tour-card-best,
.tour-card-note { text-align:center; }
.tour-card-body,
.tour-actions,
.booking-inquiry-row { align-items:center;
  justify-content:center; }
.booking-inquiry-btn,
.booking-stripe-btn { display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  line-height:1;
  white-space:nowrap; }
.booking-inquiry-label,
.booking-stripe-btn span { display:inline-block;
  line-height:1;
  transform:none;
  text-box-trim:trim-both;
  text-box-edge:cap alphabetic; }
.lang-select-btn .lang-flag { width:24px;
  height:24px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  line-height:1; }
.lang-option .lang-flag { width:28px;
  height:24px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 28px;
  line-height:1;
  font-size:1.14rem; }
.lang-option span:not(.lang-flag) { display:flex;
  align-items:center;
  min-height:24px;
  line-height:1.1; }
.wa-float { position:fixed;
  z-index:1200;
  right:18px;
  bottom:calc(22px + env(safe-area-inset-bottom));
  width:58px;
  height:58px;
  border-radius:50%;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:#25d366;
  color:#000;
  border:0;
  box-shadow:0 2px 6px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.20);
  text-decoration:none;
  -webkit-tap-highlight-color:transparent;
  transition:transform .2s var(--ease-ios,ease),box-shadow .2s ease,opacity .2s ease,visibility .2s ease; }
.wa-float svg { width:30px;
  height:30px;
  display:block;
  fill:currentColor; }
.wa-float:hover { transform:translateY(-2px);box-shadow:0 4px 10px rgba(0,0,0,.20),0 12px 22px rgba(0,0,0,.24); }
.wa-float:active { transform:scale(.94); }
.wa-float:focus-visible { outline:3px solid rgba(0,0,0,.45);outline-offset:3px; }
body.menu-open .wa-float,
body.booking-modal-open .wa-float { opacity:0;
  visibility:hidden;
  pointer-events:none; }
.booking-email-btn,
.booking-email-btn:visited,
.booking-email-btn:hover,
.booking-email-btn:focus-visible,
.booking-email-btn:active { color:#fff; }
.platform-chip:hover,
.platform-chip:focus-visible { border-color:rgba(232,185,35,.70); }
.platform-badge-brand,
.platform-badge-brand-viator,
.platform-badge-brand-tripadvisor { color:#000;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.46em; }
.platform-badge-brand::before { content:"";
  width:.62em;
  height:.62em;
  border-radius:999px;
  background:#FF5533;
  box-shadow:0 0 0 2px rgba(255,255,255,.70);
  flex:0 0 auto; }
.platform-badge-brand-viator::before { background:#008768; }
.platform-badge-brand-tripadvisor::before { background:#34E0A1; }
.booking-total-label,
.booking-total-inner > span,
.booking-total-inner > strong { font-weight:800;
  color:#000; }
.tour-image-scroll::-webkit-scrollbar { display:none; }

/* regras partilhadas por dois ficheiros (inertes no terceiro) */
.hero-cta:hover { transform:translateY(-1px) }
.before-booking-header { margin-bottom:30px }
.tour-actions .details-btn:hover { background:var(--white) }
.about-text-wrap { padding:44px 46px }
.mini-faq-item summary::-webkit-details-marker { display:none }
.mini-faq-item summary:focus-visible { box-shadow:inset 0 0 0 2px var(--gold-border-mid) }
.review-toggle:focus-visible { text-decoration-thickness:2px }
.hero-left>*:nth-child(1) { animation-delay:0.05s }
.hero-left>*:nth-child(2) { animation-delay:0.14s }
.hero-left>*:nth-child(3) { animation-delay:0.23s }
.hero-left>*:nth-child(4) { animation-delay:0.32s }
.mini-faq-item[open]>p { animation:faqReveal 300ms var(--ease-ios) both }
.before-booking-card,.about-story-card,.review-card,.mini-faq-item,.platform-chip { transition:transform 320ms var(--ease-ios),box-shadow 320ms var(--ease-ios),border-color 320ms var(--ease-ios) }
.hero-cta:hover::after { animation-play-state:paused }
.mini-faq-item[open] summary::after { transform:rotate(180deg) }
.why-ride-section .before-booking-block { margin-bottom:0 }
.tour-card[id] { scroll-margin-top:92px }
.tour-card,.review-card,.mini-faq-item,.about-story-card { overflow-wrap:break-word }
.platform-badges-row:empty { display:none }
.about-section { background:var(--white) }
.about-section .about-story-card,.about-section .about-text-wrap { background:var(--surface-blue) }
.before-booking-copy strong,.before-booking-copy span { text-align:left }
.review-google svg { display:block }
.review-card.expanded .review-text-clamp { max-height:none }
.review-toggle[aria-expanded="true"]::after { transform:rotate(180deg) }
/* Mini photo carousel inside tour cards (home + tours listing pages).
   Reuses the same horizontal scroll-snap + dot pattern as the tour
   detail page galleries (see detail.css), sized to fit inside the
   existing .tour-image-wrap. Dots are created by JS (initGalleries in
   common.js) for any [data-scroll-gallery] element on the page. */
.tour-image-scroll { display:flex;
  overflow-x:auto;
  overflow-y:hidden;
  scroll-snap-type:x mandatory;
  scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
  width:100%; }
.tour-image-wrap .tour-scroll-dots { position:absolute;
  left:50%;
  bottom:12px;
  transform:translateX(-50%);
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  min-height:24px;
  padding:4px 10px;
  border-radius:999px;
  background:rgba(13,34,64,.58);
  border:1px solid rgba(255,255,255,.38);
  box-shadow:0 5px 18px rgba(0,0,0,.26);
  z-index:20; }
.tour-image-wrap .tour-scroll-dot { appearance:none;
  -webkit-appearance:none;
  box-sizing:border-box;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  width:24px;
  min-width:24px;
  height:24px;
  min-height:24px;
  padding:0;
  margin:0;
  border:0;
  background:transparent;
  cursor:pointer;
  position:relative; }
.tour-image-wrap .tour-scroll-dot::before { content:"";
  display:block;
  width:7px;
  height:7px;
  border:1px solid rgba(255,255,255,.9);
  border-radius:999px;
  background:rgba(255,255,255,.95);
  box-shadow:0 1px 4px rgba(0,0,0,.42); }
.tour-image-wrap .tour-scroll-dot.active::before { width:18px;
  background:var(--gold);
  border-color:var(--gold); }
.tour-card-seal { position:absolute;top:16px;left:16px;z-index:2;padding:6px 13px;border-radius:8px;background:var(--white);color:var(--red);border:1.5px solid var(--red);font-size:var(--fs-2);font-weight:800;letter-spacing:0.05em;text-transform:uppercase;box-shadow:var(--shadow-card-light) }

/* Skip link: first focusable element on every page. Visually hidden until it
   receives keyboard focus, then shown as a pill over the nav so keyboard and
   screen-reader users can jump straight to <main id="main">. */
.skip-link { position:absolute;top:-100px;left:16px;z-index:3000;padding:12px 20px;border-radius:999px;background:var(--blue);color:var(--white);font-family:var(--font-body);font-size:var(--fs-4);font-weight:700;text-decoration:none;box-shadow:var(--shadow-button);transition:top .15s var(--ease-ios) }
.skip-link:focus { top:12px;outline:3px solid var(--gold);outline-offset:2px }
