/*
Theme Name:   Caviro Child
Description:  Custom child theme for Caviro Apartments & Residence, built on Astra.
Author:       knowledge.gr
Template:     astra
Version:      1.0.0
Text Domain:  caviro-child
*/

/* ==========================================================================
   DESIGN TOKENS — single source of truth for colors used across
   header, topbar, footer, hero, and contact components.
   Change a value here once instead of hunting hardcoded hex codes.
   ========================================================================== */

:root {
  --caviro-dark: #072B31;          /* primary dark teal — header/footer/topbar bg */
  --caviro-dark-soft: rgba(30, 40, 50, 0.28);   /* header glass tint (idle) */
  --caviro-dark-soft-scrolled: rgba(30, 40, 50, 0.42); /* header glass tint (scrolled) */
  --caviro-dropdown-bg: rgba(20, 30, 38, 0.92);
  --caviro-gold: #EBBC79;          /* accent — hover states, CTAs */
  --caviro-gold-hover: #f2cd9a;

  --caviro-text-on-dark: #ffffff;
  --caviro-text-on-dark-soft: rgba(255, 255, 255, 0.85);
  --caviro-text-on-dark-mid: rgba(255, 255, 255, 0.8);
  --caviro-text-on-dark-faint: rgba(255, 255, 255, 0.5);

  --caviro-border-on-dark: rgba(255, 255, 255, 0.22);
  --caviro-border-on-dark-soft: rgba(255, 255, 255, 0.14);

  --caviro-glass-blur: blur(22px) saturate(160%);
  --caviro-glass-blur-mobile: blur(12px) saturate(140%);
  --caviro-dropdown-blur: blur(16px);

  --caviro-overlay-strong: rgba(7, 43, 49, 0.55);
  --caviro-overlay-mid: rgba(7, 43, 49, 0.25);
  --caviro-overlay-soft: rgba(7, 43, 49, 0.15);
  --caviro-fade-target: #ffffff; /* must match the background of whatever section follows the hero */

  --caviro-body-font-size: clamp(16px, 1.8vw, 18px); /* plain body/paragraph text across all pages */
  --caviro-card-radius: 18px; /* shared radius for paired/adjacent cards */
}

/* ==========================================================================
   CAVIRO CUSTOM HEADER
   ========================================================================== */

/* --- TOPBAR — phone / location / Book Now, hides on scroll --- */

.caviro-topbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 9000; /* above the main header */
  height: 40px;
  background: var(--caviro-dark);
  transition: transform 0.35s ease, opacity 0.35s ease;
}

.caviro-topbar__inner {
  max-width: 1320px;
  margin: 0 auto;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 24px;
}

.caviro-topbar__info {
  display: flex;
  align-items: center;
  gap: 20px;
}

.caviro-topbar__item {
  display: flex;
  align-items: center;
  gap: 6px;
  color: var(--caviro-text-on-dark-mid);
  font-size: 13px;
  text-decoration: none;
}

a.caviro-topbar__item:hover {
  color: var(--caviro-gold);
}

.caviro-topbar__book {
  background: var(--caviro-gold);
  color: var(--caviro-dark) !important;
  font-size: 13px;
  font-weight: 700;
  padding: 5px 16px;
  border-radius: 999px;
  text-decoration: none !important;
  transition: transform 0.2s ease, background 0.2s ease;
}

.caviro-topbar__book:hover {
  background: var(--caviro-gold-hover);
  transform: translateY(-1px);
}

/* Hides upward and fades out once the page is scrolled */
body.caviro-header-scrolled .caviro-topbar {
  transform: translateY(-100%);
  opacity: 0;
  pointer-events: none;
}

/* --- Responsive: hide location text on small screens, keep phone + button --- */
@media (max-width: 620px) {
  .caviro-topbar__location {
    display: none;
  }
}

/* --- MAIN HEADER — offset below the topbar --- */

.caviro-custom-header {
  position: fixed;
  top: 54px; /* 40px topbar + 14px gap */
  left: 50%;
  transform: translateX(-50%);
  width: min(86%, 1320px);
  z-index: 9000;
  background: var(--caviro-dark-soft);
  backdrop-filter: var(--caviro-glass-blur);
  -webkit-backdrop-filter: var(--caviro-glass-blur);
  border: 1px solid var(--caviro-border-on-dark);
  border-radius: 24px;
  box-shadow: 0 10px 28px rgba(20, 30, 40, 0.10), inset 0 1px 0 rgba(255, 255, 255, 0.18);
  transition: top 0.35s ease, width 0.35s ease, border-radius 0.35s ease,
              background 0.35s ease, box-shadow 0.35s ease;
}

/* Once scrolled: topbar is gone, header takes the very top, full width */
body.caviro-header-scrolled .caviro-custom-header {
  top: 0;
  width: 100%;
  border-radius: 0 0 18px 18px;
  background: var(--caviro-dark-soft-scrolled);
  box-shadow: 0 8px 24px rgba(20, 30, 40, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.16);
}

/* Lighter blur on smaller screens — backdrop-filter is expensive to repaint,
   and the visual difference is barely noticeable at this size vs the cost. */
@media (max-width: 768px) {
  .caviro-custom-header {
    backdrop-filter: var(--caviro-glass-blur-mobile);
    -webkit-backdrop-filter: var(--caviro-glass-blur-mobile);
  }
}

/* --- WP Admin Bar offset (only visible to logged-in users editing the site) --- */

body.admin-bar .caviro-topbar {
  top: 32px;
}

body.admin-bar .caviro-custom-header {
  top: calc(54px + 32px);
}

body.admin-bar.caviro-header-scrolled .caviro-topbar {
  top: 32px; /* stays offset even though it's hidden, avoids jump */
}

body.admin-bar.caviro-header-scrolled .caviro-custom-header {
  top: 32px;
}

@media (max-width: 782px) {
  body.admin-bar .caviro-topbar {
    top: 46px;
  }

  body.admin-bar .caviro-custom-header {
    top: calc(54px + 46px);
  }

  body.admin-bar.caviro-header-scrolled .caviro-custom-header {
    top: 46px;
  }
}

.caviro-custom-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 24px;
  gap: 24px;
}

.caviro-custom-header__logo {
  display: flex;
  align-items: center;
  background: rgba(255, 255, 255, 0.92);
  border-radius: 14px;
  padding: 6px 14px;
  flex-shrink: 0;
}

.caviro-custom-header__logo img {
  height: 56px;
  width: auto;
  display: block;
  transition: height 0.25s ease;
}

body.caviro-header-scrolled .caviro-custom-header__logo img {
  height: 60px;
}

/* --- Nav --- */

.caviro-custom-menu {
  display: flex;
  align-items: center;
  gap: 28px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.caviro-custom-menu > li {
  position: relative;
}

.caviro-custom-menu > li > a {
  color: var(--caviro-text-on-dark);
  text-decoration: none;
  font-size: 16px;
  font-weight: 600;
  transition: color 0.15s ease;
}

.caviro-custom-menu > li > a:hover {
  color: var(--caviro-gold);
}

/* Dropdown submenu */
.caviro-custom-menu .sub-menu {
  position: absolute;
  top: 100%;
  left: 0;
  margin-top: 12px;
  min-width: 220px;
  background: var(--caviro-dropdown-bg);
  backdrop-filter: var(--caviro-dropdown-blur);
  border: 1px solid var(--caviro-border-on-dark-soft);
  border-radius: 14px;
  padding: 8px;
  list-style: none;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease;
}

.caviro-custom-menu .menu-item-has-children:hover .sub-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.caviro-custom-menu .sub-menu li a {
  display: block;
  padding: 8px 12px;
  border-radius: 8px;
  color: var(--caviro-text-on-dark-soft);
  font-size: 14px;
  text-decoration: none;
  transition: background 0.15s ease, color 0.15s ease;
}

.caviro-custom-menu .sub-menu li a:hover {
  background: rgba(255, 255, 255, 0.08);
  color: var(--caviro-gold);
}

/* --- Desktop submenu arrow indicator — inline, next to the label,
     since desktop nav items sit in a horizontal row (unlike the mobile
     version below, which is absolutely positioned at the item's right
     edge). Scoped to min-width so it never doubles up with the mobile
     arrow at smaller screens. --- */

@media (min-width: 861px) {
  .caviro-custom-menu .menu-item-has-children > a {
    display: inline-flex;
    align-items: center;
    gap: 5px;
  }

  .caviro-custom-menu .menu-item-has-children > a::after {
    content: "";
    width: 7px;
    height: 7px;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg);
    transition: transform 0.2s ease;
    flex-shrink: 0;
  }

  .caviro-custom-menu .menu-item-has-children:hover > a::after {
    transform: rotate(225deg);
  }
}

/* --- Language switcher — segmented pill (EL | EN) --- */

.caviro-lang-switcher {
  display: flex;
  align-items: center;
  gap: 2px;
  border: 1px solid rgba(255, 255, 255, 0.3);
  border-radius: 999px;
  padding: 3px;
  flex-shrink: 0;
}

.caviro-lang-item {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 30px;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.03em;
  color: var(--caviro-text-on-dark-soft);
  text-decoration: none;
  transition: background 0.2s ease, color 0.2s ease;
}

.caviro-lang-item:hover {
  color: #ffffff;
  background: rgba(255, 255, 255, 0.1);
}

.caviro-lang-item.is-active {
  background: var(--caviro-gold);
  color: var(--caviro-dark);
}

.caviro-lang-item.is-active:hover {
  background: var(--caviro-gold);
  color: var(--caviro-dark);
}

/* --- Mobile toggle (hidden on desktop) --- */

.caviro-mobile-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  width: 40px;
  height: 40px;
  background: none;
  border: none;
  border-radius: 50%;
  cursor: pointer;
  padding: 0;
}

.caviro-mobile-toggle span {
  display: block;
  height: 2px;
  width: 20px;
  background: var(--caviro-text-on-dark);
  border-radius: 2px;
  transition: transform 0.25s ease, opacity 0.25s ease;
}

.caviro-mobile-toggle {
  position: relative;
  z-index: 10001; /* πάνω από το .caviro-custom-nav (9000-ish) */
}

body.caviro-menu-open .caviro-mobile-toggle span:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}
body.caviro-menu-open .caviro-mobile-toggle span:nth-child(2) {
  opacity: 0;
}
body.caviro-menu-open .caviro-mobile-toggle span:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

body.caviro-menu-open .caviro-custom-nav {
  transform: translateX(0);
}

/* ==========================================================================
   GLOBAL LINK UNDERLINE RESET — καμία υπογράμμιση, ούτε σε hover
   ========================================================================== */

body a {
  text-decoration: none !important;
}


/* --- Responsive: mobile menu becomes full dropdown panel --- */

