/* =====================================================================
   Template-2 (Equatorial Wild Safaris) — Prototype Overrides
   ---------------------------------------------------------------------
   Additive overrides ONLY. The original stock style.css is untouched.
   Harmonises the curated sections (home1/3/4/5) into one cohesive,
   cinematic homepage and adds premium motion.
   ===================================================================== */

:root {
    --ews-primary: #63ab45;      /* savanna green */
    --ews-secondary: #c8902f;    /* warm gold */
    --ews-ink: #1c1a17;          /* deep earth */
    --ews-overlay: rgba(16, 12, 8, 0.55);
}

/* ---------------------------------------------------------------------
   1. Cinematic hero — Ken Burns zoom + deeper overlay + lifted text
   --------------------------------------------------------------------- */
/* Make the hero genuinely fullscreen. The stock template only sized this
   via content padding (170px + text + 230px ≈ 600-700px) — nowhere near
   a "FULLSCREEN cinematic video" hero. Force real viewport height and
   flex-center the text so it isn't glued to the top/bottom padding. */
.home3-banner-slider,
.home3-banner-slider .swiper-wrapper,
.home3-banner-slider .swiper-slide {
    min-height: 100vh;
}
.home3-banner-wrapper {
    min-height: 100vh;
    display: flex;
    align-items: center;
}
@supports (height: 100svh) {
    .home3-banner-slider,
    .home3-banner-slider .swiper-wrapper,
    .home3-banner-slider .swiper-slide,
    .home3-banner-wrapper {
        min-height: 100svh;
    }
}
@media (max-width: 767px) {
    .home3-banner-slider,
    .home3-banner-slider .swiper-wrapper,
    .home3-banner-slider .swiper-slide,
    .home3-banner-wrapper {
        min-height: 85vh;
    }
    @supports (height: 85svh) {
        .home3-banner-slider,
        .home3-banner-slider .swiper-wrapper,
        .home3-banner-slider .swiper-slide,
        .home3-banner-wrapper {
            min-height: 85svh;
        }
    }
}
.home3-banner-area .home3-banner-wrapper {
    position: relative;
    overflow: hidden;
    background-blend-mode: multiply;
}
/* Ken Burns zoom, done via a background layer + transform:scale rather than
   animating background-size directly. Animating background-size as a fixed
   percentage (the old approach) only guaranteed full coverage at the exact
   box proportions it was tuned for — once the hero became a real 100vh box
   (see above), photo slides no longer filled edge-to-edge at every frame,
   leaving visible gaps top/bottom. A ::before layer that starts at
   background-size:cover (always gap-free by definition) and is scaled up
   via transform can never under-cover, at any viewport height. */
.home3-banner-area .home3-banner-wrapper::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image: inherit;
    background-size: cover;
    background-position: center center;
    background-blend-mode: multiply;
    z-index: 0;
    transform-origin: center center;
}
.home3-banner-content-wrap {
    position: relative;
    z-index: 2;
}
.home3-banner-slider .swiper-slide-active .home3-banner-wrapper::before {
    animation: ewsKenBurns 12s ease-out forwards;
}
@keyframes ewsKenBurns {
    0%   { transform: scale(1.04); }
    100% { transform: scale(1.16); }
}
.home3-banner-content h1,
.home3-banner-content h2 {
    text-shadow: 0 2px 24px rgba(0, 0, 0, 0.4);
    letter-spacing: -0.5px;
}
.home3-banner-content .eg-tag span {
    backdrop-filter: blur(4px);
    background: rgba(255, 255, 255, 0.12);
}
/* Staggered entrance for hero text on the active slide */
.home3-banner-slider .swiper-slide-active .eg-tag { animation: ewsFadeUp .8s .2s both; }
.home3-banner-slider .swiper-slide-active h1,
.home3-banner-slider .swiper-slide-active h2 { animation: ewsFadeUp .9s .35s both; }
.home3-banner-slider .swiper-slide-active .banner-content-bottom { animation: ewsFadeUp 1s .55s both; }

/* ---------------------------------------------------------------------
   2. Cinematic full-bleed video band
   --------------------------------------------------------------------- */
