/* Smaller header logo to reduce navbar height */
.menu-area .logo {
    line-height: normal;
    padding: 8px 0;
}

/* Fonts: Marcellus for headings (sentence case), Montserrat for body text */
h1, h2, h3, h4, h5, h6,
h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
    font-family: var(--heading-font) !important;
    font-weight: 400;
    text-transform: none !important;
}

h1 span, h2 span, h3 span, h4 span, h5 span, h6 span {
    font-family: inherit !important;
}

/* Smaller heading sizes on desktop (theme mobile sizes are kept) */
@media (min-width: 992px) {
    /* Shorter hero slider (theme default is 1000px) */
    .slider-active .single-slider.slider-bg {
        min-height: 820px !important;
    }

    .slider-content h2,
    .second-slider-content h2 {
        font-size: 64px;
        line-height: 1.15;
    }

    .section-title h2,
    .about-title h2,
    .feature-title h2,
    .cta-title h2,
    .call-area h2,
    .s-video-content h2,
    .breadcrumb-title h2,
    .slider-bg .text2 h2,
    .contact-bg02 h2 {
        font-size: 44px;
        line-height: 1.2;
    }

    .booking-area h2,
    .pricing-box2 .price-count h2,
    .feature-text h3 {
        font-size: 34px;
        line-height: 1.25;
    }

    h1 {
        font-size: 36px;
    }

    .room-block-content h3,
    .related-room.content-box h3,
    .pricing-head h4,
    .pricing-head h5,
    .bsingle__content h2 {
        font-size: 24px;
    }
}

.footer-social span,
.signature-text,
.ab-coutner .single-counter p,
.team-thumb .dropdown .xbtn {
    font-family: var(--primary-font) !important;
}

/* About section highlights: line icons instead of check marks */
.about-content3 ul li {
    align-items: center;
    color: #777;
    display: flex;
    font-weight: 400;
    margin-bottom: 18px;
}

.about-content3 ul li:before {
    background: no-repeat center / contain;
    content: "" !important;
    flex: 0 0 44px;
    height: 44px;
    margin-inline-end: 16px;
}

.about-content3 ul li:nth-child(1):before { background-image: url(/storage/amenities/icon-2.png); }
.about-content3 ul li:nth-child(2):before { background-image: url(/storage/amenities/icon-1.png); }
.about-content3 ul li:nth-child(3):before { background-image: url(/storage/amenities/icon-3.png); }
.about-content3 ul li:nth-child(4):before { background-image: url(/storage/amenities/icon-5.png); }
.about-content3 ul li:nth-child(5):before { background-image: url(/storage/amenities/icon-4.png); }

/* Top bar: every icon sits in a square, sharp-cornered outline that fills on hover */
.header-top .topbar-icon,
.header-top .header-social .social-links a {
    align-items: center;
    border: 1.5px solid rgba(255, 255, 255, .85);
    border-radius: 0;
    color: #fff;
    display: inline-flex;
    font-size: 12px;
    height: 26px;
    justify-content: center;
    transition: background-color .3s ease, color .3s ease;
    width: 26px;
}

.header-top .topbar-icon i,
.header-top .header-social .social-links a i {
    color: inherit;
    margin: 0;
}

.header-top .header-social .social-links a {
    margin-inline-start: 8px;
}

.header-top .header-social .social-links a:hover,
.header-top li:hover .topbar-icon,
.header-top .topbar-account:hover .topbar-icon {
    background: #fff;
    color: var(--primary-color);
}

.header-top .header-cta ul li {
    align-items: center;
    display: inline-flex;
    gap: 10px;
}

.header-top .header-cta ul li a,
.header-top .topbar-account a {
    color: #fff;
}

.header-top .topbar-account {
    align-items: center;
    display: inline-flex;
    font-size: 15px;
    gap: 8px;
    vertical-align: middle;
}

.header-top .topbar-account a {
    font-size: 15px;
    margin: 0;
}

/* Top bar links: no underline, and they stay white on hover (the theme's gold hover colour
   would make them disappear against the gold bar) */
.header-top a,
.header-top a:hover,
.header-top a:focus,
.header-top .header-cta ul li a:hover,
.header-top .topbar-account a:hover,
.header-top .header-social a:hover {
    color: #fff !important;
    text-decoration: none !important;
}

.header-top .header-cta ul li a:hover,
.header-top .topbar-account a:hover {
    opacity: .8;
}

/* Social icon boxes fill white on hover, so their icon turns gold to stay visible */
.header-top .header-social .social-links a:hover,
.header-top .header-social .social-links a:hover i {
    color: var(--primary-color) !important;
}

.header-top .topbar-divider {
    color: rgba(255, 255, 255, .7);
}

.header-top .header-social .social-links {
    align-items: center;
    display: inline-flex;
    vertical-align: middle;
}

/* Top bar + navbar stick to the top immediately on scroll (the whole header is sticky) */
header.header-area {
    position: sticky;
    top: 0;
    z-index: 99;
}

body.show-admin-bar header.header-area {
    top: 40px;
}

/* The theme's own late "sticky-menu" switch (after 200px) would pull the navbar out of the header;
   keep it in place so the top bar and navbar stay together */
header.header-area #header-sticky.sticky-menu {
    animation: none;
    margin-top: 0 !important;
    position: relative !important;
    top: auto;
}

/* Login and Register popup cards (partials/auth-modals.blade.php): blurred background, form left, photo right */
.auth-modal {
    align-items: center;
    display: none;
    inset: 0;
    justify-content: center;
    padding: 20px;
    position: fixed;
    z-index: 100000;
}

.auth-modal.is-open {
    display: flex;
}

.auth-modal__backdrop {
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    background: rgba(0, 0, 0, .45);
    inset: 0;
    position: absolute;
}

.auth-modal__card {
    animation: auth-modal-in .25s ease-out;
    background: #fff;
    box-shadow: 0 30px 80px rgba(0, 0, 0, .35);
    display: grid;
    grid-template-columns: 1fr 1fr;
    max-height: calc(100vh - 40px);
    max-width: 900px;
    overflow: auto;
    position: relative;
    width: 100%;
}

@keyframes auth-modal-in {
    from { opacity: 0; transform: translateY(16px); }
    to { opacity: 1; transform: none; }
}

.auth-modal__close {
    background: #fff;
    border: 0;
    color: #101010;
    cursor: pointer;
    font-size: 28px;
    height: 40px;
    line-height: 1;
    position: absolute;
    right: 10px;
    top: 10px;
    width: 40px;
    z-index: 2;
}

.auth-modal__form {
    padding: 48px 44px;
}

.auth-modal__form h2 {
    font-size: 34px;
    margin-bottom: 6px;
}

.auth-modal__intro {
    margin-bottom: 24px;
}

.auth-modal__form label {
    color: #101010;
    display: block;
    font-size: 15px;
    margin-bottom: 6px;
}

.auth-modal__form input[type="email"],
.auth-modal__form input[type="password"] {
    border: 1px solid #d7cfc8;
    border-radius: 0;
    font-size: 15px;
    margin-bottom: 18px;
    padding: 12px 14px;
    width: 100%;
}

.auth-modal__form input:focus {
    border-color: var(--secondary-color);
    outline: none;
}

.auth-modal__row {
    align-items: center;
    display: flex;
    font-size: 14px;
    justify-content: space-between;
    margin-bottom: 22px;
}

.auth-modal__form .auth-modal__check {
    align-items: center;
    display: flex;
    font-size: 14px;
    gap: 8px;
    margin: 0;
}

.auth-modal__row a,
.auth-modal__switch a {
    color: var(--secondary-color);
    font-weight: 600;
}