@media (max-width: 860px) {
  .caviro-custom-header {
    width: min(94%, 1320px);
  }

  .caviro-custom-header__inner {
    padding: 8px 16px;
    gap: 12px;
  }

  .caviro-custom-header__logo {
    padding: 5px 10px;
  }

  .caviro-custom-header__logo img {
    height: 40px;
  }

  .caviro-lang-switcher {
    flex-shrink: 0;
  }

  .caviro-mobile-toggle {
    display: flex;
    margin-left: auto;
  }

  .caviro-custom-nav {
    position: fixed;
    top: var(--caviro-header-h, 130px);
    right: 0;
    width: min(80%, 320px);
    height: calc(100vh - var(--caviro-header-h, 130px));
    height: calc(100dvh - var(--caviro-header-h, 130px));
    background: var(--caviro-dropdown-bg);
    backdrop-filter: var(--caviro-dropdown-blur);
    border-radius: 0;
    border: none;
    border-left: 1px solid var(--caviro-border-on-dark-soft);
    padding: 20px 20px 24px;
    overflow-y: auto;
    transform: translateX(100%);
    transition: transform 0.35s ease, top 0.35s ease, height 0.35s ease;
    box-shadow: -12px 0 32px rgba(0, 0, 0, 0.3);
    z-index: 9500;
  }

  body.caviro-menu-open .caviro-custom-nav {
    transform: translateX(0);
  }

  .caviro-custom-menu {
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
  }

  .caviro-custom-menu > li {
    width: 100%;
  }

  .caviro-custom-menu > li > a {
    display: block;
    padding: 10px 4px;
  }

  .caviro-custom-menu .menu-item-has-children {
    position: relative;
  }

  .caviro-custom-menu .menu-item-has-children > a {
    padding-right: 30px !important;
  }

  /*.caviro-custom-menu .menu-item-has-children::after {
    content: "";
    position: absolute;
    top: 18px;
    right: 6px;
    width: 8px;
    height: 8px;
    border-right: 2px solid rgba(255, 255, 255, 0.7);
    border-bottom: 2px solid rgba(255, 255, 255, 0.7);
    transform: rotate(45deg);
    transition: transform 0.2s ease, border-color 0.15s ease;
    pointer-events: none;
  }

  .caviro-custom-menu .menu-item-has-children.is-expanded::after {
    transform: rotate(225deg);
    top: 22px;
  }*/

  .caviro-custom-menu .sub-menu {
    position: static;
    opacity: 1;
    visibility: visible;
    transform: none;
    display: none;
    margin: 4px 0 4px 12px;
    background: rgba(255, 255, 255, 0.05);
  }

  .caviro-custom-menu .menu-item-has-children.is-expanded .sub-menu {
    display: block;
  }
}

/* ==========================================================================
   CONTACT PAGE — form card
   ========================================================================== */

.caviro-contact-form-card .elementor-widget-wrap {
  background: #fff;
  border: 1px solid rgba(47, 62, 70, 0.14);
  border-radius: 30px;
  padding: 34px 34px 38px;
  box-shadow: 0 18px 40px rgba(47, 62, 70, 0.06), 0 2px 6px rgba(47, 62, 70, 0.04);
}

.caviro-section-head-v2 {
  margin-bottom: 24px;
}

.caviro-section-head-v2 h2 {
  margin: 0 0 8px;
  font-size: clamp(24px, 2.3vw, 30px);
  font-weight: 600;
  color: var(--caviro-dark);
}

.caviro-section-head-v2 p {
  margin: 0;
  font-size: var(--caviro-body-font-size);
  color: #6b6b64;
  line-height: 1.6;
}

/* --- WPForms overrides — align default WPForms styling with brand --- */

.wpforms-container .wpforms-field-label {
  font-weight: 600 !important;
  color: var(--caviro-dark) !important;
  font-size: 14px !important;
}

.wpforms-container input[type="text"],
.wpforms-container input[type="email"],
.wpforms-container input[type="tel"],
.wpforms-container textarea,
.wpforms-container select {
  border: 1.5px solid rgba(7, 43, 49, 0.15) !important;
  border-radius: 10px !important;
  padding: 12px 14px !important;
  font-size: 14px !important;
  transition: border-color 0.2s ease, box-shadow 0.2s ease !important;
}

.wpforms-container input[type="text"]:focus,
.wpforms-container input[type="email"]:focus,
.wpforms-container input[type="tel"]:focus,
.wpforms-container textarea:focus,
.wpforms-container select:focus {
  border-color: var(--caviro-gold) !important;
  box-shadow: 0 0 0 3px rgba(235, 188, 121, 0.18) !important;
  outline: none !important;
}

.wpforms-container .wpforms-submit-container button,
.wpforms-container button[type="submit"] {
  background: var(--caviro-dark) !important;
  color: #ffffff !important;
  border: none !important;
  border-radius: 999px !important;
  padding: 13px 32px !important;
  font-weight: 600 !important;
  font-size: 15px !important;
  transition: background 0.2s ease, transform 0.2s ease !important;
}

.wpforms-container .wpforms-submit-container button:hover,
.wpforms-container button[type="submit"]:hover {
  background: #0f3d45 !important;
  transform: translateY(-2px);
}

.wpforms-container .wpforms-required-label {
  color: var(--caviro-gold) !important;
}

/* Layout helper if the two Elementor columns (form / sidebar) need equal height */
.caviro-inquiry-main-v3,
.caviro-inquiry-side-v3 {
  height: 100%;
}

/* ==========================================================================
   HERO SHELL — booking request page
   Photo is set via the Elementor section's own Background setting.
   ========================================================================== */

.caviro-hero-shell {
  position: relative;
  min-height: 98vh;
  display: flex;
  flex-direction: column;
  align-items: center
  overflow: hidden;
  width: 100%;
  transform: translateZ(0);
  backface-visibility: hidden;
  
}

/* Dark overlay — independent layer, sits above the Elementor background,
   below the text content. */
.caviro-hero-shell::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg,
    var(--caviro-overlay-strong) 0%,
    var(--caviro-overlay-mid) 45%,
    var(--caviro-overlay-soft) 100%);
  z-index: 0;
  pointer-events: none;
}

.caviro-hero-minimal,
.caviro-scroll-down {
  position: relative;
  z-index: 1;
}

.caviro-hero-minimal {
  position: relative;
  z-index: 20;
  width: min(86%, 1320px);
  margin: auto auto 0;
  padding-top: clamp(110px, 16vw, 160px);
  color: #ffffff;
}

/* Keeps heading/tag line-length readable — the outer container above is
   intentionally wide (matches the nav), but text itself still wraps at
   a comfortable reading width within it. (The <p> already has its own
   max-width further down in this file — not duplicated here.) */
.caviro-hero-tag,
.caviro-hero-minimal h1 {
  max-width: 700px;
}

.caviro-hero-tag {
  display: inline-block;
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--caviro-text-on-dark-soft);
  margin-bottom: 20px;
}

.caviro-hero-minimal h1 {
  font-size: clamp(32px, 5vw, 56px);
  font-weight: 600;
  line-height: 1.15;
  color: #ffffff;
  margin: 0 0 20px;
}

.caviro-hero-minimal p {
  margin: 0 0 34px;
  max-width: 760px;
  font-size: 22px;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.95);
}

/* --- Scroll down indicator, bottom-center --- */

.caviro-scroll-down {
  position: relative;
  z-index: 30;
  margin-top: auto;
  padding-top: 40px;
  padding-bottom: clamp(40px, 7vh, 75px);
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  color: rgba(255, 255, 255, 0.9);
  text-decoration: none !important;
  text-transform: uppercase;
  letter-spacing: 4px;
  text-shadow: 0 1px 6px rgba(0, 0, 0, 0.12);
  opacity: 0;
  animation: caviro-emerge 1.4s ease-out 0.8s forwards;
}

@keyframes caviro-emerge {
  from {
    opacity: 0;
    transform: translate(16px);
  }
  to {
    opacity: 1;
    transform: translate(0);
  }
}

.caviro-scroll-down__arrow {
  display: inline-block;
  animation: caviroBounce 1.8s infinite ease-in-out;
}

@keyframes caviroBounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(6px); }
}

.caviro-scroll-down:hover {
  color: var(--caviro-gold);
}

/* --- Fade into the section below ---
   Multi-stop gradient so the transition feels smooth/eased rather than
   linear. --caviro-fade-target must match the background color of
   whatever section follows the hero. */

.caviro-hero-fade {
  position: absolute;
  left: 0;
  right: 0;
  bottom: -2px; /* slight overlap avoids a hairline gap at the seam */
  height: 300px;
  z-index: 10;
  pointer-events: none;
  background: linear-gradient(to bottom,
    rgba(255, 255, 255, 0) 0%,
    rgba(255, 255, 255, .01) 18%,
    rgba(255, 255, 255, .03) 34%,
    rgba(255, 255, 255, .07) 50%,
    rgba(255, 255, 255, .14) 65%,
    rgba(255, 255, 255, .26) 78%,
    rgba(255, 255, 255, .42) 88%,
    rgba(255, 255, 255, .62) 96%,
    var(--caviro-fade-target) 100%);
}

@media (max-width: 600px) {
  .caviro-hero-shell {
    padding: 160px 24px 90px;
    min-height: 520px;
  }

  .caviro-hero-minimal {
    /* Switch off the percentage-based centering here — the shell above
       already provides 24px of left/right padding at this breakpoint.
       Stacking both would double up the inset and make things feel
       cramped again, the opposite of what we want on mobile. */
    width: 100%;
    padding-top: 0;
  }

  .caviro-scroll-down {
    padding-top: 24px;
    padding-bottom: 0;
  }
}

/* ==========================================================================
   CONTACT SIDEBAR — "Need help booking?" panel
   ========================================================================== */

.caviro-contact-panel-v2 {
  background: #ffffff;
  border: 1px solid rgba(7, 43, 49, 0.08);
  border-radius: 18px;
  padding: 28px;
  box-shadow: 0 10px 28px rgba(7, 43, 49, 0.06);
}

.caviro-contact-title-v2 {
  margin: 0 0 8px;
  font-size: clamp(24px, 2.3vw, 30px);
  font-weight: 600;
  color: var(--caviro-dark);
}

.caviro-contact-intro-v2 {
  margin: 0 0 20px;
  font-size: var(--caviro-body-font-size);
  line-height: 1.6;
  color: #6b6b64;
}