.ews-video-band {
    position: relative;
    overflow: hidden;
    padding: 160px 0;
    display: flex;
    align-items: center;
    min-height: 70vh;
}
.ews-video-bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
}
.ews-video-overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    background: radial-gradient(ellipse at center,
                rgba(16, 12, 8, 0.35) 0%, rgba(16, 12, 8, 0.78) 100%);
}
.ews-video-band .container { position: relative; z-index: 2; }
.ews-video-content { color: #fff; }
.ews-video-tag {
    display: inline-block;
    text-transform: uppercase;
    letter-spacing: 3px;
    font-size: 14px;
    font-weight: 600;
    color: var(--ews-secondary);
    margin-bottom: 18px;
}
.ews-video-content h2 {
    color: #fff;
    font-size: clamp(32px, 5vw, 58px);
    line-height: 1.05;
    margin-bottom: 18px;
    text-shadow: 0 2px 30px rgba(0, 0, 0, 0.5);
}
.ews-video-content p {
    color: rgba(255, 255, 255, 0.85);
    max-width: 640px;
    margin: 0 auto 34px;
    font-size: 18px;
}
/* Pulsing play button */
.ews-video-play {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 86px;
    height: 86px;
    border-radius: 50%;
    background: var(--ews-secondary);
    color: #fff;
    font-size: 34px;
    transition: transform .3s ease, background .3s ease;
}
.ews-video-play:hover { transform: scale(1.08); background: var(--ews-primary); color: #fff; }
.ews-video-play .play-pulse {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background: var(--ews-secondary);
    opacity: .6;
    animation: ewsPulse 2.2s infinite;
    z-index: -1;
}
@keyframes ewsPulse {
    0%   { transform: scale(1);   opacity: .6; }
    70%  { transform: scale(1.8); opacity: 0; }
    100% { transform: scale(1.8); opacity: 0; }
}
.ews-video-cta-label {
    margin-top: 18px !important;
    text-transform: uppercase;
    letter-spacing: 2px;
    font-size: 13px;
    color: rgba(255, 255, 255, 0.75) !important;
}

/* ---------------------------------------------------------------------
   3. Consistent vertical rhythm between grafted sections
   --------------------------------------------------------------------- */
.home4-destination-card-slider-section,
.home4-about-section,
.home5-activity-card-slider-section,
.home4-banner2-area,
.home4-testimonial-section,
.home3-blog-section,
.ews-video-band,
.ews-trust-bar,
.ews-cta-band,
.ews-newsletter-section {
    scroll-margin-top: 90px;
}
@media (max-width: 991px) {
    .ews-video-band { padding: 100px 0; min-height: 60vh; }
}

/* ---------------------------------------------------------------------
   4. Featured Experiences — Netflix-like hover lift
   --------------------------------------------------------------------- */
.home5-activity-card-slider-section .activity-card {
    transition: transform 0.4s ease, box-shadow 0.4s ease;
    will-change: transform;
}
.home5-activity-card-slider-section .activity-card:hover {
    transform: translateY(-8px);
    box-shadow: 0 24px 48px rgba(0, 0, 0, 0.25);
}

/* ---------------------------------------------------------------------
   5. Section title accent — unify to brand green (matches the Reels and
      Safari Stories sections, which had this overridden to green already;
      this base rule previously left every other section on gold instead).
   NOTE: deliberately excludes .section-title4 .eg-section-tag span — that
   tag has a solid green splash background (mask-image, see stock style.css
   ~L1587), so its text must stay white (the stock default) for contrast.
   Applying this same green here previously made it green-on-green/invisible.
   --------------------------------------------------------------------- */
.section-title span,
.section-title3 span {
    color: var(--ews-primary);
}
.home4-banner2-area .home4-banner2-content h2 strong { color: var(--ews-secondary); }

/* ---------------------------------------------------------------------
   6. Scroll-reveal (driven by IntersectionObserver in init.js)
   --------------------------------------------------------------------- */
.ews-reveal {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity .8s cubic-bezier(.22,.61,.36,1),
                transform .8s cubic-bezier(.22,.61,.36,1);
    will-change: opacity, transform;
}
.ews-reveal.is-visible {
    opacity: 1;
    transform: none;
}

@keyframes ewsFadeUp {
    from { opacity: 0; transform: translateY(30px); }
    to   { opacity: 1; transform: none; }
}

/* ---------------------------------------------------------------------
   7. Premium conversion CTA band  (reuses Home4 testimonial bg treatment)
   --------------------------------------------------------------------- */
.ews-cta-band {
    background-image: url(../assets/img/home4/hom4-testiomial-bg.png), linear-gradient(180deg, #1d231f 0%, #1d231f 100%);
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center;
    padding: 90px 0;
    position: relative;
    overflow: hidden;
}
.ews-cta-band::before {
    content: url(../assets/img/home4/vector/testi-vector1.svg);
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    left: 0;
    pointer-events: none;
}
.ews-cta-band::after {
    content: url(../assets/img/home4/vector/testi-vector2.svg);
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    right: 0;
    pointer-events: none;
}
@media (max-width: 991px) {
    .ews-cta-band::before,
    .ews-cta-band::after { display: none; }
}
.ews-cta-card {
    position: relative;
    z-index: 1;
}
.ews-cta-tag {
    display: inline-block;
    text-transform: uppercase;
    letter-spacing: 3px;
    font-size: 13px;
    font-weight: 600;
    color: var(--ews-secondary);
    margin-bottom: 14px;
}
.ews-cta-band h2 {
    color: #fff;
    font-size: clamp(28px, 4vw, 44px);
    line-height: 1.1;
    margin-bottom: 18px;
}
.ews-cta-band h2 span { color: var(--ews-secondary); }
.ews-cta-band p {
    color: rgba(255,255,255,.72);
    font-size: 17px;
    line-height: 1.6;
    margin-bottom: 28px;
    max-width: 520px;
}
.ews-cta-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 14px 28px;
    margin-bottom: 10px;
}
.ews-cta-meta span {
    color: rgba(255,255,255,.85);
    font-size: 15px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.ews-cta-meta span i {
    color: var(--ews-primary);
    font-size: 16px;
}
.ews-cta-small {
    margin-top: 18px !important;
    color: rgba(255,255,255,.55) !important;
    font-size: 14px !important;
}
.ews-cta-small a {
    color: var(--ews-secondary);
    text-decoration: none;
    font-weight: 500;
}
.ews-cta-small a:hover { text-decoration: underline; }
/* Explicit button override inside dark CTA band */
.ews-cta-band .primary-btn4 {
    padding: 4px;
    border: 1px solid rgba(255,255,255,.25);
    border-radius: 6px;
    display: inline-block;
    transition: border-color .3s ease;
}
.ews-cta-band .primary-btn4:hover {
    border-color: var(--ews-secondary);
}
.ews-cta-band .primary-btn4 span {
    background: linear-gradient(135deg, var(--ews-primary) 0%, #4a8f32 100%);
    color: #fff;
    font-weight: 600;
    font-size: 16px;
    padding: 18px 36px;
    border-radius: 5px;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    position: relative;
    overflow: hidden;
    z-index: 1;
}
.ews-cta-band .primary-btn4 span svg { fill: #fff; }
.ews-cta-band .primary-btn4 span::after {
    content: '';
    position: absolute;
    top: 0; left: -75%;
    width: 50%; height: 100%;
    background: rgba(255,255,255,.15);
    transform: skewX(25deg);
    transition: left .5s ease;
    z-index: -1;
}
.ews-cta-band .primary-btn4:hover span::after { left: 125%; }
@media (max-width: 991px) {
    .ews-cta-band { padding: 60px 0; }
    .ews-cta-meta { flex-direction: column; gap: 10px; }
}
@media (max-width: 576px) {
    .ews-cta-band { padding: 48px 0; }
}

/* ---------------------------------------------------------------------
   8. Card image zoom on hover (activity + destination — both now share
      the same destination-card2/style-2 component, see activities_card
      partial). Note: the destination-card-img selector below intentionally
      matches ".destination-card2:hover", not ".destination-card:hover" —
      "destination-card" (no trailing 2) doesn't exist in this template's
      markup and never matched.
   --------------------------------------------------------------------- */
.home5-activity-card-slider-section .destination-card-img,
.home4-destination-card-slider-section .destination-card-img {
    overflow: hidden;
    border-radius: 12px;
}
.home5-activity-card-slider-section .destination-card-img img,
.home4-destination-card-slider-section .destination-card-img img {
    transition: transform 0.7s cubic-bezier(.22,.61,.36,1);
    will-change: transform;
}
.home5-activity-card-slider-section .destination-card2:hover .destination-card-img img,
.home4-destination-card-slider-section .destination-card2:hover .destination-card-img img {
    transform: scale(1.12);
}

/* ---------------------------------------------------------------------
   9. Smooth scroll
   --------------------------------------------------------------------- */
html { scroll-behavior: smooth; }

/* ---------------------------------------------------------------------
   10. Typography refinement
   --------------------------------------------------------------------- */
body {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
.home3-banner-content h1 {
    font-weight: 700;
    letter-spacing: -1px;
    line-height: 1.05;
}
.home3-banner-content h2 {
    font-weight: 700;
    letter-spacing: -0.8px;
    line-height: 1.1;
}
.section-title3 h2,
.section-title2 h2,
.section-title4 h2 {
    letter-spacing: -0.6px;
    line-height: 1.15;
}

/* ---------------------------------------------------------------------
   11. Newsletter spacing
   --------------------------------------------------------------------- */
.banner3-section { margin-bottom: 0; }

/* ---------------------------------------------------------------------
   12. Safari Shorts / Reels band
   --------------------------------------------------------------------- */
.ews-reels-band { scroll-margin-top: 90px; }
.ews-reels-band .section-title3 > span {
    color: var(--ews-primary) !important;
}
.ews-reels-band .section-title3 h2 span {
    color: var(--ews-primary) !important;
}
.ews-reels-band .section-title3 h2::after {
    background-color: rgba(99, 171, 69, .15) !important;
}
.ews-reels-btn-col {
    display: flex;
    align-items: center;
}
.ews-reels-nav {
    gap: 16px;
}
.ews-reels-nav .slider-btn {
    cursor: pointer;
}
.ews-reels-nav .slider-btn.is-disabled {
    opacity: .2;
    pointer-events: none;
}
.ews-reels-nav .slider-btn.is-disabled:hover svg {
    stroke: var(--primary-color1);
}
@media (max-width: 767px) {
    .ews-reels-nav { display: none; }
}
@media (max-width: 991px) {
    .ews-reels-band .row.mb-40 { margin-bottom: 24px !important; }
    .ews-reels-btn-col {
        justify-content: flex-start;
        margin-top: 16px;
    }
    .ews-reels-band { padding-bottom: 20px; }
}
@media (max-width: 576px) {
    .ews-reels-btn-col { margin-top: 12px; }
    .ews-reels-track { gap: 14px; padding-bottom: 16px; }
}
.ews-reels-track,
.ews-stories-track {
    display: flex;
    gap: 20px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    padding-bottom: 10px;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    cursor: grab;
}
.ews-reels-track.is-grabbing,
.ews-stories-track.is-grabbing {
    cursor: grabbing;
    scroll-behavior: auto;
    scroll-snap-type: none;
    user-select: none;
}
.ews-reels-track.is-grabbing a,
.ews-reels-track.is-grabbing img,
.ews-stories-track.is-grabbing a,
.ews-stories-track.is-grabbing img {
    pointer-events: none;
}
.ews-reels-track::-webkit-scrollbar,
.ews-stories-track::-webkit-scrollbar { display: none; }
.ews-reel-card {
    flex: 0 0 auto;
    width: 220px;
    scroll-snap-align: start;
}
/* Stories row (Safari News "All" tab) — same track behavior as reels,
   just sized for the wider .blog-card component instead of a 9:16 reel. */
.ews-story-card {
    flex: 0 0 auto;
    width: 320px;
    scroll-snap-align: start;
}
@media (max-width: 767px) {
    .ews-story-card { width: 260px; }
}
.ews-reel-thumb {
    display: block;
    position: relative;
    border-radius: 16px;
    overflow: hidden;
    aspect-ratio: 9 / 16;
    background: #1c1a17;
}
.ews-reel-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.6s cubic-bezier(.22,.61,.36,1);
}
.ews-reel-thumb:hover img { transform: scale(1.08); }
.ews-reel-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,.65) 0%, rgba(0,0,0,.1) 45%, rgba(0,0,0,.2) 100%);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    transition: background .3s ease;
}
.ews-reel-thumb:hover .ews-reel-overlay {
    background: linear-gradient(to top, rgba(0,0,0,.75) 0%, rgba(0,0,0,.25) 45%, rgba(0,0,0,.35) 100%);
}
.ews-reel-play {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: rgba(255,255,255,.18);
    backdrop-filter: blur(6px);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    transition: transform .3s ease, background .3s ease;
    margin-bottom: auto;
    margin-top: 40%;
}
.ews-reel-thumb:hover .ews-reel-play {
    transform: scale(1.12);
    background: var(--ews-secondary);
}
.ews-reel-duration {
    position: absolute;
    bottom: 12px;
    right: 12px;
    background: rgba(0,0,0,.55);
    color: #fff;
    font-size: 12px;
    font-weight: 500;
    padding: 4px 10px;
    border-radius: 20px;
    letter-spacing: .3px;
}
.ews-reel-meta { padding-top: 14px; }
.ews-reel-meta h6 {
    font-size: 15px;
    font-weight: 600;
    margin-bottom: 6px;
    line-height: 1.3;
    color: var(--ews-ink);
}
.ews-reel-meta span {
    font-size: 13px;
    color: #777;
    display: inline-flex;
    align-items: center;
    gap: 5px;
}
.ews-reel-meta span svg { fill: #999; }
@media (max-width: 767px) {
    .ews-reel-card { width: 170px; }
    .ews-reel-meta h6 { font-size: 14px; }
}

/* Muted-autoplay hover preview: poster stays put, video fades in on top. */
.ews-reel-preview {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0;
    transition: opacity .35s ease;
    pointer-events: none;
}
.ews-reel-thumb:hover .ews-reel-preview,
.ews-reel-thumb:focus-within .ews-reel-preview {
    opacity: 1;
}

/* ---------------------------------------------------------------------
   13. Safari Stories — All / Stories / Reels feed tabs
   --------------------------------------------------------------------- */
.ews-feed-tabs {
    display: flex;
    gap: 10px;
    margin-top: 60px;
    margin-bottom: 32px;
}
@media (max-width: 767px) {
    .ews-feed-tabs { margin-top: 40px; }
}
.ews-feed-tab {
    border: 1px solid #e2e2e2;
    background: #fff;
    color: #666;
    font-size: 14px;
    font-weight: 500;
    padding: 9px 22px;
    border-radius: 30px;
    cursor: pointer;
    transition: all .2s ease;
}
.ews-feed-tab:hover {
    border-color: var(--ews-primary);
    color: var(--ews-primary);
}
.ews-feed-tab.is-active {
    background: var(--ews-primary);
    border-color: var(--ews-primary);
    color: #fff;
}

/* Reels as a real, paginated wall on Safari Stories — reuses .ews-reel-card
   as-is (it's already a fixed-width flex item), just wrapped instead of
   scrolled. The homepage teaser band keeps the horizontal scroller/arrows;
   this page is the full catalog and needs real pagination instead. */
.ews-reels-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 24px 20px;
}

/* ---------------------------------------------------------------------
   13. Reduced-motion accessibility
   --------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    .home3-banner-slider .swiper-slide-active .home3-banner-wrapper,
    .ews-video-play .play-pulse,
    .home3-banner-slider .swiper-slide-active .eg-tag,
    .home3-banner-slider .swiper-slide-active h1,
    .home3-banner-slider .swiper-slide-active h2,
    .home3-banner-slider .swiper-slide-active .banner-content-bottom {
        animation: none !important;
    }
    .ews-reveal { opacity: 1; transform: none; transition: none; }
    .ews-video-bg { display: none; }
    html { scroll-behavior: auto; }
}

/* ---------------------------------------------------------------------
   14. Desktop logo fix (.company-logo has no template CSS)
   --------------------------------------------------------------------- */
header.style-3 .company-logo {
    padding: 15px 0;
}
header.style-3 .company-logo img {
    max-width: 165px;
    width: 100%;
    height: auto;
    display: block;
}
@media(max-width:576px){
    header.style-3 .company-logo img { max-width: 135px; }
}

/* -----------------------------------------------------------------
   15. Testimonial section spacing fix (60px gap from section above)
   ----------------------------------------------------------------- */
.home4-testimonial-section {
    margin-top: 60px;
}

/* -----------------------------------------------------------------
   16. Sidebar & mobile menu logo visibility fix
   ----------------------------------------------------------------- */
.sidebar-logo-wrap img,
.mobile-logo-wrap img {
    max-width: 165px;
    width: 100%;
    height: auto;
    display: block;
}

/* -----------------------------------------------------------------
   17. Custom preloader with EWS logo
   ----------------------------------------------------------------- */
.ews-preloader-brand {
    background: none !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 16px;
    width: 100%;
    max-width: 100%;
    height: auto;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
.ews-preloader-brand .ews-preloader-logo {
    width: 80px;
    height: auto;
    display: block;
    animation: ews-pulse 1.8s ease-in-out infinite;
}
.ews-preloader-brand .ews-preloader-text {
    font-family: var(--font-rubik);
    font-size: 13px;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--title-color);
    opacity: 0.6;
}
@keyframes ews-pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.08); }
}
@media (prefers-reduced-motion: reduce) {
    .ews-preloader-brand .ews-preloader-logo {
        animation: none;
    }
}

