/* Hotel Haveli Grand — room-led visual direction. Concept images can be replaced in site.js. */
:root{--blue:#194b82;--blue-deep:#123f71;--gold:#ad864c;--cream:#faf8f4;--paper:#fffefa;--line:#e1ded6}
body{background:var(--cream)}
.site-header{background:rgba(250,248,244,.95)}
.nav-inner{height:86px}.brand-crest{width:47px;height:55px;background-size:125px 83px}.brand-name{color:#987341}.brand-name small{color:var(--blue)}
.site-footer{background:#f1eee8;margin-top:0}.footer-brand img{width:205px}.footer-top{padding-block:82px}
.media-slot{display:block;isolation:isolate;background:#d3d6d4}
.media-slot::before,.media-slot::after{display:none}
.media-slot img{display:block;width:100%;height:100%;position:absolute;inset:0;object-fit:cover;transition:transform 1.1s cubic-bezier(.2,.7,.15,1),filter .7s ease}
.media-slot:hover img,.room-card:hover img,.gallery-item:hover img{transform:scale(1.045)}
.media-slot[data-media="home.heroRoom"] img{object-position:center 53%}
.media-slot[data-media="story.architecture"] img{object-position:center}
.media-slot[data-media="wellness.buddha"] img{object-position:55% center}
.media-slot[data-media="wellness.towels"] img{object-position:80% center}
.media-slot[data-media="explore.fort"] img{object-position:76% center}
.home-hero{display:block;min-height:0;height:min(730px,72vw);min-height:580px;margin-top:22px;padding:0;position:relative;border-radius:5px;isolation:isolate}
.home-hero::before{display:none}.hero-media{position:absolute;inset:0;min-height:0;overflow:hidden;border-radius:5px;z-index:-2}
.hero-media .media-slot{height:100%;min-height:0;border-radius:5px;aspect-ratio:auto;animation:hero-unveil 1.35s cubic-bezier(.18,.65,.2,1) both}
.hero-media img{animation:hero-breathe 16s ease-in-out infinite alternate;transform-origin:64% 50%}
.hero-shade{position:absolute;inset:0;border-radius:5px;background:linear-gradient(90deg,rgba(252,249,241,.87) 0%,rgba(252,249,241,.76) 27%,rgba(252,249,241,.13) 60%,transparent 85%);z-index:-1;pointer-events:none}
.hero-copy{position:absolute;top:50%;left:6.3%;width:min(650px,51%);padding:0;transform:translateY(-50%)!important;align-self:auto}
.hero-copy h1{font-size:clamp(4.8rem,7.1vw,7.5rem);line-height:.94;letter-spacing:-.045em;color:#153f73;margin:0 0 28px;text-wrap:balance}
.hero-copy h1 i{color:#1c528b;font-weight:400}.hero-copy .eyebrow{color:#5f7790}.hero-copy>p{font-size:1.1rem;color:#314860;max-width:370px;line-height:1.7}
.hero-actions{margin-top:31px}.hero-actions .button{background:#174b83;border-color:#174b83}.hero-actions .text-link{color:#163d69}
.hero-stamp{right:36px;top:35px;color:#fff;text-shadow:0 2px 12px #123457;font-size:.65rem}
.hero-book{left:5%;right:5%;bottom:-39px}.booking-bar{border-radius:3px;background:#fffefa;box-shadow:0 22px 50px #15365324;padding:10px;min-height:88px}.booking-bar label{padding-inline:26px}.booking-bar button{background:#194b82;border-color:#194b82;border-radius:2px;min-width:190px}
.intro-section{padding-top:167px;grid-template-columns:.95fr 1.05fr;gap:11%;max-width:1170px}.intro-copy h2{font-size:clamp(3.7rem,5.3vw,6.5rem)}.intro-copy p:not(.eyebrow){max-width:480px;line-height:1.8;margin-bottom:28px}
.intro-art{position:relative;min-height:0;border:0;display:block;background:none;overflow:visible}.intro-art .media-slot{width:100%;aspect-ratio:1.08;border-radius:170px 170px 3px 3px;box-shadow:19px 20px 0 #d8e6ee}.intro-art .media-slot img{object-position:center 50%}
.image-caption{position:absolute;bottom:16px;left:20px;color:#fff;font:600 .62rem/1.5 var(--sans);letter-spacing:.19em;text-shadow:0 1px 8px #17324a}.intro-art .image-caption{bottom:18px;left:26px}
.rooms-home{padding-top:88px}.section-head h2{line-height:1}.section-head p{color:var(--muted);margin:14px 0 0}.room-grid{gap:20px}.room-card{border:0;border-radius:2px;background:#fff}.room-card .media-slot{aspect-ratio:1.55;min-height:310px}.room-card-body{padding:27px 28px 31px}.room-card-body .overline{font-size:.63rem;color:#957747}.room-card-body h3{font-size:2.8rem}.room-card-body p{font-size:.88rem}.room-card .text-link{font-size:.82rem}
.spa-feature{background:#eaf0f3;position:relative;padding-block:110px}.spa-feature::before{content:'';position:absolute;left:-90px;top:-100px;width:460px;height:650px;border:1px solid #a7c2d044;border-radius:240px 240px 0 0;pointer-events:none}.spa-layout{grid-template-columns:.82fr 1.18fr;gap:8%;max-width:1190px}.spa-copy h2{font-size:clamp(4.7rem,6.7vw,8.2rem);color:#194b82}.spa-copy h2 i{color:#517492}.spa-copy p:not(.eyebrow){max-width:440px;line-height:1.75}.spa-copy .button{margin-top:18px}.spa-image{position:relative}.spa-image .media-slot{aspect-ratio:1.12;max-height:none;border-radius:180px 180px 3px 3px;box-shadow:18px 18px 0 #d6e3e7}.spa-image img{object-position:center}
.comforts-home{padding-block:120px}.comfort-grid{display:grid;grid-template-columns:repeat(6,1fr);border-top:1px solid #d7d8d2;border-bottom:1px solid #d7d8d2}.comfort-grid a{min-height:158px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:17px 8px;border-right:1px solid #e0e0d8;transition:background .35s,transform .35s}.comfort-grid a:last-child{border-right:0}.comfort-grid a:hover{background:#e8eff1;transform:translateY(-3px)}.comfort-symbol{font:2.5rem/1 var(--serif);color:#1d548c;display:block;margin-bottom:15px;transition:transform .55s cubic-bezier(.16,.8,.2,1)}.comfort-grid a:hover .comfort-symbol{transform:translateY(-5px) rotate(-6deg)}.comfort-grid strong{font-size:.85rem;line-height:1.35}.comfort-grid small{font-size:.7rem;color:#75818a;margin-top:5px}
.city-feature{padding:0 32px}.city-visual{height:540px;position:relative;overflow:hidden;background:#245172}.city-visual>.media-slot{position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto;border-radius:0}.city-visual>.media-slot img{object-position:center 51%}.city-visual::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#102e57c9,#123b6385 45%,#112f4c1f);pointer-events:none}.city-overlay{position:relative;z-index:1;color:white;padding-top:107px}.city-overlay .eyebrow{color:#e6d1ad}.city-overlay h2{font-size:clamp(4.5rem,6vw,7rem);margin-bottom:17px}.city-overlay p{font-size:1.02rem;max-width:460px}.city-overlay .button{margin-top:16px;background:#f7f4ed;border-color:#f7f4ed;color:#143d70}.city-overlay .button:hover{background:#fff}
.closing{border-top:0;padding-block:112px}.closing h2{font-size:clamp(4rem,6vw,7rem)}
/* Inner pages receive the same image and motion language. */
.page-intro{padding-top:88px;padding-bottom:65px}.page-intro::after{width:20%;height:245px;opacity:.55}.page-intro h1{color:#174675}.page-intro p{line-height:1.8}
.editorial-split .media-slot,.wellness-media .media-slot,.gallery-hero .media-slot{border-radius:3px}.wellness-media .media-slot{aspect-ratio:2.05;min-height:550px}.wellness-card{border-radius:2px}.gallery-three .media-slot{border-radius:2px}
.gallery-grid .media-slot{min-height:360px}.gallery-item>span{z-index:1;text-shadow:0 2px 8px #123}
.service-card,.reserve-panel,.enquiry-form,.stay-form{border-radius:2px}
/* Quiet choreography: photo mask, staggered text, and spatial reveal. */
@keyframes hero-unveil{from{opacity:.5;clip-path:inset(4% 4% 4% 4%)}to{opacity:1;clip-path:inset(0 0 0 0)}}
@keyframes hero-breathe{from{transform:scale(1.015)}to{transform:scale(1.075)}}
@keyframes soft-appear{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}
.hero-copy .eyebrow{animation:soft-appear .65s .18s both}.hero-copy h1{animation:soft-appear .85s .3s cubic-bezier(.18,.7,.2,1) both}.hero-copy>p{animation:soft-appear .7s .48s both}.hero-actions{animation:soft-appear .7s .62s both}.hero-book{animation:soft-appear .8s .82s both}
.reveal{opacity:0;transform:translateY(35px);transition:opacity .85s ease,transform .9s cubic-bezier(.16,.75,.2,1)}.reveal.visible{opacity:1;transform:translateY(0)}
.intro-art.reveal{transform:translateY(50px)}.intro-art.reveal.visible{transform:none}.spa-image.reveal{transform:translateX(45px)}.spa-image.reveal.visible{transform:none}
.comfort-grid a{opacity:0;transform:translateY(14px)}.comfort-grid.visible a{opacity:1;transform:none;transition:opacity .6s ease,transform .7s cubic-bezier(.2,.7,.2,1),background .35s}.comfort-grid.visible a:nth-child(2){transition-delay:.06s}.comfort-grid.visible a:nth-child(3){transition-delay:.12s}.comfort-grid.visible a:nth-child(4){transition-delay:.18s}.comfort-grid.visible a:nth-child(5){transition-delay:.24s}.comfort-grid.visible a:nth-child(6){transition-delay:.3s}
.room-card .media-slot{overflow:hidden}.room-card .media-slot img{transition:transform 1.1s cubic-bezier(.2,.7,.15,1)}
@media(max-width:1100px){.home-hero{height:660px}.hero-copy{width:58%}.hero-copy h1{font-size:clamp(4.2rem,7vw,6.3rem)}.comfort-grid{grid-template-columns:repeat(3,1fr)}.comfort-grid a:nth-child(3){border-right:0}.comfort-grid a:nth-child(-n+3){border-bottom:1px solid #e0e0d8}}
@media(max-width:760px){.container{width:min(100% - 32px,560px)}.nav-inner{height:72px}.brand-crest{width:42px;height:48px;background-size:110px 74px}.home-hero{display:block;min-height:0;height:660px;margin-top:8px}.hero-media{order:unset;min-height:0}.hero-media .media-slot{height:100%;min-height:0;border-radius:3px}.hero-media img{object-position:59% center;animation:none}.hero-shade{background:linear-gradient(180deg,#fbf9f2ed 0%,#fbf9f2bd 42%,#fbf9f229 71%,#0e2d4a29 100%)}.hero-copy{top:9%;left:7%;width:85%;transform:none!important;padding:0;order:unset}.hero-copy h1{font-size:clamp(3.45rem,11.5vw,5.4rem);margin-bottom:15px}.hero-copy>p{font-size:.9rem;line-height:1.5;max-width:300px}.hero-actions{gap:18px;margin-top:20px}.hero-actions .button{padding:11px 15px}.hero-actions .text-link{font-size:.78rem}.hero-stamp{top:auto;bottom:66px;right:17px;font-size:.56rem}.hero-book{position:absolute;bottom:-110px;left:5%;right:5%;margin:0;order:unset}.booking-bar{grid-template-columns:1fr 1fr;min-height:0}.booking-bar label{padding:7px 11px}.booking-bar label:nth-child(3){border-top:1px solid var(--line)}.booking-bar button{min-width:0;margin:7px 0 0}.intro-section{padding-top:198px;gap:50px;grid-template-columns:1fr}.intro-copy{order:2}.intro-art{order:1;width:90%;margin-inline:auto}.intro-art .media-slot{aspect-ratio:1.18}.intro-copy h2{font-size:clamp(3.4rem,10vw,5rem)}.rooms-home{padding-top:75px}.room-card .media-slot{aspect-ratio:1.35;min-height:270px}.room-card-body h3{font-size:2.4rem}.room-card-body{gap:12px}.spa-feature{padding-block:86px}.spa-layout{grid-template-columns:1fr;gap:45px}.spa-copy{order:2}.spa-image{order:1;width:90%;margin:auto}.spa-image .media-slot{aspect-ratio:1.1}.spa-copy h2{font-size:clamp(4.4rem,13vw,6.5rem)}.comforts-home{padding-block:82px}.comfort-grid{grid-template-columns:repeat(2,1fr)}.comfort-grid a{min-height:145px}.comfort-grid a:nth-child(3){border-right:1px solid #e0e0d8}.comfort-grid a:nth-child(2n){border-right:0}.comfort-grid a:nth-child(-n+4){border-bottom:1px solid #e0e0d8}.city-feature{padding:0 16px}.city-visual{height:530px}.city-visual>.media-slot img{object-position:61% center}.city-overlay{padding-top:100px}.city-overlay h2{font-size:clamp(3.9rem,11vw,5.4rem)}.closing{padding-block:85px}.wellness-media .media-slot{min-height:380px;aspect-ratio:1}.page-intro{padding-top:65px}.gallery-grid .media-slot{min-height:330px}}
@media(max-width:420px){.home-hero{height:620px}.hero-copy h1{font-size:3.35rem}.hero-actions{gap:12px}.hero-actions .text-link{font-size:.72rem}.hero-book{bottom:-110px}.intro-section{padding-top:185px}.comfort-grid strong{font-size:.76rem}}
@media(prefers-reduced-motion:reduce){.hero-media img,.hero-media .media-slot,.hero-copy .eyebrow,.hero-copy h1,.hero-copy>p,.hero-actions,.hero-book{animation:none!important}.reveal,.intro-art.reveal,.spa-image.reveal{opacity:1;transform:none}.comfort-grid a{opacity:1;transform:none}.media-slot img{transition:none}*{scroll-behavior:auto!important}}
/* Repeating details carry motion across the complete route set. */
.page-intro.reveal{transform:translateY(25px)}.page-intro.reveal.visible{transform:none}
.page-intro::after{transform:scaleY(.72);transform-origin:bottom;transition:transform 1.3s cubic-bezier(.16,.7,.2,1)}.page-intro.visible::after{transform:scaleY(1)}
.editorial-split .media-slot.reveal,.wellness-media.reveal,.gallery-hero .media-slot.reveal{clip-path:inset(7% 0 0 0);transition:clip-path 1s cubic-bezier(.16,.7,.2,1),opacity .9s ease,transform .9s cubic-bezier(.16,.7,.2,1)}.editorial-split .media-slot.visible,.wellness-media.visible,.gallery-hero .media-slot.visible{clip-path:inset(0 0 0 0)}
.gallery-three .media-slot:nth-child(2),.gallery-grid .gallery-item:nth-child(3n+2),.amenity-grid>div:nth-child(3n+2),.explore-list article:nth-child(2){transition-delay:.08s}.gallery-three .media-slot:nth-child(3),.gallery-grid .gallery-item:nth-child(3n),.amenity-grid>div:nth-child(3n){transition-delay:.16s}
.gallery-item{overflow:hidden}.gallery-item:hover img{filter:saturate(1.08)}.gallery-item>span{transition:transform .35s ease}.gallery-item:hover>span{transform:translateX(7px)}
.accordion details{transition:background .3s,padding .3s}.accordion details[open]{background:#eef2f2;padding-inline:15px}
.menu-toggle span{transition:transform .3s ease,opacity .3s ease}.menu-toggle[aria-expanded="true"] span:first-child{transform:translateY(6px) rotate(45deg)}.menu-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}.menu-toggle[aria-expanded="true"] span:last-child{transform:translateY(-6px) rotate(-45deg)}
@media(max-width:760px){.mobile-nav{top:72px}.editorial-split .media-slot.reveal{clip-path:none}}
@media(prefers-reduced-motion:reduce){.page-intro::after{transform:none}.editorial-split .media-slot.reveal,.wellness-media.reveal,.gallery-hero .media-slot.reveal{clip-path:none}.gallery-three .media-slot:nth-child(n),.gallery-grid .gallery-item:nth-child(n),.amenity-grid>div:nth-child(n){transition-delay:0s}}
