/* Bali ornament, repeatable scroll reveals and a compact, complete service collection. */
.bali-section{position:relative;isolation:isolate;overflow:clip}
.bali-section:not(.hero)>:not(.bali-ornament):not(.bali-flowers){position:relative;z-index:1}
.bali-ornament{--ornament-travel:0px;position:absolute;z-index:0;display:block;width:clamp(220px,24vw,365px);aspect-ratio:1;pointer-events:none;user-select:none;opacity:.24;transform:translate3d(0,var(--ornament-travel),0);contain:layout style}
.bali-ornament img{width:100%;height:100%;object-fit:contain;transform-origin:35% 80%;animation:bali-breathe 13s ease-in-out infinite alternate;animation-play-state:paused}
.bali-ornament.ornament-in-view img{animation-play-state:running}
.bali-ornament-right{top:18px;right:-60px;rotate:-14deg}
.bali-ornament-left{top:25px;left:-90px;rotate:167deg;opacity:.18}
.bali-ornament-hero{right:-40px;bottom:-35px;width:clamp(270px,30vw,450px);opacity:.5;z-index:1}
.hero-copy{position:relative;z-index:2}
.hero-bottom{z-index:2}
.bali-section.page-intro .bali-ornament{top:-40px;right:-40px;width:240px;opacity:.2}
.bali-section.small-cta .bali-ornament{width:190px;top:-20px;right:0;opacity:.2}
#home-visit .bali-ornament{opacity:.4;top:-15px}
#booking .bali-ornament{top:20px;right:-15px;width:300px;opacity:.18}
footer{position:relative;isolation:isolate;overflow:clip}
.bali-ornament-footer{right:-22px;bottom:-20px;width:245px;opacity:.32}
footer>.container-wide{position:relative;z-index:1}
@keyframes bali-breathe{from{transform:rotate(-1.5deg) scale(.98)}to{transform:rotate(1.5deg) scale(1.035)}}