.auth-modal__submit {
    background: transparent;
    border: 2px solid var(--secondary-color);
    color: var(--secondary-color);
    cursor: pointer;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 1px;
    padding: 12px 24px;
    text-transform: uppercase;
    transition: background-color .3s ease, color .3s ease;
    width: 100%;
}

.auth-modal__submit:hover {
    background: var(--secondary-color);
    color: #fff;
}

.auth-modal__switch {
    font-size: 14px;
    margin: 20px 0 0;
    text-align: center;
}

.auth-modal__error {
    background: #fbeaea;
    border-left: 3px solid #c0392b;
    color: #8a1f17;
    font-size: 14px;
    margin-bottom: 18px;
    padding: 10px 12px;
}

.auth-modal__image {
    background-position: center;
    background-size: cover;
    min-height: 520px;
}

body.auth-modal-open {
    overflow: hidden;
}

@media (max-width: 767px) {
    .auth-modal__card { grid-template-columns: 1fr; }
    .auth-modal__image { display: none; }
    .auth-modal__form { padding: 40px 24px 28px; }
}

/* Register popup: wider landscape card, fields in pairs */
.auth-modal--wide .auth-modal__card {
    grid-template-columns: 3fr 2fr;
    max-width: 1040px;
}

.auth-modal--wide .auth-modal__image {
    min-height: 0;
}

.auth-modal__grid {
    column-gap: 18px;
    display: grid;
    grid-template-columns: 1fr 1fr;
}

.auth-modal__grid .auth-modal__full {
    grid-column: 1 / -1;
}

.auth-modal__form input[type="text"],
.auth-modal__form input[type="tel"] {
    border: 1px solid #d7cfc8;
    border-radius: 0;
    font-size: 15px;
    margin-bottom: 18px;
    padding: 12px 14px;
    width: 100%;
}

.auth-modal__check a {
    color: var(--secondary-color);
    font-weight: 600;
}

ul.auth-modal__error {
    list-style: none;
}

@media (max-width: 767px) {
    .auth-modal--wide .auth-modal__card { grid-template-columns: 1fr; }
    .auth-modal__grid { grid-template-columns: 1fr; }
}

/* Page breadcrumb banner: dark overlay so the white title stays readable */
.breadcrumb-area::before {
    background: rgba(0, 0, 0, 0.6);
    content: "";
    inset: 0;
    pointer-events: none;
    position: absolute;
    z-index: 0;
}

.breadcrumb-area > * {
    position: relative;
    z-index: 1;
}

/* Fixed (static) breadcrumb background on desktop; phones and tablets scroll normally
   because mobile browsers don't support fixed backgrounds well */
@media (min-width: 992px) and (hover: hover) {
    .breadcrumb-area {
        background-attachment: fixed !important;
        background-position: center center !important;
    }
}

/* Contact Us: Google map below the contact details and form */
.contact-map iframe {
    border: 0;
    display: block;
    filter: grayscale(.2);
    height: 420px;
    width: 100%;
}

/* Navbar menu items use the body font (Montserrat) */
.main-menu ul li a {
    font-family: var(--primary-font) !important;
    font-weight: 400;
}

/* White navbar, top bar in the theme's primary colour */
.header-three .menu-area {
    background: #fff;
}

.header-three .main-menu ul li a {
    color: #101010;
}

.header-three .main-menu ul li:hover > a,
.header-three .main-menu ul li.active > a,
.header-three .main-menu ul li.current > a {
    color: var(--secondary-color);
}

/* All site buttons use the same compact size as the Reservation button */
.btn.ss-btn,
.btn.header-btn,
.slider-btn .btn,
.second-header-btn .btn,
.bsingle__content .blog__btn .btn,
.widget__banner-overly .btn,
.booking-area.homepage .contact-form .btn,
.contact-form .btn,
.pricing-btn .btn,
form .btn:not(.btn-toggle-menu-mobile):not(.btn-close) {
    font-size: 14px;
    letter-spacing: 1px;
    line-height: 1.4;
    padding: 10px 24px;
}

/* About section "Discover more": outlined like the Reservation button */
.about-area .slider-btn .btn.ss-btn {
    background: transparent;
    border: 2px solid var(--secondary-color);
    color: var(--secondary-color);
}

.about-area .slider-btn .btn.ss-btn:hover {
    background: var(--secondary-color);
    border-color: var(--secondary-color);
    color: #fff;
}

/* Sticky sidebars (Rooms page, booking page): the sidebar stops when its end is reached while the
   main column keeps scrolling. The class and "top" offset come from partials/sticky-sidebar.blade.php */
@media (min-width: 992px) {
    .sticky-sidebar {
        position: sticky;
        top: 120px;
    }
}

/* Shorter room cards (Rooms page, homepage "Rooms & suites"): 16:10 image and tighter spacing */
.single-services .services-thumb {
    aspect-ratio: 16 / 10;
    overflow: hidden;
}

.single-services .services-thumb img {
    height: 100%;
    object-fit: cover;
    width: 100%;
}

.single-services .services-content {
    padding: 22px 30px 30px;
}

.single-services .day-book {
    margin-bottom: 18px;
}

.single-services .services-content h4 {
    margin-bottom: 10px;
}

.single-services .services-content p {
    margin-bottom: 14px;
}

/* Shorter blog cards (Blog page, homepage "News & offers"): 2:1 image and tighter spacing */
.bsingle__post-thumb {
    aspect-ratio: 2 / 1;
    overflow: hidden;
}

.bsingle__post-thumb img {
    height: 100%;
    object-fit: cover;
    width: 100%;
}

.bsingle__post .bsingle__content {
    padding: 26px 24px;
}

.bsingle__post .bsingle__content .meta-info ul {
    margin-bottom: 10px;
}

.bsingle__post .bsingle__content h2 {
    -webkit-box-orient: vertical;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    margin-bottom: 10px;
    overflow: hidden;
}

.bsingle__post .bsingle__content p {
    -webkit-box-orient: vertical;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    margin-bottom: 14px;
    overflow: hidden;
}

/* Room pages: hotel rules use line icons instead of bullets; one line each on desktop */
.hotel-rules-box ul {
    padding-inline-start: 0;
}

.hotel-rules-box ul li {
    align-items: center;
    display: flex;
    margin-bottom: 14px;
    padding-inline-start: 0;
}

.hotel-rules-box ul li:before {
    background: no-repeat center / contain;
    content: "" !important;
    flex: 0 0 30px;
    height: 30px;
    margin-inline-end: 14px;
    position: static;
    transform: none;
    width: 30px;
}

.hotel-rules-box ul li:nth-child(1):before { background-image: url(/storage/amenities/icon-clock.svg); }
.hotel-rules-box ul li:nth-child(2):before { background-image: url(/storage/amenities/icon-id.svg); }
.hotel-rules-box ul li:nth-child(3):before { background-image: url(/storage/amenities/icon-greet.svg); }
.hotel-rules-box ul li:nth-child(4):before { background-image: url(/storage/amenities/icon-nosmoking.svg); }
.hotel-rules-box ul li:nth-child(5):before { background-image: url(/storage/amenities/icon-glass.svg); }
.hotel-rules-box ul li:nth-child(6):before { background-image: url(/storage/amenities/icon-nobag.svg); }
.hotel-rules-box ul li:nth-child(7):before { background-image: url(/storage/amenities/icon-moon.svg); }
.hotel-rules-box ul li:nth-child(8):before { background-image: url(/storage/amenities/icon-shield.svg); }

@media (min-width: 992px) {
    .hotel-rules-box ul li {
        white-space: nowrap;
    }
}

/* Photo gallery: square slider (homepage) and filterable grid (Galleries page) */
.photo-gallery-item a {
    aspect-ratio: 1 / 1;
    display: block;
    overflow: hidden;
    position: relative;
}

