/*
Theme Name: Jungle Hostel
Theme URI: https://junglehostel.example
Author: Jungle Hostel
Description: Approved Jungle Hostel hybrid design, with editable pages, booking links and guest reviews.
Version: 1.10.23
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: jungle-hostel
*/

:root{--forest:#10291e;--deep:#0b1e15;--lime:#c6fa65;--cream:#f8f4e8;--sage:#e8efdc;--coral:#ff7759;--yellow:#ffdc75}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--forest);font-family:'DM Sans',sans-serif}a{text-decoration:none;color:inherit}button{font:inherit}img{display:block;max-width:100%}h1,h2,h3,p{margin-top:0}h1,h2,h3,.brand,.ticker{font-family:'Space Grotesk',sans-serif}.wrap{width:min(1280px,calc(100% - 9vw));margin:auto}.eyebrow{font-size:12px;font-weight:800;letter-spacing:.19em;text-transform:uppercase}.btn{display:inline-flex;align-items:center;justify-content:center;gap:16px;border-radius:100px;padding:16px 25px;background:var(--lime);color:var(--forest);font-size:13px;letter-spacing:.06em;font-weight:800;text-transform:uppercase;transition:transform .2s,background .2s}.btn:hover{transform:translateY(-3px);background:#ddff9b}.btn.dark{background:var(--forest);color:white}.btn.dark:hover{background:#2d5340}.btn.outline{background:transparent;color:white;border:1px solid #ffffffa0}.btn.outline:hover{background:#ffffff24}.nav{position:absolute;z-index:5;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:26px 4.5%;color:white}.brand{font-size:30px;font-weight:700;letter-spacing:-.09em;line-height:.8}.brand span{color:var(--lime)}.brand small{display:block;font-family:'DM Sans',sans-serif;letter-spacing:.24em;font-size:9px;margin-top:12px}.navlinks{display:flex;align-items:center;gap:28px;font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.navlinks>a:not(.btn):hover{color:var(--lime)}.menu{display:none;border:1px solid #ffffff80;color:white;background:#0c271e70;padding:10px 14px;border-radius:8px}.hero{position:relative;min-height:750px;height:100svh;max-height:1050px;display:flex;align-items:end;overflow:hidden;background:#1c3527;color:white}.hero::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#061a12a8 0%,#061a1220 32%,#061a12d9 100%),url('https://h-img3.cloudbeds.com/uploads/294427/escape_jungle_hostel_001~~651624bf7f945.jpg') center/cover}.hero-inner{position:relative;width:100%;padding-bottom:8vh}.hero .eyebrow{color:var(--lime);margin-bottom:25px}.hero h1{font-size:clamp(75px,11.5vw,170px);line-height:.82;letter-spacing:-.09em;font-weight:700;margin:0;text-transform:uppercase}.hero h1 em{font-style:normal;color:var(--lime)}.hero-foot{display:flex;align-items:end;justify-content:space-between;gap:25px;margin-top:35px}.hero-foot p{font-size:clamp(17px,1.6vw,22px);line-height:1.5;max-width:510px;margin:0}.hero-actions{display:flex;gap:12px;flex-wrap:wrap}.stamp{position:absolute;z-index:2;right:8%;top:30%;width:134px;height:134px;border:1px solid #ffffffad;background:#10291e77;border-radius:50%;display:grid;place-items:center;text-align:center;font-weight:800;letter-spacing:.06em;transform:rotate(12deg)}.ticker{overflow:hidden;background:var(--lime);padding:18px 0;white-space:nowrap;font-size:18px;font-weight:700}.track{display:flex;width:max-content;animation:marquee 30s linear infinite}.track>div{display:flex;align-items:center;flex-shrink:0}.track span{margin-right:36px}.track b{color:#e76547;margin-right:36px}@keyframes marquee{to{transform:translateX(-50%)}}section{padding:105px 0}.section-title{font-size:clamp(46px,6.3vw,90px);line-height:.96;letter-spacing:-.075em;text-transform:uppercase;margin:15px 0 25px}.lead{font-size:18px;line-height:1.75;color:#4a5e50;max-width:590px}.split{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:8vw}.photo-frame{position:relative}.photo-frame img{width:100%;height:560px;object-fit:cover;border-radius:12px;transform:rotate(2deg)}.sticker{position:absolute;bottom:-24px;left:-30px;display:grid;place-items:center;text-align:center;width:135px;height:135px;border-radius:50%;background:var(--yellow);font-weight:900;transform:rotate(-12deg);line-height:1.15}.rooms{background:var(--sage)}.section-head{display:flex;align-items:end;justify-content:space-between;gap:25px;margin-bottom:38px}.section-head .lead{max-width:360px;margin:0}.room-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.room-card{overflow:hidden;background:white;border-radius:14px}.room-photo{height:350px;position:relative;overflow:hidden}.room-photo img{width:100%;height:100%;object-fit:cover;transition:transform .4s}.room-card:hover .room-photo img{transform:scale(1.05)}.pill{position:absolute;top:20px;left:20px;border-radius:30px;padding:9px 14px;background:var(--lime);font-weight:800;font-size:12px;text-transform:uppercase}.room-body{padding:28px}.room-body h3{font-size:clamp(25px,3vw,36px);letter-spacing:-.06em;margin:0 0 10px}.room-body p{line-height:1.65;color:#56685b}.room-bottom{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid #dce4d9;padding-top:20px;font-size:13px;font-weight:800}.room-bottom a{color:#e35f42}.dark-section{background:var(--forest);color:white;overflow:hidden}.dark-section .eyebrow{color:var(--lime)}.dark-section .section-title em{font-style:normal;color:var(--coral)}.dark-section .lead{color:#d0ddcf}.collage{display:grid;grid-template-columns:1.15fr 1fr 1fr;grid-template-rows:245px 245px;gap:12px;margin-top:42px}.collage img{width:100%;height:100%;object-fit:cover;border-radius:9px}.collage img:first-child{grid-row:span 2}.spaces-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:40px}.space{background:white;border-radius:12px;overflow:hidden}.space img{width:100%;height:245px;object-fit:cover}.space div{padding:25px}.space h3{font-size:25px;letter-spacing:-.05em;margin-bottom:10px}.space p{line-height:1.6;color:#55685b;margin:0}.location{background:var(--yellow)}.location .lead{color:#4d4938}.map-tile{background:var(--cream);border-radius:20px;padding:55px 30px;min-height:330px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;transform:rotate(2deg)}.map-tile strong{font-family:'Space Grotesk';font-size:clamp(70px,9vw,120px);letter-spacing:-.1em;line-height:1}.map-tile span{font-size:13px;font-weight:800;letter-spacing:.17em}.faq{background:var(--cream)}.faq-list{max-width:850px;margin:40px auto 0}.faq details{border-bottom:1px solid #cdd8c9;padding:20px 0}.faq summary{cursor:pointer;font-weight:800;font-size:18px}.faq details p{color:#526456;line-height:1.7;margin:14px 0 0}.final{background:var(--coral);text-align:center}.final .section-title{font-size:clamp(54px,8vw,120px)}.final p{font-size:19px;line-height:1.5}.footer{background:var(--deep);color:white;padding:65px 0 28px}.footer-grid{display:flex;justify-content:space-between;gap:35px;flex-wrap:wrap}.footer-grid p{color:#c0cfc4}.footer-links{display:flex;gap:22px;flex-wrap:wrap;font-weight:700;font-size:13px}.fine{border-top:1px solid #ffffff33;padding-top:23px;margin-top:65px;color:#a5b9aa;font-size:12px}@media(max-width:950px){.navlinks{display:none;position:absolute;top:75px;left:4%;right:4%;padding:22px;background:var(--forest);border-radius:12px;flex-direction:column;align-items:stretch}.navlinks.open{display:flex}.menu{display:block}.stamp{display:none}.hero-foot{align-items:start;flex-direction:column}.split{grid-template-columns:1fr;gap:55px}.photo-frame img{height:440px}.spaces-grid{grid-template-columns:1fr 1fr}.section-head{align-items:start;flex-direction:column}}@media(max-width:650px){.wrap{width:calc(100% - 38px)}.nav{padding:22px 19px}.brand{font-size:25px}.hero{min-height:700px}.hero-inner{padding-bottom:75px}.hero h1{font-size:clamp(66px,15vw,110px)}.hero-foot p{font-size:17px}section{padding:75px 0}.room-grid,.spaces-grid{grid-template-columns:1fr}.room-photo{height:270px}.photo-frame img{height:360px}.sticker{left:0;width:100px;height:100px;font-size:12px}.collage{grid-template-columns:1fr 1fr;grid-template-rows:200px 200px}.collage img:nth-child(5){display:none}.map-tile{min-height:250px}.footer-grid{flex-direction:column}.ticker{font-size:15px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important;transition:none!important}}
.reviews{background:var(--forest);color:white}.reviews .eyebrow{color:var(--lime)}.reviews .section-title{max-width:1000px}.review-summary{display:flex;align-items:center;gap:28px;flex-wrap:wrap;margin:32px 0 38px}.review-score{background:var(--lime);color:var(--forest);padding:24px 27px;border-radius:14px;font:700 58px/1 'Space Grotesk',sans-serif;letter-spacing:-.08em}.review-score small{font-size:20px;letter-spacing:0}.review-meta strong{display:block;font:700 26px 'Space Grotesk',sans-serif}.review-meta p{margin:8px 0;color:#d0ddcf}.review-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:30px}.review-card{background:#204231;border:1px solid #ffffff20;border-radius:14px;padding:27px;display:flex;flex-direction:column;gap:18px;min-height:220px}.review-card .review-stars{color:var(--lime);font-weight:800;letter-spacing:.06em}.review-card p{font-size:17px;line-height:1.65;margin:0;flex:1}.review-card footer{color:#c6d9c9;font-size:13px;font-weight:700}.review-actions{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.review-actions .review-note{font-size:12px;color:#c6d9c9}@media(max-width:800px){.review-grid{grid-template-columns:1fr}.review-card{min-height:0}}

/* WordPress page support; homepage design rules above are unchanged */
.page-hero{background:var(--forest);color:white;padding:175px 0 85px}
.page-hero h1{font-size:clamp(52px,8vw,112px);line-height:.95;letter-spacing:-.075em;margin:16px 0 20px;text-transform:uppercase}
.page-content{min-height:40vh;padding:80px 0}
.page-content .entry-content{max-width:950px;font-size:18px;line-height:1.8}
.page-content .entry-content img{border-radius:14px}
.page-content .entry-content a:not(.btn){text-decoration:underline}
.page-content .entry-content h2{font-size:clamp(32px,4vw,55px);letter-spacing:-.06em;line-height:1.1;margin-top:35px}
.page-content .entry-content h3{font-size:28px}
.page-content .entry-content .wp-block-columns{gap:25px}
body:not(.home) .nav{position:relative;background:var(--deep)}
body:not(.home) .navlinks{gap:17px}
body:not(.home) .navlinks>a{font-size:11px}
body:not(.home) .navlinks>a:not(.btn):hover{color:var(--lime)}
.screen-reader-text{position:absolute;left:-10000px}
.screen-reader-text:focus{left:20px;top:20px;z-index:999;background:white;color:black;padding:10px}
@media(max-width:950px){body:not(.home) .navlinks{position:absolute}}

/* Accommodation and Meet the Team; scoped to secondary pages */
.page-hero p{max-width:650px;font-size:19px;line-height:1.65;color:#e1e9df}
.jungle-page-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px}
.jungle-team-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.jungle-feature-card{background:#f5f2e8;border-radius:16px;overflow:hidden;color:#17382a;box-shadow:0 12px 35px #082a1710}
.jungle-feature-card>img,.jungle-photo-placeholder{width:100%;height:310px;object-fit:cover;display:flex;align-items:center;justify-content:center}
.jungle-photo-placeholder{background:#dce7c9;color:#406349;text-align:center;padding:20px;font-weight:800;letter-spacing:.05em}
.jungle-feature-body{padding:32px}
.jungle-feature-body h2{font-size:clamp(32px,4vw,54px);letter-spacing:-.06em;line-height:1.02;margin:12px 0 15px}
.jungle-feature-body p{font-size:16px;line-height:1.7;margin-bottom:25px}
.jungle-feature-body .eyebrow{color:#4b704d}
.jungle-secondary-copy{padding:70px 0 0;max-width:720px}
.jungle-secondary-copy h2,.jungle-team-empty h2{font-size:clamp(36px,5vw,65px);line-height:1;letter-spacing:-.06em}
.jungle-secondary-copy p,.jungle-team-empty p{font-size:18px;line-height:1.7}
.jungle-team-empty{max-width:690px;padding:30px 0}
@media(max-width:850px){.jungle-page-grid,.jungle-team-grid{grid-template-columns:1fr}.jungle-feature-card>img,.jungle-photo-placeholder{height:250px}}

/* Secondary information pages — no changes to the approved homepage */
.jungle-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.jungle-info-panel{background:#f5f2e8;color:#17382a;border-radius:16px;padding:36px}
.jungle-info-panel .eyebrow{color:#4b704d}
.jungle-info-panel h2{font-size:clamp(30px,4vw,50px);line-height:1.05;letter-spacing:-.05em;margin:14px 0}
.jungle-info-panel p{font-size:17px;line-height:1.7}
.jungle-contact-actions{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:14px}
@media(max-width:800px){.jungle-info-grid{grid-template-columns:1fr}.jungle-info-panel{padding:25px}}

/* v1.4 header logo: only applies when a custom logo is selected */
.brand .jungle-header-logo{display:block;width:auto;height:auto;max-height:58px;max-width:230px;object-fit:contain}
@media(max-width:650px){.brand .jungle-header-logo{max-height:46px;max-width:170px}}

/* v1.7 footer image */
.jungle-footer-brand .jungle-footer-logo{display:block;width:auto;max-width:min(75vw,380px);max-height:none;object-fit:contain}

/* v1.8 — Social links and WhatsApp */
.jungle-social-links{display:flex;gap:12px 18px;flex-wrap:wrap;margin-top:18px}
.jungle-social-links a{font-size:12px;font-weight:700;letter-spacing:.04em;text-decoration:none}
.jungle-contact-social{grid-column:1/-1;padding:16px 0 10px}
.jungle-contact-social h2{font-size:clamp(22px,3vw,36px);margin:0 0 18px}
.jungle-contact-social-buttons{display:flex;flex-wrap:wrap;gap:12px}
.jungle-whatsapp-float{position:fixed;right:20px;bottom:20px;z-index:10;background:#25d366;color:#102b1c!important;border-radius:100px;padding:14px 20px;text-decoration:none;font-size:14px;font-weight:800;box-shadow:0 6px 25px rgba(0,0,0,.3);line-height:1.1}
.jungle-whatsapp-float:hover{filter:brightness(1.08)}
@media(max-width:600px){.jungle-whatsapp-float{right:12px;bottom:12px;padding:13px 16px;font-size:13px}}

/* v1.9 — Gallery and seasonal offers */
.jungle-gallery-section,.jungle-gallery-home{padding:70px 0;background:#f4f0e7;color:#15372a}
.jungle-gallery-filters{display:flex;flex-wrap:wrap;gap:9px;margin:0 0 28px}
.jungle-gallery-filters button{border:1px solid #183e2b;background:transparent;color:#183e2b;border-radius:40px;padding:11px 16px;cursor:pointer;font:700 12px inherit;letter-spacing:.04em}
.jungle-gallery-filters button.active,.jungle-gallery-filters button:hover{background:#183e2b;color:#fff}
.jungle-gallery-grid{columns:3 250px;column-gap:15px}
.jungle-gallery-tile{width:100%;padding:0;border:0;background:transparent;cursor:pointer;display:block;break-inside:avoid;margin:0 0 15px;border-radius:6px;overflow:hidden}
.jungle-gallery-tile[hidden]{display:none!important}
.jungle-gallery-tile img{width:100%;height:auto;display:block;transition:transform .2s ease}
.jungle-gallery-tile:hover img{transform:scale(1.03)}
.jungle-gallery-more-wrap{text-align:center;margin-top:28px}
.jungle-gallery-more[hidden]{display:none!important}
.jungle-gallery-home-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:25px 0}
.jungle-gallery-home-grid img{width:100%;height:220px;object-fit:cover;display:block;border-radius:4px}
.jungle-lightbox,.jungle-promo-overlay{position:fixed;inset:0;background:rgba(0,0,0,.85);z-index:100000;display:flex;align-items:center;justify-content:center;padding:24px}
.jungle-lightbox[hidden],.jungle-promo-overlay[hidden]{display:none!important}
.jungle-lightbox figure{margin:0;max-width:94vw;max-height:90vh;text-align:center;color:white}
.jungle-lightbox img{max-width:100%;max-height:82vh;object-fit:contain}
.jungle-lightbox>button,.jungle-promo-close{position:absolute;right:20px;top:12px;background:transparent;color:white;border:0;font-size:40px;cursor:pointer;z-index:2}
.jungle-lightbox-caption{font-size:13px;margin-top:6px}
.jungle-modal-open{overflow:hidden}
.jungle-promo-overlay{background:rgba(8,22,15,.75)}
.jungle-promo-card{position:relative;width:min(92vw,540px);max-height:90vh;overflow:auto;background:#f4f0e7;color:#173728;border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.4);text-align:center}
.jungle-promo-image{width:100%;max-height:42vh;object-fit:cover;display:block}
.jungle-promo-content{padding:22px 26px 30px}
.jungle-promo-content h2{font-size:clamp(24px,4vw,38px);line-height:1.1;margin:0 0 12px}
.jungle-promo-content p{margin:0 0 20px}
.jungle-promo-content .btn{display:inline-block}
.jungle-promo-close{right:10px;top:6px;background:rgba(0,0,0,.55);border-radius:100px;width:42px;height:42px;line-height:40px}
@media(max-width:700px){.jungle-gallery-home-grid{grid-template-columns:repeat(2,1fr)}.jungle-gallery-home-grid img{height:150px}.jungle-gallery-section,.jungle-gallery-home{padding:45px 0}}

/* v1.9.2: Cloudbeds 2.0 overlay button integration */
cb-book-now-button {display:inline-block;vertical-align:middle;cursor:pointer;max-width:100%}
cb-book-now-button.jungle-cb-button {font:inherit}
cb-book-now-button .jungle-cb-button, .jungle-cb-button {cursor:pointer}
cb-book-now-button .jungle-cb-button.btn, .jungle-cb-button.btn {display:inline-flex;align-items:center;justify-content:center;gap:16px;border-radius:100px;padding:16px 25px;background:var(--lime);color:var(--forest);font-size:13px;letter-spacing:.06em;font-weight:800;text-transform:uppercase;border:0}
cb-book-now-button .jungle-cb-button.btn.dark, .jungle-cb-button.btn.dark {background:var(--forest);color:white}
.room-bottom cb-book-now-button .jungle-cb-button, .room-bottom .jungle-cb-button {color:#e35f42;font-size:13px;font-weight:800;background:transparent;border:0;padding:0}

/* Cloudbeds progressive enhancement: visible hosted link until overlay component is ready. */
.jungle-booking-control {display:inline-flex;align-items:center;vertical-align:middle;max-width:100%}
.jungle-booking-control cb-book-now-button {display:none}
.jungle-booking-control.cloudbeds-ready cb-book-now-button {display:inline-block}
.jungle-booking-control.cloudbeds-ready .jungle-booking-fallback {display:none}
.jungle-booking-control .jungle-booking-fallback:not(.btn) {font-size:13px;font-weight:800;color:#e35f42}
.jungle-booking-control cb-book-now-button {font:inherit;color:inherit}

/* v1.9.4: restore direct dorm details navigation without changing booking controls */
.room-card .jungle-dorm-link{display:block;text-decoration:none;color:inherit}
.room-card .jungle-dorm-details{display:inline-block;margin:0 0 12px;font-weight:800;text-decoration:underline;text-underline-offset:4px;color:inherit}
.room-card .jungle-dorm-link:focus-visible,.room-card .jungle-dorm-details:focus-visible{outline:3px solid currentColor;outline-offset:3px}

/* v1.9.5: Cloudbeds overlay must remain above the floating WhatsApp link. */
body:has(cb-book-now-button[open]) .jungle-whatsapp-float{visibility:hidden;pointer-events:none}

/* v1.9.6 — What's On, social media and Party Calendar */
.jungle-home-social{background:#10271d;padding:20px 0;color:#fff}
.jungle-social-feature{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.jungle-social-feature strong{font-size:clamp(18px,2.5vw,27px);letter-spacing:.04em;color:#b5ff66}
.jungle-social-feature-links{display:flex;gap:10px;flex-wrap:wrap}
.jungle-social-feature-button{display:inline-flex;align-items:center;justify-content:center;padding:12px 19px;border-radius:7px;color:#fff!important;font-weight:800;text-decoration:none;min-width:125px;background:#284734;border:1px solid #759e71}
.jungle-social-instagram{background:linear-gradient(110deg,#ed7b30,#dc247e,#713ed1);border:0}
.jungle-social-facebook{background:#1768d3;border:0}
.jungle-social-tiktok{background:#080808;border:1px solid #fff}
.jungle-social-event-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:30px}
.jungle-events-page{background:#0c1b14;color:#f7f7f2}
.jungle-events-page .page-hero{background:linear-gradient(110deg,#0a1c15,#18432b);color:#fff}
.jungle-whats-hero .jungle-social-feature{margin-top:24px}
.jungle-events-section{padding:60px 0;border-bottom:1px solid #294034}
.jungle-events-section .section-head{margin-bottom:25px;display:flex;align-items:end;gap:20px;flex-wrap:wrap}
.jungle-events-section .section-title{color:#f5f4e9;font-size:clamp(30px,4vw,56px);margin:0}
.jungle-events-section .section-head p{color:#c9d4cc}
.jungle-event-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:20px}
.jungle-event-card{background:#10241b;border:1px solid #345040;border-radius:12px;overflow:hidden;min-width:0}
.jungle-event-image{display:block;width:100%;height:210px;object-fit:cover}
.jungle-event-body{padding:22px}
.jungle-event-body h3{font-size:22px;line-height:1.15;margin:0 0 12px;color:#fff}
.jungle-event-body p{color:#e3e9e1;line-height:1.5}
.jungle-event-body .jungle-event-highlight{color:#b5ff66;font-weight:800;margin:7px 0}
.jungle-event-description p{margin:10px 0}
.jungle-event-more{color:#b5ff66;font-weight:800}
.jungle-party-teaser{padding:65px 0;background:#173b28;color:white}
.jungle-party-teaser h2{font-size:clamp(28px,4vw,54px);margin:0 0 12px}
.jungle-party-teaser p{margin-bottom:24px}
.jungle-calendar-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}
.jungle-calendar-toolbar h2{margin:0;text-align:center;font-size:clamp(20px,3vw,36px)}
.jungle-calendar-toolbar button,.jungle-calendar-filter button{border:1px solid #b5ff66;background:#183d29;color:#b5ff66;border-radius:7px;padding:10px 16px;cursor:pointer;font-weight:800}
.jungle-calendar-weekdays,.jungle-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.jungle-calendar-weekdays{text-align:center;color:#b5ff66;font-weight:800;margin-bottom:8px;font-size:12px}
.jungle-calendar-day{min-height:85px;min-width:0;background:#142b20;border:1px solid #345040;color:#a4b4a9;border-radius:7px;padding:8px;text-align:left;font:inherit}
.jungle-calendar-day:disabled{opacity:.7}
.jungle-calendar-day.has-event{background:#235337;color:#fff;border-color:#b5ff66;cursor:pointer}
.jungle-calendar-day.selected{outline:3px solid #b5ff66}
.jungle-calendar-dots{display:block;color:#b5ff66;font-size:10px;line-height:1.3;overflow-wrap:anywhere;margin-top:6px}
.jungle-calendar-hint{color:#c2cfc5;font-size:13px;margin:14px 0 28px}
.jungle-calendar-filter{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:25px 0}
.jungle-calendar-filter select{padding:12px;border-radius:6px;background:#173624;color:white;border:1px solid #77967d}
@media(max-width:600px){.jungle-calendar-day{min-height:56px;padding:5px;font-size:12px}.jungle-calendar-dots{font-size:8px}.jungle-events-section{padding:38px 0}.jungle-social-feature-button{min-width:0;flex:1}.jungle-social-feature-links{width:100%}}

/* v1.9.9: image placeholders, replaceable via each event Featured Image */
.jungle-event-generic{display:flex;align-items:center;justify-content:center;text-align:center;padding:25px;background:linear-gradient(135deg,#10291e,#315b40);color:#c6fa65;font-size:26px;font-weight:900;text-transform:uppercase}

/* v1.10.0 editorial pages */
.jungle-guide{background:#f7f5eb}.jungle-guide .guide-intro{font-size:19px;line-height:1.75;max-width:850px;color:#476052}.guide-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:25px;margin-top:36px}.guide-card{background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 8px 28px #10291e12}.guide-card .guide-photo{height:240px;background:linear-gradient(145deg,#1c5b45,#0b291f);overflow:hidden}.guide-card .guide-photo img{width:100%;height:100%;object-fit:cover}.guide-card .guide-copy{padding:28px}.guide-card h2{font-size:clamp(26px,3vw,39px);letter-spacing:-.06em;margin-bottom:12px}.guide-card p{line-height:1.7;color:#506356}.guide-wide{grid-column:1/-1}.guide-notice{padding:26px 32px;border-radius:16px;background:#d9f5a5;color:#143523;margin:30px 0}.guide-notice h2{font-size:clamp(26px,4vw,43px);margin:0 0 8px}.guide-notice p{margin:0;line-height:1.6;font-size:18px}.guide-small{font-size:14px;color:#5b6c61}.guide-steps{counter-reset:step}.guide-steps li{margin:12px 0;padding:10px 0;line-height:1.6}.guide-steps li::marker{color:#1a6442;font-weight:900}.guide-qa details{background:#fff;padding:20px 25px;border-radius:12px;margin:12px 0}.guide-qa summary{font-weight:800;cursor:pointer}.guide-qa p{margin:12px 0 0;line-height:1.65}.guide-cta{text-align:center;background:#10291e;color:#fff}.guide-cta h2{font-size:clamp(38px,6vw,72px);letter-spacing:-.06em}.guide-cta p{font-size:18px}.jungle-explore-nav{position:relative;display:inline-flex;align-items:center}.jungle-explore-nav>button{background:none;border:0;color:inherit;font:inherit;cursor:pointer;font-weight:800;font-size:12px;letter-spacing:.04em;padding:8px}.jungle-explore-menu{display:none;position:absolute;top:100%;left:0;min-width:225px;background:#10291e;padding:12px;border-radius:10px;box-shadow:0 12px 25px #0006;z-index:30}.jungle-explore-nav:hover .jungle-explore-menu,.jungle-explore-nav:focus-within .jungle-explore-menu,.jungle-explore-nav.open .jungle-explore-menu{display:grid}.jungle-explore-menu a{display:block;padding:11px 9px;color:#fff;font-size:12px}.jungle-explore-menu a:hover{color:#c6fa65}.jungle-party-tickets{margin:0 0 30px;padding:25px 32px;border:2px solid #a3e635;border-radius:16px;background:#10251b;color:white;text-align:center}.jungle-party-tickets h2{color:#c6fa65;font-size:clamp(25px,4vw,40px);margin-bottom:10px}.jungle-party-tickets p{font-size:18px;line-height:1.6;margin:0}@media(max-width:760px){.guide-grid{grid-template-columns:1fr}.guide-wide{grid-column:auto}.jungle-explore-nav{display:block}.jungle-explore-menu{position:static;box-shadow:none}.jungle-explore-nav>button{padding:12px 0}.guide-card .guide-photo{height:205px}}

/* v1.10.1: guide imagery and visible navigation links */
.guide-link{display:inline-block;margin-top:16px;font-weight:900;font-size:13px;color:#175c3d;text-decoration:underline;text-underline-offset:4px}.guide-link:hover{color:#098c57}.jungle-social-nav .jungle-explore-menu{min-width:180px}.navlinks>.btn{white-space:nowrap}

/* v1.10.2 header social placement and responsive navigation */
.nav{gap:16px}.navlinks{gap:clamp(8px,1vw,18px);margin-left:auto}.navlinks>a:not(.btn){white-space:nowrap}.jungle-header-social{display:flex;align-items:center;gap:8px;margin-left:auto;flex-shrink:0}.jungle-header-social-link{display:grid;place-items:center;width:30px;height:30px;border:1px solid #ffffff7a;border-radius:50%;font-size:20px;font-weight:900;color:white;line-height:1;transition:transform .2s,background .2s}.jungle-header-social-link:hover{transform:translateY(-2px);background:#ffffff25}.jungle-header-instagram{color:#f7a5d9}.jungle-header-facebook{color:#94c6ff}.jungle-header-tiktok{color:#fff}.navlinks>.btn{padding:13px 17px}.jungle-explore-nav>button{font-size:11px}
@media(max-width:1250px){.nav{padding-left:3%;padding-right:3%}.navlinks{gap:8px}.navlinks>a:not(.btn){font-size:10px}.brand{font-size:26px}}
@media(max-width:1120px){.navlinks{display:none;position:absolute;top:75px;left:4%;right:4%;padding:22px;background:var(--forest);border-radius:12px;flex-direction:column;align-items:stretch;max-height:calc(100vh - 90px);overflow-y:auto}.navlinks.open{display:flex}.menu{display:block}.jungle-header-social{margin-left:auto}.jungle-explore-nav{display:block}.jungle-explore-menu{position:static;box-shadow:none}.jungle-explore-nav>button{padding:12px 0}}
@media(max-width:440px){.jungle-header-social{gap:4px}.jungle-header-social-link{width:26px;height:26px;font-size:17px}.brand{font-size:23px}}

/* Explore Koh Tao: per-photo saved zoom and pan; does not affect other guide pages. */
.jungle-guide .guide-photo img[style*="--jungle-zoom"]{transform:translate(var(--jungle-x,0%),var(--jungle-y,0%)) scale(var(--jungle-zoom,1));transform-origin:center center;}

/* v1.10.6: portrait-safe image framing on Explore Koh Tao and matching admin preview */
.jungle-adjusted-photo{position:relative;overflow:hidden;background:#10291e;isolation:isolate}
.jungle-adjusted-photo .jungle-photo-blur{position:absolute;inset:-24px;background-position:center;background-size:cover;filter:blur(18px) brightness(.65);z-index:0;pointer-events:none}
.jungle-guide .guide-photo.jungle-adjusted-photo>img,.jungle-image-preview.jungle-adjusted-photo>img{position:relative;z-index:1;display:block;width:100%;height:100%;max-width:none;object-position:var(--jungle-x,50%) var(--jungle-y,50%);transform:scale(var(--jungle-zoom,1));transform-origin:var(--jungle-x,50%) var(--jungle-y,50%)}
.jungle-adjusted-photo.mode-fill>img{object-fit:cover}
.jungle-adjusted-photo.mode-fit>img{object-fit:contain}
.jungle-adjusted-photo.mode-fill .jungle-photo-blur{display:none}
/* Override the legacy translate-based zoom rule for the new framing controls. */
.jungle-guide .guide-photo.jungle-adjusted-photo>img{transform:scale(var(--jungle-zoom,1))}

/* v1.10.8: frame all images from their full original aspect ratio.  The cover
   factor is calculated from the uncropped original, so zooming out reveals it. */
.jungle-guide .guide-photo.jungle-adjusted-photo>img{object-fit:contain!important;transform:scale(calc(var(--jungle-zoom,1) * var(--jungle-cover-factor,1)))!important}
.jungle-guide .guide-photo.jungle-adjusted-photo.mode-fit>img{transform:scale(var(--jungle-zoom,1))!important}

/* v1.10.10: always show the photo-derived blurred backdrop wherever framing leaves space. */
.jungle-guide .guide-photo.jungle-adjusted-photo .jungle-photo-blur{display:block!important;position:absolute;inset:-30px;background-size:cover;background-position:center center;background-repeat:no-repeat;filter:blur(20px) brightness(.75);opacity:1;z-index:0}
.jungle-guide .guide-photo.jungle-adjusted-photo>img{z-index:1}

/* v1.10.11: mobile-first navigation, touch targets, and persistent direct booking. */
.jungle-mobile-booking-bar{display:none}
@media(max-width:1120px){
 .navlinks{z-index:60;top:calc(100% - 5px);max-height:min(75dvh,calc(100svh - 90px));overscroll-behavior:contain;box-shadow:0 14px 36px #0006}
 .navlinks>a,.navlinks .jungle-explore-nav>button{min-height:44px;display:flex;align-items:center;width:100%;text-align:left}
 .navlinks .jungle-explore-menu{padding:2px 8px 10px 15px;background:#173b2a}
 .navlinks .jungle-explore-menu a{min-height:44px;display:flex;align-items:center;line-height:1.4}
 .navlinks .jungle-explore-nav:not(.open) .jungle-explore-menu{display:none}
 .navlinks .jungle-explore-nav.open .jungle-explore-menu{display:grid}
 .navlinks .jungle-explore-nav:hover:not(.open) .jungle-explore-menu{display:none}
 .menu{min-height:44px;min-width:44px}
}
@media(max-width:760px){
 body{padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}
 .jungle-mobile-booking-bar{position:fixed;display:block;z-index:999;bottom:0;left:0;right:0;padding:10px 14px calc(10px + env(safe-area-inset-bottom,0px));background:#10291ef5;box-shadow:0 -4px 20px #0003}
 .jungle-mobile-booking{display:flex;justify-content:center;align-items:center;min-height:48px;border-radius:999px;background:var(--lime);color:var(--forest);font-size:13px;font-weight:800;letter-spacing:.035em;text-align:center;padding:10px 14px}
 .jungle-whatsapp-float{bottom:calc(84px + env(safe-area-inset-bottom,0px))!important}
 .nav{gap:8px}
 .navlinks{left:12px;right:12px}
 .wrap,.guide-card,.room-card,.jungle-feature-card{min-width:0}
 .guide-card .guide-copy,.room-body{overflow-wrap:anywhere}
 .guide-card .guide-copy{padding:22px}
 .guide-photo img{max-width:none}
 .page-hero h1,.section-title{overflow-wrap:break-word}
 .review-actions,.hero-actions{max-width:100%}
 .hero-actions .btn{max-width:100%}
}
@media(max-width:380px){.jungle-header-social{display:none}.brand .jungle-header-logo{max-width:185px}}

/* v1.10.12: full-width immersive booking control within the mobile sticky bar */
@media(max-width:950px){.jungle-mobile-booking .jungle-booking-control{display:flex;width:100%;justify-content:center}.jungle-mobile-booking .jungle-booking-fallback{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;text-align:center;color:var(--forest);font-weight:800}.jungle-mobile-booking .jungle-booking-control.cloudbeds-ready cb-book-now-button{display:block;width:100%;min-height:48px;text-align:center}.jungle-mobile-booking .jungle-booking-control.cloudbeds-ready .jungle-booking-fallback{display:none}}

/* v1.10.13: adjustable event photographs */
.jungle-event-photo{height:210px;width:100%;}
.jungle-event-photo>img{position:relative;z-index:1;display:block;width:100%;height:100%;max-width:none;object-position:var(--jungle-x,50%) var(--jungle-y,50%);object-fit:contain;transform:scale(var(--jungle-zoom,1));transform-origin:var(--jungle-x,50%) var(--jungle-y,50%)}
.jungle-event-photo.mode-fill>img{transform:scale(calc(var(--jungle-zoom,1) * var(--jungle-cover-factor,1)))}
.jungle-event-photo .jungle-photo-blur{display:block!important;inset:-30px;background-repeat:no-repeat;filter:blur(20px) brightness(.75)}

/* v1.10.15: event image fill must start from an uncropped image.
   The earlier object-fit:cover plus cover-factor scaled the crop twice. */
.jungle-event-photo.mode-fill>img{object-fit:contain!important}
.jungle-event-photo.mode-fit>img{object-fit:contain!important;transform:scale(var(--jungle-zoom,1))}

/* v1.10.16: Event Photos editor mirrors the fixed-height public event card. */

/* Mobile event photo framing: independent positioning, unchanged responsive width. */
@media(max-width:600px){.jungle-event-photo{--jungle-x:var(--jungle-mobile-x,50%)!important;--jungle-y:var(--jungle-mobile-y,50%)!important}}

/* v1.10.21: uncropped portrait posters, responsive gallery. */
.jungle-upcoming-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px;align-items:start}
.jungle-upcoming-poster-link{display:block;border-radius:14px;overflow:hidden;background:#10291e;box-shadow:0 8px 24px #0002}
.jungle-upcoming-poster-link img{display:block;width:100%;height:auto;object-fit:contain}
.jungle-upcoming-poster-link:focus-visible{outline:3px solid var(--lime,#c6ee55);outline-offset:4px}
@media(max-width:900px){.jungle-upcoming-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){.jungle-upcoming-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}}
@media(max-width:360px){.jungle-upcoming-grid{grid-template-columns:1fr}}

/* v1.10.22: centre partial rows and crop posters to a consistent 2:3 frame. */
.jungle-upcoming-grid{display:flex;flex-wrap:wrap;justify-content:center;align-items:stretch;gap:22px}
.jungle-upcoming-poster-link{flex:0 1 calc((100% - 66px)/4);aspect-ratio:2/3;min-width:0}
.jungle-upcoming-poster-link img{width:100%;height:100%;object-fit:cover}
@media(max-width:900px){.jungle-upcoming-poster-link{flex-basis:calc((100% - 44px)/3)}}
@media(max-width:650px){.jungle-upcoming-grid{gap:12px}.jungle-upcoming-poster-link{flex-basis:calc((100% - 12px)/2)}}
@media(max-width:360px){.jungle-upcoming-poster-link{flex-basis:min(100%,320px)}}