/* -----------------------------------------------------------------
   18. Quick Trust Indicators bar
   ----------------------------------------------------------------- */
.ews-trust-bar {
    padding: 40px 0;
    background: transparent;
    border-top: 1px solid rgba(0,0,0,.07);
    border-bottom: 1px solid rgba(0,0,0,.07);
}
.trust-item {
    padding: 18px 10px;
}
.trust-item i {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: rgba(99, 171, 69, .08);
    color: var(--ews-primary);
    font-size: 20px;
    margin-bottom: 14px;
}
.trust-number {
    display: block;
    font-family: var(--font-rubik);
    font-size: 28px;
    font-weight: 700;
    color: var(--ews-ink);
    line-height: 1.2;
    margin-bottom: 6px;
}
.trust-label {
    display: block;
    font-size: 14px;
    color: #666;
    line-height: 1.4;
}
@media (max-width: 767px) {
    .ews-trust-bar { padding: 36px 0; }
    .trust-number { font-size: 22px; }
}

/* -----------------------------------------------------------------
   19. Sticky WhatsApp button
   ----------------------------------------------------------------- */
.ews-whatsapp-float {
    position: fixed;
    bottom: 24px;
    right: 24px;
    z-index: 999;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: #25d366;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 28px;
    text-decoration: none;
    box-shadow: 0 4px 16px rgba(37, 211, 102, .35);
    transition: transform .3s ease, box-shadow .3s ease;
}
.ews-whatsapp-float:hover {
    transform: scale(1.08);
    box-shadow: 0 6px 24px rgba(37, 211, 102, .45);
    color: #fff;
}
.ews-whatsapp-pulse {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background: #25d366;
    opacity: .5;
    animation: ewsWAPulse 2.5s infinite;
    z-index: -1;
}
@keyframes ewsWAPulse {
    0%   { transform: scale(1);   opacity: .5; }
    70%  { transform: scale(1.6); opacity: 0; }
    100% { transform: scale(1.6); opacity: 0; }
}
@media (max-width: 576px) {
    .ews-whatsapp-float {
        width: 48px;
        height: 48px;
        font-size: 24px;
        bottom: 16px;
        right: 16px;
    }
}
@media (prefers-reduced-motion: reduce) {
    .ews-whatsapp-pulse { animation: none; }
}