.photo-gallery-item img {
    height: 100%;
    object-fit: cover;
    transition: transform .4s ease;
    width: 100%;
}

.photo-gallery-item a:hover img {
    transform: scale(1.06);
}

/* Homepage photo slider: photos touch each other, and the section has less space above and below */
.photo-gallery-slider .photo-gallery-item {
    padding: 0;
}

section.photo-gallery--slider {
    padding-bottom: 30px !important;
    padding-top: 30px !important;
}

.photo-gallery-grid {
    display: grid;
    gap: 12px;
    grid-template-columns: repeat(5, 1fr);
}

.photo-gallery-grid .photo-gallery-item.is-hidden,
.photo-gallery-grid .photo-gallery-item.is-paged-out {
    display: none;
}

/* Until the pager script runs, only show the first page (3 rows of 5) */
.photo-gallery-grid:not(.is-paginated) .photo-gallery-item:nth-child(n+16) {
    display: none;
}

/* Gallery page numbers: same outlined style as the filter buttons */
.photo-gallery-pagination {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
    margin-top: 40px;
}

.photo-gallery-pagination button {
    background: transparent;
    border: 2px solid var(--secondary-color);
    color: var(--secondary-color);
    cursor: pointer;
    font-family: var(--primary-font);
    font-size: 14px;
    letter-spacing: 1px;
    line-height: 1.4;
    min-width: 46px;
    padding: 10px 16px;
    text-transform: uppercase;
    transition: background-color .3s ease, color .3s ease;
}

.photo-gallery-pagination button:hover:not(:disabled),
.photo-gallery-pagination button.active {
    background: var(--secondary-color);
    color: #fff;
}

.photo-gallery-pagination button:disabled {
    cursor: default;
    opacity: .4;
}

@media (max-width: 1199px) {
    .photo-gallery-grid { grid-template-columns: repeat(4, 1fr); }
}

@media (max-width: 991px) {
    .photo-gallery-grid { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 575px) {
    .photo-gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }
}

/* Gallery filter buttons: outlined, filled when active or hovered */
.photo-gallery-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: center;
    margin-bottom: 40px;
}

.photo-gallery-filters button {
    background: transparent;
    border: 2px solid var(--secondary-color);
    color: var(--secondary-color);
    cursor: pointer;
    font-family: var(--primary-font);
    font-size: 14px;
    letter-spacing: 1px;
    line-height: 1.4;
    padding: 10px 24px;
    text-transform: uppercase;
    transition: background-color .3s ease, color .3s ease;
}

.photo-gallery-filters button:hover,
.photo-gallery-filters button.active {
    background: var(--secondary-color);
    color: #fff;
}

/* Video tour section: dark overlay so the white title stays readable */
.video-area::before {
    background: rgba(0, 0, 0, 0.45);
    content: "";
    inset: 0;
    pointer-events: none;
    position: absolute;
    z-index: 0;
}

.video-area > * {
    position: relative;
    z-index: 1;
}

/* Fixed (parallax) background on desktop; phones and tablets scroll normally
   because iOS/Android don't support fixed backgrounds well */
@media (min-width: 992px) and (hover: hover) {
    .video-area {
        background-attachment: fixed !important;
        background-position: center center !important;
    }
}

/* "Jewel of Lake Victoria" section: dark overlay on the image */
.feature-area2 .feature-img {
    position: relative;
}

.feature-area2 .feature-img::after {
    background: rgba(0, 0, 0, 0.35);
    content: "";
    inset: 0;
    pointer-events: none;
    position: absolute;
}

.feature-area2 .feature-img img {
    display: block;
}

/* "Plan your stay" and Extra services buttons: outlined like the Reservation button */
.feature-area2 .btn.ss-btn,
.pricing-area .pricing-btn .btn.ss-btn,
section.booking .btn.ss-btn,
.services-08-content .btn.ss-btn.service-read-more {
    background: transparent;
    border: 2px solid var(--secondary-color);
    color: var(--secondary-color);
}

.feature-area2 .btn.ss-btn:hover,
.pricing-area .pricing-btn .btn.ss-btn:hover,
section.booking .btn.ss-btn:hover,
.services-08-content .btn.ss-btn.service-read-more:hover {
    background: var(--secondary-color);
    border-color: var(--secondary-color);
    color: #fff;
}

/* Extra services cards: equal height, no rotated duration tag, line icons instead of ticks */
.pricing-area .row > .col-lg-4.col-md-6 {
    align-self: stretch;
    display: flex;
}

.pricing-area .pricing-box2 {
    display: flex;
    flex-direction: column;
    width: 100%;
}

.pricing-area .pricing-head p {
    min-height: 52px;
}

.pricing-area .pricing-head .month {
    display: none;
}

.pricing-area .pricing-btn {
    margin-top: auto;
}

.pricing-area .pricing-body li {
    align-items: center;
    display: flex;
}

.pricing-area .pricing-body li:before {
    background: no-repeat center / contain;
    border: 0;
    border-radius: 0;
    content: "" !important;
    flex: 0 0 36px;
    float: none;
    height: 36px;
    margin: 0;
    margin-inline-end: 16px;
    width: 36px;
}

/* Airport transfer card */
.pricing-area .row > div:nth-child(2) .pricing-body li:nth-child(1):before { background-image: url(/storage/amenities/icon-clock.svg); }
.pricing-area .row > div:nth-child(2) .pricing-body li:nth-child(2):before { background-image: url(/storage/amenities/icon-greet.svg); }
.pricing-area .row > div:nth-child(2) .pricing-body li:nth-child(3):before { background-image: url(/storage/amenities/icon-shuttle.svg); }

/* Spa & wellness card */
.pricing-area .row > div:nth-child(3) .pricing-body li:nth-child(1):before { background-image: url(/storage/amenities/icon-4.png); }
.pricing-area .row > div:nth-child(3) .pricing-body li:nth-child(2):before { background-image: url(/storage/amenities/icon-lotus.svg); }
.pricing-area .row > div:nth-child(3) .pricing-body li:nth-child(3):before { background-image: url(/storage/amenities/icon-gym.svg); }

/* All outlined ("open") buttons: slightly bolder text */
.header-three .top-btn,
.slider-btn .btn.ss-btn,
.about-area .slider-btn .btn.ss-btn,
.feature-area2 .btn.ss-btn,
.pricing-area .pricing-btn .btn.ss-btn,
section.booking .btn.ss-btn,
.services-08-content .btn.ss-btn.service-read-more,
.photo-gallery-filters button,
.photo-gallery-pagination button {
    font-weight: 600;
}

/* Reservation button: outlined, fills on hover */
.header-three .top-btn {
    background: transparent;
    border: 2px solid var(--secondary-color);
    color: var(--secondary-color);
    float: right;
    font-size: 14px;
    letter-spacing: 1px;
    line-height: 1.4;
    padding: 10px 24px;
    transition: background-color .3s ease, color .3s ease;
    width: auto;
}

.header-three .top-btn:hover {
    background: var(--secondary-color);
    border-color: var(--secondary-color);
    color: #fff;
}

.header-three .btn-toggle-menu-mobile {
    border-color: #101010;
    color: #101010 !important;
}

.header-three .second-header {
    background: var(--primary-color);
    padding: 6px 0;
}

.header-three .second-header,
.header-three .second-header .header-cta ul li,
.header-three .second-header .topbar-account,
.header-three .second-header .topbar-account a {
    font-size: 14px;
}

/* Dark overlay on hero slider images */
.slider-active .single-slider {
    position: relative;
}

.slider-active .single-slider::before {
    background: rgba(0, 0, 0, 0.45);
    content: "";
    inset: 0;
    pointer-events: none;
    position: absolute;
    z-index: 0;
}