.caviro-contact-list-v2 {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.caviro-contact-card-v2 {
  display: block;
  padding: 14px 16px;
  border-radius: 12px;
  border-left: 3px solid transparent;
  background: #f7f5f1;
  text-decoration: none;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.caviro-contact-card-v2:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(7, 43, 49, 0.08);
}

.caviro-contact-top-v2 {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 4px;
}

.caviro-icon-v2 {
  font-size: 18px;
  line-height: 1;
}

.caviro-contact-name-v2 {
  font-weight: 600;
  font-size: 15px;
  color: var(--caviro-dark);
}

.caviro-contact-label-v2 {
  margin: 0 0 8px;
  font-size: 13.5px;
  color: #4a4a45;
}

.caviro-contact-label-v2 a {
  color: var(--caviro-dark);
  text-decoration: none;
  font-weight: 600;
}

.caviro-contact-label-v2 a:hover {
  color: var(--caviro-gold);
  text-decoration: underline;
}

div.caviro-contact-card-v2 {
  cursor: default;
}

.caviro-contact-status-v2 {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: #8a8a82;
}

.caviro-contact-dot-v2 {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #7fb08a;
  flex-shrink: 0;
}

/* Distinct accent per channel type */
.caviro-booknow-v2 { border-left-color: var(--caviro-gold); }
.caviro-booknow-v2 .caviro-icon-v2 { color: var(--caviro-gold); }
.caviro-call-v2 { border-left-color: #D96C5F; }
.caviro-location-v2 { border-left-color: #2f4f3e; }
.caviro-email-v2 { border-left-color: #B8863E; }

.caviro-contact-footer-v2 {
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid rgba(7, 43, 49, 0.08);
  font-size: 12.5px;
  color: #8a8a82;
  line-height: 1.6;
}

/* ==========================================================================
   PHONE DIRECTORY — "Χρήσιμα Τηλέφωνα" section
   ========================================================================== */

.caviro-phone-directory {
  padding: 60px 24px;
  background: #f7f5f1;
  border-radius: 28px;
}

.caviro-phone-directory__inner {
  max-width: 900px;
  margin: 0 auto;
}

.caviro-phone-directory__title {
  font-size: clamp(24px, 2.3vw, 30px);
  font-weight: 600;
  color: var(--caviro-dark);
  margin: 0 0 28px;
  text-align: center;
}

.caviro-phone-directory__subtext {
  font-size: var(--caviro-body-font-size);
  line-height: 1.7;
  color: #5a5a54;
  max-width: 640px;
  margin: -16px auto 28px;
  text-align: center;
}

.caviro-phone-directory__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px 32px;
}

@media (max-width: 640px) {
  .caviro-phone-directory__grid {
    grid-template-columns: 1fr;
  }
}

.caviro-phone-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.caviro-phone-list li {
  border-bottom: 1px solid rgba(7, 43, 49, 0.08);
}

.caviro-phone-list a {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 4px;
  text-decoration: none;
  transition: background 0.15s ease;
}

.caviro-phone-list a:hover {
  background: rgba(235, 188, 121, 0.12);
}

.caviro-phone-icon {
  font-size: 15px;
  flex-shrink: 0;
}

.caviro-phone-name {
  flex: 1;
  font-size: 14.5px;
  font-weight: 500;
  color: var(--caviro-dark);
}

.caviro-phone-number {
  font-size: 14px;
  font-weight: 600;
  color: #B8863E;
  white-space: nowrap;
}

/* ==========================================================================
   FOOTER — 4-column layout, socials, contact, links, FAQ, certifications
   ========================================================================== */

.caviro-new-footer-inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 40px 24px 32px;
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr 1fr;
  gap: 48px;
}

@media (max-width: 992px) {
  .caviro-new-footer-inner {
    grid-template-columns: 1fr 1fr;
    gap: 36px;
  }
}

@media (max-width: 600px) {
  .caviro-new-footer-inner {
    grid-template-columns: 1fr;
    gap: 36px;
  }
}

.caviro-footer-logo {
  margin-bottom: 16px;
  width: 200px;
  max-width: 100%;
  height: auto;
}

.caviro-footer-phones {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.caviro-footer-phones a {
  display: inline-block;
}

.caviro-footer-brand-text {
  color: var(--caviro-text-on-dark-soft);
  margin-bottom: 20px;
  line-height: 1.6;
}

.caviro-new-footer .caviro-footer-heading {
  margin: 0 0 20px;
  font-size: clamp(20px, 1.6vw, 24px);
  line-height: 1.1;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: #ffffff;
  position: relative;
  padding-bottom: 14px;
}

.caviro-new-footer .caviro-footer-heading::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 32px;
  height: 2px;
  background: var(--caviro-gold);
}

/* --- Social badges --- */

.caviro-footer-socials {
  display: flex;
  gap: 12px;
}

.caviro-social-badge {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.15);
  color: #ffffff;
  transition: background-color 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.caviro-social-badge img,
.caviro-social-badge svg {
  width: 18px;
  height: 18px;
  object-fit: contain;
}

.caviro-social-badge:hover {
  border-color: var(--caviro-gold) !important;
  transform: translateY(-3px);
}

/* --- Contact icon rows --- */

.caviro-footer-info-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.caviro-footer-info-row {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}

.caviro-footer-info-icon {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.08);
  color: var(--caviro-gold);
  display: flex;
  align-items: center;
  justify-content: center;
}

.caviro-footer-info-text {
  color: var(--caviro-text-on-dark-soft);
  line-height: 1.5;
  padding-top: 5px;
}

.caviro-new-footer .caviro-footer-info-text a {
  color: var(--caviro-text-on-dark-soft);
  text-decoration: none;
  transition: color 0.15s ease;
}

.caviro-new-footer .caviro-footer-info-text a:hover {
  color: var(--caviro-gold) !important;
}

/* --- Useful links --- */

.caviro-footer-linklist {
  list-style: none;
  margin: 0;
  padding: 0;
}

.caviro-footer-linklist li {
  margin-bottom: 12px;
}

.caviro-new-footer .caviro-footer-linklist a {
  color: var(--caviro-text-on-dark-soft);
  text-decoration: none;
  transition: color 0.15s ease;
}

.caviro-new-footer .caviro-footer-linklist a:hover {
  color: var(--caviro-gold) !important;
  text-decoration: underline;
}

/* --- FAQ accordion --- */

.caviro-footer-faq-item {
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

.caviro-new-footer .caviro-footer-faq-question {
  width: 100%;
  background: none;
  border: none;
  padding: 14px 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-weight: 600;
  color: #ffffff;
  cursor: pointer;
  text-align: left;
  transition: color 0.15s ease;
}

.caviro-new-footer .caviro-footer-faq-question:hover {
  color: var(--caviro-gold) !important;
}

.caviro-footer-faq-arrow {
  width: 9px;
  height: 9px;
  border-right: 2px solid rgba(255, 255, 255, 0.7);
  border-bottom: 2px solid rgba(255, 255, 255, 0.7);
  transform: rotate(45deg);
  transition: transform 0.2s ease, border-color 0.15s ease;
  flex-shrink: 0;
  margin-left: 12px;
}

.caviro-footer-faq-question:hover .caviro-footer-faq-arrow {
  border-color: var(--caviro-gold) !important;
}

.caviro-footer-faq-item.is-open .caviro-footer-faq-arrow {
  transform: rotate(225deg);
}

.caviro-footer-faq-answer {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.25s ease;
}

.caviro-footer-faq-item.is-open .caviro-footer-faq-answer {
  max-height: 300px; /* generous enough for a few lines of answer text */
}

.caviro-footer-faq-answer p {
  padding: 0 0 14px;
  color: rgba(255, 255, 255, 0.65);
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.5;
}

/* --- Certifications --- */

.caviro-footer-certifications {
  margin-top: 24px;
  padding-top: 16px;
  font-size: 0.7rem;
  color: rgba(255, 255, 255, 0.4);
  line-height: 1.6;
}

.caviro-footer-cert-label {
  display: block;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 4px;
  color: var(--caviro-text-on-dark-faint);
}

/* --- Legal row --- */

.caviro-footer-legal-row {
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  padding: 18px 24px;
  margin-top: 20px;
}

.caviro-footer-legal-inner {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  font-size: 0.85rem;
  color: var(--caviro-text-on-dark-faint);
}

.caviro-footer-legal-right {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 18px;
  flex-wrap: wrap;
}

.caviro-new-footer .caviro-footer-legal-right a {
  color: var(--caviro-text-on-dark-faint);
  transition: color 0.15s ease;
}

.caviro-new-footer .caviro-footer-legal-right a:hover {
  color: var(--caviro-gold) !important;
}

.caviro-footer-powered a {
  color: rgba(255, 255, 255, 0.6);
}

@media (max-width: 600px) {
  .caviro-footer-legal-inner {
    flex-direction: column;
    align-items: flex-start;
  }

  .caviro-footer-legal-right {
    justify-content: flex-start;
  }
}

/* ==========================================================================
   STAY CTA — "[caviro_stay_cta]" shortcode
   ========================================================================== */

.caviro-stay-wrap {
  padding: 60px 24px;
}

.caviro-stay-content {
  max-width: 820px;
  margin: 0 auto;
  text-align: center;
}

.caviro-stay-title {
  margin: 0;
  font-size: clamp(34px, 5vw, 54px);
  line-height: 1.1;
  font-weight: 600;
  color: var(--caviro-dark);
}

.caviro-stay-text {
  margin: 16px 0 32px;
  font-size: var(--caviro-body-font-size);
  line-height: 1.7;
  color: #4a4a45;
}

.caviro-stay-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 54px;
  padding: 0 30px;
  border: 1.5px solid rgba(47, 62, 70, 0.28);
  border-radius: 999px;
  background: #ffffff;
  color: #2f3e46 !important;
  font-size: 17.5px !important;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-decoration: none !important;
  box-shadow: 0 8px 24px rgba(47, 62, 70, 0.05);
  transition: transform 0.32s ease, box-shadow 0.32s ease, background 0.32s ease, border-color 0.32s ease;
}

.caviro-stay-button:hover {
  transform: translateY(-2px);
  background: #fafafa;
  border-color: rgba(47, 62, 70, 0.45);
  box-shadow: 0 14px 32px rgba(47, 62, 70, 0.08);
}

/* ==========================================================================
   SIGHTSEEING GUIDE — intro, about, filters, card grid
   ========================================================================== */

.caviro-intro-wrap {
  padding: 70px 24px 10px;
  text-align: center;
}

.caviro-intro-title {
  font-size: clamp(28px, 3.5vw, 42px);
  font-weight: 600;
  color: var(--caviro-dark);
  margin: 0;
}

.caviro-about-wrap {
  padding: 10px 24px 40px;
}

.caviro-about-inner {
  max-width: 720px;
  margin: 0 auto;
  text-align: center;
}

.caviro-about-inner p {
  font-size: var(--caviro-body-font-size);
  line-height: 1.75;
  color: #5a5a54;
  margin: 0 0 18px;
}

/* --- Filters --- */

.caviro-filters-wrap {
  padding: 10px 24px 40px;
  text-align: center;
}

.caviro-filters-label {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #9a9a92;
  margin: 0 0 16px;
}

.caviro-filters-bar {
  display: inline-flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: center;
}

.caviro-filter-btn {
  border: 1px solid rgba(7, 43, 49, 0.15);
  background: #ffffff;
  color: var(--caviro-dark);
  padding: 8px 20px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.caviro-filter-btn:hover {
  border-color: var(--caviro-dark);
}

.caviro-filter-btn.is-active {
  background: var(--caviro-dark);
  border-color: var(--caviro-dark);
  color: #ffffff;
}

/* --- Card grid --- */

.caviro-beaches-wrap {
  padding: 0 24px 70px;
}

.caviro-beaches-inner {
  max-width: 1200px;
  margin: 0 auto;
}

.caviro-beaches-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}

@media (max-width: 900px) {
  .caviro-beaches-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 560px) {
  .caviro-beaches-grid {
    grid-template-columns: 1fr;
  }
}

.caviro-beach-card {
  position: relative;
  display: block;
  aspect-ratio: 4 / 5;
  border-radius: 18px;
  overflow: hidden;
  background-size: cover;
  background-position: center;
  text-decoration: none;
  box-shadow: 0 10px 24px rgba(7, 43, 49, 0.08);
}

/* Zoom layer — separate from content so only the image scales on hover */
.caviro-beach-card__zoom {
  position: absolute;
  inset: 0;
  background-image: inherit;
  background-size: cover;
  background-position: center;
  transition: transform 0.5s ease, filter 0.4s ease;
  filter: brightness(1.05);
  z-index: 0;
}

.caviro-beach-card:hover .caviro-beach-card__zoom {
  transform: scale(1.08);
  filter: brightness(0.6);
}

/* Dark gradient so white text stays readable regardless of the photo */
.caviro-beach-card::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(7,43,49,0) 35%, rgba(7,43,49,0.82) 100%);
  z-index: 1;
  pointer-events: none;
}