/* Tropical flower cutouts share the ornament rhythm, with gentle, offset sways. */
.bali-flowers{--ornament-travel:0px;position:absolute;z-index:0;display:block;width:168px;height:132px;pointer-events:none;user-select:none;opacity:.86;transform:translate3d(0,var(--ornament-travel),0);contain:layout style}
.bali-flower{position:absolute;display:block;object-fit:contain;transform:rotate(var(--flower-tilt,0deg));transform-origin:50% 55%;animation:bali-flower-sway 6.4s ease-in-out -1.8s infinite alternate;animation-play-state:running;filter:drop-shadow(0 4px 7px rgba(55,43,17,.07))}
.bali-flower-hibiscus{--flower-tilt:-8deg;width:118px;height:118px;right:0;bottom:0}
.bali-flower-frangipani{--flower-tilt:12deg;width:78px;height:78px;left:0;top:0;animation-duration:8.2s;animation-delay:-3.1s}
.bali-flowers.ornament-out-of-view .bali-flower,.ambient-motion-paused .bali-flower,html[data-flower-motion="off"] .bali-flower{animation-play-state:paused!important}
.flower-motion-toggle{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:8px 12px;border:1px solid currentColor;border-radius:4px;background:transparent;color:inherit;font:500 .875rem/1.4 var(--sans);cursor:pointer}
.flower-motion-toggle[hidden]{display:none!important}
.hero-bottom .flower-motion-toggle{color:#edf1e4;border-color:#edf1e460;flex-shrink:0}
.flower-motion-toggle:hover{background:#ffffff14}
.flower-motion-toggle:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
.bali-flowers-right{bottom:10px;right:-18px}
.bali-flowers-left{bottom:18px;left:-36px}
.bali-flowers-left .bali-flower-hibiscus{left:0;right:auto}
.bali-flowers-left .bali-flower-frangipani{left:auto;right:0}
.bali-flowers-hero{top:34px;right:25px;z-index:1;width:172px;height:140px;opacity:.94}
.bali-flowers-intro{bottom:6px;right:10px;width:126px;height:100px;opacity:.7}
.bali-flowers-intro .bali-flower-hibiscus{width:88px;height:88px}
.bali-flowers-intro .bali-flower-frangipani{width:57px;height:57px}
.bali-flowers-cta{bottom:-16px;left:-46px;width:120px;height:95px;opacity:.36}
.bali-flowers-cta .bali-flower-hibiscus{width:90px;height:90px}
.bali-flowers-cta .bali-flower-frangipani{width:55px;height:55px}
.bali-flowers-footer{bottom:-28px;left:-25px;width:145px;height:112px;opacity:.48}
.bali-flowers-footer .bali-flower-hibiscus{width:108px;height:108px}
.bali-flowers-footer .bali-flower-frangipani{width:65px;height:65px}
@keyframes bali-flower-sway{from{transform:translate3d(-4px,0,0) rotate(calc(var(--flower-tilt,0deg) - 6deg))}to{transform:translate3d(4px,-18px,0) rotate(calc(var(--flower-tilt,0deg) + 6deg))}}

/* Four comfortable columns on desktop, two on handheld screens. */
.home-service-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:22px}
.home-service-grid .service-card-image{height:auto;aspect-ratio:1.3}
.home-service-grid .service-card-body{padding:22px}
.service-card-compact h3{font-size:1.9rem;line-height:1.12;margin:0 0 14px;overflow-wrap:break-word}
.service-card-compact h3 a:hover{color:var(--leaf)}
.home-service-grid .service-facts{align-items:flex-start;flex-direction:column;gap:8px}
.home-service-grid .service-facts>span{font-size:.875rem;line-height:1.45}
.home-service-grid .service-facts strong{font-size:1rem}
.home-service-grid .service-card .eyebrow{font-size:.75rem;letter-spacing:.07em}
.home-service-footer{display:flex;align-items:center;justify-content:space-between;gap:26px;padding-top:26px}
.home-service-footer .price-note{margin:0;max-width:750px;font-size:.875rem}
.home-service-footer .underlined-link{flex-shrink:0;font-size:.875rem;min-height:44px;display:flex;align-items:center}

/* Content is visible by default, including when JavaScript or the observer is unavailable. */
[data-reveal]{--reveal-from:24px;--reveal-delay:0ms;transition:opacity .65s ease,transform .65s cubic-bezier(.2,.7,.2,1);transition-delay:0ms}
[data-reveal].reveal-pending{opacity:0;transform:translate3d(0,var(--reveal-from),0)}
[data-reveal].is-visible{opacity:1;transform:translate3d(0,0,0);transition-delay:var(--reveal-delay)}
[data-reveal]:focus-within{opacity:1;transform:none;transition-delay:0ms}

@media(max-width:1199px){.home-service-grid{gap:18px}.home-service-grid .service-card-body{padding:18px}.service-card-compact h3{font-size:1.8rem}}
@media(min-width:768px) and (max-width:991px){.home-service-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.home-service-grid .service-card-body{padding:17px}}
@media(max-width:767px){
 .bali-ornament{width:190px;opacity:.22}
 .bali-ornament-right{right:-65px;top:12px}
 .bali-ornament-left{left:-90px;top:15px}
 .bali-ornament-hero{width:155px;right:-22px;top:calc((100vw - 20px)/1.4 + 36px);bottom:auto;opacity:.3}
 .bali-section.page-intro .bali-ornament{width:170px;right:-60px;top:20px}
 #booking .bali-ornament{width:185px;right:-65px}
 .bali-ornament-footer{width:200px;right:-25px;bottom:0}
 .bali-flowers{width:104px;height:85px;opacity:.7}
 .bali-flower-hibiscus{width:76px;height:76px}
 .bali-flower-frangipani{width:48px;height:48px}
 .bali-flowers-right{bottom:8px;right:-23px}
 .bali-flowers-left{bottom:8px;left:-26px}
 .bali-flowers-hero{top:auto;bottom:-19px;right:-20px;width:93px;height:80px;opacity:.58}
 .bali-flowers-hero .bali-flower-hibiscus{width:70px;height:70px}
 .bali-flowers-hero .bali-flower-frangipani{width:43px;height:43px}
 .bali-flowers-intro{width:77px;height:66px;right:-22px;bottom:3px;opacity:.22}
 .bali-flowers-intro .bali-flower-hibiscus{width:61px;height:61px}
 .bali-flowers-intro .bali-flower-frangipani{width:38px;height:38px}
 .bali-flowers-cta{left:-34px;bottom:-18px;width:87px;height:74px;opacity:.22}
 .bali-flowers-cta .bali-flower-hibiscus{width:68px;height:68px}
 .bali-flowers-cta .bali-flower-frangipani{width:42px;height:42px}
 .bali-flowers-footer{bottom:-28px;left:-25px;width:93px;height:81px;opacity:.32}
 .bali-flowers-footer .bali-flower-hibiscus{width:75px;height:75px}
 .bali-flowers-footer .bali-flower-frangipani{width:45px;height:45px}
 .hero-bottom .flower-motion-toggle{margin-top:12px}
 .service-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
 .service-grid .service-card-image{height:auto;aspect-ratio:1.17}
 .service-grid .service-card-body{padding:15px}
 .service-grid .service-card h2,.service-card-compact h3{font-size:1.6rem;line-height:1.13;letter-spacing:-.018em;margin-bottom:16px;overflow-wrap:break-word}
 .service-grid .service-card .eyebrow{font-size:.75rem;letter-spacing:.02em;margin-bottom:10px}
 .service-grid .service-description{display:none}
 .service-grid .service-facts{padding-top:14px;gap:8px;align-items:flex-start;flex-direction:column}
 .service-grid .service-facts>span{font-size:.875rem;gap:5px;align-items:flex-start;line-height:1.5}
 .service-grid .service-facts strong{font-size:.9375rem;line-height:1.5}
 .service-grid .card-detail-link{font-size:.875rem;line-height:1.4;min-height:44px;margin-top:6px;text-underline-offset:4px}
 .home-service-footer{flex-direction:column;align-items:flex-start;gap:13px;padding-top:23px}
}
@media(max-width:374px){.service-grid{gap:10px}.service-grid .service-card-body{padding:12px}.service-grid .service-card h2,.service-card-compact h3{font-size:1.45rem}.service-grid .service-facts strong{font-size:.875rem}.service-grid .service-facts>span{font-size:.875rem}.service-grid .service-card .eyebrow{letter-spacing:0}}
@media(prefers-reduced-motion:reduce){
 .bali-ornament,.bali-flowers{transform:none!important}
 .bali-ornament img{animation:none!important}
 html:not([data-flower-motion="on"]) .bali-flower{animation:none!important}
 html[data-flower-motion="on"] .bali-flower{animation-duration:6.4s!important;animation-iteration-count:infinite!important}
 html[data-flower-motion="on"] .bali-flower-frangipani{animation-duration:8.2s!important}
 [data-reveal],[data-reveal].reveal-pending,[data-reveal].is-visible{opacity:1!important;transform:none!important;transition:none!important}
 .service-card-image img,.journal-card-image img,.album-card>img{transition:none!important;transform:none!important}
}
@media print{.bali-ornament,.bali-flowers{display:none}[data-reveal]{opacity:1!important;transform:none!important;transition:none!important}}