/* -----------------------------------------------------------------
   19b. Safari Stories header (matches homepage section-title3 pattern)
   ----------------------------------------------------------------- */
.home3-blog-section .section-title3 > span {
    display: inline-block;
    text-transform: uppercase;
    letter-spacing: 2px;
    font-size: 14px;
    font-weight: 600;
    color: var(--ews-primary);
    margin-bottom: 12px;
}
.home3-blog-section .section-title3 h2 span {
    color: var(--ews-primary);
    position: relative;
    z-index: 1;
}
.home3-blog-section .section-title3 h2::after {
    background-color: rgba(99, 171, 69, .15);
}
.ews-stories-btn-col {
    display: flex;
    align-items: center;
}
@media (max-width: 991px) {
    .home3-blog-section .row.mb-50 { margin-bottom: 28px !important; }
    .ews-stories-btn-col {
        justify-content: flex-start;
        margin-top: 18px;
    }
}

/* -----------------------------------------------------------------
   20. Newsletter signup band
   ----------------------------------------------------------------- */
.ews-newsletter-section {
    background: linear-gradient(180deg, #f7f5f2 0%, #edeae5 100%);
}
.ews-newsletter-card {
    background: #fff;
    border-radius: 16px;
    padding: 60px 48px;
    box-shadow: 0 12px 40px rgba(0, 0, 0, .06);
    border: 1px solid rgba(0, 0, 0, .04);
}
.ews-newsletter-card .section-title3 h2 {
    font-size: clamp(26px, 4vw, 38px);
}
@media (max-width: 767px) {
    .ews-newsletter-card { padding: 40px 24px; }
}
.ews-newsletter-form {
    max-width: 520px;
    margin: 0 auto;
}
.ews-newsletter-form .form-control {
    flex: 1 1 260px;
    min-width: 0;
    height: 54px;
    border-radius: 6px;
    border: 1px solid #ddd;
    padding: 0 18px;
    font-size: 15px;
}
.ews-newsletter-form .form-control:focus {
    border-color: var(--ews-primary);
    box-shadow: 0 0 0 3px rgba(99, 171, 69, .1);
}
.ews-newsletter-form .primary-btn4 span {
    padding: 16px 28px;
    font-size: 15px;
}

/* --- Bold green card variant (sits on the light band as a breather
       between the two dark #1d231f blocks: CTA band + footer) --- */
.ews-newsletter-card.style-green {
    background: linear-gradient(135deg, #3f7e2c 0%, #2f6b22 55%, #265a1c 100%);
    border: none;
    box-shadow: 0 24px 60px rgba(38, 90, 28, .28);
    position: relative;
    overflow: hidden;
}
.ews-newsletter-card.style-green::before {
    content: '';
    position: absolute;
    top: -60px;
    right: -60px;
    width: 240px;
    height: 240px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .06);
    pointer-events: none;
}
.ews-newsletter-card.style-green::after {
    content: '';
    position: absolute;
    bottom: -90px;
    left: -70px;
    width: 260px;
    height: 260px;
    border-radius: 50%;
    background: rgba(0, 0, 0, .08);
    pointer-events: none;
}
.ews-newsletter-card.style-green > .text-center {
    position: relative;
    z-index: 1;
}
.ews-newsletter-badge {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 22px;
    color: #fff;
    background: rgba(255, 255, 255, .12);
    border: 1px solid rgba(255, 255, 255, .25);
}
.ews-newsletter-card.style-green .eg-section-tag span {
    color: var(--ews-secondary);
}
.ews-newsletter-card.style-green .section-title3 h2 {
    color: #fff;
}
/* Neutralize the centered green highlight bar on the green card */
.ews-newsletter-card.style-green .section-title3 h2::after {
    display: none;
}
.ews-newsletter-card.style-green .section-title3 p {
    color: rgba(255, 255, 255, .82);
}
.ews-newsletter-card.style-green .ews-newsletter-form .form-control {
    background: #fff;
    border-color: transparent;
    color: var(--ews-ink);
}
.ews-newsletter-card.style-green .ews-newsletter-form .form-control:focus {
    border-color: var(--ews-secondary);
    box-shadow: 0 0 0 3px rgba(200, 144, 47, .25);
}
/* Subscribe button switches to gold so it stays legible on green */
.ews-newsletter-card.style-green .ews-newsletter-form .primary-btn4 span {
    background: var(--ews-secondary);
    color: var(--ews-ink);
}
.ews-newsletter-card.style-green .ews-newsletter-form .primary-btn4 span svg {
    fill: var(--ews-ink);
}
.ews-newsletter-note {
    font-size: 13px;
    color: #777;
}
.ews-newsletter-card.style-green .ews-newsletter-note {
    color: rgba(255, 255, 255, .7);
}

/* -----------------------------------------------------------------
   21. Inquiry CTA multi-field form
   ----------------------------------------------------------------- */
.ews-inquiry-form label {
    display: block;
    font-size: 13px;
    font-weight: 500;
    color: rgba(255,255,255,.7);
    margin-bottom: 6px;
    text-transform: uppercase;
    letter-spacing: .5px;
}
.ews-inquiry-form .form-control,
.ews-inquiry-form .form-select {
    height: 46px;
    border-radius: 6px;
    border: 1px solid rgba(255,255,255,.15);
    background: rgba(255,255,255,.06);
    color: #fff;
    font-size: 14px;
    padding: 0 14px;
    width: 100%;
    transition: border-color .3s ease, background .3s ease;
}
.ews-inquiry-form .form-control::placeholder {
    color: rgba(255,255,255,.4);
}
.ews-inquiry-form .form-control:focus,
.ews-inquiry-form .form-select:focus {
    border-color: var(--ews-secondary);
    background: rgba(255,255,255,.1);
    outline: none;
    box-shadow: none;
}
.ews-inquiry-form textarea.form-control {
    height: auto;
    padding: 10px 14px;
    resize: vertical;
}
.ews-inquiry-form .form-select {
    appearance: auto;
    -webkit-appearance: menulist;
}
.ews-inquiry-form .form-select option {
    background: var(--ews-ink);
    color: #fff;
}
.ews-inquiry-form button.primary-btn4 span {
    padding: 16px 32px;
    font-size: 15px;
}
.ews-inquiry-form + .ews-cta-small,
.ews-inquiry-form .ews-cta-small {
    color: rgba(255,255,255,.55) !important;
    font-size: 14px !important;
}
.ews-inquiry-form .ews-cta-small a {
    color: var(--ews-secondary);
    text-decoration: none;
    font-weight: 500;
}
.ews-inquiry-form .ews-cta-small a:hover {
    text-decoration: underline;
}
@media (max-width: 991px) {
    .ews-inquiry-form button.primary-btn4 { margin-top: 4px; }
}

/* -----------------------------------------------------------------
   22. Hybrid hero video-background slide
   ----------------------------------------------------------------- */
.home3-banner-video-slide {
    position: relative;
    overflow: hidden;
    background: #1a1714;
}
.home3-banner-video-bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
}
.home3-banner-video-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(16, 12, 8, 0.55) 0%, rgba(16, 12, 8, 0.7) 100%);
    z-index: 1;
}
.home3-banner-video-slide .home3-banner-content-wrap {
    position: relative;
    z-index: 2;
}
/* Disable Ken-Burns on video slides; let the motion come from the video */
.home3-banner-slider .swiper-slide-active .home3-banner-video-slide {
    animation: none;
}
@media (max-width: 767px) {
    .home3-banner-video-bg {
        object-position: center center;
    }
}