.slider-active .single-slider > * {
    position: relative;
    z-index: 1;
}

/* Hero photo layer + transitions (simple-slider template): strip entrance, slow zoom, staggered text */
.slider-active .single-slider {
    background: none !important;
    isolation: isolate;
    overflow: hidden;
}

.slider-active .single-slider > .hero-bg {
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    inset: 0;
    position: absolute !important;
    transform-origin: 50% 50%;
    z-index: -2 !important;
}

.slider-active .single-slider > .hero-slots {
    display: flex;
    inset: 0;
    pointer-events: none;
    position: absolute;
    z-index: -1;
}

.hero-slots .hero-slot {
    filter: blur(2px);
    flex: 1 1 0;
    opacity: 0;
    overflow: hidden;
    position: relative;
    transform: scale(1.5, 1.2);
    transition:
        opacity 1s cubic-bezier(.65, 0, .35, 1),
        transform 1s cubic-bezier(.65, 0, .35, 1),
        filter 1s cubic-bezier(.65, 0, .35, 1);
}

.hero-slots.is-in .hero-slot {
    filter: blur(0);
    opacity: 1;
    transform: none;
}

.hero-slots .hero-slot-image {
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    bottom: 0;
    position: absolute;
    top: 0;
}

/* Hidden only when the script is running, so the photo never disappears without JS */
.hero-js .single-slider > .hero-bg {
    opacity: 0;
}

.hero-js .single-slider > .hero-bg.is-shown {
    opacity: 1;
}

.single-slider > .hero-bg.is-kenburns {
    animation: hero-kenburns 10s linear forwards;
}

@keyframes hero-kenburns {
    from { transform: scale(1); }
    to { transform: scale(1.05); }
}

.hero-js .single-slider .hero-anim {
    opacity: 0;
}

.hero-js .single-slider.hero-text-in .hero-anim {
    animation: hero-text-in 1.1s cubic-bezier(.33, 1, .68, 1) forwards;
}

.hero-js .single-slider.hero-text-in .hero-anim-1 { animation-delay: .31s; }
.hero-js .single-slider.hero-text-in .hero-anim-2 { animation-delay: .67s; }
.hero-js .single-slider.hero-text-in .hero-anim-3 { animation-delay: 1s; }

@keyframes hero-text-in {
    from { opacity: 0; transform: scale(.9); }
    to { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
    .single-slider > .hero-bg.is-kenburns { animation: none; }
    .hero-slots .hero-slot { transition-duration: .01s; }
}

.menu-area .logo img {
    max-height: 64px;
    max-width: 100%;
    width: auto;
}

/* ------------------------------------------------------------------------------------------------
   Diagonal sweep hover for all outlined buttons (based on Multikart's .btn-solid, reversed):
   the background is a 30deg split gradient three times the button's width; at rest the transparent
   half shows, on hover it slides across so the fill colour sweeps in diagonally (0.3s ease-in-out).
   Kept at the end of the file so it overrides the earlier instant-fill hover rules.
   ------------------------------------------------------------------------------------------------ */
.header-three .top-btn,
.about-area .slider-btn .btn.ss-btn,
.feature-area2 .btn.ss-btn,
.pricing-area .pricing-btn .btn.ss-btn,
section.booking .btn.ss-btn,
.services-08-content .btn.ss-btn.service-read-more,
.photo-gallery-filters button,
.photo-gallery-pagination button,
.auth-modal__submit,
#home .slider-btn .btn.ss-btn {
    --sweep-color: var(--secondary-color);
    background-color: transparent !important;
    background-image: linear-gradient(30deg, var(--sweep-color) 50%, transparent 50%) !important;
    background-position: 100% 0 !important;
    background-repeat: no-repeat !important;
    background-size: 300% 100% !important;
    transition: background-position .3s ease-in-out, color .3s ease-in-out, border-color .3s ease-in-out !important;
}

.header-three .top-btn:hover,
.about-area .slider-btn .btn.ss-btn:hover,
.feature-area2 .btn.ss-btn:hover,
.pricing-area .pricing-btn .btn.ss-btn:hover,
section.booking .btn.ss-btn:hover,
.services-08-content .btn.ss-btn.service-read-more:hover,
.photo-gallery-filters button:hover,
.photo-gallery-filters button.active,
.photo-gallery-pagination button:hover:not(:disabled),
.photo-gallery-pagination button.active,
.auth-modal__submit:hover,
#home .slider-btn .btn.ss-btn:hover {
    background-color: transparent !important;
    background-position: 0 0 !important;
    color: #fff !important;
}

/* Hero buttons sit on the photo: sweep white, text turns dark */
#home .slider-btn .btn.ss-btn {
    --sweep-color: #fff;
}

#home .slider-btn .btn.ss-btn:hover {
    color: #101010 !important;
}

/* ------------------------------------------------------------------------------------------------
   Double-image "stretch and blur" swap on hover (partials/image-hover-swap.blade.php), modelled on
   the Stadum blog cards: a copy waits off to the right, shifted 50%, stretched 2x, blurred 10px and
   invisible; on hover it slides in sharp while the original smears out to the left (0.5s).
   ------------------------------------------------------------------------------------------------ */
.img-swap {
    display: inline-block;
    max-width: 100%;
    overflow: hidden;
    position: relative;
    vertical-align: top;
}

.img-swap--block {
    display: block;
}

.img-swap--fill-width {
    width: 100%;
}

.img-swap--fill-height,
.services-thumb .img-swap,
.bsingle__post-thumb .img-swap,
.photo-gallery-item a .img-swap {
    height: 100%;
}

.services-thumb .img-swap,
.bsingle__post-thumb .img-swap,
.photo-gallery-item a .img-swap {
    display: block;
    width: 100%;
}

.img-swap > .img-swap-original,
.img-swap > .img-swap-copy {
    transition: transform .5s ease, opacity .5s ease, filter .5s ease !important;
}

.img-swap > .img-swap-copy {
    filter: blur(10px);
    height: 100%;
    inset: 0;
    margin: 0;
    max-width: none;
    object-fit: cover;
    opacity: 0;
    pointer-events: none;
    position: absolute;
    transform: translateX(50%) scaleX(2) !important;
    width: 100%;
}

.img-swap.is-swapped > .img-swap-copy {
    filter: blur(0);
    opacity: 1;
    transform: translateX(0) scaleX(1) !important;
}

.img-swap > .img-swap-original {
    transform: none !important;
}

.img-swap.is-swapped > .img-swap-original {
    filter: blur(10px);
    opacity: 0;
    transform: translateX(-50%) scaleX(2) !important;
}

@media (prefers-reduced-motion: reduce) {
    .img-swap > .img-swap-original,
    .img-swap > .img-swap-copy {
        transition: none !important;
    }
}

/* Navbar: 8 menu items in Montserrat (a wide font) need tighter spacing than the theme default
   (40px gaps, 1.5px letter-spacing) so they stay on one row and clear of the Reservation button */
@media (min-width: 1400px) {
    .second-menu .main-menu ul li { margin-inline-start: 28px; }
    .main-menu ul li a { letter-spacing: .5px; }
}

@media (min-width: 1200px) and (max-width: 1399px) {
    .second-menu .main-menu ul li { margin-inline-start: 18px; }
    .main-menu ul li a { font-size: 14px; letter-spacing: .3px; }
}

@media (min-width: 992px) and (max-width: 1199px) {
    .second-menu .main-menu ul li { margin-inline-start: 12px; }
    .main-menu ul li a { font-size: 13px; letter-spacing: 0; }
}

/* About section images sat underneath their own column for mouse purposes, so hover never reached them;
   lift them above it so the image swap (and links) respond */