.caviro-beach-card__content {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 2;
  padding: 18px 20px;
  color: #ffffff;
}

.caviro-beach-card__title {
  font-size: clamp(28px, 2vw, 34px) !important;
  font-weight: 600;
  line-height: 1.25;
  margin: 0 0 8px;
  color: #ffffff;
}

.caviro-beach-card__tags {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 4px;
}

.caviro-beach-card__tag {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  background: rgba(255, 255, 255, 0.18);
  padding: 3px 10px;
  border-radius: 999px;
  color: #ffffff;
}

/* Extra text/info — hidden by default, revealed on hover */
.caviro-beach-card__extra {
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  transition: max-height 0.35s ease, opacity 0.35s ease, margin-top 0.35s ease;
}

.caviro-beach-card:hover .caviro-beach-card__extra {
  max-height: 220px;
  opacity: 1;
  margin-top: 10px;
}

.caviro-beach-card__text {
  font-size: 15px;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.9);
  margin: 0 0 8px;
}

.caviro-beach-card__info {
  font-size: 12px;
  color: rgba(255, 255, 255, 0.75);
}

.caviro-beach-card__dot {
  margin: 0 4px;
  opacity: 0.6;
}

/* --- CTA card — distinct accent-tinted overlay --- */

.caviro-beach-card--cta .caviro-beach-card__cta-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(235,188,121,0.15) 0%, rgba(7,43,49,0.88) 100%);
  z-index: 1;
}

.caviro-beach-card--cta::after {
  content: none;
}

.caviro-beach-card--cta .caviro-beach-card__tag {
  background: rgba(235, 188, 121, 0.9);
  color: var(--caviro-dark);
}

/* ==========================================================================
   ACTIVITIES GUIDE — category headers, chips, spotlight card
   ========================================================================== */

.caviro-activity-category-wrap {
  padding: 40px 24px 30px;
}

.caviro-activity-category-inner {
  max-width: 900px;
  margin: 0 auto;
  text-align: center;
}

.caviro-activity-category-head {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin-bottom: 12px;
}

.caviro-activity-category-icon {
  font-size: 24px;
  line-height: 1;
}

.caviro-activity-category-title {
  font-size: clamp(22px, 2.5vw, 28px);
  font-weight: 600;
  color: var(--caviro-dark);
  margin: 0;
}

.caviro-activity-category-subtext {
  font-size: 15px;
  line-height: 1.7;
  color: #5a5a54;
  max-width: 640px;
  margin: 0 auto 20px;
}

.caviro-activity-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
}

.caviro-activity-chip {
  display: inline-flex;
  align-items: center;
  background: #f7f5f1;
  border: 1px solid rgba(7, 43, 49, 0.1);
  color: var(--caviro-dark);
  font-size: 13.5px;
  font-weight: 500;
  padding: 7px 16px;
  border-radius: 999px;
}

/* --- Spotlight (single featured location, horizontal layout) --- */

.caviro-spotlight-wrap {
  padding: 10px 24px 50px;
}

.caviro-spotlight-inner {
  max-width: 1100px;
  margin: 0 auto;
}

.caviro-spotlight-card {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-radius: 20px;
  overflow: hidden;
  box-shadow: 0 12px 30px rgba(7, 43, 49, 0.08);
  background: #ffffff;
}

@media (max-width: 768px) {
  .caviro-spotlight-card {
    grid-template-columns: 1fr;
  }
}

.caviro-spotlight-image {
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  min-height: 280px;
}

.caviro-spotlight-content {
  padding: 36px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.caviro-spotlight-tag {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--caviro-gold);
  margin-bottom: 10px;
}

.caviro-spotlight-title {
  font-size: clamp(20px, 2.4vw, 26px);
  font-weight: 600;
  color: var(--caviro-dark);
  margin: 0 0 14px;
}

.caviro-spotlight-text {
  font-size: var(--caviro-body-font-size);
  line-height: 1.7;
  color: #4a4a45;
  margin: 0 0 14px;
}

.caviro-spotlight-info {
  font-size: 13px;
  color: #8a8a82;
  margin-top: 6px;
}

/* --- Simplified beach-card variant used on the activities page: no
     hover tags/extra needed since these cards only show a title --- */

.caviro-beaches-wrap .caviro-beach-card .caviro-beach-card__content {
  padding: 16px 18px;
}

/* ==========================================================================
   SWIPE GALLERY — Tinder-style stacked photo cards (used in Keros spotlight)
   ========================================================================== */

.caviro-swipe-gallery {
  max-width: 320px;
  margin: 24px auto 0;
}

.caviro-swipe-stack {
  position: relative;
  width: 100%;
  aspect-ratio: 3 / 4;
}

.caviro-swipe-card {
  position: absolute;
  inset: 0;
  border-radius: 18px;
  background-size: cover;
  background-position: center;
  box-shadow: 0 12px 28px rgba(7, 43, 49, 0.18);
  cursor: grab;
  touch-action: pan-y;
  user-select: none;
  transition: transform 0.3s ease, opacity 0.3s ease;
}

.caviro-swipe-card:active {
  cursor: grabbing;
}

.caviro-swipe-controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin-top: 18px;
}

.caviro-swipe-btn {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 1px solid rgba(7, 43, 49, 0.15);
  background: #ffffff;
  color: var(--caviro-dark);
  font-size: 17px;
  line-height: 1;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.caviro-swipe-btn:hover {
  background: var(--caviro-dark);
  color: #ffffff;
  border-color: var(--caviro-dark);
}

.caviro-swipe-dots {
  display: flex;
  gap: 6px;
}

.caviro-swipe-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(7, 43, 49, 0.2);
}

.caviro-swipe-dot.is-active {
  background: var(--caviro-gold);
}

/* ==========================================================================
   BEACHES PAGE — spotlight cards with alternating direction, tags
   ========================================================================== */

.caviro-intro-subtitle {
  font-size: 15px;
  color: #8a8a82;
  margin: 8px 0 0;
}

.caviro-spotlight-stack {
  display: flex;
  flex-direction: column;
  gap: 32px;
}

/* Alternate image/text direction — swap column order on odd cards */
.caviro-spotlight-card--reverse .caviro-spotlight-image {
  order: 2;
}

.caviro-spotlight-card--reverse .caviro-spotlight-content {
  order: 1;
}

@media (max-width: 768px) {
  .caviro-spotlight-card--reverse .caviro-spotlight-image,
  .caviro-spotlight-card--reverse .caviro-spotlight-content {
    order: initial; /* stack normally on mobile regardless of desktop order */
  }
}

/* Small underline accent under each beach title, consistent with other headings */
.caviro-spotlight-title {
  position: relative;
  padding-bottom: 12px;
}

.caviro-spotlight-title::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 28px;
  height: 2px;
  background: var(--caviro-gold);
}

/* Muted tag variant — for "not organized" beaches, slightly less prominent */
.caviro-spotlight-tag--muted {
  color: #8a8a82;
}

/* ==========================================================================
   BEACHES PAGE — coverflow-style photo carousel per beach.
   Text block sits above (centered), carousel below.
   ========================================================================== */

.caviro-beach-block {
  padding: 40px 24px 60px;
  max-width: 1200px;
  margin: 0 auto;
}

.caviro-beach-block__head {
  max-width: 680px;
  margin: 0 auto 32px;
  text-align: center;
}

.caviro-beach-block__title {
  font-size: clamp(24px, 2.6vw, 32px);
  font-weight: 600;
  color: var(--caviro-dark);
  margin: 10px 0 12px;
}

.caviro-beach-block__text {
  font-size: var(--caviro-body-font-size);
  line-height: 1.75;
  color: #5a5a54;
  margin: 0;
}

.caviro-beach-overlay-tag {
  display: inline-flex;
  align-items: center;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--caviro-dark);
  background: var(--caviro-gold);
  padding: 5px 14px;
  border-radius: 999px;
}

.caviro-beach-overlay-tag--muted {
  background: #f7f5f1;
  color: #8a8a82;
  border: 1px solid rgba(7, 43, 49, 0.1);
}

/* --- Coverflow carousel --- */

.caviro-coverflow {
  position: relative;
  height: 480px;
  display: flex;
  align-items: center;
  justify-content: center;
  outline: none;
  overflow: hidden;
}

.caviro-coverflow-track {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

.caviro-coverflow-card {
  position: absolute;
  width: 320px;
  height: 100%;
  border: 5px solid #ffffff;
  border-radius: 15px;
  overflow: hidden;
  box-shadow: 0 4px 16px rgba(7, 43, 49, 0.3);
  transition: transform 0.4s ease, filter 0.4s ease, box-shadow 0.25s ease;
  cursor: pointer;
}

.caviro-coverflow-card.is-active {
  cursor: zoom-in;
}

.caviro-coverflow-card.is-active::after {
  content: "";
  position: absolute;
  bottom: 10px;
  right: 10px;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: rgba(7, 43, 49, 0.45);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='12' height='12' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='6'/%3E%3Cpath d='M20 20l-4.35-4.35'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  opacity: 0;
  transition: opacity 0.25s ease;
}

.caviro-coverflow-card.is-active:hover::after {
  opacity: 0.85;
}

.caviro-coverflow-card img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}

@media (max-width: 640px) {
  .caviro-coverflow {
    height: 340px;
  }

  .caviro-coverflow-card {
    width: 220px;
  }
}

/* --- Nav buttons --- */

.caviro-coverflow-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 34px;
  height: 34px;
  padding: 0;
  margin: 0;
  box-sizing: border-box;
  border-radius: 50%;
  border: 1px solid rgba(7, 43, 49, 0.15);
  background-color: #ffffff;
  cursor: pointer;
  z-index: 50;
  transition: background-color 0.2s ease;
  box-shadow: 0 8px 20px rgba(7, 43, 49, 0.1);
}

.caviro-coverflow-nav {
  background-repeat: no-repeat;
  background-position: center;
  background-size: 16px 16px;
}

.caviro-coverflow-nav--prev {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' fill='none' stroke='%23072B31' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 6l-6 6 6 6'/%3E%3C/svg%3E");
}

.caviro-coverflow-nav--next {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' fill='none' stroke='%23072B31' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E");
}

.caviro-coverflow-nav:hover {
  background-color: var(--caviro-gold);
}

