/* Sections and inner pages */
/* hero */
.hero{position:relative;height:calc(100svh - var(--demo-h));min-height:36rem;color:#fff;overflow:hidden;background:var(--navy)}
.hero__slides,.hero__slide{position:absolute;inset:0}
.hero__slide{opacity:0;transition:opacity 1.8s ease}.hero__slide.is-active{opacity:1}
.hero__slide .art{position:absolute;inset:0}
.hero__slide.is-active .art svg{animation:kb 16s ease-out both}
@keyframes kb{from{transform:scale(1)}to{transform:scale(1.08)}}
.hero__scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(14,34,52,.5) 0%,rgba(14,34,52,.25) 40%,rgba(14,34,52,.35) 100%)}
.hero__fade{position:absolute;left:0;right:0;bottom:0;height:6rem;background:linear-gradient(180deg,rgba(247,246,240,0),var(--cream));pointer-events:none}
.hero .waves{bottom:3.5rem;height:10rem;opacity:.85}
.hero__body{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:8rem var(--gut) 8.5rem;text-shadow:0 1px 18px rgba(14,34,52,.45)}
.hero__h1{font-size:clamp(2.7rem,7.4vw,6.4rem);letter-spacing:.07em;margin:.2rem 0 1.2rem}
.hero__lead{max-width:36rem;font-size:clamp(1rem,1.5vw,1.2rem);line-height:1.7;margin-bottom:1.8rem}
.hero__cta{display:flex;flex-wrap:wrap;gap:.8rem;justify-content:center}
.hero__ctrl{position:absolute;z-index:5;left:var(--gut);bottom:5.5rem;display:flex;align-items:center;gap:.6rem}
.hero__ctrl button{width:2.75rem;height:2.75rem;border-radius:50%;border:1px solid rgba(255,255,255,.8);background:rgba(14,34,52,.35);color:#fff;display:grid;place-items:center;cursor:pointer}
.hero__ctrl svg{width:1.1rem;height:1.1rem}
.hero__dot{width:2.75rem!important;height:2.75rem!important;border:0!important;background:none!important;position:relative}
.hero__dot::after{content:"";width:.55rem;height:.55rem;border-radius:50%;border:1px solid #fff;position:absolute;inset:0;margin:auto}
.hero__dot[aria-current=true]::after{background:#fff}
.page-hero{position:relative;min-height:min(72svh,40rem);display:flex;align-items:flex-end;justify-content:center;text-align:center;color:#fff;overflow:hidden;background:var(--navy)}
.page-hero .art{position:absolute;inset:0}
.page-hero__scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(14,34,52,.55),rgba(14,34,52,.2) 45%,rgba(14,34,52,.6))}
.page-hero__in{position:relative;padding:9rem var(--gut) 4.5rem;max-width:56rem;text-shadow:0 1px 18px rgba(14,34,52,.5)}
.page-hero h1{font-size:clamp(2.2rem,5.6vw,4.6rem);margin-bottom:.5em}.page-hero p{margin:0 auto;max-width:38rem}
/* intro */
.intro{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(1.5rem,4vw,4rem);align-items:center}
.intro__art{grid-column:1/8;aspect-ratio:5/6;max-height:78vh;width:100%}.intro__txt{grid-column:8/13}
.chips{display:flex;flex-wrap:wrap;gap:1.6rem 2.4rem;margin:1.8rem 0}.chips b{display:block;font:400 2.2rem/1 var(--f-head);letter-spacing:.04em}.chips span{font-size:.78rem;letter-spacing:.18em;text-transform:uppercase}
/* features */
.feat{display:grid;grid-template-columns:repeat(4,1fr);margin-top:3rem}
.feat__i{padding:2rem 1.6rem 2.6rem;border-top:1px solid rgba(21,49,73,.3);transition:background-color .4s,border-color .4s}
.feat__i:hover{background:var(--sand);border-top-color:var(--navy)}
.feat__n{font:500 .78rem var(--f-body);letter-spacing:.24em;color:var(--ink-2)}.feat h3{margin:.9rem 0 .6rem}.feat p{margin:0;color:var(--ink-2);font-size:1rem}
/* carousels */
.car{position:relative}
.car__track{display:flex;gap:clamp(1.25rem,3vw,3rem);overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding-inline:var(--gut);scroll-padding-inline:var(--gut)}
.car__track::-webkit-scrollbar{display:none}.car__track>*{flex:0 0 auto;scroll-snap-align:start}
.car__btn{position:absolute;top:var(--bt,40%);z-index:3;width:3rem;height:3rem;border-radius:50%;border:1px solid var(--navy);background:var(--cream);color:var(--navy);display:grid;place-items:center;cursor:pointer;transform:translateY(-50%);transition:background-color .3s,color .3s}
.car__btn:hover:not(:disabled){background:var(--navy);color:#fff}.car__btn:disabled{opacity:.3;cursor:default}
.car__btn--prev{left:.8rem}.car__btn--next{right:.8rem}.car__btn svg{width:1.2rem;height:1.2rem}
.tile{width:clamp(16rem,27vw,26rem)}.tile .art{aspect-ratio:4/5}.tile h3{margin:1.1rem 0 .3rem;text-transform:none;font-size:1.9rem;letter-spacing:.03em}.tile p{margin:0;color:var(--ink-2);font-size:1rem}
.tile:hover .art svg,.room:hover .art svg{transform:scale(1.05)}
.room{width:min(88vw,62rem)}.room .art{aspect-ratio:16/10}
.room__cta{position:absolute;z-index:2;right:1.2rem;bottom:1.2rem;display:flex;gap:.6rem}
.room h3{margin:1.2rem 0 .3rem;text-transform:none;font-size:clamp(2rem,4vw,3.4rem);letter-spacing:.02em}.room__meta{font-size:.95rem;color:var(--ink-2);margin:0 0 .6rem}.room p{max-width:40rem}
.oval{width:min(88vw,44rem);display:grid;grid-template-columns:minmax(10rem,.9fr) 1.1fr;gap:2rem;align-items:center}
.oval__art{aspect-ratio:4/5;border-radius:50%;overflow:hidden}.oval:hover .art svg{transform:scale(1.07)}
.oval h3{margin-bottom:.4em}.oval p{font-size:1rem;color:var(--ink-2)}
/* impressions */
.imp{background:var(--navy);color:var(--cream);padding-bottom:3.5rem;overflow:hidden}
.imp__title{font-size:clamp(3rem,12vw,11rem);letter-spacing:.18em;text-align:center;color:rgba(247,246,240,.55);margin:0 0 -.3em;padding-top:2.5rem;position:relative;z-index:2;pointer-events:none;white-space:nowrap}
.imp .car__btn{background:transparent;color:#fff;border-color:rgba(255,255,255,.7);position:static;transform:none}
.imp__ctl{display:flex;justify-content:center;align-items:center;gap:1rem;margin-top:2rem;position:relative}
.imp__more{position:absolute;right:var(--gut);color:var(--cream)}
.shot{width:clamp(15rem,26vw,24rem);padding:0;border:0;background:none;cursor:zoom-in}.shot .art{aspect-ratio:3/4}.shot:hover .art svg{transform:scale(1.05)}
/* marquee */
.mq{overflow:hidden;background:var(--navy);color:var(--cream);padding-block:clamp(1.5rem,4vw,3rem);border-top:1px solid rgba(183,204,219,.2)}
.mq__row{display:flex;width:max-content;animation:mq 60s linear infinite;font:400 clamp(2rem,5vw,4.2rem)/1.2 var(--f-head);letter-spacing:.12em;text-transform:uppercase;white-space:nowrap}
.mq__row+.mq__row{animation-direction:reverse;color:transparent;-webkit-text-stroke:1px var(--blue)}
.mq__row span{padding-inline:1.2rem}@keyframes mq{to{transform:translateX(-50%)}}
/* location + map */
.loc{display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,6vw,6rem);align-items:start}
.loc ul{margin:0 0 1.6rem}.loc li{padding:.5rem 0;border-bottom:1px solid rgba(21,49,73,.15);font-size:1rem}
.tag{display:inline-block;font-size:.7rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;padding:.2rem .6rem;border:1px solid var(--navy);margin-right:.5rem}.tag--drive{background:var(--navy);color:#fff}
.map__box{position:relative;aspect-ratio:4/3;border:1px solid rgba(21,49,73,.25);background:var(--blue-mist)}.map__box .art{position:absolute;inset:0}
.pin{position:absolute;z-index:2;width:2.75rem;height:2.75rem;transform:translate(-50%,-50%);border:0;background:none;cursor:pointer;padding:0}
.pin__dot{position:absolute;inset:0;margin:auto;width:1.1rem;height:1.1rem;border-radius:50%;background:var(--cream);border:2px solid var(--navy);transition:transform .3s var(--ease),background-color .3s}
.pin:hover .pin__dot,.pin[aria-pressed=true] .pin__dot{background:var(--navy);transform:scale(1.35)}
.pin--home .pin__dot{border-style:dashed;width:1.6rem;height:1.6rem;background:rgba(129,161,188,.6)}
.pin__lbl{position:absolute;left:2.3rem;top:50%;transform:translateY(-50%);background:var(--cream);padding:.1rem .5rem;font-size:.78rem;font-weight:500;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .3s}
.pin:hover .pin__lbl,.pin:focus-visible .pin__lbl,.pin[aria-pressed=true] .pin__lbl{opacity:1}.pin--l .pin__lbl{left:auto;right:2.3rem}
.map__card{margin-top:1.2rem;border-top:1px solid var(--navy);padding-top:1rem;min-height:9rem;font-size:1rem}.map__card h3{margin-bottom:.3em;text-transform:none;font-size:1.6rem}.map__foot{display:flex;flex-wrap:wrap;gap:.6rem 1.5rem;align-items:center;justify-content:space-between;font-size:.82rem;color:var(--ink-2)}
.plist{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:1px;background:rgba(21,49,73,.2);border:1px solid rgba(21,49,73,.2);margin-top:2.5rem}
.plist button{background:var(--cream);border:0;padding:1.3rem 1.4rem;text-align:left;font:inherit;color:inherit;cursor:pointer;transition:background-color .3s}.plist button:hover,.plist button[aria-pressed=true]{background:var(--sand)}.plist strong{display:block;font:400 1.5rem/1.2 var(--f-head);letter-spacing:.04em;margin:.5rem 0 .3rem}.plist span.d{font-size:.95rem;color:var(--ink-2)}
/* reviews empty state, cta */
.rev{border:1px dashed rgba(21,49,73,.45);background:var(--cream-2);padding:clamp(2rem,5vw,4rem);text-align:center;max-width:52rem;margin:2.5rem auto 0}
.cta{position:relative;color:#fff;text-align:center;padding-block:clamp(6rem,16vw,11rem);overflow:hidden}
.cta .art{position:absolute;inset:0}.cta__scrim{position:absolute;inset:0;background:rgba(14,34,52,.5)}.cta__in{position:relative;text-shadow:0 1px 16px rgba(14,34,52,.5)}.cta h2{font-size:clamp(2.2rem,5.5vw,4.6rem)}.cta p{max-width:34rem;margin:0 auto 1.8rem}
/* inner page blocks */
.rows{display:grid;gap:clamp(3.5rem,8vw,7rem)}
.row{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(1.2rem,3vw,3rem);align-items:center}
.row .art{grid-column:1/8;aspect-ratio:4/3}.row__t{grid-column:9/13}
.row--flip .art{grid-column:6/13;order:2}.row--flip .row__t{grid-column:1/5;order:1}
.row h3{font-size:clamp(1.8rem,3vw,2.6rem)}.row p{color:var(--ink-2)}
.beds{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1.2rem,3vw,3rem)}.beds .art{aspect-ratio:4/5}.beds h3{margin:1.1rem 0 .4rem;text-transform:none;font-size:1.9rem}.beds ul li{font-size:1rem;padding:.35rem 0;border-bottom:1px solid rgba(21,49,73,.15)}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));border-top:1px solid var(--navy)}.facts div{padding:1.6rem 1rem 1.6rem 0}.facts b{display:block;font:400 clamp(2.4rem,4vw,3.4rem)/1 var(--f-head)}.facts span{font-size:.78rem;letter-spacing:.2em;text-transform:uppercase}
.amen{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:2.5rem 3rem}.amen h3{border-bottom:1px solid var(--navy);padding-bottom:.6rem}.amen li{padding:.4rem 0;font-size:1rem;display:flex;gap:.6rem}.amen li::before{content:"—";color:var(--blue)}.amen em{font-size:.8rem;color:var(--ink-2)}
.band{background:var(--sand)}.band--navy{background:var(--navy);color:var(--cream)}
.faq details{border-bottom:1px solid rgba(21,49,73,.25)}.faq summary{list-style:none;cursor:pointer;padding:1.2rem 0;font:400 1.4rem/1.3 var(--f-head);letter-spacing:.04em;display:flex;justify-content:space-between;gap:1rem}
.faq summary::-webkit-details-marker{display:none}.faq summary::after{content:"+";font-family:var(--f-body);transition:transform .3s}.faq details[open] summary::after{transform:rotate(45deg)}.faq p{color:var(--ink-2);padding-bottom:1rem;max-width:42rem}
.day__tabs{display:flex;flex-wrap:wrap;gap:.6rem;margin:2rem 0 2.5rem;justify-content:center}
.day__tab{border:1px solid var(--navy);background:transparent;color:var(--navy);padding:.8rem 1.4rem;font:500 .8rem var(--f-body);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;min-height:2.9rem;border-radius:var(--pill);transition:background-color .3s,color .3s}.day__tab[aria-selected=true]{background:var(--navy);color:#fff}
.day__panels{display:grid}.day__panel{grid-area:1/1;display:grid;grid-template-columns:7fr 5fr;gap:clamp(1.5rem,4vw,4rem);align-items:center;opacity:0;visibility:hidden;transition:opacity .8s,visibility .8s}.day__panel.is-on{opacity:1;visibility:visible}
.day__panel .art{aspect-ratio:4/3}.day__time{font:400 clamp(2.4rem,5vw,4rem)/1 var(--f-head);letter-spacing:.06em}
.cols4{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem}.cols4 h3{font-size:1.6rem;border-bottom:1px solid var(--navy);padding-bottom:.5rem}.cols4 li{padding:.3rem 0;font-size:1rem}
/* gallery + lightbox */
.chiprow{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:center;margin-bottom:2.5rem}
.chip{border:1px solid var(--navy);background:transparent;color:var(--navy);border-radius:var(--pill);padding:.75rem 1.2rem;min-height:2.75rem;font:500 .78rem var(--f-body);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;transition:background-color .3s,color .3s}.chip[aria-pressed=true],.chip:hover{background:var(--navy);color:#fff}
.gal{columns:3 18rem;column-gap:1rem}
.gal__i{position:relative;display:block;width:100%;margin:0 0 1rem;padding:0;border:0;background:none;cursor:zoom-in;break-inside:avoid;overflow:hidden}.gal__i .art{position:absolute;inset:0}.gal__i:hover .art svg{transform:scale(1.05)}
.gal__cap{position:absolute;left:0;right:0;bottom:0;padding:2.5rem 1rem .9rem;background:linear-gradient(transparent,rgba(14,34,52,.8));color:#fff;font-size:.92rem;text-align:left;transform:translateY(101%);transition:transform .4s var(--ease)}.gal__i:hover .gal__cap,.gal__i:focus-visible .gal__cap{transform:none}
.empty{text-align:center;padding:4rem 1rem;border:1px dashed rgba(21,49,73,.4)}
dialog.lb{border:0;padding:0;width:100vw;max-width:none;height:100dvh;max-height:none;background:var(--navy-deep);color:var(--cream)}
.lb__in{display:grid;grid-template-rows:auto 1fr auto auto;height:100%;padding:1rem var(--gut)}.lb__top{display:flex;justify-content:space-between;align-items:center}
.lb__stage{display:flex;align-items:center;justify-content:center;gap:1rem;min-height:0;touch-action:pan-y}
.lb__art{width:min(80vw,1100px);aspect-ratio:3/2;max-height:100%}.lb__btn{width:3rem;height:3rem;border-radius:50%;border:1px solid rgba(255,255,255,.7);background:transparent;color:#fff;display:grid;place-items:center;cursor:pointer;flex:none}.lb__btn:hover{background:#fff;color:var(--navy)}.lb__btn svg{width:1.2rem;height:1.2rem}
.lb__cap{text-align:center;padding:.8rem 0;font-size:1rem}.lb__th{display:flex;gap:.5rem;overflow-x:auto;justify-content:center;padding:.3rem 0 .6rem}.lb__th button{flex:none;width:4.5rem;height:3.2rem;padding:0;border:2px solid transparent;background:none;cursor:pointer;opacity:.6}.lb__th button[aria-current=true]{border-color:var(--blue-soft);opacity:1}.lb__th .art{width:100%;height:100%}
/* forms */
.form{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem 1.4rem}.form .full{grid-column:1/-1}
.fld label,.fld .lbl{display:block;font-size:.8rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;margin-bottom:.4rem}
.fld input,.fld select,.fld textarea{width:100%;font:400 1rem/1.5 var(--f-body);color:var(--ink);background:var(--cream-2);border:1px solid rgba(21,49,73,.45);border-radius:0;padding:.85rem 1rem;min-height:3rem}.fld textarea{min-height:9rem;resize:vertical}
.fld [aria-invalid=true]{border-color:var(--err);border-width:2px}.ferr{color:var(--err);font-size:.9rem;margin:.35rem 0 0}.fld .hp{position:absolute;left:-9999px}
.chk{display:flex;gap:.7rem;align-items:flex-start;font-size:.95rem}.chk input{width:1.3rem;height:1.3rem;margin-top:.2rem;flex:none}
.fsum{border:2px solid var(--err);padding:1rem 1.2rem;color:var(--err);font-size:.95rem}.fsum ul{margin-top:.4rem;list-style:disc;padding-left:1.2rem}
.fstate{border:1px solid var(--navy);padding:clamp(1.5rem,4vw,3rem);background:var(--cream-2)}.fstate--ok{border-color:var(--ok)}.fstate--err{border-color:var(--err)}
.spin{width:1rem;height:1rem;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:sp .7s linear infinite}@keyframes sp{to{transform:rotate(360deg)}}
.contact{display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,6vw,6rem);align-items:start}.contact__opts li{border-bottom:1px solid rgba(21,49,73,.2)}.contact__opts button,.contact__opts a{display:flex;gap:1rem;align-items:center;width:100%;background:none;border:0;padding:1.1rem 0;font:inherit;color:inherit;text-align:left;text-decoration:none;cursor:pointer}.contact__opts svg{width:1.5rem;height:1.5rem;color:var(--blue);flex:none}.contact__opts strong{display:block;font:400 1.4rem/1.2 var(--f-head);letter-spacing:.04em}.contact__opts span{font-size:.92rem;color:var(--ink-2)}
.legal h2{font-size:clamp(1.6rem,3vw,2.4rem);margin-top:3rem}.legal h3{font-size:1.3rem;margin-top:1.6rem}.legal li{list-style:disc;margin-left:1.3rem;margin-bottom:.4rem}
@media (max-width:1000px){.feat{grid-template-columns:repeat(2,1fr)}.cols4{grid-template-columns:repeat(2,1fr)}.beds{grid-template-columns:1fr 1fr}.loc,.contact{grid-template-columns:1fr}.day__panel{grid-template-columns:1fr}}
@media (max-width:760px){
.hero__body{padding:7rem var(--gut) 8rem}.hero__ctrl{bottom:5.4rem}
.intro{display:block}.intro__art{aspect-ratio:4/5;margin-bottom:2rem}
.feat,.cols4,.beds,.form{grid-template-columns:1fr}
.oval{grid-template-columns:1fr;text-align:center;justify-items:center}.oval__art{width:min(62vw,14rem)}
.row{display:block}.row .art{aspect-ratio:4/3;margin-bottom:1.2rem}.row--flip .art{order:0}
.car__btn{display:none}.imp__more{position:static}.imp__ctl{flex-direction:column}
.room__cta{right:.7rem;bottom:.7rem}.room__cta .btn{min-height:2.5rem;padding:0 1rem}
.gal{columns:2 9rem;column-gap:.6rem}.gal__i{margin-bottom:.6rem}.gal__cap{transform:none;font-size:.78rem;padding-top:1.5rem}
.lb__btn--side{display:none}.lb__art{width:94vw}
.pin__lbl{display:none}.pin[aria-pressed=true] .pin__lbl{display:block}
}