.about-area .s-about-img,
.about-area .s-about-img .img-swap,
.about-area .s-about-img .about-icon {
    position: relative;
    z-index: 2;
}

.about-area .s-about-img .about-icon {
    position: absolute;
}

/* About section photos framed: white border with a soft shadow (homepage and About Us).
   Applied to the hover-swap wrapper when present, and to the image itself on touch devices. */
.about-area .s-about-img .img-swap,
.about-area .s-about-img > img,
.about-area .about-icon > img {
    border: 10px solid #fff;
    box-shadow: 0 18px 45px rgba(0, 0, 0, .18);
    box-sizing: border-box;
}

/* The theme's 100px gap under the first photo goes outside the frame, not inside it */
.about-area .s-about-img .img-swap {
    height: auto !important;
    margin-bottom: 100px;
}

.about-area .s-about-img .img-swap > img,
.about-area .about-icon .img-swap {
    margin-bottom: 0 !important;
}

.about-area .about-icon .img-swap > img {
    border: 0;
    box-shadow: none;
}

/* Login / Register popups: the photo panel is a real image (so it gets the hover swap) filling the panel */
.auth-modal__image {
    overflow: hidden;
    position: relative;
}

.auth-modal__image > img,
.auth-modal__image > .img-swap,
.auth-modal__image > .img-swap > .img-swap-original {
    height: 100%;
    inset: 0;
    object-fit: cover;
    position: absolute !important;
    width: 100%;
}

/* ------------------------------------------------------------------------------------------------
   Phones and tablets (< 992px): show the top bar like on desktop (two compact centred rows),
   a shorter navbar, and the menu button in the primary colour
   ------------------------------------------------------------------------------------------------ */
@media (max-width: 991px) {
    .header-top.second-header.d-none,
    .header-top .header-top-left.d-none,
    .header-top .header-top-end.d-none {
        display: block !important;
    }

    .header-three .second-header {
        padding: 5px 0;
    }

    /* One row: phone number on the left, social icons on the right (email and Login | Register hidden) */
    .header-top .row {
        align-items: center;
        flex-wrap: nowrap;
        justify-content: space-between;
    }

    .header-top .header-top-left,
    .header-top .header-top-end {
        flex: 0 0 auto;
        max-width: none;
        width: auto;
    }

    .header-top .header-top-left {
        text-align: left !important;
    }

    .header-top .header-top-end {
        text-align: right !important;
    }

    .header-top .header-cta ul {
        margin: 0;
        padding: 0;
    }

    .header-top .header-cta ul li.topbar-email,
    .header-top .topbar-account,
    .header-top .topbar-customer {
        display: none !important;
    }

    .header-top .header-cta ul li.topbar-phone {
        align-items: center;
        display: inline-flex;
        gap: 6px;
        padding: 0 !important;
    }

    .header-top .header-cta ul li.topbar-phone strong,
    .header-top .header-cta ul li.topbar-phone a {
        font-weight: 400 !important;
    }

    .header-top .header-social {
        align-items: center;
        display: flex;
        justify-content: flex-end;
    }

    .header-three .second-header,
    .header-three .second-header .header-cta ul li {
        font-size: 12px;
    }

    .header-top .topbar-icon,
    .header-top .header-social .social-links a {
        font-size: 10px;
        height: 22px;
        width: 22px;
    }

    .header-top .header-social .social-links a {
        margin-inline-start: 5px;
    }

    /* Account icon beside the menu button, same outlined square style */
    .mobile-account-btn {
        align-items: center;
        border: 2px solid var(--primary-color);
        color: var(--primary-color) !important;
        display: inline-flex;
        font-size: 16px;
        height: 36px;
        justify-content: center;
        margin-inline-end: 8px;
        transition: background-color .3s ease, color .3s ease;
        width: 36px;
    }

    .mobile-account-btn:hover,
    .mobile-account-btn:focus {
        background: var(--primary-color);
        color: #fff !important;
    }

    /* Signed in: the customer's photo fills the square frame */
    .mobile-account-btn--avatar {
        overflow: hidden;
        padding: 2px;
    }

    .mobile-account-btn--avatar img {
        display: block;
        height: 100%;
        object-fit: cover;
        width: 100%;
    }

    /* Shorter navbar */
    .menu-area .logo {
        padding: 6px 0;
    }

    .menu-area .logo img {
        max-height: 44px;
    }

    .menu-area .second-menu .row {
        align-items: center;
        min-height: 0;
    }

    /* The collapsed mobile menu container keeps 8px padding top and bottom; drop it so it adds no height */
    #header-sticky nav.navbar {
        padding-bottom: 0;
        padding-top: 0;
    }

    /* The theme pads the navbar 20px top and bottom on small screens */
    #header-sticky.menu-area {
        padding-bottom: 6px !important;
        padding-top: 6px !important;
    }

    /* Menu button in the primary colour, square like the other outlined buttons */
    .header-three .btn-toggle-menu-mobile,
    .btn-toggle-menu-mobile {
        background: transparent;
        border: 2px solid var(--primary-color) !important;
        border-radius: 0;
        color: var(--primary-color) !important;
        align-items: center;
        display: inline-flex !important;
        height: 36px;
        justify-content: center;
        line-height: 1;
        padding: 0 !important;
        width: 36px;
    }

    .btn-toggle-menu-mobile i {
        color: var(--primary-color) !important;
        font-size: 16px;
    }

    .btn-toggle-menu-mobile:hover,
    .btn-toggle-menu-mobile:focus,
    .btn-toggle-menu-mobile[aria-expanded="true"] {
        background: var(--primary-color) !important;
        color: #fff !important;
    }

    .btn-toggle-menu-mobile:hover i,
    .btn-toggle-menu-mobile:focus i,
    .btn-toggle-menu-mobile[aria-expanded="true"] i {
        color: #fff !important;
    }
}

/* ------------------------------------------------------------------------------------------------
   Phones (up to 767px): smaller headings, body text and buttons; outlined button text in bold
   ------------------------------------------------------------------------------------------------ */
@media (max-width: 767px) {
    /* Main headings */
    h1,
    h2,
    .slider-content h2,
    .section-title h2,
    .about-title h2,
    .feature-title h2,
    .cta-title h2,
    .call-area h2,
    .s-video-content h2,
    .breadcrumb-title h2,
    .booking-area h2,
    .video-area h2,
    .contact-bg02 h2,
    .auth-modal__form h2 {
        font-size: 28px !important;
        line-height: 1.2 !important;
    }

    /* Small headings above titles ("About us", "Explore", ...) */
    h5,
    .section-title h5,
    .about-title h5,
    .about-title > span {
        font-size: 14px !important;
    }

    /* Card and block titles */
    h3,
    h4,
    .services-08-content h3,
    .services-content h4,
    .bsingle__content h2,
    .pricing-head h3,
    .pricing-head h4,
    .feature-text h3,
    .room-block-content h3,
    .details__content h2 {
        font-size: 20px !important;
        line-height: 1.3 !important;
    }

    .pricing-box2 .price-count h2 {
        font-size: 30px !important;
    }

    /* Body text */
    body,
    p,
    li,
    .about-content p,
    .about-content3 ul li,
    .services-08-content p,
    .bsingle__content p {
        font-size: 14px !important;
        line-height: 1.6 !important;
    }

    .slider-content p,
    .s-slider-content p {
        font-size: 15px !important;
    }

    /* Smaller buttons */
    .btn,
    .btn.ss-btn,
    .header-three .top-btn,
    .photo-gallery-filters button,
    .photo-gallery-pagination button,
    .auth-modal__submit,
    .video-i {
        font-size: 12px !important;
        padding: 8px 16px !important;
    }

    .photo-gallery-pagination button {
        min-width: 38px;
        padding: 8px 12px !important;
    }

    /* Outlined ("open") buttons: bold text */
    .header-three .top-btn,
    .slider-btn .btn.ss-btn,
    .about-area .slider-btn .btn.ss-btn,
    .feature-area2 .btn.ss-btn,
    .pricing-area .pricing-btn .btn.ss-btn,
    section.booking .btn.ss-btn,
    .services-08-content .btn.ss-btn.service-read-more,
    .photo-gallery-filters button,
    .photo-gallery-pagination button,
    .auth-modal__submit {
        font-weight: 700 !important;
    }
}