/* -----------------------------------------------------------------
   23. Video testimonial cards (hybrid thumbnail + lightbox)
   ----------------------------------------------------------------- */
.video-testimonial-card {
    padding: 0;
    border-radius: 12px;
    overflow: hidden;
    background: transparent;
    box-shadow: 0 10px 30px rgba(28, 26, 23, 0.12);
}
.video-testimonial-link {
    display: block;
    position: relative;
    aspect-ratio: 16 / 10;
    background-size: cover;
    background-position: center;
    border-radius: 12px;
    overflow: hidden;
    text-decoration: none;
}
.video-testimonial-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(28, 26, 23, 0.25) 0%, rgba(28, 26, 23, 0.72) 100%);
    transition: background 0.3s ease;
}
.video-testimonial-link:hover .video-testimonial-overlay {
    background: linear-gradient(180deg, rgba(28, 26, 23, 0.35) 0%, rgba(28, 26, 23, 0.82) 100%);
}
.video-testimonial-play {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 64px;
    height: 64px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.95);
    color: var(--ews-primary);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25);
    transition: transform 0.3s ease, background 0.3s ease;
}
.video-testimonial-link:hover .video-testimonial-play {
    transform: translate(-50%, -50%) scale(1.08);
    background: #fff;
}
.video-testimonial-play i {
    font-size: 28px;
    margin-left: 3px;
}
.video-testimonial-meta {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 22px 24px;
    color: #fff;
}
.video-testimonial-meta h5 {
    font-size: 18px;
    font-weight: 600;
    margin-bottom: 4px;
    color: #fff;
}
.video-testimonial-meta span {
    font-size: 14px;
    color: rgba(255, 255, 255, 0.82);
}
@media (max-width: 767px) {
    .video-testimonial-link {
        aspect-ratio: 16 / 10;
    }
}
/* Text pull-quote cards are now mixed into the same deck as video
   testimonials — stretch + center them so they don't sit top-aligned
   in a slide row stretched taller by a neighboring video thumbnail. */
.home4-testimonial-section .swiper-slide {
    height: auto;
    display: flex;
}
.home4-testimonial-section .swiper-slide > .testimonial-card2 {
    width: 100%;
}
.home4-testimonial-section .testimonial-card2.style-2:not(.video-testimonial-card) {
    display: flex;
    flex-direction: column;
    justify-content: center;
}
/* Video cards: fill the full (flex-stretched) card height rather than
   stopping at a fixed 16:10 aspect-ratio — otherwise the thumbnail is
   shorter than its taller text-card neighbor, leaving a visible gap
   below it. background-size:cover crops gracefully at any height. */
.home4-testimonial-section .testimonial-card2.style-2.video-testimonial-card {
    display: flex;
    height: 100%;
}
.home4-testimonial-section .video-testimonial-link {
    flex: 1;
    aspect-ratio: unset;
}

/* -----------------------------------------------------------------
   24. Trust bar partner badges
   ----------------------------------------------------------------- */
.ews-trust-partners {
    text-align: center;
}
.partners-eyebrow {
    display: block;
    font-size: 13px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    color: var(--ews-ink);
    opacity: 0.6;
    margin-bottom: 18px;
}
/* "As featured in" logo row — grayscale/muted until hover. Real logos
   (once available) drop into .partner-logo as <img>, replacing the
   text <span>; the box/hover treatment needs no changes either way. */
.partners-logo-row {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 20px 48px;
}
.partner-logo {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 44px;
    padding: 0 16px;
    border: 1.5px solid rgba(var(--ews-ink-rgb, 30,30,30), 0.15);
    border-radius: 6px;
    filter: grayscale(100%);
    opacity: 0.65;
    transition: filter 0.3s ease, opacity 0.3s ease, transform 0.3s ease, border-color 0.3s ease;
}
.partner-logo:hover {
    filter: grayscale(0%);
    opacity: 1;
    transform: translateY(-2px);
    border-color: rgba(var(--ews-ink-rgb, 30,30,30), 0.35);
}
.partner-logo img {
    max-height: 100%;
    width: auto;
}
.partner-logo span {
    font-family: var(--font-jost);
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.8px;
    text-transform: uppercase;
    color: var(--ews-ink);
    white-space: nowrap;
}
@media (max-width: 576px) {
    .partners-logo-row {
        gap: 12px 20px;
    }
    .partner-logo span {
        font-size: 11px;
    }
}

/* -----------------------------------------------------------------
   24. Interactive destination map (Leaflet)
   ----------------------------------------------------------------- */
.ews-destination-map {
    width: 100%;
    height: 500px;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 20px 50px rgba(28, 26, 23, 0.12);
    background: #e5e3df;
}
.ews-destination-map .leaflet-popup-content-wrapper {
    border-radius: 10px;
    padding: 0;
    overflow: hidden;
}
.ews-destination-map .leaflet-popup-content {
    margin: 0;
    width: 220px !important;
}
.ews-destination-map .map-popup-content {
    padding: 16px;
}
.ews-destination-map .map-popup-content h5 {
    font-family: var(--font-rubik);
    font-size: 18px;
    margin-bottom: 6px;
    color: var(--ews-ink);
}
.ews-destination-map .map-popup-content p {
    font-size: 13px;
    color: #666;
    margin-bottom: 12px;
    line-height: 1.45;
}
.ews-destination-map .map-popup-content a {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 600;
    color: var(--ews-primary);
    text-decoration: none;
}
.ews-destination-map .map-popup-content a:hover {
    color: var(--ews-secondary);
}
@media (max-width: 991px) {
    .ews-destination-map { height: 420px; }
}
@media (max-width: 767px) {
    .ews-destination-map { height: 350px; }
}

/* Branded map pin (replaces Leaflet's default blue marker) — plain SVG,
   so it's just CSS from here: recolor, resize, add a pulse, swap the
   shape entirely, or give specific destinations their own icon/photo.
   IMPORTANT: Leaflet positions each marker by setting `transform:
   translate3d(...)` directly on the .ews-map-pin div itself (that's the
   real icon element it tracks) — any CSS that also touches `transform`
   on .ews-map-pin fights Leaflet's own positioning and the marker ends
   up rendered in the wrong place. All animation/hover/transform lives on
   .ews-map-pin-inner, a plain child div Leaflet never touches, instead. */
