/* Coastal miniature: cool sea, warm town, shaded green relief. All map detail is vector. */
#app{background:#86c6c5}#map{background:radial-gradient(ellipse at 48% 43%,#a6d7cd 0,#86c7c6 52%,#70b5bc 100%)}#map:before{opacity:.11;background-size:150px 135px}.waterlight{box-shadow:inset 0 0 110px #3d7c8410}.cloud{opacity:.08}.shore{stroke:#b9ded0;stroke-width:24;opacity:.45}.surf{stroke:#d9eee0;stroke-width:12;opacity:.85}.landshade{fill:#639381;stroke:#6c9b84;stroke-width:3;stroke-linejoin:round;transform:translate(0,6px)}.sand{fill:#eddfb7;stroke:#ede0bc;stroke-width:4;stroke-linejoin:round}.land{fill:#afc69e}.terrain{opacity:.35}.road-casing{fill:none;stroke:#7c9b7b;stroke-width:4.9;stroke-linecap:round;stroke-linejoin:round;opacity:.48}.road{fill:none;stroke:#f8e9c8;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.townroad{stroke:#f8edcf;stroke-width:1.25;stroke-linejoin:round}.region-label{font-family:'DM Sans',Arial,sans-serif;font-size:11px;font-weight:700;letter-spacing:1.6px;fill:#477362;paint-order:stroke;stroke:#e0e6c7;stroke-width:2.2px;stroke-linejoin:round}.peak-label{font-family:Georgia,serif;font-size:10px;font-style:italic;fill:#496e5d;paint-order:stroke;stroke:#dce4bd;stroke-width:2px;stroke-linejoin:round}.seaname{font-size:17px;letter-spacing:2.5px;fill:#4d8e95;opacity:.55}.forest-grove,.town-building{pointer-events:none}.ambient-boat{opacity:.53}.sea-fish{opacity:.75}.sea-ripple{stroke:#e4f2e5}.compactglyph{box-shadow:0 2px 3px #31523c24}.pin.selected,.pin.home.selected{box-shadow:0 0 0 3px #fff5cd80,0 3px 7px #365a3f2b!important}.landmark-art{filter:none!important}

.town-block{stroke:none;fill:#dcd8b6}

/* Forest supports the geography; destination plates remain the strongest detail. */
.mature-forest{opacity:.54}.forest-region{fill:#87ac8b}.forest-grove{pointer-events:none}
/* Bounded terrain tiles move as a compositor layer; native SVG is refreshed at settled zoom. */
#islandMap{transform-origin:0 0;will-change:transform}#markers .pin,#clusters .mapcluster,#traveler{left:0;top:0}.map-busy #travelLine,.reading #travelLine{animation-play-state:paused}

/* Distinct, optically sized place symbols within the existing compact markers. */
.compactglyph .place-glyph{width:18px;height:18px}

/* A single snorkeler near Hòn Cau; small transforms reuse the sea interaction pauses. */
.snorkeler-float{animation:snorkeler-float 7s ease-in-out infinite alternate}.snorkel-fin-a{transform-origin:-10px -3px;animation:snorkel-kick 1.5s ease-in-out infinite alternate}.snorkel-fin-b{transform-origin:-10px 3px;animation:snorkel-kick 1.5s ease-in-out -.75s infinite alternate}.snorkel-ripple{animation:snorkel-breathe 3.5s ease-in-out infinite alternate}
@keyframes snorkeler-float{to{transform:translate(2px,-1px)}}@keyframes snorkel-kick{from{transform:rotate(-5deg)}to{transform:rotate(5deg)}}@keyframes snorkel-breathe{to{opacity:.25;transform:translate(1px,-1px)}}
@media(prefers-reduced-motion:reduce){#honcauSnorkeler *{animation:none!important}}

.pin[data-category=food] .compactglyph{border-color:#99774e;color:#99774e;background:#fffaeb}

/* A 42-second yoga flow: only seven small joint groups transform. */
#hotelYoga{pointer-events:none}.yoga-flow{transform-origin:0 -19px;animation:yoga-side-stretch 42s cubic-bezier(.45,0,.55,1) infinite}.yoga-breath{transform-origin:0 -19px;animation:yoga-breathe 5s ease-in-out infinite alternate}
.yoga-upper-left,.yoga-upper-right,.yoga-fore-left,.yoga-fore-right,.yoga-thigh,.yoga-calf{transform-origin:0 0;animation-duration:42s;animation-timing-function:cubic-bezier(.45,0,.55,1);animation-iteration-count:infinite}
.yoga-upper-left{transform:rotate(150deg);animation-name:yoga-upper-left}.yoga-upper-right{transform:rotate(-150deg);animation-name:yoga-upper-right}.yoga-fore-left{transform:rotate(-280deg);animation-name:yoga-fore-left}.yoga-fore-right{transform:rotate(280deg);animation-name:yoga-fore-right}.yoga-thigh{transform:rotate(-60deg);animation-name:yoga-tree-thigh}.yoga-calf{transform:rotate(150deg);animation-name:yoga-tree-calf}
@keyframes yoga-upper-left{0%,15%,50%,98%,100%{transform:rotate(12deg)}25%,40%,60%,88%{transform:rotate(150deg)}}
@keyframes yoga-upper-right{0%,15%,50%,98%,100%{transform:rotate(-12deg)}25%,40%,60%,88%{transform:rotate(-150deg)}}
@keyframes yoga-fore-left{0%,15%,50%,98%,100%{transform:rotate(-160deg)}25%,40%,60%,88%{transform:rotate(-280deg)}}
@keyframes yoga-fore-right{0%,15%,50%,98%,100%{transform:rotate(160deg)}25%,40%,60%,88%{transform:rotate(280deg)}}
@keyframes yoga-tree-thigh{0%,15%,50%,100%{transform:rotate(0deg)}25%,40%{transform:rotate(-60deg)}}
@keyframes yoga-tree-calf{0%,15%,50%,100%{transform:rotate(0deg)}25%,40%{transform:rotate(150deg)}}
@keyframes yoga-side-stretch{0%,60%,88%,100%{transform:rotate(0deg)}70%,78%{transform:rotate(-10deg)}}
@keyframes yoga-breathe{to{transform:scaleY(1.01)}}
.yoga-offscreen *,.page-hidden #hotelYoga *{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){#hotelYoga *{animation:none!important}}

.snorkel-reef-fish{animation:reef-fish-drift 6s ease-in-out infinite alternate}@keyframes reef-fish-drift{to{transform:translate(1.5px,-.5px)}}