/* Phones: hero buttons side by side ("Book Your Stay" and the play button / "Intro video") */
@media (max-width: 767px) {
    #home .slider-btn {
        align-items: center;
        display: flex !important;
        flex-wrap: nowrap;
        gap: 14px;
        justify-content: center;
        margin-bottom: 60px !important;
        width: 100%;
    }

    #home .slider-btn .btn.ss-btn {
        flex: 0 0 auto;
        margin: 0 !important;
        white-space: nowrap;
    }

    #home .slider-btn .video-i {
        align-items: center;
        display: inline-flex !important;
        flex: 0 0 auto;
        gap: 8px;
        margin: 0 !important;
        padding: 0 !important;
        white-space: nowrap;
    }

    #home .slider-btn .video-i i {
        align-items: center;
        display: inline-flex;
        font-size: 12px;
        height: 36px !important;
        justify-content: center;
        line-height: 1 !important;
        margin: 0 !important;
        width: 36px !important;
    }
}


/* Reservation button text bold; the top bar phone number in normal weight (it sits in a <strong>) */
.header-three .top-btn {
    font-weight: 700 !important;
}

.header-top .topbar-phone strong,
.header-top .topbar-phone a {
    font-weight: 400 !important;
}

/* Navbar menu items in all caps (the top bar is unchanged) */
.main-menu ul li a {
    text-transform: uppercase !important;
}

/* Navbar menu items semi-bold (top bar unchanged); capitals + bold are wider, so slightly smaller text */
.main-menu ul li a {
    font-weight: 600 !important;
}

@media (min-width: 1400px) {
    .main-menu ul li a { font-size: 14px; letter-spacing: .5px; }
    .second-menu .main-menu ul li { margin-inline-start: 26px; }
}

@media (min-width: 1200px) and (max-width: 1399px) {
    .main-menu ul li a { font-size: 13px; letter-spacing: .3px; }
    .second-menu .main-menu ul li { margin-inline-start: 16px; }
}

@media (min-width: 992px) and (max-width: 1199px) {
    .main-menu ul li a { font-size: 12px; letter-spacing: 0; }
    .second-menu .main-menu ul li { margin-inline-start: 10px; }
}

/* Small laptops / landscape tablets: about heading slightly smaller so it stays on two lines */
@media (min-width: 992px) and (max-width: 1199px) {
    .about-title h2 {
        font-size: 36px;
    }
}

/* Phones: shorter hero (the theme keeps it at 1000px, taller than most phone screens) */
@media (max-width: 767px) {
    .slider-active .single-slider.slider-bg {
        min-height: 740px !important;
    }
}

/* Phones: About photos overlap like on desktop, both landscape (3:2), the smaller one over the
   bottom-right corner of the larger one. Covers both the plain image (touch phones) and the
   hover-swap wrapper (mouse devices). */
@media (max-width: 767px) {
    .about-area .s-about-img {
        margin-bottom: 40px;
        /* Room for the second photo: it starts a little past halfway down the first (scales with width) */
        padding-bottom: 30%;
        position: relative;
    }

    .about-area .s-about-img > img,
    .about-area .s-about-img > .img-swap {
        aspect-ratio: 3 / 2;
        display: block !important;
        height: auto !important;
        margin-bottom: 0 !important;
        object-fit: cover;
        width: 82% !important;
    }

    .about-area .s-about-img .about-icon {
        bottom: 0 !important;
        inset-inline-end: 0 !important;
        left: auto !important;
        margin: 0 !important;
        position: absolute !important;
        top: auto !important;
        width: 82% !important;
        z-index: 3;
    }

    .about-area .s-about-img .about-icon > img,
    .about-area .s-about-img .about-icon > .img-swap {
        aspect-ratio: 3 / 2;
        display: block !important;
        height: auto !important;
        object-fit: cover;
        width: 100% !important;
    }

    .about-area .s-about-img .img-swap > .img-swap-original {
        display: block;
        height: 100% !important;
        object-fit: cover;
        width: 100% !important;
    }
}

/* Phones: less space above the About section photos (theme pads the section 90px) */
@media (max-width: 767px) {
    section.about-area.about-p {
        padding-top: 45px !important;
    }
}

/* About section: two buttons side by side on every screen size */
.about-area .slider-btn.about-buttons {
    align-items: center;
    display: flex !important;
    flex-wrap: nowrap;
    gap: 14px;
    width: auto;
}

.about-area .slider-btn.about-buttons .btn.ss-btn {
    flex: 0 0 auto;
    margin: 0 !important;
    white-space: nowrap;
}

/* Phones: facility cards as an auto-sliding carousel, with shorter cards (same design) */
@media (max-width: 767px) {
    .amenity-cards.slick-initialized {
        margin: 0;
    }

    .amenity-cards .slick-slide {
        padding: 12px 6px 30px;
    }

    .amenity-cards .slick-slide .services-08-item {
        margin-bottom: 0 !important;
    }

    /* Short stripes like the room slider: 20x5px gold bars, the active one stretched to 50px */
    .amenity-cards .slick-dots {
        line-height: 1;
        list-style: none;
        margin: 0;
        padding: 0;
        text-align: center;
    }

    .amenity-cards .slick-dots li {
        display: inline-block;
        margin: 0 5px;
    }

    .amenity-cards .slick-dots li button {
        background: var(--primary-color);
        border: none;
        border-radius: 50px;
        cursor: pointer;
        font-size: 0;
        height: 5px;
        padding: 0;
        text-indent: -99999px;
        transition: .3s;
        width: 20px;
    }

    .amenity-cards .slick-dots li.slick-active button {
        width: 50px;
    }

    /* Shorter cards: tighter padding, smaller icon, less space between elements */
    .amenity-cards .services-08-item {
        padding: 24px 26px;
    }

    .amenity-cards .services-08-thumb img {
        height: 56px;
        margin-bottom: 12px;
    }

    .amenity-cards .services-08-content h3 {
        margin-bottom: 8px;
    }

    .amenity-cards .services-08-content p {
        margin-bottom: 0;
    }

    .amenity-cards .services-icon2 img {
        max-height: 150px;
    }
}

/* "Jewel of Lake Victoria" section: two buttons side by side on every screen size */
.feature-area2 .feature-buttons {
    align-items: center;
    display: flex;
    flex-wrap: nowrap;
    gap: 14px;
}

.feature-area2 .feature-buttons .btn.ss-btn {
    flex: 0 0 auto;
    margin: 0 !important;
    white-space: nowrap;
}

/* Phones: facility carousel cards all the same height; each description exactly 3 lines */
@media (max-width: 767px) {
    .amenity-cards.slick-initialized .slick-track {
        display: flex !important;
    }

    .amenity-cards.slick-initialized .slick-slide {
        display: flex !important;
        height: auto;
    }

    .amenity-cards.slick-initialized .slick-slide > div,
    .amenity-cards.slick-initialized .amenity-card,
    .amenity-cards.slick-initialized .services-08-item {
        height: 100%;
        width: 100%;
    }

    .amenity-cards .services-08-content p {
        -webkit-box-orient: vertical;
        display: -webkit-box;
        -webkit-line-clamp: 3;
        line-height: 1.6 !important;
        min-height: calc(3 * 1.6em);
        overflow: hidden;
    }
}