.caviro-coverflow-nav--prev { left: 4px; }
.caviro-coverflow-nav--next { right: 4px; }


/* ==========================================================================
   LIGHTBOX — shared full-screen viewer for coverflow gallery photos
   ========================================================================== */

.caviro-lightbox {
  position: fixed;
  inset: 0;
  z-index: 999999;
  background: rgba(7, 43, 49, 0.92);
  backdrop-filter: blur(6px);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.25s ease, visibility 0.25s ease;
}

.caviro-lightbox.is-open {
  opacity: 1;
  visibility: visible;
}

.caviro-lightbox-img {
  max-width: 88vw;
  max-height: 86vh;
  border-radius: 12px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
  transform: scale(0.96);
  transition: transform 0.25s ease;
}

.caviro-lightbox.is-open .caviro-lightbox-img {
  transform: scale(1);
}

.caviro-lightbox-close {
  position: absolute;
  top: 24px;
  right: 24px;
  width: 34px;
  height: 34px;
  padding: 0;
  margin: 0;
  box-sizing: border-box;
  border-radius: 50%;
  border: none;
  background-color: rgba(255, 255, 255, 0.12);
  background-repeat: no-repeat;
  background-position: center;
  background-size: 14px 14px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' fill='none' stroke='%23ffffff' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E");
  cursor: pointer;
  transition: background-color 0.2s ease;
}

.caviro-lightbox-close:hover,
.caviro-lightbox-nav:hover {
  background-color: rgba(255, 255, 255, 0.28);
}

.caviro-lightbox-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 38px;
  height: 38px;
  padding: 0;
  margin: 0;
  box-sizing: border-box;
  border-radius: 50%;
  border: none;
  background-color: rgba(255, 255, 255, 0.12);
  background-repeat: no-repeat;
  background-position: center;
  background-size: 16px 16px;
  cursor: pointer;
  transition: background-color 0.2s ease;
}

.caviro-lightbox-nav--prev {
  left: 24px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' fill='none' stroke='%23ffffff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 6l-6 6 6 6'/%3E%3C/svg%3E");
}

.caviro-lightbox-nav--next {
  right: 24px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' fill='none' stroke='%23ffffff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E");
}

@media (max-width: 640px) {
  .caviro-lightbox-nav { display: none; } /* swipe/arrow keys still work; keep mobile screen uncluttered */
}

/* ==========================================================================
   PRODUCTS PAGE — photo-top / text-below cards, description always visible
   (unlike the beach-card/coverflow pattern which reveals text on hover —
   product info should be readable without interaction, better for SEO too)
   ========================================================================== */

.caviro-products-wrap {
  padding: 20px 24px 70px;
}

.caviro-products-inner {
  max-width: 1200px;
  margin: 0 auto;
}

.caviro-products-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
}

@media (max-width: 900px) {
  .caviro-products-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 560px) {
  .caviro-products-grid {
    grid-template-columns: 1fr;
  }
}

.caviro-product-card {
  background: #ffffff;
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 10px 24px rgba(7, 43, 49, 0.08);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.caviro-product-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 20px 40px rgba(7, 43, 49, 0.16), 0 0 0 2px var(--caviro-gold);
}

.caviro-product-card__image {
  aspect-ratio: 4 / 3;
  background-size: cover;
  background-position: center;
  transition: transform 0.6s ease;
}

.caviro-product-card:hover .caviro-product-card__image {
  transform: scale(1.12);
}

.caviro-product-card__body {
  padding: 20px 22px 24px;
}

.caviro-product-card__tag {
  display: inline-flex;
  align-items: center;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--caviro-dark);
  background: rgba(235, 188, 121, 0.35);
  padding: 4px 12px;
  border-radius: 999px;
  margin-bottom: 12px;
  transition: background 0.3s ease;
}

.caviro-product-card:hover .caviro-product-card__tag {
  background: var(--caviro-gold);
}

.caviro-product-card__title {
  font-size: 19px;
  font-weight: 600;
  color: var(--caviro-dark);
  margin: 0 0 10px;
  position: relative;
  padding-bottom: 10px;
}

.caviro-product-card__title::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 26px;
  height: 2px;
  background: var(--caviro-gold);
  transition: width 0.3s ease;
}

.caviro-product-card:hover .caviro-product-card__title::after {
  width: 50px;
}

.caviro-product-card__text {
  font-size: var(--caviro-body-font-size);
  line-height: 1.65;
  color: #5a5a54;
  margin: 0;
}

/* ==========================================================================
   LOCATION PAGE — gallery wrapper (holds the Modula shortcode) +
   access cards (ship/plane)
   ========================================================================== */

.caviro-gallery-wrap {
  padding: 0 24px 60px;
}

.caviro-gallery-inner {
  max-width: 1200px;
  margin: 0 auto;
}

/* --- Access cards (ship / plane) --- */

.caviro-access-wrap {
  padding: 10px 24px 70px;
}

.caviro-access-inner {
  max-width: 1000px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px;
}

@media (max-width: 700px) {
  .caviro-access-inner {
    grid-template-columns: 1fr;
  }
}

.caviro-access-card {
  background: #f7f5f1;
  border-radius: 18px;
  padding: 28px 30px;
}

.caviro-access-card__icon {
  font-size: 28px;
  margin-bottom: 10px;
}

.caviro-access-card__title {
  font-size: 19px;
  font-weight: 600;
  color: var(--caviro-dark);
  margin: 0 0 16px;
}

.caviro-access-card__list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.caviro-access-card__list li {
  position: relative;
  padding: 8px 0 8px 20px;
  font-size: var(--caviro-body-font-size);
  color: #4a4a45;
  border-bottom: 1px solid rgba(7, 43, 49, 0.08);
}

.caviro-access-card__list li:last-child {
  border-bottom: none;
}

.caviro-access-card__list li::before {
  content: "›";
  position: absolute;
  left: 0;
  color: var(--caviro-gold);
  font-weight: 700;
}

/* ==========================================================================
   OFFERS PAGE — percentage badge cards + breakfast basket list
   ========================================================================== */

.caviro-offers-wrap {
  padding: 0 24px 20px;
}

.caviro-offers-inner {
  max-width: 900px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
}

@media (max-width: 640px) {
  .caviro-offers-inner {
    grid-template-columns: 1fr;
  }
}

.caviro-offer-card {
  background: #ffffff;
  border-radius: 18px;
  padding: 28px 26px;
  box-shadow: 0 10px 24px rgba(7, 43, 49, 0.08);
  text-align: center;
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.caviro-offer-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 16px 32px rgba(7, 43, 49, 0.12);
}

.caviro-offer-card__badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background: var(--caviro-gold);
  color: var(--caviro-dark);
  font-size: 22px;
  font-weight: 700;
  margin: 0 auto 16px;
}

.caviro-offer-card__title {
  font-size: 17px;
  font-weight: 600;
  color: var(--caviro-dark);
  margin: 0 0 10px;
}

.caviro-offer-card__text {
  font-size: 14px;
  line-height: 1.6;
  color: #5a5a54;
  margin: 0;
}

.caviro-offers-note {
  max-width: 700px;
  margin: 28px auto 0;
  text-align: center;
  font-size: 12.5px;
  color: #8a8a82;
  line-height: 1.6;
}

/* --- Single centered product card (breakfast basket) --- */

.caviro-products-grid--single {
  grid-template-columns: minmax(280px, 480px);
  justify-content: center;
}

.caviro-basket-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.caviro-basket-list li {
  position: relative;
  padding: 6px 0 6px 18px;
  font-size: var(--caviro-body-font-size);
  color: #4a4a45;
}

.caviro-basket-list li::before {
  content: "•";
  position: absolute;
  left: 0;
  color: var(--caviro-gold);
  font-weight: 700;
}

/* ==========================================================================
   OFFERS PAGE — contact card, booking widget promo
   ========================================================================== */

/* --- Contact + Booking, side by side --- */

.caviro-contact-booking-wrap {
  padding: 0 24px 70px;
}

.caviro-contact-booking-grid {
  max-width: 1100px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 3fr;
  gap: 28px;
  align-items: start;
}

@media (max-width: 900px) {
  .caviro-contact-booking-grid {
    grid-template-columns: 1fr;
  }
}

/* --- Contact info card, icon-row style --- */

.caviro-contact-info-card {
  background: #ffffff;
  border-radius: var(--caviro-card-radius);
  padding: 30px 32px;
  box-shadow: 0 12px 28px rgba(7, 43, 49, 0.08);
  border-top: 3px solid var(--caviro-gold);
  overflow: hidden;
}

.caviro-contact-info-card__title,
.caviro-booking-widget-inner .caviro-contact-info-card__title {
  font-size: 19px;
  font-weight: 600;
  color: var(--caviro-dark);
  margin: 0 0 8px;
}

.caviro-contact-info-card__text {
  font-size: var(--caviro-body-font-size);
  color: #5a5a54;
  margin: 0 0 22px;
}

.caviro-contact-info-grid {
  display: block;
  border-top: 1px solid rgba(7, 43, 49, 0.08);
  padding-top: 16px;
}

@media (max-width: 480px) {
  .caviro-contact-info-grid {
    grid-template-columns: 1fr;
  }
}

.caviro-contact-info-row {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 0;
}

.caviro-contact-info-row__icon {
  flex-shrink: 0;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: rgba(235, 188, 121, 0.25);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
}

.caviro-contact-info-row__body {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.caviro-contact-info-row__label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: #8a8a82;
  margin-bottom: 2px;
}

.caviro-contact-info-row__body a {
  color: var(--caviro-dark);
  font-weight: 600;
  font-size: var(--caviro-body-font-size);
  text-decoration: none;
}

.caviro-contact-info-row__body a:hover {
  color: var(--caviro-gold);
  text-decoration: underline;
}

/* --- Booking widget promo panel --- */

.caviro-booking-widget-inner {
  background: #ffffff;
  border-radius: var(--caviro-card-radius);
  padding: 30px;
  box-shadow: 0 16px 36px rgba(7, 43, 49, 0.12);
  border: 1px solid rgba(7, 43, 49, 0.08);
  position: relative;
  overflow: hidden;
}

.caviro-booking-widget-inner::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 5px;
  background: linear-gradient(90deg, var(--caviro-gold), var(--caviro-dark));
}

.caviro-booking-widget-header {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin-bottom: 20px;
  padding-bottom: 18px;
  border-bottom: 1px solid rgba(7, 43, 49, 0.08);
}

.caviro-booking-widget-header__icon {
  font-size: 22px;
}

.caviro-booking-widget-header__text {
  font-size: 15px;
  font-weight: 600;
  color: var(--caviro-dark);
  text-align: center;
}

/* ==========================================================================
   OFFERS PAGE — v2: dark "why direct" section, cleaner seasmiles,
   tinted section backgrounds for visual rhythm (fixes the "flat, all
   white cards on gray page" monotony from the previous version)
   ========================================================================== */

.caviro-benefits-wrap {
  background: var(--caviro-dark);
  padding: 60px 24px;
}

.caviro-benefits-inner {
  max-width: 900px;
  margin: 0 auto;
  text-align: center;
}