.ews-map-pin {
    background: none;
    border: none;
}
.ews-map-pin-inner {
    width: 100%;
    height: 100%;
    filter: drop-shadow(0 6px 10px rgba(16, 12, 8, 0.35));
    transition: transform 0.25s ease;
    animation: ewsPinDrop 0.5s cubic-bezier(.34, 1.56, .64, 1) both;
}
.ews-map-pin:hover .ews-map-pin-inner {
    transform: translateY(-4px);
}
.ews-map-pin-body {
    fill: var(--ews-primary);
}
.ews-map-pin-dot {
    fill: #fff;
}
@keyframes ewsPinDrop {
    0%   { transform: translateY(-24px); opacity: 0; }
    100% { transform: translateY(0); opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
    .ews-map-pin-inner { animation: none; }
}

/* -----------------------------------------------------------------
   25. WhatsApp floating action button
   ----------------------------------------------------------------- */
.ews-whatsapp-float {
    position: fixed;
    bottom: 24px;
    right: 24px;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: #25d366;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 6px 20px rgba(37, 211, 102, 0.35);
    z-index: 9999;
    transition: transform 0.25s ease, box-shadow 0.25s ease;
    text-decoration: none;
}
.ews-whatsapp-float:hover {
    transform: scale(1.08) translateY(-2px);
    box-shadow: 0 10px 28px rgba(37, 211, 102, 0.45);
    color: #fff;
}
.ews-whatsapp-float svg {
    width: 28px;
    height: 28px;
}
@media (max-width: 576px) {
    .ews-whatsapp-float {
        width: 50px;
        height: 50px;
        bottom: 18px;
        right: 18px;
    }
    .ews-whatsapp-float svg {
        width: 24px;
        height: 24px;
    }
}

/* ===== EWS: Quick Inquiry Bar (replaces stock multi-tab booking widget)
   Card-in-card treatment modeled on the stock home1-banner-bottom booking
   widget's polish level (tinted background, generous padding, defined
   field chips) — without resurrecting its multi-tab layout. ===== */
.ews-quick-inquiry-bar {
    position: relative;
    z-index: 3;
    margin-top: -64px;
}
.ews-quick-inquiry-card {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    background: linear-gradient(180deg, #fbfbf7 0%, #f3f6ee 100%);
    border: 1px solid rgba(99, 171, 69, 0.12);
    border-radius: 24px;
    box-shadow: 0 30px 70px rgba(16, 12, 8, 0.22);
    padding: 16px;
}
.ews-quick-inquiry-form {
    display: flex;
    align-items: stretch;
    gap: 12px;
    flex: 1 1 auto;
    flex-wrap: wrap;
}
.ews-quick-inquiry-field {
    display: flex;
    align-items: center;
    gap: 14px;
    flex: 1 1 220px;
    background: #fff;
    border: 1px solid rgba(28, 26, 23, 0.08);
    border-radius: 16px;
    padding: 12px 20px;
    transition: border-color 0.25s ease, box-shadow 0.25s ease;
}
.ews-quick-inquiry-field:focus-within {
    border-color: var(--ews-primary);
    box-shadow: 0 0 0 3px rgba(99, 171, 69, 0.1);
}
.ews-quick-inquiry-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: rgba(99, 171, 69, 0.08);
    color: var(--ews-primary);
    flex-shrink: 0;
}
.ews-quick-inquiry-field > div {
    flex: 1;
    min-width: 0;
}
.ews-quick-inquiry-field label {
    display: block;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--ews-ink);
    opacity: 0.6;
    margin-bottom: 2px;
}
.ews-quick-inquiry-field select,
.ews-quick-inquiry-field input {
    border: none;
    padding: 0;
    font-size: 15px;
    font-weight: 500;
    color: var(--ews-ink);
    background: transparent;
    width: 100%;
}
.ews-quick-inquiry-field select:focus,
.ews-quick-inquiry-field input:focus {
    outline: none;
}
.ews-quick-inquiry-bar .primary-btn4 span {
    background: linear-gradient(135deg, var(--ews-primary) 0%, #4a8f32 100%);
}
.ews-quick-inquiry-whatsapp {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 20px;
    border-radius: 999px;
    background: #25d366;
    color: #fff;
    font-weight: 600;
    font-size: 14px;
    text-decoration: none;
    white-space: nowrap;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.ews-quick-inquiry-whatsapp:hover {
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(37, 211, 102, 0.35);
}
@media (max-width: 991px) {
    .ews-quick-inquiry-bar { margin-top: -32px; }
    .ews-quick-inquiry-card { padding: 12px; border-radius: 20px; }
    .ews-quick-inquiry-form { flex-direction: column; align-items: stretch; }
    /* flex-basis follows the main axis — 220px meant "min width" in the
       row layout above, but once flex-direction flips to column here it's
       read as a 220px *height* instead, forcing huge empty space under
       each field. Reset to natural content height when stacked. */
    .ews-quick-inquiry-field { flex: none; }
    .ews-quick-inquiry-form button.primary-btn4 { width: 100%; }
    .ews-quick-inquiry-form button.primary-btn4 span { width: 100%; justify-content: center; }
    .ews-quick-inquiry-whatsapp { justify-content: center; width: 100%; }
}

/* ===== EWS: Manifesto — one deliberately quiet, card-free beat ===== */
.ews-manifesto {
    padding: 140px 0;
    background: #f7f5f1;
}
.ews-manifesto-eyebrow {
    display: inline-block;
    text-transform: uppercase;
    letter-spacing: 4px;
    font-size: 13px;
    font-weight: 600;
    color: var(--ews-secondary);
    margin-bottom: 24px;
}
.ews-manifesto h2 {
    font-family: var(--font-jost);
    font-size: 42px;
    font-weight: 400;
    line-height: 1.4;
    color: var(--ews-ink);
    margin: 0;
}
.ews-manifesto h2 span {
    font-style: italic;
    color: var(--ews-primary);
}
@media (max-width: 767px) {
    .ews-manifesto { padding: 90px 0; }
    .ews-manifesto h2 { font-size: 28px; }
}

/* ===== EWS: Inner-page breadcrumb banner (About/Contact/etc.) ===== */
.ews-breadcrumb {
    padding: 170px 0 110px;
    position: relative;
}
.ews-breadcrumb::after {
    content: '';
    position: absolute;
    inset: auto 0 0 0;
    height: 80px;
    background: linear-gradient(180deg, rgba(16, 12, 8, 0) 0%, rgba(16, 12, 8, 0.35) 100%);
    pointer-events: none;
}
.ews-breadcrumb .banner-content h1 {
    font-family: var(--font-jost);
    font-weight: 600;
    letter-spacing: -0.5px;
    text-shadow: 0 2px 24px rgba(0, 0, 0, 0.4);
}
.ews-breadcrumb .banner-content .breadcrumb-list li a {
    color: var(--ews-primary);
    text-decoration: none;
}
.ews-breadcrumb .banner-content .breadcrumb-list li a:hover {
    color: var(--ews-secondary);
}
@media (max-width: 767px) {
    .ews-breadcrumb { padding: 130px 0 80px; }
}

/* ===== EWS: About page ===== */
.ews-about-img img {
    border-radius: 20px;
    box-shadow: 0 24px 60px rgba(16, 12, 8, 0.16);
}
.ews-about-values {
    list-style: none;
    padding: 0;
    margin: 24px 0 32px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.ews-about-values li {
    position: relative;
    padding-left: 26px;
    color: var(--text-color);
    line-height: 1.7;
}
.ews-about-values li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 9px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--ews-primary);
}
.ews-about-values li strong {
    color: var(--ews-ink);
}

.ews-about-stats .ews-about-stat h6 {
    display: inline;
    font-family: var(--font-rubik);
    font-size: 40px;
    font-weight: 700;
    color: var(--ews-ink);
    line-height: 1.1;
}
.ews-about-stats .ews-about-stat span {
    font-size: 40px;
    font-weight: 700;
    color: var(--ews-primary);
}
.ews-about-stats .ews-about-stat p {
    margin-top: 8px;
    color: var(--text-color);
    font-size: 15px;
}

.ews-team-card {
    text-align: center;
}
.ews-team-card-img {
    border-radius: 16px;
    overflow: hidden;
    margin-bottom: 18px;
}
.ews-team-card-img img {
    width: 100%;
    aspect-ratio: 3 / 4;
    object-fit: cover;
    transition: transform 0.5s ease;
}
.ews-team-card:hover .ews-team-card-img img {
    transform: scale(1.06);
}
.ews-team-card-content h5 {
    font-size: 18px;
    margin-bottom: 4px;
    color: var(--ews-ink);
}
.ews-team-card-content span {
    font-size: 13px;
    color: var(--ews-primary);
    font-weight: 500;
}

/* ===== EWS: Contact page ===== */
.ews-contact-info-card {
    display: flex;
    align-items: flex-start;
    gap: 18px;
    background: #fff;
    border: 1px solid rgba(28, 26, 23, 0.08);
    border-radius: 16px;
    padding: 22px 24px;
    box-shadow: 0 12px 32px rgba(16, 12, 8, 0.05);
}
.ews-contact-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: rgba(99, 171, 69, 0.08);
    color: var(--ews-primary);
    flex-shrink: 0;
}
.ews-contact-icon svg {
    fill: var(--ews-primary);
}
.ews-contact-icon i {
    font-size: 20px;
}
.ews-contact-info-card .title h6 {
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--ews-ink);
    opacity: 0.6;
    margin-bottom: 6px;
}
.ews-contact-info-card .content h6 {
    margin-bottom: 0;
    font-size: 16px;
}
.ews-contact-info-card .content h6 a {
    color: var(--ews-ink);
}
.ews-contact-info-card .content h6 a:hover {
    color: var(--ews-primary);
}

