/* Triplan public style isolation
 * Loaded last for Triplan-rendered website UI so theme, Elementor, and other
 * plugin hover rules cannot leak their colors into our components.
 */

body.tp-website-page,
body :is([class^="tp-"], [class*=" tp-"]) {
  --e-global-color-primary: var(--tp-primary, #40A1B7) !important;
  --e-global-color-secondary: var(--tp-900, #1A2B49) !important;
  --e-global-color-text: var(--tp-900, #1A2B49) !important;
  --e-global-color-accent: var(--tp-accent, #1BBACA) !important;
  --e-global-typography-primary-font-family: var(--tp-heading-font, "Poppins") !important;
  --e-global-typography-secondary-font-family: var(--tp-heading-font, "Poppins") !important;
  --e-global-typography-text-font-family: var(--tp-body-font, "Poppins") !important;
  --e-global-typography-accent-font-family: var(--tp-action-font, "Lato") !important;
  --wp--preset--color--primary: var(--tp-primary, #40A1B7) !important;
  --wp--preset--color--secondary: var(--tp-900, #1A2B49) !important;
  --wp--preset--color--accent: var(--tp-accent, #1BBACA) !important;
  --wp--preset--color--vivid-cyan-blue: var(--tp-primary, #40A1B7) !important;
  --wp--preset--color--vivid-purple: var(--tp-primary, #40A1B7) !important;
  --wp--preset--color--vivid-pink: var(--tp-accent, #1BBACA) !important;
  --bs-primary: var(--tp-primary, #40A1B7) !important;
  --bs-secondary: var(--tp-secondary, #29525D) !important;
  --bs-link-color: var(--tp-primary, #40A1B7) !important;
  --bs-link-hover-color: var(--tp-primary-dark, #29525D) !important;
  --bs-pink: var(--tp-accent, #1BBACA) !important;
  --bs-code-color: var(--tp-primary-dark, #29525D) !important;
}

body :is(.tp-website-page, [class^="tp-"], [class*=" tp-"])
  :is(a, button, summary, [role="button"], input[type="button"], input[type="submit"]):is(:hover, :focus-visible),
body :is(a[class^="tp-"], a[class*=" tp-"], button[class^="tp-"], button[class*=" tp-"], [role="button"][class^="tp-"], [role="button"][class*=" tp-"]):is(:hover, :focus-visible) {
  text-decoration-color: currentColor !important;
}

body :is(.tp-website-page, [class^="tp-"], [class*=" tp-"])
  :is(a, button, summary, [role="button"], input[type="button"], input[type="submit"]),
body :is(a[class^="tp-"], a[class*=" tp-"], button[class^="tp-"], button[class*=" tp-"], [role="button"][class^="tp-"], [role="button"][class*=" tp-"]) {
  font-family: inherit;
}

body :is(.tp-website-page, [class^="tp-"], [class*=" tp-"])
  :is(a, button, summary, [role="button"], input[type="button"], input[type="submit"]):focus-visible,
body :is(a[class^="tp-"], a[class*=" tp-"], button[class^="tp-"], button[class*=" tp-"], [role="button"][class^="tp-"], [role="button"][class*=" tp-"]):focus-visible {
  outline: 3px solid var(--tp-primary, #1BBACA) !important;
  outline-offset: 3px !important;
}

body :is(.tp-website-page, [class^="tp-"], [class*=" tp-"])
  :is(a:not([class]), button:not([class]), summary:not([class])):is(:hover, :focus-visible) {
  color: var(--tp-primary-dark, #29525D) !important;
}

body .tp-site-header .tp-site-header__nav-link:hover,
body .tp-site-header .tp-site-header__nav-link:focus-visible,
body .tp-site-header .tp-site-header__action:hover,
body .tp-site-header .tp-site-header__action:focus-visible {
  color: var(--tp-site-header-accent, currentColor) !important;
}

body .tp-site-header .tp-site-header__action:hover .tp-site-header__action-label,
body .tp-site-header .tp-site-header__action:focus-visible .tp-site-header__action-label {
  color: currentColor !important;
}

body .tp-site-header .tp-site-header__profile-menu-row:hover,
body .tp-site-header .tp-site-header__profile-menu-row:focus-visible {
  color: var(--tp-secondary, #29525D) !important;
}

body .tp-site-header .tp-site-header__profile-menu-row--danger:hover,
body .tp-site-header .tp-site-header__profile-menu-row--danger:focus-visible {
  color: #ef4444 !important;
}

body .tp-site-mobile-header .tp-site-mobile-header__brand,
body .tp-site-mobile-header .tp-site-mobile-header__icon-link:hover,
body .tp-site-mobile-header .tp-site-mobile-header__icon-link:focus-visible,
body .tp-site-mobile-header .tp-site-mobile-header__menu-toggle:hover,
body .tp-site-mobile-header .tp-site-mobile-header__menu-toggle:focus-visible {
  color: var(--tp-mobile-header-text, var(--tp-900, #1A2B49)) !important;
}

body .tp-site-mobile-menu .tp-site-mobile-menu__row:hover,
body .tp-site-mobile-menu .tp-site-mobile-menu__row:focus-visible,
body .tp-site-mobile-menu .tp-site-mobile-menu__row.is-active {
  color: var(--tp-midnight, #0B2239) !important;
}

body .tp-site-mobile-menu .tp-site-mobile-menu__row--danger:hover,
body .tp-site-mobile-menu .tp-site-mobile-menu__row--danger:focus-visible {
  color: #A33D32 !important;
}

body .tp-site-mobile-menu .tp-site-mobile-menu__social:hover,
body .tp-site-mobile-menu .tp-site-mobile-menu__social:focus-visible {
  color: var(--tp-primary-dark, #087C89) !important;
}

body .tp-site-footer a:hover,
body .tp-site-footer a:focus-visible {
  color: #fff !important;
}

body .tp-site-footer .tp-site-footer__newsletter-submit:hover,
body .tp-site-footer .tp-site-footer__newsletter-submit:focus-visible,
body .tp-site-footer .tp-site-footer__social:hover,
body .tp-site-footer .tp-site-footer__social:focus-visible,
body .tp-site-footer .tp-site-footer__whatsapp:hover,
body .tp-site-footer .tp-site-footer__whatsapp:focus-visible {
  color: #fff !important;
}

body .tp-btn--primary:hover,
body .tp-btn--primary:focus-visible,
body .tp-btn--blue:hover,
body .tp-btn--blue:focus-visible {
  background: var(--tp-cyan-hover, #087C89) !important;
  border-color: var(--tp-cyan-hover, #087C89) !important;
  color: #fff !important;
}

body .tp-btn--secondary:hover,
body .tp-btn--secondary:focus-visible {
  background: var(--tp-cyan-tint, #DDF6F8) !important;
  border-color: var(--tp-cyan, #1BBACA) !important;
  color: var(--tp-cyan-hover, #087C89) !important;
}

body .tp-btn--danger:hover,
body .tp-btn--danger:focus-visible {
  background: #c93636 !important;
  border-color: #c93636 !important;
  color: #fff !important;
}

body .tp-product-card__link:hover,
body .tp-product-card__link:focus-visible {
  color: inherit !important;
}

body .tp-product-card__favorite:hover,
body .tp-product-card__favorite:focus-visible {
  background: var(--tp-cyan-tint, #DDF6F8) !important;
  color: var(--tp-primary-dark, #087C89) !important;
}

body .tp-product-carousel__nav-btn:hover,
body .tp-product-carousel__nav-btn:focus-visible,
body .tp-weekend-trips__nav-btn:hover,
body .tp-weekend-trips__nav-btn:focus-visible {
  color: #fff !important;
}

body .tp-group-trips-filter :is(.tp-group-trips-filter__search, .tp-group-trips-filter__apply):hover,
body .tp-group-trips-filter :is(.tp-group-trips-filter__search, .tp-group-trips-filter__apply):focus-visible {
  background: var(--tp-filter-primary-hover, #29525D) !important;
  color: #fff !important;
}

body .tp-group-trips-filter :is(.tp-group-trips-filter__field, .tp-group-trips-filter__choice, .tp-group-trips-filter__chip, .tp-group-trips-filter__step-row):hover,
body .tp-group-trips-filter :is(.tp-group-trips-filter__field, .tp-group-trips-filter__choice, .tp-group-trips-filter__chip, .tp-group-trips-filter__step-row):focus-visible {
  color: var(--tp-900, #1A2B49) !important;
}

body .tp-group-trips-filter .is-selected:hover,
body .tp-group-trips-filter .is-selected:focus-visible {
  background: var(--tp-filter-primary, var(--tp-primary, #1BBACA)) !important;
  color: var(--tp-midnight, #0B2239) !important;
}

body .tp-group-trips-filter__clear:hover,
body .tp-group-trips-filter__clear:focus-visible {
  color: var(--tp-filter-primary-hover, #29525D) !important;
}

body .tp-home-hero__product:hover,
body .tp-home-hero__product:focus-visible,
body .tp-blog-metro-card__link:hover,
body .tp-blog-metro-card__link:focus-visible {
  color: inherit !important;
}

body .tp-you-vip__cta:hover,
body .tp-you-vip__cta:focus-visible,
body .tp-who-we-are__cta:hover,
body .tp-who-we-are__cta:focus-visible,
body .tp-blog-metro__cta:hover,
body .tp-blog-metro__cta:focus-visible {
  color: #fff !important;
}

body .tp-destination-share:hover,
body .tp-destination-share:focus-visible,
body .tp-destination-page a:not([class]):hover,
body .tp-destination-page a:not([class]):focus-visible,
body .tp-destination-social-proof a:hover,
body .tp-destination-social-proof a:focus-visible {
  color: var(--tp-destination-primary, var(--tp-primary, #40A1B7)) !important;
}

body .tp-destination-booking__cta:not(.is-disabled):hover,
body .tp-destination-booking__cta:not(.is-disabled):focus-visible,
body .tp-destination-reservation__share-card button:hover,
body .tp-destination-reservation__share-card button:focus-visible,
body .tp-destination-reservation__primary:hover,
body .tp-destination-reservation__primary:focus-visible {
  background: var(--tp-primary-dark, #087C89) !important;
  border-color: var(--tp-primary-dark, #087C89) !important;
  color: #fff !important;
}

body .tp-destination-reservation__secondary:hover,
body .tp-destination-reservation__secondary:focus-visible {
  background: var(--tp-cyan-tint, #DDF6F8) !important;
  border-color: var(--tp-primary, #1BBACA) !important;
  color: var(--tp-destination-text, var(--tp-midnight, #0B2239)) !important;
}

body .tp-destination-reservation__avatar.is-active:hover,
body .tp-destination-reservation__avatar.is-active:focus-visible {
  background: var(--tp-primary, #1BBACA) !important;
  color: var(--tp-destination-text, var(--tp-midnight, #0B2239)) !important;
}

body .tp-destination-reservation__avatar:hover,
body .tp-destination-reservation__avatar:focus-visible,
body .tp-destination-reservation__count-button:not([disabled]):hover,
body .tp-destination-reservation__count-button:not([disabled]):focus-visible,
body .tp-destination-reservation__add:not([disabled]):hover,
body .tp-destination-reservation__add:not([disabled]):focus-visible {
  color: var(--tp-destination-text, var(--tp-900, #1A2B49)) !important;
}

body .tp-destination-reservation__avatar.is-complete:not(.is-active):hover,
body .tp-destination-reservation__avatar.is-complete:not(.is-active):focus-visible,
body .tp-booking-consent__link:hover,
body .tp-booking-consent__link:focus-visible,
body .tp-cgv-modal__close:hover,
body .tp-cgv-modal__close:focus-visible {
  color: var(--tp-primary, #40A1B7) !important;
}

body .tp-destination-reservation__country-trigger:hover,
body .tp-destination-reservation__country-trigger:focus-visible,
body .tp-destination-reservation__country.is-open .tp-destination-reservation__country-trigger,
body .tp-destination-reservation__country-list button:hover,
body .tp-destination-reservation__country-list button:focus-visible,
body .tp-destination-reservation__country-list button.is-selected {
  background: rgba(27, 186, 202, 0.1) !important;
  color: var(--tp-destination-text, var(--tp-900, #1A2B49)) !important;
}

body .tp-destination-reservation__country-trigger:hover i,
body .tp-destination-reservation__country-trigger:focus-visible i,
body .tp-destination-reservation__country-list button:hover b,
body .tp-destination-reservation__country-list button:focus-visible b,
body .tp-destination-reservation__country-list button.is-selected b {
  color: var(--tp-destination-primary, var(--tp-primary, #40A1B7)) !important;
}

body .tp-booking-consent .tp-booking-consent__link:hover,
body .tp-booking-consent .tp-booking-consent__link:focus-visible {
  background: transparent !important;
  color: var(--tp-primary, #40A1B7) !important;
  text-decoration-color: currentColor !important;
}

body .tp-auth-popup__close:hover,
body .tp-auth-popup__close:focus-visible,
body .tp-auth-popup__forgot:hover,
body .tp-auth-popup__forgot:focus-visible {
  color: var(--tp-auth-primary-dark, #29525D) !important;
}

body .tp-auth-popup__submit:hover,
body .tp-auth-popup__submit:focus-visible {
  color: #fff !important;
}

body :is(.tp-website-page, [class^="tp-"], [class*=" tp-"]) .elementor-button:hover,
body :is(.tp-website-page, [class^="tp-"], [class*=" tp-"]) .elementor-button:focus-visible {
  background-color: var(--tp-primary-dark, #29525D) !important;
  border-color: var(--tp-primary-dark, #29525D) !important;
  color: #fff !important;
}

/* ============================================================
 * Pink-leak guard
 * The active theme/Elementor styles bare <button> states with an accent
 * (pink) background. Triplan controls that keep a light/neutral background
 * must pin it across hover/focus/active so that fill cannot leak in. Each new
 * neutral control should be added here. See cart-drawer.css for the same idea.
 * ============================================================ */

/* Kill any theme gradient/box-shadow accent on Triplan control interaction. */
body :is(.tp-website-page, [class^="tp-"], [class*=" tp-"])
  :is(button, summary, [role="button"]):is(:hover, :focus, :focus-visible, :active) {
  background-image: none !important;
}

body :is(.tp-website-page, [class^="tp-"], [class*=" tp-"])
  :is(button:not(.elementor-button), [role="button"], input[type="button"], input[type="submit"]):is(:hover, :focus, :focus-visible, :active) {
  text-shadow: none !important;
}

/* Activity booking: date toggle. */
body .tp-activity-datepick__toggle,
body .tp-activity-datepick__toggle:hover,
body .tp-activity-datepick__toggle:focus,
body .tp-activity-datepick__toggle:focus-visible,
body .tp-activity-datepick__toggle:active {
  background: #f1f7f8 !important;
  color: var(--tp-900, #1A2B49) !important;
}

body .tp-activity-datepick__toggle:hover,
body .tp-activity-datepick__toggle[aria-expanded="true"] {
  border-color: var(--tp-primary, #40A1B7) !important;
}

/* Activity booking: calendar month navigation. */
body .tp-activity-calendar__nav,
body .tp-activity-calendar__nav:hover,
body .tp-activity-calendar__nav:focus,
body .tp-activity-calendar__nav:focus-visible,
body .tp-activity-calendar__nav:active {
  background: #fff !important;
  color: var(--tp-secondary, #29525D) !important;
}

/* Activity booking: calendar days. */
body .tp-activity-calendar__day,
body .tp-activity-calendar__day:focus,
body .tp-activity-calendar__day:focus-visible,
body .tp-activity-calendar__day:active {
  background: transparent !important;
  color: var(--tp-900, #1A2B49) !important;
}

body .tp-activity-calendar__day:hover {
  background: #eaf6f8 !important;
  color: var(--tp-900, #1A2B49) !important;
}

body .tp-activity-calendar__day.is-selected,
body .tp-activity-calendar__day.is-selected:hover,
body .tp-activity-calendar__day.is-selected:focus-visible {
  background: var(--tp-primary, #1BBACA) !important;
  color: var(--tp-midnight, #0B2239) !important;
}

/* Past/disabled days must stay grey (overrides the generic day colour above). */
body .tp-activity-calendar__day.is-disabled {
  color: #c2ccd0 !important;
  background: transparent !important;
}

/* Options dropdown items: keep readable text + brand hover (no theme white/pink). */
body .tp-activity-optionlist__item,
body .tp-activity-optionlist__item:focus,
body .tp-activity-optionlist__item:active {
  background: transparent !important;
  color: var(--tp-900, #1A2B49) !important;
}

body .tp-activity-optionlist__item:hover,
body .tp-activity-optionlist__item:focus-visible,
body .tp-activity-optionlist__item.is-selected {
  background: #eaf6f8 !important;
  color: var(--tp-900, #1A2B49) !important;
}

/* Promo "Appliquer" button: dark brand fill, never a theme accent. */
body .tp-activity-promo button,
body .tp-activity-promo button:hover,
body .tp-activity-promo button:focus,
body .tp-activity-promo button:focus-visible,
body .tp-activity-promo button:active {
  background: var(--tp-secondary, #29525D) !important;
  color: #fff !important;
}

/* Site-wide toast close button. */
body .tp-toast__close,
body .tp-toast__close:hover,
body .tp-toast__close:focus,
body .tp-toast__close:focus-visible,
body .tp-toast__close:active {
  background: transparent !important;
  color: var(--tp-muted, #657086) !important;
}

body .tp-toast__close:hover {
  background: var(--tp-surface-2) !important;
}