.caviro-benefits-title {
  font-size: clamp(26px, 3vw, 34px);
  font-weight: 600;
  color: #ffffff;
  margin: 0 0 40px;
}

.caviro-benefits-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px;
  text-align: left;
}

@media (max-width: 640px) {
  .caviro-benefits-grid {
    grid-template-columns: 1fr;
  }
}

.caviro-benefit-card__icon {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.1);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  margin-bottom: 16px;
}

.caviro-benefit-card__title {
  font-size: 18px;
  font-weight: 600;
  color: #ffffff;
  margin: 0 0 10px;
  position: relative;
  padding-bottom: 10px;
}

.caviro-benefit-card__title::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 26px;
  height: 2px;
  background: var(--caviro-gold);
}

.caviro-benefit-card__text {
  font-size: var(--caviro-body-font-size);
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.75);
  margin: 0;
}

/* --- Tinted section background for rhythm --- */

.caviro-offers-wrap--tinted {
  background: #f7f5f1;
  padding-top: 50px;
  padding-bottom: 40px;
  border-radius: 0;
}

.caviro-contact-booking-wrap {
  background: #f7f5f1;
  padding: 50px 24px 70px;
}

/* --- Seasmiles partner logo, secondary element under the text --- */

.caviro-spotlight-partner-logo {
  display: block;
  max-width: 220px;
  height: auto;
  margin-top: 18px;
  opacity: 0.9;
}

/* ==========================================================================
   FACILITIES & SERVICES PAGE — icon + title (+ optional text/paid badge)
   card grid, reusable for both "Εγκαταστάσεις" and "Υπηρεσίες" sections
   ========================================================================== */

.caviro-feature-wrap {
  padding: 10px 24px 60px;
}

.caviro-feature-wrap--tinted {
  background: #f7f5f1;
  padding-top: 40px;
  padding-bottom: 50px;
}

.caviro-feature-inner {
  max-width: 1200px;
  margin: 0 auto;
}

.caviro-feature-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
}

@media (max-width: 900px) {
  .caviro-feature-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 480px) {
  .caviro-feature-grid {
    grid-template-columns: 1fr;
  }
}

.caviro-feature-card {
  position: relative;
  background: #ffffff;
  border-radius: var(--caviro-card-radius);
  padding: 26px 22px;
  box-shadow: 0 8px 20px rgba(7, 43, 49, 0.06);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.caviro-feature-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 14px 28px rgba(7, 43, 49, 0.1);
}

.caviro-feature-card__icon {
  width: 46px;
  height: 46px;
  border-radius: 50%;
  background: rgba(235, 188, 121, 0.25);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  margin-bottom: 14px;
}

.caviro-feature-card__icon-img {
  width: 48px;
  height: 48px;
  object-fit: contain;
  display: block;
  margin-bottom: 14px;
}

.caviro-feature-card__title {
  font-size: 15.5px;
  font-weight: 600;
  color: var(--caviro-dark);
  margin: 0;
  line-height: 1.4;
}

.caviro-feature-card__text {
  font-size: 13.5px;
  line-height: 1.55;
  color: #6b6b64;
  margin: 6px 0 0;
}

.caviro-feature-card__badge {
  position: absolute;
  top: 18px;
  right: 18px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: #8a8a82;
  background: #f7f5f1;
  padding: 3px 9px;
  border-radius: 999px;
}

.caviro-feature-wrap--tinted .caviro-feature-card__badge {
  background: #ffffff;
}

.stiliFormasEpikoinonias .elementor-element-populated{
	    background: rgba(255, 255, 255, .75);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(47, 62, 70, .08);
    border-radius: 28px;
    padding: 28px 22px 26px;
}

/* ==========================================================================
   ROOM SINGLE PAGE — quick facts strip (Guests/Bed/Size/View), plugin icons
   Used by single-boc_rooms.php in the astra-child theme.
   ========================================================================== */

.caviro-room-quickfacts-wrap {
  padding: 24px 24px 10px;
}

.caviro-room-quickfacts {
  max-width: 900px;
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 14px;
}

.caviro-room-quickfact {
  display: flex;
  align-items: center;
  gap: 8px;
  background: #f7f5f1;
  border-radius: 999px;
  padding: 10px 18px;
  font-size: 14px;
  font-weight: 500;
  color: var(--caviro-dark);
}

.caviro-room-quickfact__icon {
  font-size: 15px;
}

/* Icons rendered by the plugin's own boc_rooms_render_icon() —
   size the SVG/FontAwesome output to fit our circle badge. */
.caviro-feature-card__icon--plugin svg,
.caviro-feature-card__icon--plugin i {
  width: 20px;
  height: 20px;
  font-size: 20px;
}

/* ==========================================================================
   ROOM SINGLE PAGE (v2) — rebuilt piece by piece, no CSS multi-column
   tricks this time (that was the cause of the overlap bug before).
   ========================================================================== */

/* Neutralizes any flex/grid layout inherited from Astra's page wrapper —
   without this, Astra was laying out our sections as side-by-side flex
   items instead of stacking them vertically. Wrapping everything in this
   one div is enough; we must NOT force display:block on its children too,
   or we'd break sections that need their own flex/grid (like the
   highlights row below). */
.caviro-room-page {
  display: block !important;
  width: 100% !important;
}

/* Full-bleed: breaks the hero out of Astra's boxed/contained content
   width, regardless of how much padding/max-width the ancestor applies. */
.caviro-hero-shell--full-bleed {
  width: 100vw !important;
  max-width: 100vw !important;
  margin-left: calc(50% - 50vw) !important;
  margin-right: calc(50% - 50vw) !important;
}

/* --- 2. Highlights row --- */

.caviro-stay-highlights-row {
  max-width: 900px;
  margin: 0 auto;
  padding: 32px 24px;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 36px;
}

.caviro-stay-highlight {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14.5px;
  font-weight: 500;
  color: var(--caviro-dark);
  background: #f7f5f1;
  border-radius: 999px;
  padding: 12px 22px;
  box-shadow: 0 4px 12px rgba(7, 43, 49, 0.05);
  transition: transform 0.25s ease, box-shadow 0.25s ease, background 0.25s ease;
  cursor: default;
}

.caviro-stay-highlight:hover {
  transform: translateY(-3px);
  background: #ffffff;
  box-shadow: 0 10px 24px rgba(7, 43, 49, 0.12), 0 0 0 1px rgba(235, 188, 121, 0.4);
}

.caviro-stay-highlight:hover .caviro-stay-highlight-icon svg {
  transform: scale(1.15);
}

.caviro-stay-highlight-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--caviro-gold);
}

.caviro-stay-highlight-icon svg {
  width: 22px;
  height: 22px;
  transition: transform 0.25s ease;
}

/* --- 3. Gallery wrapper (Smart Slider 3 goes inside) --- */

.caviro-room-gallery-wrap {
  padding: 0 24px 50px;
}

.caviro-room-gallery-inner {
  max-width: 1200px;
  margin: 0 auto;
  border-radius: 20px;
  overflow: hidden;
}

/* --- 4. Description + amenities + booking, in a grid --- */

.caviro-room-details-wrap {
  padding: 0 24px 70px;
}

.caviro-room-details-grid {
  max-width: 1200px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 48px;
  align-items: start;
}

@media (max-width: 900px) {
  .caviro-room-details-grid {
    grid-template-columns: 1fr;
  }
}

.caviro-room-details-heading {
  font-size: clamp(22px, 2.5vw, 28px);
  font-weight: 600;
  color: var(--caviro-dark);
  margin: 40px 0 16px;
}

.caviro-room-details-heading:first-child {
  margin-top: 0;
}

.caviro-room-details-content {
  font-size: var(--caviro-body-font-size);
  line-height: 1.75;
  color: #4a4a45;
}

.caviro-room-details-content p {
  margin: 0 0 16px;
}

.caviro-room-amenities-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px 20px;
}

.caviro-room-amenity {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14.5px;
  color: var(--caviro-dark);
}

.caviro-room-amenity__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: rgba(235, 188, 121, 0.25);
  color: var(--caviro-gold);
  flex-shrink: 0;
}

.caviro-room-amenity__icon svg {
  width: 16px;
  height: 16px;
}

/* --- Features (Λεπτομέρειες) — same safe two-column pattern, no CSS
     columns:2 trick (that caused the earlier overlap bug) --- */

.caviro-room-features-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 4px 32px;
}

@media (max-width: 560px) {
  .caviro-room-features-grid {
    grid-template-columns: 1fr;
  }
}

/* Sticky booking card on desktop */
.caviro-room-details-side {
  position: sticky;
  top: 110px; /* clears the fixed header */
  align-self: start; /* required for sticky to work correctly as a grid item */
}

.caviro-room-booking-card {
  background: #ffffff;
  border-radius: var(--caviro-card-radius);
  padding: 26px;
  box-shadow: 0 16px 36px rgba(7, 43, 49, 0.12);
  border: 1px solid rgba(7, 43, 49, 0.08);
  overflow: visible; /* never clip the booking iframe as it grows taller */
}

.caviro-room-booking-card iframe {
  width: 100% !important;
  border: none;
}

.caviro-room-booking-card__title {
  font-size: 18px;
  font-weight: 600;
  color: var(--caviro-dark);
  margin: 0 0 18px;
}

/* ==========================================================================
   ACCOMMODATION ARCHIVE PAGE ("/diamoni/") — reuses spotlight cards,
   about-wrap, and booking-widget-inner components already defined above.
   Only a tiny inline-context override needed here:
   ========================================================================== */

.caviro-spotlight-content .caviro-room-quickfact {
  font-size: 13px;
  padding: 6px 14px;
}

/* ==========================================================================
   [boc_rooms_grid] SHORTCODE — styled to match the site's product-card
   pattern. Targets the plugin's own real markup (boc-room-*), confirmed
   from the plugin source, not guessed.
   ========================================================================== */

.boc-rooms-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 28px;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 24px;
}

@media (max-width: 560px) {
  .boc-rooms-grid {
    grid-template-columns: 1fr;
  }
}

.boc-room-card {
  background: #ffffff;
  border-radius: var(--caviro-card-radius) !important;
  overflow: hidden;
  box-shadow: 0 10px 24px rgba(7, 43, 49, 0.08) !important;
  border: none !important; /* the plugin's own default CSS adds a 1px border — remove it */
  transition: transform 0.3s ease, box-shadow 0.3s ease !important;
}

.boc-room-card:hover {
  transform: translateY(-6px) !important;
  box-shadow: 0 20px 40px rgba(7, 43, 49, 0.16), 0 0 0 2px var(--caviro-gold) !important;
}

.boc-room-image {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
}

.boc-room-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.6s ease;
}

.boc-room-card:hover .boc-room-image img {
  transform: scale(1.1);
}

.boc-room-price-badge {
  position: absolute;
  top: 14px !important;
  right: 14px !important;
  bottom: auto !important;
  left: auto !important;
  background: var(--caviro-gold) !important;
  color: var(--caviro-dark) !important;
  font-size: 12.5px !important;
  text-transform: none !important;
  letter-spacing: normal !important;
  font-weight: 700;
  padding: 6px 14px;
  border-radius: 999px !important;
  box-shadow: 0 4px 12px rgba(7, 43, 49, 0.2);
}