.ews-contact-form-card {
    background: #fff;
    border: 1px solid rgba(28, 26, 23, 0.08);
    border-radius: 24px;
    box-shadow: 0 24px 60px rgba(16, 12, 8, 0.08);
    padding: 48px;
}
@media (max-width: 767px) {
    .ews-contact-form-card { padding: 28px 20px; }
}
.ews-contact-form-card .form-inner input,
.ews-contact-form-card .form-inner textarea {
    border: 1px solid rgba(28, 26, 23, 0.12);
    border-radius: 10px;
    transition: border-color 0.25s ease, box-shadow 0.25s ease;
}
.ews-contact-form-card .form-inner input:focus,
.ews-contact-form-card .form-inner textarea:focus {
    outline: none;
    border-color: var(--ews-primary);
    box-shadow: 0 0 0 3px rgba(99, 171, 69, 0.1);
}
.ews-contact-form-card .primary-btn4 span {
    background: linear-gradient(135deg, var(--ews-primary) 0%, #4a8f32 100%);
}

/* Full-bleed map matching contact.html (no card/heading wrapper) — sizing
   is handled by stock .contact-map/.contact-map iframe rules already
   (width:100%, min-height:700px); the newsletter banner intentionally
   overlaps its bottom edge via the stock .contact-map .banner3-section
   absolute positioning, exactly as in the prototype. */
.ews-contact-map iframe {
    display: block;
}

/* ===== EWS: About page — icon-font substitutions =====
   The stock CSS for these components was written expecting an inline SVG
   (selectors target `.icon svg`), sized via the SVG's own width/height
   attributes. We use Bootstrap Icons (already loaded sitewide) instead of
   re-embedding more custom SVG icon sets, so each needs its own font-size
   and color since the `svg`-only stock rules don't reach an `<i>` tag. */
.feature-card.style-2 .feature-card-icon i {
    font-size: 46px;
    color: var(--ews-primary);
    transition: 0.5s;
}
.feature-card.style-2:hover .feature-card-icon i {
    color: var(--ews-secondary);
}
.single-activity .icon i {
    font-size: 32px;
    color: var(--ews-primary);
}
.slider-and-tab-section .tab-sidebar .nav-pills .nav-item .nav-link .icon i {
    font-size: 22px;
    color: var(--ews-primary);
}
.slider-and-tab-section .tab-sidebar .nav-pills .nav-item .nav-link.active .icon i {
    color: #fff;
}

/* Trust rating badge (Google/TripAdvisor), replaces the prototype's
   fabricated TripAdvisor review count with an honest, real figure already
   used elsewhere on the site (the homepage trust bar's 4.9 rating). */
.ews-trust-rating {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
    justify-content: center;
    padding: 20px 28px;
    background: #fff;
    border: 1px solid rgba(28, 26, 23, 0.08);
    border-radius: 999px;
    box-shadow: 0 12px 32px rgba(16, 12, 8, 0.05);
}
.ews-trust-rating strong {
    color: var(--ews-ink);
}
.ews-trust-rating .rating {
    display: flex;
    gap: 3px;
    list-style: none;
    padding: 0;
    margin: 0;
}
.ews-trust-rating .rating i {
    color: #FFC107;
    font-size: 15px;
}
.ews-trust-rating p {
    margin: 0;
    color: var(--text-color);
    font-size: 14px;
}
.ews-trust-rating p strong {
    color: var(--ews-primary);
}

/* ===== EWS: Pagination (blogs, destinations, etc.) — stock CSS has no
   disabled state for vendor.pagination.custom's li.disabled wrapper
   (used for the first/last-page prev/next placeholder). ===== */
.inner-pagination-area .pagination-list li.disabled .shop-pagi-btn,
.inner-pagination-area .pagination-list li.disabled span {
    opacity: 0.35;
    cursor: default;
    pointer-events: none;
}

/* ===== EWS: Destination details — sidebar CTA (replaces the prototype's
   fabricated "50% Off" banner card with an honest inquiry prompt). ===== */
.ews-destination-cta {
    background: linear-gradient(135deg, var(--ews-primary) 0%, #4a8f32 100%);
    border-radius: 16px;
    padding: 28px 26px;
    color: #fff;
}
.ews-destination-cta h5 {
    color: #fff;
    margin-bottom: 10px;
}
.ews-destination-cta p {
    color: rgba(255, 255, 255, 0.85);
    font-size: 14px;
    margin-bottom: 18px;
}
.ews-destination-cta .primary-btn1 {
    background: #fff;
    color: var(--ews-ink);
}
.ews-destination-cta .primary-btn1:hover {
    background: var(--ews-secondary);
    color: #fff;
}

/* ===== EWS: Flexible tour/package media gallery (1..N photos + optional
   video) — see partials/media-gallery.blade.php for the layout logic.
   The stock .room-img-group .gallery-img-wrap rules already give hover
   overlays, object-fit:cover and rounded corners; this just adds the
   height/aspect-ratio these rules assume a fixed 5-tile mosaic would
   provide, and rules for the count-1..4 variants it doesn't cover.

   Stock .gallery-img-wrap img sets height:100% + object-fit:cover but never
   width:100% — harmless for the prototype's pre-cropped stock photos (which
   already roughly match the tile's aspect ratio), but a real uploaded photo
   of any other ratio then only grows to its own object-fit-scaled width,
   leaving a gap down one side of the tile instead of filling it. Real
   uploads can't be relied on to match any particular ratio, so width:100%
   is pinned here regardless of source image dimensions.

   That alone isn't enough for .tall, though: .gallery-img-wrap's own
   height:100% (stock) only resolves against a DEFINITE parent height —
   .row below only sets min-height, which flexbox stretch can't treat as
   definite the way an explicit height can, so height:100% was silently
   falling back to auto and the (now full-width) image grew to its own
   intrinsic aspect ratio instead of cropping to fill the tile — exactly
   the "image forces the tile taller" bug this addendum fixes. .solo
   already sidesteps this with aspect-ratio (which computes to a real
   height, not a percentage); .tall gets the same treatment: a hard pixel
   height matching the row below, so object-fit:cover has a real box to
   crop into. */
.ews-media-gallery .gallery-img-wrap img {
    width: 100%;
}
.ews-media-gallery .row {
    min-height: 460px;
}
.ews-media-gallery.count-1 .row {
    min-height: 360px;
}
.ews-media-gallery .gallery-img-wrap.solo {
    aspect-ratio: 21 / 9;
    height: auto;
    max-height: 520px;
}
.ews-media-gallery .gallery-img-wrap.tall {
    height: 460px;
}
.ews-media-gallery.count-4 .row {
    min-height: 460px;
}
.ews-media-gallery.count-4 .gallery-img-wrap {
    min-height: 220px;
}
@media (max-width: 767px) {
    .ews-media-gallery .row { min-height: 0; }
    .ews-media-gallery .gallery-img-wrap { min-height: 200px; height: 200px; }
    .ews-media-gallery .gallery-img-wrap.solo { max-height: none; aspect-ratio: 16 / 10; height: auto; }
    .ews-media-gallery .gallery-img-wrap.tall { height: 260px; }
}

/* ---- /tours listing top search bar (package-top-search.html) ----
   .package-search-filter-wrapper floats over the breadcrumb hero via a
   -50px negative margin, but is `position: static` in stock CSS — it only
   painted on top because the stock breadcrumb was also static, so DOM
   order decided stacking. .ews-breadcrumb (breadcrumb.blade.php) sets
   `position: relative` for its gradient overlay, and CSS always paints
   positioned elements above non-positioned ones regardless of DOM order —
   so the static search card ended up hidden behind the now-positioned
   hero. Giving it its own stacking context fixes it. */
.ews-package-search {
    position: relative;
    z-index: 2;
}
/* Stock CSS styles .single-search-box .icon svg (fill), but bootstrap-icon
   <i> tags are used in place of the prototype's inline SVGs (same reasoning
   as the destination-details activity icons) so a matching override is
   needed for color/size. */
.ews-package-search .single-search-box .icon i {
    font-size: 22px;
    color: var(--primary-color1);
}
.ews-package-search .single-search-box .searchbox-input .d-flex input.keyword {
    border: none;
    outline: none;
    width: 100%;
    font-size: 16px;
}
.ews-package-search .single-search-box .searchbox-input .d-flex .keyword-search {
    border: none;
    background: transparent;
    color: var(--primary-color1);
    font-size: 18px;
    flex-shrink: 0;
    padding: 0 0 0 8px;
}

/* ---- /faqs page ----
   .ews-destination-cta reused as a compact sidebar CTA card (originally
   built for destination-details.blade.php) — no new rules needed there,
   it's already width-agnostic. .single-activity's stock CSS only styles an
   <svg> icon child (fill color) — fun-facts.blade.php stores a real
   admin-uploaded <img> per stat instead, so this gives it the same
   soft-green icon-circle treatment used across other icon badges on the
   site (rgba(99,171,69,.08) circle background) rather than rendering the
   raw image at its native size.
*/
.ews-fun-facts-icon {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: rgba(99, 171, 69, 0.08);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    overflow: hidden;
}
.ews-fun-facts-icon img {
    width: 32px;
    height: 32px;
    object-fit: contain;
}

/* ---- /activities listing (activities.html) ----
   .activity-card is already fully stock-styled (hover-reveal overlay, flag
   badge, etc.) — two gaps only: stock CSS sizes/fills an <svg> icon child,
   but real activities use a Bootstrap Icon <i> instead of the prototype's
   unique hand-drawn SVG per activity (same reasoning as elsewhere this
   session); and the prototype's stock photos share one baked-in aspect
   ratio that a real uploaded feature_img has no reason to match, so this
   pins one for a consistent grid. */
.ews-activities-page .activity-card img {
    width: 100%;
    aspect-ratio: 4 / 5;
    object-fit: cover;
}
.ews-activities-page .activity-card .icon i {
    font-size: 32px;
    color: var(--title-color);
    transition: 0.5s;
}
.ews-activities-page .activity-card:hover .icon i {
    color: var(--white-color);
}

/* ---- Back-nav bar (partials/back-nav.blade.php) ----
   Replaces the old breadcrumb-section hero on tour/activities/destination/
   blog details pages. Minimal top padding only — the content wrapper right
   below it on all four pages already carries its own pt-120, so this just
   needs enough room to separate the back link from the header above it. */
.ews-back-nav {
    padding: 28px 0 0;
}
.ews-back-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--font-rubik);
    font-size: 15px;
    font-weight: 500;
    color: var(--ews-ink);
    text-decoration: none;
    transition: 0.3s;
}
.ews-back-btn i {
    font-size: 18px;
    color: var(--ews-primary);
    transition: transform 0.3s;
}
.ews-back-btn:hover {
    color: var(--ews-primary);
}
.ews-back-btn:hover i {
    transform: translateX(-3px);
}
/* Stock .pt-120 (120px desktop / 100px tablet / 90px mobile) assumed a
   breadcrumb hero sat above it, giving the page a large top gap before it.
   With back-nav in its place that gap reads as too much empty space at
   every breakpoint, not just desktop — scoped to only the four wrapper
   classes that actually sit right after back-nav (each unique to its own
   page, confirmed via grep), using the adjacent-sibling combinator rather
   than a class change on the wrapper itself: if $showBreadcrumb is ever
   flipped back to true, .ews-back-nav is no longer the preceding sibling
   and this override stops applying on its own — padding reverts to the
   original stock spacing with no extra changes needed. */