/* Phones: shorter Hotel facilities section */
@media (max-width: 767px) {
    #service-details2 {
        padding-bottom: 50px !important;
        padding-top: 50px !important;
    }

    #service-details2 .section-title {
        margin-bottom: 30px !important;
    }

    .amenity-cards .slick-slide {
        padding-bottom: 20px !important;
    }
}

/* Room cards: "Book now for KSh..." button. The theme turns the text gold on hover, which made it
   invisible on the gold bar; keep it white and darken the bar slightly instead (all screen sizes). */
.single-services .book-button-custom:hover,
.single-services .book-button-custom:focus {
    color: #fff !important;
}

.single-services .day-book {
    transition: filter .3s ease;
}

.single-services .day-book:hover {
    filter: brightness(.88);
}

/* Phones: keep the button text on one line */
@media (max-width: 767px) {
    .single-services .book-button-custom {
        font-size: 13px !important;
        letter-spacing: .3px;
        padding: 14px 8px !important;
        white-space: nowrap;
        width: 100%;
    }
}

/* Phones: shorter "Jewel of Lake Victoria" section */
@media (max-width: 767px) {
    section.feature-area2 {
        padding-bottom: 50px !important;
        padding-top: 50px !important;
    }

    .feature-area2 .feature-img {
        margin-bottom: 24px !important;
    }

    .feature-area2 .feature-img img,
    .feature-area2 .feature-img .img-swap {
        aspect-ratio: 16 / 9;
        display: block;
        height: auto !important;
        margin-bottom: 0 !important;
        object-fit: cover;
        width: 100%;
    }

    .feature-area2 .feature-img .img-swap > .img-swap-original {
        height: 100% !important;
    }

    .feature-area2 .feature-title {
        padding-bottom: 12px !important;
    }
}

/* Phones: shorter testimonials section */
@media (max-width: 767px) {
    section.testimonial-area {
        padding-bottom: 50px !important;
        padding-top: 50px !important;
    }

    section.testimonial-area .section-title {
        margin-bottom: 30px !important;
    }

    section.testimonial-area .single-testimonial {
        padding-bottom: 20px !important;
        padding-top: 20px !important;
    }

    section.testimonial-area .review-icon {
        margin-bottom: 16px !important;
        margin-top: 16px !important;
    }

    section.testimonial-area .testi-author img,
    section.testimonial-area .testi-author .img-swap {
        height: 80px !important;
        width: 80px !important;
    }

    section.testimonial-area .testi-author .img-swap {
        border-radius: 50%;
        display: inline-block;
    }

    section.testimonial-area .testimonial-active .slick-dots {
        margin-bottom: 10px !important;
    }
}

/* Phones: shorter video tour section, smaller play button */
@media (max-width: 767px) {
    section.video-area {
        padding-bottom: 70px !important;
        padding-top: 70px !important;
    }

    section.video-area .popup-video img {
        height: auto;
        max-width: 70px;
    }

    section.video-area .section-title {
        margin-top: 12px;
    }
}

/* Phones: News & offers cards as an auto-sliding carousel (same stripes as the room slider),
   all cards the same height */
@media (max-width: 767px) {
    .news-cards.slick-initialized {
        margin: 0;
    }

    .news-cards.slick-initialized .slick-track {
        display: flex !important;
    }

    .news-cards.slick-initialized .slick-slide {
        display: flex !important;
        height: auto;
        padding: 0 6px 20px;
    }

    .news-cards.slick-initialized .slick-slide > div,
    .news-cards.slick-initialized .slick-slide > div > div,
    .news-cards.slick-initialized .bsingle__post {
        height: 100%;
        width: 100%;
    }

    .news-cards.slick-initialized .bsingle__post {
        display: flex;
        flex-direction: column;
        margin-bottom: 0 !important;
    }

    .news-cards.slick-initialized .bsingle__content {
        flex: 1 1 auto;
    }

    .news-cards .slick-dots {
        line-height: 1;
        list-style: none;
        margin: 0;
        padding: 0;
        text-align: center;
    }

    .news-cards .slick-dots li {
        display: inline-block;
        margin: 0 5px;
    }

    .news-cards .slick-dots li button {
        background: var(--primary-color);
        border: none;
        border-radius: 50px;
        cursor: pointer;
        font-size: 0;
        height: 5px;
        padding: 0;
        text-indent: -99999px;
        transition: .3s;
        width: 20px;
    }

    .news-cards .slick-dots li.slick-active button {
        width: 50px;
    }
}

/* Phones: shorter page banner (breadcrumb) on every inner page (theme minimum is 450px) */
@media (max-width: 767px) {
    .breadcrumb-area {
        min-height: 260px !important;
    }
}

/* Phones: two-button rows always fit the screen. The buttons share the width equally and may shrink,
   with smaller text; the About text column also drops the theme's extra 30px indent. */
@media (max-width: 767px) {
    .about-area .about-content.pl-30 {
        padding-left: 0 !important;
        padding-inline-start: 0 !important;
    }

    .about-area .slider-btn.about-buttons,
    .feature-area2 .feature-buttons {
        gap: 10px;
        width: 100%;
    }

    .about-area .slider-btn.about-buttons .btn.ss-btn,
    .feature-area2 .feature-buttons .btn.ss-btn {
        flex: 1 1 0 !important;
        font-size: 11px !important;
        letter-spacing: .5px !important;
        min-width: 0;
        padding: 8px 10px !important;
        text-align: center;
        white-space: nowrap;
    }
}

/* About Us "Why guests choose us": off-white background, so text switches from white to dark */
section.skill-area h2,
section.skill-area .skills-title h2 {
    color: #101010 !important;
}

section.skill-area h5,
section.skill-area .skills-title h5 {
    color: var(--secondary-color) !important;
}

section.skill-area p,
section.skill-area .skills-content p {
    color: #777 !important;
}

section.skill-area .skill-name,
section.skill-area .skill h4,
section.skill-area .skill h5,
section.skill-area .skill p,
section.skill-area .skill span:not(.count) {
    color: #101010 !important;
}

section.skill-area .skill-bar {
    background: #e2ddd5 !important;
}

/* Desktop: the team photo ("Why guests choose us") and the photo below it share one vertical edge,
   the line between the two columns */
@media (min-width: 992px) {
    section.skill-area .skills-img {
        margin-inline-start: -12px;
    }

    section.skill-area + section.feature-area2 .feature-img {
        margin-inline-end: -30px;
    }
}

/* Feature photos ("Jewel of Lake Victoria", About Us "Business or leisure"): the photo always fills its
   frame, so the dark overlay never shows over an empty strip and the hover swap isn't cut off */
.feature-area2 .feature-img > img,
.feature-area2 .feature-img > .img-swap,
.feature-area2 .feature-img > .img-swap > .img-swap-original {
    display: block;
    object-fit: cover;
    width: 100% !important;
}

/* Footer logo (theme option "footer_logo"): gold emblem with white lettering for the dark footer */
.footer-widget .f-widget-title img {
    height: auto;
    max-width: 140px;
}

/* Footer: logo the same height as the header logo */
.footer-widget .f-widget-title img {
    height: 64px !important;
    max-width: none !important;
    width: auto !important;
}

/* Footer icons (contact + social): square, sharp-cornered, outlined like the open buttons;
   fill with the primary colour on hover */