.boc-room-content {
  padding: 22px 22px 24px;
}

.boc-room-title {
  font-family: inherit !important;
  font-size: 19px !important;
  font-weight: 600 !important;
  color: var(--caviro-dark) !important;
  margin: 0 0 12px;
  position: relative;
  padding-bottom: 10px;
}

.boc-room-title::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 26px;
  height: 2px;
  background: var(--caviro-gold);
  transition: width 0.3s ease;
}

.boc-room-card:hover .boc-room-title::after {
  width: 50px;
}

.boc-room-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px !important;
  margin-bottom: 14px !important;
}

.boc-meta-item {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12.5px !important;
  font-weight: 600;
  color: var(--caviro-dark) !important;
  background: #f7f5f1;
  padding: 5px 12px;
  border-radius: 999px;
}

.boc-meta-item svg {
  width: 13px;
  height: 13px;
}

.boc-room-desc {
  font-size: var(--caviro-body-font-size) !important;
  line-height: 1.6 !important;
  color: #5a5a54 !important;
  margin: 0 0 18px !important;
}

.boc-room-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 17.5px;
  font-weight: 600;
  text-transform: none !important;
  letter-spacing: normal !important;
  color: var(--caviro-dark);
  text-decoration: none;
  border-bottom: none !important; /* the plugin's own default CSS adds a border-bottom underline on hover — removed to avoid a duplicate "line" alongside our own hover treatment */
  transition: color 0.2s ease, gap 0.2s ease;
}

.boc-room-link:hover {
  color: var(--caviro-gold);
  gap: 10px;
  border-bottom: none !important;
}

.boc-arrow {
  transition: transform 0.2s ease;
}

.boc-room-link:hover .boc-arrow {
  transform: translateX(2px);
}

/* ==========================================================================
   HOMEPAGE — 4-card CTA row (Παραλίες/Κέρος/Αξιοθέατα/Προϊόντα).
   Replaces an Elementor Pro "Call to Action" widget the site no longer
   has access to — same visual result, plain HTML/CSS. Reuses the same
   zoom-layer + dark-gradient technique as .caviro-beach-card.
   ========================================================================== */

.caviro-home-cta-wrap {
  padding: 60px 24px;
}

.caviro-home-cta-grid {
  max-width: 1300px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
}

@media (max-width: 900px) {
  .caviro-home-cta-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 480px) {
  .caviro-home-cta-grid {
    grid-template-columns: 1fr;
  }
}

.caviro-home-cta-card {
  position: relative;
  display: block;
  aspect-ratio: 3 / 4;
  border-radius: 18px;
  overflow: hidden;
  background-size: cover;
  background-position: center;
  text-decoration: none;
  box-shadow: 0 10px 24px rgba(7, 43, 49, 0.1);
}

.caviro-home-cta-card__zoom {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  transition: transform 0.6s ease, filter 0.4s ease;
  filter: brightness(0.75);
}

.caviro-home-cta-card:hover .caviro-home-cta-card__zoom {
  transform: scale(1.1);
  filter: brightness(0.55);
}

.caviro-home-cta-card::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(7,43,49,0.1) 0%, rgba(7,43,49,0.85) 100%);
  z-index: 1;
  pointer-events: none;
}

.caviro-home-cta-card__content {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 2;
  padding: 24px 22px;
  color: #ffffff;
  text-align: center;
}

.caviro-home-cta-card__subtitle {
  display: block;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--caviro-gold);
  margin-bottom: 8px;
}

.caviro-home-cta-card__title {
  font-size: clamp(24px, 2.2vw, 28px) !important;
  font-weight: 600;
  color: #ffffff;
  margin: 0 0 16px;
}

.caviro-home-cta-card__link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.03em;
  color: #ffffff;
  border: 1px solid rgba(255, 255, 255, 0.4);
  padding: 8px 18px;
  border-radius: 999px;
  transition: background 0.25s ease, border-color 0.25s ease;
}

.caviro-home-cta-card:hover .caviro-home-cta-card__link {
  background: var(--caviro-gold);
  border-color: var(--caviro-gold);
  color: var(--caviro-dark);
}

.caviro-home-cta-card__arrow {
  transition: transform 0.25s ease;
}

.caviro-home-cta-card:hover .caviro-home-cta-card__arrow {
  transform: translateX(3px);
}

/* ==========================================================================
   HOMEPAGE — booking section, paired with a photo panel. Reuses the
   existing .caviro-booking-widget-inner card (same as the Offers page)
   for full visual consistency, plus rounded corners on the photo side
   to match the rest of the site instead of the old plain square image.
   ========================================================================== */

.caviro-home-booking-wrap {
  padding: 0 24px 70px;
}

.caviro-home-booking-grid {
  max-width: 1200px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px;
  align-items: stretch;
}

@media (max-width: 900px) {
  .caviro-home-booking-grid {
    grid-template-columns: 1fr;
  }
}

.caviro-home-booking-image {
  border-radius: var(--caviro-card-radius);
  background-size: cover;
  background-position: center;
  min-height: 420px;
  box-shadow: 0 16px 36px rgba(7, 43, 49, 0.12);
}

/* ==========================================================================
   HOMEPAGE — 3-column feature CTA row (Διαμονή / Προτάσεις / Εγκαταστάσεις).
   Replaces another Elementor Pro "Call to Action" widget section. The two
   photo cards reuse the same zoom-layer overlay pattern as the 4-card CTA
   row above; the middle column is a plain text panel, no photo.
   ========================================================================== */

.caviro-home-features-wrap {
  padding: 20px 24px 70px;
}

.caviro-home-features-grid {
  max-width: 1300px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 0; /* the old section used elementor-column-gap-no — cards sit flush */
  border-radius: var(--caviro-card-radius);
  overflow: hidden;
}

@media (max-width: 900px) {
  .caviro-home-features-grid {
    grid-template-columns: 1fr;
    gap: 20px;
    border-radius: 0;
    overflow: visible;
  }
}

.caviro-home-feature-card {
  position: relative;
  display: block;
  min-height: 600px;
  background-size: cover;
  background-position: center;
  text-decoration: none;
}

.caviro-home-feature-card__zoom {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  transition: transform 0.6s ease, filter 0.4s ease;
  filter: brightness(0.85);
}

.caviro-home-feature-card:hover .caviro-home-feature-card__zoom {
  transform: scale(1.08);
  filter: brightness(0.6);
}

/* Gradient sits only on the lower half — the top of the photo (e.g. a
   stone wall, a view) stays clearly visible and untinted. */
.caviro-home-feature-card::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(7,43,49,0) 40%, rgba(7,43,49,0.75) 75%, rgba(7,43,49,0.88) 100%);
  z-index: 1;
  pointer-events: none;
}

.caviro-home-feature-card__content {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;
  text-align: center;
  padding: 40px 32px 56px;
  color: #ffffff;
}

.caviro-home-feature-card__icon {
  display: inline-flex;
  color: #ffffff;
  margin-bottom: 18px;
}

.caviro-home-feature-card__title {
  font-size: clamp(24px, 2.4vw, 30px);
  font-weight: 700;
  color: #ffffff;
  margin: 0 0 16px;
}

.caviro-home-feature-card__text {
  font-size: 14.5px;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.85);
  max-width: 320px;
  margin: 0 0 20px;
}

.caviro-home-feature-card__button {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.03em;
  color: #ffffff;
  border: 1px solid rgba(255, 255, 255, 0.4);
  padding: 8px 18px;
  border-radius: 999px;
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 0.3s ease, transform 0.3s ease, background 0.25s ease, border-color 0.25s ease, color 0.25s ease;
}

.caviro-home-feature-card:hover .caviro-home-feature-card__button {
  opacity: 1;
  transform: translateY(0);
  background: var(--caviro-gold);
  border-color: var(--caviro-gold);
  color: var(--caviro-dark);
}

/* --- Middle column: plain text, no photo --- */

.caviro-home-suggestions-panel {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 40px 32px;
  background: #f7f5f1;
  min-height: 600px;
}

.caviro-home-suggestions-panel__title {
  font-size: clamp(22px, 2.2vw, 28px);
  font-weight: 600;
  color: var(--caviro-dark);
  margin: 0 0 14px;
}

.caviro-home-suggestions-panel__text {
  font-size: var(--caviro-body-font-size);
  line-height: 1.6;
  color: #5a5a54;
  max-width: 320px;
  margin: 0 0 22px;
}

@media (max-width: 900px) {
  .caviro-home-feature-card,
  .caviro-home-suggestions-panel {
    border-radius: var(--caviro-card-radius);
    min-height: 380px;
  }
}

/* Standalone version of .caviro-home-feature-card (used on its own,
   not inside the flush 3-column grid) — needs its own rounded corners
   and shadow, since those normally come from the wrapping grid. */
.caviro-home-feature-card--standalone {
  border-radius: var(--caviro-card-radius);
  overflow: hidden;
  box-shadow: 0 16px 36px rgba(7, 43, 49, 0.14);
}

/* ==========================================================================
   BREADCRUMBS — placed manually above the hero tag on every page type
   (Elementor pages via [rank_math_breadcrumb] shortcode, custom PHP
   templates via rank_math_the_breadcrumbs()), since Astra's own
   Customizer breadcrumb position settings don't reliably apply across
   our mixed template setup.
   ========================================================================== */

.caviro-breadcrumbs {
  margin-bottom: 16px;
  font-size: 12.5px;
}

.caviro-breadcrumbs #rank-math-breadcrumb,
.caviro-breadcrumbs p {
  margin: 0;
}

.caviro-breadcrumbs a,
.caviro-breadcrumbs span {
  color: rgba(255, 255, 255, 0.6);
  font-size: 0.9rem;
}

.caviro-breadcrumbs a {
  text-decoration: none;
  transition: color 0.15s ease;
}

.caviro-breadcrumbs a:hover {
  color: var(--caviro-gold);
}

.caviro-breadcrumbs .separator {
  margin: 0 6px;
  color: rgba(255, 255, 255, 0.4);
}

/* Last item (current page) — slightly brighter so it's clearly the
   "you are here" marker, without competing with the H1 below it. */
.caviro-breadcrumbs .last {
  color: rgba(255, 255, 255, 0.85);
  font-weight: 600;
}

.opal-image-clip-right-md{
  -webkit-clip-path:polygon(0 0, calc(50% - 5px) 0, calc(50% - 5px) 100%, calc(50% + 5px) 100%, calc(50% + 5px) 50px, 100% 50px, 100% 100%, calc(50% - 5px) 100%, calc(50% - 5px) calc(100% - 50px), 0 calc(100% - 50px), 0 50px);
      clip-path: polygon(0 0, calc(50% - 5px) 0, calc(50% - 5px) 100%, calc(50% + 5px) 100%, calc(50% + 5px) 50px, 100% 50px, 100% 100%, calc(50% - 5px) 100%, calc(50% - 5px) calc(100% - 50px), 0 calc(100% - 50px), 0 50px);
}