.ews-back-nav + .package-details-area.pt-120,
.ews-back-nav + .destination-details-wrap.pt-120,
.ews-back-nav + .blog-details-section.pt-120 {
    padding-top: 40px;
}
@media (min-width: 992px) and (max-width: 1199px) {
    .ews-back-nav + .package-details-area.pt-120,
    .ews-back-nav + .destination-details-wrap.pt-120,
    .ews-back-nav + .blog-details-section.pt-120 {
        padding-top: 32px;
    }
}
@media (max-width: 991px) {
    .ews-back-nav + .package-details-area.pt-120,
    .ews-back-nav + .destination-details-wrap.pt-120,
    .ews-back-nav + .blog-details-section.pt-120 {
        padding-top: 24px;
    }
}

/* ---- /tours deep-link pre-selection (?category=/&destinations=) ----
   Stock CSS only styles :hover on .option-list li — arriving via a deep
   link needs the already-selected option to read as selected without a
   hover, so this reuses the same treatment for a persistent .active state. */
.package-search-filter-wrapper .option-list li.active {
    background: rgba(211, 211, 211, 0.231372549);
}
.package-search-filter-wrapper .option-list li.active::before {
    opacity: 1;
}

/* ---- Off-canvas sidebar "Experiences" grid ----
   Stock .category-list is display:flex + justify-content:space-between —
   pairs cleanly across full rows, but an odd item count leaves the last
   row's lone item flush-left with nothing to "space between" against,
   reading as a big awkward gap. Giving each <li> a fixed flex-basis
   instead of letting space-between position them keeps every row's items
   in real, consistent column slots regardless of total count. */
.right-sidebar-menu .sidebar-content-wrap .category-wrapper .category-list {
    justify-content: flex-start;
}
.right-sidebar-menu .sidebar-content-wrap .category-wrapper .category-list li {
    flex: 0 1 calc(50% - 10px);
}
@media (max-width: 576px) {
    .right-sidebar-menu .sidebar-content-wrap .category-wrapper .category-list li {
        flex: 0 1 calc(50% - 7.5px);
    }
}