.f-contact i,
.footer-social a {
    align-items: center;
    background: transparent !important;
    border: 2px solid var(--primary-color);
    border-radius: 0 !important;
    color: var(--primary-color) !important;
    display: inline-flex;
    font-size: 15px;
    height: 38px;
    justify-content: center;
    line-height: 1 !important;
    transition: background-color .3s ease, color .3s ease;
    width: 38px;
}

.f-contact li:hover i,
.footer-social a:hover {
    background: var(--primary-color) !important;
    color: #fff !important;
}

/* Shorter bottom bar (copyright + social icons) */
.copyright-wrap > .container {
    padding-bottom: 12px;
    padding-top: 12px;
}

.copyright-wrap .row {
    min-height: 0;
}

.copyright-wrap .footer-social a {
    height: 32px;
    margin-inline-end: 8px;
    width: 32px;
}

/* Phones: much shorter newsletter section */
@media (max-width: 767px) {
    section.newslater-area {
        padding-bottom: 36px !important;
        padding-top: 36px !important;
    }

    section.newslater-area .section-title {
        margin-bottom: 18px !important;
    }

    section.newslater-area .section-title p {
        margin-bottom: 0;
    }

    section.newslater-area #contact-form4,
    section.newslater-area form {
        margin-bottom: 0 !important;
        width: 100% !important;
    }

    section.newslater-area .form-newsletter,
    section.newslater-area .newslater {
        height: auto !important;
        margin-bottom: 0 !important;
    }

    section.newslater-area .animations-01 {
        display: none;
    }
}

/* Phones: shared card carousel (partials/phone-slider.blade.php) on the Rooms and Services pages:
   equal card heights and the short gold stripes used by the room slider */
@media (max-width: 767px) {
    .phone-slider.slick-initialized {
        margin: 0;
    }

    .phone-slider.slick-initialized .slick-track {
        display: flex !important;
    }

    .phone-slider.slick-initialized .slick-slide {
        display: flex !important;
        height: auto;
        padding: 0 6px 20px;
    }

    /* Only stretch the slide wrappers and the card itself, never the card's inner blocks
       (image / text), or the text gets pushed below the card and clipped by the slider */
    .phone-slider.slick-initialized .slick-slide > div:not(.single-services):not(.services-08-item):not(.bsingle__post),
    .phone-slider.slick-initialized .single-services,
    .phone-slider.slick-initialized .services-08-item,
    .phone-slider.slick-initialized .bsingle__post {
        height: 100%;
        width: 100%;
    }

    .phone-slider.slick-initialized .single-services,
    .phone-slider.slick-initialized .services-08-item,
    .phone-slider.slick-initialized .bsingle__post {
        margin: 0 !important;
    }

    .phone-slider .slick-dots {
        line-height: 1;
        list-style: none;
        margin: 0;
        padding: 0;
        text-align: center;
    }

    .phone-slider .slick-dots li {
        display: inline-block;
        margin: 0 5px;
    }

    .phone-slider .slick-dots li button {
        background: var(--primary-color);
        border: none;
        border-radius: 50px;
        cursor: pointer;
        font-size: 0;
        height: 5px;
        padding: 0;
        text-indent: -99999px;
        transition: .3s;
        width: 20px;
    }

    .phone-slider .slick-dots li.slick-active button {
        width: 50px;
    }
}

/* Page banner (breadcrumb) on every inner page: the theme pulls the white header 110px over the top of
   the banner (.header-three .menu-area margin-bottom: -110px), which made the titles sit high. Pad the
   banner by that much so the title + "Home | Page" links are centred in the visible part. */
.breadcrumb-area {
    padding-top: 110px !important;
}

.breadcrumb-area > .container {
    width: 100%;
}

.breadcrumb-title {
    align-items: center;
    display: flex;
    flex-direction: column;
    text-align: center;
}

.breadcrumb-title h2 {
    margin-bottom: 18px !important;
    margin-top: 0 !important;
}

/* The theme hides the "Home | Page" links below 992px; show them everywhere */
.breadcrumb-area .breadcrumb-wrap nav {
    display: block !important;
}

@media (max-width: 767px) {
    .breadcrumb-area {
        min-height: 280px !important;
    }

    .breadcrumb-title h2 {
        margin-bottom: 10px !important;
    }

    .breadcrumb-area .breadcrumb li,
    .breadcrumb-area .breadcrumb li a {
        font-size: 14px;
    }

    .breadcrumb-area .breadcrumb-item + .breadcrumb-item::before {
        padding-inline-end: 10px;
        padding-inline-start: 6px;
    }

    /* Single blog post: less space between the banner and the post title
       (the layout's wrapping section already adds 40px) */
    .inner-blog.b-details-p {
        padding-top: 0 !important;
    }
}

/* ---------------------------------------------------------------------------------------------------
   Layout stability (perf fix 6): carousels render their slides stacked until Slick builds them, then
   collapse, which pushed the content below. Before Slick starts, show only what it will show first.
   (Slick adds .slick-initialized before it measures, so these rules never affect the built carousel.) */
/* !important: the slides carry Bootstrap's .d-flex (display:flex !important) */
.slider-active:not(.slick-initialized) > .single-slider ~ .single-slider,
.room-details-slider:not(.slick-initialized) > a ~ a {
    display: none !important;
}


/* Gallery grid: width/height attributes reserve each photo's space before it loads */
#list-photo .photo-item img {
    height: auto;
}

/* Room thumbnail strip: until Slick builds it, show the thumbnails in one clipped row (as Slick will) */
.room-details-slider-nav:not(.slick-initialized) {
    display: flex;
    overflow: hidden;
    gap: 8px;
}

/* Room photos: width/height attributes reserve their space; keep the proportions */
.room-details-slider img {
    height: auto;
}

/* Background photos served as AVIF/WebP through image-set(): browsers that cannot read image-set() with
   type() get the original JPEG/PNG instead (ResponsiveImage::backgroundCss sets --acacia-bg-fallback). */
@supports not (background-image: image-set(url("a.png") type("image/png"))) {
    .hero-bg,
    .hero-slot-image,
    .breadcrumb-area.acacia-banner,
    .footer-top.acacia-footer-bg.bg-in,
    .testimonial-area.acacia-testimonial-bg.bg-in,
    .video-area.acacia-video-bg.bg-in {
        background-image: var(--acacia-bg-fallback) !important;
    }
}

/* Testimonials: every card in the carousel is as tall as the tallest one */
.testimonial-active .slick-track {
    display: flex;
}

.testimonial-active .slick-slide.single-testimonial {
    height: auto;
}

/* Cookie bar buttons: always show the full label (phones cut "Accept cookies" short) */
.site-notice .site-notice__actions button {
    white-space: nowrap;
    overflow: visible !important;
    text-overflow: clip !important;
    max-width: none !important;
    width: auto !important;
    padding: 6px 14px;
}

/* Phone hero: a little taller, content centred (no extra space under the buttons) */
@media (max-width: 767px) {
    .slider-active .single-slider.slider-bg {
        min-height: 800px !important;
    }

    /* The sticky header covers the hero's top ~110px: offset by that so the content sits in the middle
       of the visible part */
    #home .slider-content {
        margin-top: 110px !important;
        margin-bottom: 0 !important;
    }

    #home .slider-btn {
        margin-bottom: 0 !important;
    }
}

/* "If you need any help" card (room and service pages): smaller number on one line, shorter card */
.service-detail-contact {
    padding: 28px 24px;
}

.service-detail-contact h3 {
    margin-bottom: 18px;
    padding-bottom: 14px;
}

.service-detail-contact a {
    font-size: clamp(22px, 6vw, 26px);
    line-height: 1.3;
    white-space: nowrap;
}

/* Service pages on phones: less space between the page banner and the content */
@media (max-width: 767px) {
    .acacia-service-detail.pt-120 {
        padding-top: 20px !important;
    }
}