.opal-image-clip-left-md {
    -webkit-clip-path: polygon(0 50px, calc(50% - 5px) 50px, calc(50% - 5px) calc(100% - 50px), calc(50% + 5px) calc(100% - 50px), calc(50% + 5px) 0, 100% 0, 100% calc(100% - 50px), calc(50% - 5px) calc(100% - 50px), calc(50% - 5px) 100%, 0 100%, 0 50px);
    clip-path: polygon(0 50px, calc(50% - 5px) 50px, calc(50% - 5px) calc(100% - 50px), calc(50% + 5px) calc(100% - 50px), calc(50% + 5px) 0, 100% 0, 100% calc(100% - 50px), calc(50% - 5px) calc(100% - 50px), calc(50% - 5px) 100%, 0 100%, 0 50px);
}

.ast-scroll-to-top-right {
    bottom: 98px;
}

#cmplz-document{
    max-width: 100%;
}

/*.page-id-9554 .ast-article-single, .page-id-9552  .ast-article-single{
    padding-top: 14em !important;
    padding-left: 16vw !important;
    padding-right: 16vw !important;
}*/


.caviro-scroll-down__text,
.caviro-scroll-down__arrow {
    font-size: 1.4rem !important;
    line-height: 1.65 !important;
}


/* ==========================================================================
   GLOBAL LINK UNDERLINE RESET — αφαιρεί το browser-default underline από
   όλα τα links μέσα σε κανονικό περιεχόμενο (παράγραφοι, footer text,
   WPForms, κ.λπ.). Τα ήδη στυλισμένα στοιχεία (nav, buttons, cards) έχουν
   ήδη δικό τους text-decoration: none — αυτό εδώ καλύπτει ό,τι έμεινε
   εκτός, με discreet underline μόνο σε hover ως ελάχιστο visual cue.
   ========================================================================== */

.entry-content a,
.ast-container a,
.elementor a,
.wpforms-container a,
#cmplz-document a {
  text-decoration: none;
}

.entry-content a:hover,
.ast-container a:hover,
.elementor a:hover,
.wpforms-container a:hover,
#cmplz-document a:hover {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}


.caviro-submenu-toggle {
  display: none;
}

@media (max-width: 860px) {
  .caviro-submenu-toggle {
    display: flex !important;
    position: absolute;
    top: 0;
    right: 0;
    width: 44px;
    height: 44px;
    align-items: center;
    justify-content: center;
    background: none !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0 !important;
    margin: 0;
    cursor: pointer;
    z-index: 2;
  }

  .caviro-submenu-toggle:hover,
  .caviro-submenu-toggle:focus {
    background: none !important;
    outline: none;
  }

  .caviro-submenu-toggle::after {
    content: "";
    width: 8px;
    height: 8px;
    margin-top: -4px;
    border-right: 2px solid rgba(255, 255, 255, 0.7);
    border-bottom: 2px solid rgba(255, 255, 255, 0.7);
    transform: rotate(45deg);
    transition: transform 0.2s ease, margin-top 0.2s ease, border-color 0.15s ease;
  }

  .caviro-submenu-toggle:hover::after {
    border-color: var(--caviro-gold);
  }

  .caviro-custom-menu .menu-item-has-children.is-expanded > .caviro-submenu-toggle::after {
    transform: rotate(225deg);
    margin-top: 4px;
  }
}


/* ==========================================================================
   LEGAL PAGES — Privacy / Terms / Cookies (incl. Complianz default doc)
   ========================================================================== */

.caviro-legal-page .entry-header,
.caviro-legal-page .ast-single-entry-banner,
.caviro-legal-page .ast-breadcrumbs-wrapper,
.caviro-legal-page .ast-breadcrumbs-outer {
  display: none !important; /* Astra's own title/breadcrumb — ours is inside .caviro-legal */
}

.caviro-legal-page .ast-article-single {
  padding: 205px 24px 70px !important;
}

@media (max-width: 860px) {
  .caviro-legal-page .ast-article-single {
    padding: 160px 20px 50px !important;
  }
}

.caviro-legal {
  max-width: 860px;
  margin: 0 auto;
  text-align: left;
  font-family: inherit;
}

/* --- Breadcrumb (light background variant) --- */

.caviro-legal-breadcrumbs {
  margin-bottom: 14px;
  font-size: 13px;
}

.caviro-legal-breadcrumbs p {
  margin: 0;
}

.caviro-legal-breadcrumbs a,
.caviro-legal-breadcrumbs span {
  color: #8a8a82;
  font-size: 13px;
}

.caviro-legal-breadcrumbs a:hover {
  color: var(--caviro-gold);
  text-decoration: none !important;
}

.caviro-legal-breadcrumbs .separator {
  margin: 0 6px;
  color: #b5b5ad;
}

.caviro-legal-breadcrumbs .last {
  color: var(--caviro-dark);
  font-weight: 600;
}

/* --- Title + last updated --- */

.caviro-legal .caviro-legal-title {
  font-size: clamp(30px, 4vw, 44px);
  font-weight: 600;
  line-height: 1.2;
  color: var(--caviro-dark);
  margin: 0 0 10px;
}

.caviro-legal .caviro-legal-updated {
  font-size: 14px !important;
  color: #8a8a82 !important;
  margin: 0 0 32px !important;
  padding-bottom: 24px;
  border-bottom: 1px solid rgba(7, 43, 49, 0.1);
}

/* --- Headings (ours + Complianz) --- */

.caviro-legal h2,
.caviro-legal #cmplz-document h2 {
  position: relative;
  font-family: inherit !important;
  font-size: clamp(20px, 2.2vw, 24px) !important;
  font-weight: 600 !important;
  line-height: 1.3 !important;
  color: var(--caviro-dark) !important;
  margin: 40px 0 14px !important;
  padding-bottom: 10px !important;
  text-transform: none !important;
}

.caviro-legal h2::after,
.caviro-legal #cmplz-document h2::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 28px;
  height: 2px;
  background: var(--caviro-gold);
}

.caviro-legal h3,
.caviro-legal h4,
.caviro-legal #cmplz-document h3,
.caviro-legal #cmplz-document h4 {
  font-family: inherit !important;
  font-size: 18px !important;
  font-weight: 600 !important;
  line-height: 1.4 !important;
  color: var(--caviro-dark) !important;
  margin: 28px 0 10px !important;
}

/* --- Body text --- */

.caviro-legal p,
.caviro-legal li,
.caviro-legal #cmplz-document p,
.caviro-legal #cmplz-document li,
.caviro-legal #cmplz-document span,
.caviro-legal #cmplz-document td,
.caviro-legal #cmplz-document th {
  font-family: inherit !important;
  font-size: var(--caviro-body-font-size) !important;
  line-height: 1.75 !important;
  color: #4a4a45;
}

.caviro-legal p,
.caviro-legal #cmplz-document p {
  margin: 0 0 16px !important;
}

/* --- Lists: gold bullet, same as rest of site --- */

.caviro-legal ul,
.caviro-legal #cmplz-document ul {
  list-style: none !important;
  margin: 0 0 20px !important;
  padding: 0 !important;
}

.caviro-legal li,
.caviro-legal #cmplz-document li {
  position: relative;
  padding: 5px 0 5px 20px !important;
  list-style: none !important;
}

.caviro-legal li::before,
.caviro-legal #cmplz-document li::before {
  content: "•";
  position: absolute;
  left: 0;
  top: 5px;
  color: var(--caviro-gold);
  font-weight: 700;
}

/* --- Links --- */

.caviro-legal a,
.caviro-legal #cmplz-document a {
  color: var(--caviro-dark) !important;
  font-weight: 600;
  transition: color 0.15s ease;
}

.caviro-legal a:hover,
.caviro-legal #cmplz-document a:hover {
  color: var(--caviro-gold) !important;
}

.caviro-legal strong {
  color: var(--caviro-dark);
}



/* Astra's page-builder layout forces max-width:none on direct children
   of .entry-content — override it so the wrapper stays boxed (860px)
   on all 3 pages, including the Complianz cookie page. */
.caviro-legal-page .entry-content > .caviro-legal {
  max-width: 860px !important;
  width: 100%;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* Elementor container inside the wrapper — no own width/padding,
   so the text aligns exactly under our breadcrumb + title */
.caviro-legal .e-con {
  --padding-top: 0px;
  --padding-bottom: 0px;
  --padding-left: 0px;
  --padding-right: 0px;
  --content-width: 100%;
  --width: 100%;
  padding: 0 !important;
}

.caviro-legal .e-con-inner {
  max-width: 100% !important;
  padding: 0 !important;
}

.caviro-legal .elementor-widget-text-editor {
  width: 100%;
}

/* Safety net: hide any leftover Elementor H1 heading inside legal pages */
.caviro-legal .elementor-widget-heading:has(h1) {
  display: none !important;
}


/* Remove Elementor's default top spacing so "Τελευταία ενημέρωση"
   sits right under the title */
.caviro-legal .elementor,
.caviro-legal .e-con,
.caviro-legal .e-con-inner {
  margin-top: 0 !important;
  padding-top: 0 !important;
  min-height: 0 !important;
  gap: 0 !important;
  --gap: 0px;
  --row-gap: 0px;
  --min-height: 0px;
  --margin-top: 0px;
}

.caviro-legal .elementor-widget-text-editor,
.caviro-legal .elementor-widget-text-editor > :first-child {
  margin-top: 0 !important;
  padding-top: 0 !important;
}

/* ==========================================================================
   SIGHTSEEING CARDS — mobile / touch fix
   Σε touch συσκευές το hover δεν λειτουργεί σωστά και το σταθερό
   aspect-ratio κόβει το κείμενο. Εδώ η κάρτα μεγαλώνει με το περιεχόμενο
   και το extra κείμενο φαίνεται πάντα.
   ========================================================================== */

@media (hover: none), (max-width: 560px) {
  .caviro-beach-card {
    aspect-ratio: auto;
    min-height: 460px;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
  }

  .caviro-beach-card__content {
    position: relative; /* μεγαλώνει την κάρτα αντί να κόβεται */
    padding: 20px 20px 22px;
  }

  .caviro-beach-card__title {
    font-size: clamp(24px, 6.5vw, 28px) !important;
  }

  .caviro-beach-card__extra,
  .caviro-beach-card:hover .caviro-beach-card__extra {
    max-height: none;
    opacity: 1;
    margin-top: 10px;
  }

  /* Πιο σκούρο gradient αφού το κείμενο φαίνεται μόνιμα */
  .caviro-beach-card::after {
    background: linear-gradient(180deg,
      rgba(7, 43, 49, 0) 15%,
      rgba(7, 43, 49, 0.6) 45%,
      rgba(7, 43, 49, 0.9) 100%);
  }

  /* Χωρίς zoom/σκοτείνιασμα στο tap */
  .caviro-beach-card:hover .caviro-beach-card__zoom {
    transform: none;
    filter: brightness(1.05);
  }
}

/* Desktop: μεγαλύτερο όριο ώστε να μην κόβονται τα μεγάλα κείμενα (π.χ. Πολιόχνη) */
@media (hover: hover) and (min-width: 561px) {
  .caviro-beach-card:hover .caviro-beach-card__extra {
    max-height: 400px;
  }
}