@font-face{
  font-family:'Fraunces';
  src:url('fonts/fraunces-latin-opsz-normal.woff2') format('woff2-variations');
  font-weight:100 900;font-style:normal;font-display:swap;
}
@font-face{
  font-family:'Fraunces';
  src:url('fonts/fraunces-latin-opsz-italic.woff2') format('woff2-variations');
  font-weight:100 900;font-style:italic;font-display:swap;
}
@font-face{
  font-family:'Manrope';
  src:url('fonts/manrope-latin-wght-normal.woff2') format('woff2-variations');
  font-weight:200 800;font-style:normal;font-display:swap;
}
:root{
  --deep:#06393f;
  --deep-2:#0a4c56;
  --teal:#006470;
  --wedgewood:#0a6d7d;
  --sienna:#D2542A;
  --sienna-dark:#b8461f;
  --tacao:#57C5D6;
  --tacao-soft:#A6E1EB;
  --sand:#F4ECE1;
  --foam:#FBF8F3;
  --ink:#0c353c;
  --ink-70:rgba(12,53,60,.72);
  --ink-55:rgba(12,53,60,.55);
  --line:rgba(12,53,60,.14);
  --serif:"Fraunces",Georgia,serif;
  --sans:"Manrope",system-ui,-apple-system,sans-serif;
  --container:1200px;
  --pad:clamp(1.25rem,5vw,3rem);
  --section:clamp(4.5rem,10vw,8.5rem);
  --radius:18px;
  --ease:cubic-bezier(.22,.61,.36,1);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;}
html{scroll-behavior:smooth;scroll-padding-top:4.5rem;}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto;}}
body{
  margin:0;font-family:var(--sans);color:var(--ink);background:var(--foam);
  line-height:1.65;font-weight:400;-webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}
h1,h2,h3{font-family:var(--serif);font-weight:500;line-height:1.05;margin:0;letter-spacing:-.01em;}
.container{max-width:var(--container);margin:0 auto;padding-inline:var(--pad);}
.eyebrow{
  font-family:var(--sans);text-transform:uppercase;letter-spacing:.26em;
  font-size:.72rem;font-weight:600;color:var(--sienna);
  display:inline-flex;align-items:center;gap:.7rem;
}
.eyebrow::before{content:"";width:26px;height:1px;background:var(--sienna);opacity:.6;}
.about-copy .eyebrow::after{content:"";width:26px;height:1px;background:var(--sienna);opacity:.6;}

.site-header{
  position:fixed;inset:0 0 auto 0;z-index:60;display:flex;align-items:center;justify-content:space-between;
  padding:.8rem var(--pad);
  background:rgba(251,250,246,.94);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  box-shadow:0 1px 0 var(--line);
}
.wordmark{
  font-family:var(--serif);font-size:1.5rem;font-weight:500;letter-spacing:.01em;color:var(--ink);
  display:flex;align-items:center;gap:.5rem;
}
.brand-logo{display:block;height:40px;width:auto;}
.footer-in .brand-logo{height:var(--footer-logo-h);}
@media (max-width:640px){.brand-logo{height:36px;}}
.wordmark .dot{width:7px;height:7px;border-radius:50%;background:var(--sienna);display:inline-block;transform:translateY(-1px);}
.header-actions{display:flex;align-items:center;gap:.7rem;}
.sound-btn{
  display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex:none;
  border:1px solid var(--line);border-radius:50%;background:transparent;cursor:pointer;color:var(--wedgewood);
  transition:background .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease);
}
.sound-btn:hover{background:rgba(10,109,125,.1);}
.sound-btn svg{width:19px;height:19px;}
.sound-btn .ico-off{display:none;}
.sound-btn[aria-pressed="false"]{color:var(--ink-55);}
.sound-btn[aria-pressed="false"] .ico-on{display:none;}
.sound-btn[aria-pressed="false"] .ico-off{display:block;}
.lang-toggle{display:inline-flex;align-items:center;background:transparent;border:1px solid var(--line);border-radius:100px;padding:2px;}
.lang-toggle button{
  font-family:var(--sans);font-weight:600;font-size:.74rem;letter-spacing:.08em;color:var(--ink-55);
  background:transparent;border:none;border-radius:100px;padding:.55rem .8rem;cursor:pointer;line-height:1;
  transition:background .3s var(--ease),color .3s var(--ease);
}
.lang-toggle button[aria-pressed="true"]{background:var(--sienna);color:#fff;}
.menu-btn{
  display:inline-flex;align-items:center;gap:.6rem;font-family:var(--sans);font-weight:600;font-size:.82rem;
  text-transform:uppercase;letter-spacing:.16em;color:var(--wedgewood);background:transparent;
  border:1px solid var(--line);padding:.62rem 1.1rem;border-radius:100px;cursor:pointer;
  transition:background .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease);
}
.menu-btn:hover{background:rgba(10,109,125,.1);}
.menu-btn svg{width:16px;height:16px;}
.menu-btn .bars{display:block;}.menu-btn .close{display:none;}
@media (max-width:400px){
  .header-actions{gap:.45rem;}
  .menu-btn{padding:.6rem;}
  .menu-btn .label-txt{display:none;}
  .lang-toggle button{padding:.5rem .55rem;}
  .sound-btn{width:38px;height:38px;}
}
.menu-btn[aria-expanded="true"] .bars{display:none;}
.menu-btn[aria-expanded="true"] .close{display:block;}

.dropdown{
  position:fixed;top:0;right:0;z-index:59;width:min(360px,92vw);background:var(--deep);color:#fff;
  padding:6rem var(--pad) 2.5rem;transform:translateY(-102%);
  visibility:hidden;transition:transform .5s var(--ease),visibility 0s .5s;
  box-shadow:0 30px 60px rgba(0,0,0,.35);border-bottom-left-radius:22px;
}
.dropdown.open{transform:translateY(0);visibility:visible;transition:transform .5s var(--ease);}
.dropdown ol{list-style:none;margin:0;padding:0;}
.dropdown li{border-top:1px solid rgba(255,255,255,.12);}
.dropdown li:last-child{border-bottom:1px solid rgba(255,255,255,.12);}
.dropdown a{
  display:flex;align-items:baseline;gap:1rem;padding:1.15rem .25rem;
  font-family:var(--serif);font-size:1.7rem;transition:color .3s var(--ease),padding-left .3s var(--ease);
}
.dropdown a .num{font-family:var(--sans);font-size:.7rem;font-weight:600;letter-spacing:.1em;color:var(--tacao);min-width:1.5rem;}
.dropdown a:hover{color:var(--tacao);padding-left:.9rem;}
.dropdown .drop-foot{margin-top:2rem;font-family:var(--sans);font-size:.85rem;color:rgba(255,255,255,.6);line-height:1.6;}
.dropdown .drop-foot strong{color:var(--tacao-soft);font-weight:600;}
.scrim{position:fixed;inset:0;z-index:58;background:rgba(9,22,29,.4);opacity:0;pointer-events:none;transition:opacity .4s var(--ease);}
.scrim.show{opacity:1;pointer-events:auto;}

.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;overflow:hidden;}
.hero-media{position:absolute;inset:0;z-index:0;}
.hero-media img{width:100%;height:100%;object-fit:cover;object-position:50% 45%;}
.hero-media::after{
  content:"";position:absolute;inset:0;
  background:
    linear-gradient(180deg,rgba(9,22,29,.42) 0%,rgba(9,22,29,0) 30%,rgba(9,22,29,0) 45%,rgba(9,22,29,.72) 100%),
    linear-gradient(90deg,rgba(9,22,29,.35),rgba(9,22,29,0) 55%);
}
@media (prefers-reduced-motion:no-preference){
  .hero-media img{animation:kenburns 22s ease-out both;}
  @keyframes kenburns{from{transform:scale(1.08);}to{transform:scale(1);}}
}
.hero-inner{position:relative;z-index:1;width:100%;padding-bottom:clamp(3rem,8vh,6rem);}
.hero .eyebrow{color:var(--tacao);}
.hero .eyebrow::before{background:var(--tacao);opacity:.8;}
.hero h1{
  color:#fff;font-size:clamp(3.4rem,12vw,8.5rem);font-weight:400;letter-spacing:-.02em;
  margin:.5rem 0 .4rem;text-shadow:0 2px 40px rgba(0,0,0,.25);
}
.hero h1 em{font-style:italic;color:var(--tacao-soft);}
.hero .tagline{color:rgba(255,255,255,.92);font-size:clamp(1.05rem,2.2vw,1.4rem);max-width:34ch;font-weight:300;margin:0;}
.hero .locale{
  margin-top:1.6rem;display:flex;align-items:center;gap:.7rem;color:rgba(255,255,255,.8);
  font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.2em;
}
.hero .locale svg{width:15px;height:15px;color:var(--tacao);}

.js .reveal{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease),transform .9s var(--ease);}
.js .reveal.in{opacity:1;transform:none;}
@media (prefers-reduced-motion:reduce){.js .reveal{opacity:1;transform:none;transition:none;}}

.about{background:var(--sand);position:relative;padding-block:var(--section);}
.about-grid{display:grid;grid-template-columns:1.05fr .9fr;gap:clamp(2rem,6vw,4.5rem);align-items:center;}
.about-copy{text-align:left;display:flex;flex-direction:column;align-items:flex-start;}
.about-copy h2{font-size:clamp(2.1rem,4.4vw,3.3rem);margin:1.1rem 0 1.4rem;max-width:16ch;}
.about-copy h2 em{font-style:italic;color:var(--sienna);}
.about-copy p{color:var(--ink-70);font-size:clamp(1.02rem,1.4vw,1.14rem);max-width:52ch;margin:0 0 1.2rem;}
.about-copy .sign{margin-top:1.3rem;font-family:var(--serif);font-style:italic;font-size:1.16rem;color:var(--wedgewood);max-width:52ch;}
.about-media{position:relative;}
.about-media::before{content:"";position:absolute;inset:0;transform:translate(16px,16px);background:var(--tacao);border-radius:var(--radius);z-index:0;}
.about-photo{position:relative;z-index:1;width:100%;height:auto;display:block;border-radius:var(--radius);box-shadow:0 30px 60px -28px rgba(6,57,63,.55);}
@media (max-width:820px){
  .about-grid{grid-template-columns:1fr;gap:2.5rem;}
  .about-copy{text-align:center;align-items:center;}
  .about-copy h2{max-width:20ch;}
  .about-media{max-width:420px;margin:0 auto;width:100%;}
  .about-media::before{transform:translate(12px,12px);}
}

.waterline-sand{margin-top:-1px;background:var(--sand);}
.crop-low{object-position:50% 60%;}
.waterline{display:block;width:100%;height:auto;color:var(--deep);}

.experiences{background:var(--deep);color:#fff;padding-block:var(--section);position:relative;}
.exp-head{max-width:640px;margin-bottom:clamp(2.5rem,5vw,3.5rem);}
.exp-head .eyebrow{color:var(--tacao);}
.exp-head .eyebrow::before{background:var(--tacao);}
.exp-head .eyebrow::after{content:"";width:26px;height:1px;background:var(--tacao);opacity:.8;}
.exp-head h2{font-size:clamp(2rem,4.5vw,3.4rem);margin:1.1rem 0 .8rem;}
.exp-head p{color:rgba(255,255,255,.72);font-size:1.05rem;max-width:52ch;}
.exp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;}
.card{
  background:var(--foam);color:var(--ink);border-radius:var(--radius);overflow:hidden;
  display:flex;flex-direction:column;transition:transform .5s var(--ease),box-shadow .5s var(--ease);
}
.card:hover{transform:translateY(-8px);box-shadow:0 40px 70px -40px rgba(0,0,0,.6);}
.card-media{position:relative;overflow:hidden;aspect-ratio:4/3;}
.card-media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .8s var(--ease);}
.card:hover .card-media img{transform:scale(1.06);}
.card-chip{
  position:absolute;top:.9rem;left:.9rem;background:rgba(6,57,63,.82);color:#fff;font-size:.72rem;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;padding:.4rem .8rem;border-radius:100px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
}
.card-body{padding:1.5rem 1.5rem 1.7rem;display:flex;flex-direction:column;flex:1;}
.card-body h3{font-size:1.7rem;margin-bottom:.2rem;}
.card-body .pt{font-family:var(--serif);font-style:italic;color:var(--wedgewood);font-size:.98rem;margin-bottom:.9rem;}
.card-body p{color:var(--ink-70);font-size:.96rem;margin:0 0 1.3rem;flex:1;}
.card-link{
  display:inline-flex;align-items:center;gap:.6rem;font-weight:600;font-size:.9rem;color:var(--sienna);
  letter-spacing:.02em;align-self:flex-start;transition:gap .3s var(--ease);
}
.card-link svg{width:16px;height:16px;transition:transform .3s var(--ease);}
.card-link:hover{gap:.85rem;}
.card.accent{background:linear-gradient(150deg,var(--teal) 0%,var(--sienna-dark) 100%);color:#fff;justify-content:center;padding:2rem 1.6rem;}
.card.accent h3{font-size:1.85rem;margin-bottom:.6rem;}
.card.accent p{color:#fff;font-size:1rem;margin-bottom:1.5rem;}
.card.accent .card-link{color:#fff;}
.card.accent .quote-mark{font-family:var(--serif);font-size:4rem;line-height:.6;opacity:.5;margin-bottom:.6rem;}

.contact{
  background-color:var(--deep);
  background-image:linear-gradient(rgba(6,57,63,.72),rgba(6,57,63,.82)),url('contact.jpg');
  background-size:cover,cover;
  background-position:center,center;
  background-repeat:no-repeat,no-repeat;
  color:#fff;padding-block:var(--section);text-align:center;position:relative;
}
@media (max-width:640px){.contact{background-size:cover,contain;}}
.contact::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 80% at 50% 0%,rgba(63,109,140,.35),transparent 60%);pointer-events:none;}
.contact-inner{position:relative;max-width:680px;margin:0 auto;}
.contact .eyebrow{color:var(--tacao);justify-content:center;}
.contact .eyebrow::before{background:var(--tacao);}
.contact .eyebrow::after{content:"";width:26px;height:1px;background:var(--tacao);opacity:.8;}
.contact h2{font-size:clamp(2.2rem,5.5vw,4rem);margin:1.2rem 0 1rem;}
.contact h2 em{font-style:italic;color:var(--tacao-soft);}
.contact p{color:rgba(255,255,255,.75);font-size:1.1rem;max-width:44ch;margin:0 auto 2.4rem;font-weight:300;}
.contact-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;}
.btn{
  display:inline-flex;align-items:center;gap:.7rem;font-family:var(--sans);font-weight:600;font-size:1rem;
  padding:1rem 1.7rem;border-radius:100px;cursor:pointer;border:none;
  transition:transform .3s var(--ease),box-shadow .3s var(--ease),background .3s var(--ease);
}
.btn svg{width:20px;height:20px;}
.btn-wa{background:var(--sienna);color:#fff;box-shadow:0 14px 30px -12px rgba(176,80,47,.8);}
.btn-wa:hover{background:var(--sienna-dark);transform:translateY(-3px);}
.btn-mail{background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.4);}
.btn-mail:hover{background:rgba(255,255,255,.1);transform:translateY(-3px);border-color:rgba(255,255,255,.7);}

.site-footer{--footer-logo-h:52px;background:var(--deep-2);color:rgba(255,255,255,.6);padding:2.6rem 0 7rem;}
.footer-in{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;}
.footer-in .wordmark{color:#fff;font-size:1.3rem;}
.footer-info{display:flex;flex-direction:column;gap:.5rem;align-items:flex-end;}
.footer-in .meta{font-size:.82rem;letter-spacing:.02em;}
.footer-legal{display:flex;flex-direction:column;align-items:flex-end;gap:.5rem;font-size:.82rem;color:rgba(255,255,255,.6);}
.footer-legal .rnaat{letter-spacing:.02em;}
.footer-social{display:inline-flex;align-items:center;justify-content:center;gap:clamp(.5rem,1.4vw,.9rem);flex:1;}
.footer-social:empty{display:none;}
.social-link{display:inline-flex;align-items:center;justify-content:center;color:rgba(255,255,255,.6);padding:6px;margin:-6px;height:clamp(22px,3.4vw,var(--footer-logo-h));box-sizing:content-box;transition:color .25s var(--ease),transform .25s var(--ease);}
.social-link svg{height:100%;width:auto;fill:currentColor;}
.social-link:hover{color:var(--tacao);transform:translateY(-2px);}
.footer-in a:hover{color:var(--tacao);}

.dock{
  position:fixed;z-index:55;left:50%;bottom:1.25rem;
  display:flex;justify-content:center;
  transform:translateX(-50%);
  transition:opacity .4s var(--ease),visibility .4s var(--ease),transform .4s var(--ease);
}
.dock.hide{opacity:0;visibility:hidden;transform:translateX(-50%) translateY(18px);}
.book-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.6rem;height:58px;padding:0 2rem;
  border:none;border-radius:100px;cursor:pointer;background:var(--sienna);color:#fff;
  font-family:var(--sans);font-weight:700;font-size:1rem;letter-spacing:.02em;white-space:nowrap;
  box-shadow:0 18px 38px -12px rgba(0,0,0,.55);
  transition:transform .3s var(--ease),box-shadow .3s var(--ease),background .3s var(--ease);
}
.book-btn svg{width:21px;height:21px;flex:none;}
.book-btn:hover{background:var(--sienna-dark);transform:translateY(-3px);box-shadow:0 24px 46px -12px rgba(0,0,0,.65);}
@media (max-width:640px){
  .dock{left:1rem;right:1rem;bottom:calc(1rem + env(safe-area-inset-bottom));transform:none;}
  .dock.hide{transform:translateY(18px);}
  .book-btn{width:100%;height:56px;}
  .site-footer{padding-bottom:calc(7rem + env(safe-area-inset-bottom));}
  .footer-in{justify-content:center;text-align:center;}
  .footer-info{align-items:center;}
  .footer-legal{align-items:center;}
  .footer-social{flex:0 0 100%;}
}

.book-panel{width:min(460px,100%);}
.book-head{padding:2.4rem 1.9rem 1.4rem;text-align:center;}
.book-head h3{font-family:var(--serif);font-size:1.75rem;font-weight:500;color:var(--ink);margin-bottom:.5rem;}
.book-head p{color:var(--ink-55);font-size:.95rem;}
.book-options{display:flex;flex-direction:column;gap:.7rem;padding:0 1.9rem 1.9rem;}
.book-opt{
  display:flex;align-items:center;gap:1rem;padding:1.1rem 1.2rem;border-radius:14px;
  text-decoration:none;border:1.5px solid var(--line);background:#fff;
  transition:transform .28s var(--ease),border-color .28s var(--ease),box-shadow .28s var(--ease);
}
.book-opt:hover{transform:translateY(-2px);box-shadow:0 16px 32px -16px rgba(6,57,63,.4);}
.book-opt.wa:hover{border-color:var(--sienna);}
.book-opt.mail:hover{border-color:var(--wedgewood);}
.book-ico{
  width:46px;height:46px;border-radius:12px;flex:none;
  display:flex;align-items:center;justify-content:center;color:#fff;
}
.book-ico svg{width:24px;height:24px;}
.book-opt.wa .book-ico{background:var(--sienna);}
.book-opt.mail .book-ico{background:var(--wedgewood);}
.book-txt{flex:1;display:flex;flex-direction:column;gap:.15rem;}
.book-txt b{font-size:1.02rem;font-weight:700;color:var(--ink);}
.book-txt small{font-size:.83rem;color:var(--ink-55);line-height:1.4;}
.book-arrow{width:20px;height:20px;flex:none;color:var(--ink-55);transition:transform .28s var(--ease);}
.book-opt:hover .book-arrow{transform:translateX(4px);}
@media (max-width:560px){
  .book-head{padding:2rem 1.25rem 1.2rem;}
  .book-options{padding:0 1.25rem 1.6rem;}
}

@media (max-width:900px){.exp-grid{grid-template-columns:1fr 1fr;}.card.accent{grid-column:1 / -1;}}
@media (max-width:760px){
  .exp-grid{grid-template-columns:1fr;}
  .card.accent{grid-column:auto;}
  .exp-head{max-width:none;margin-left:auto;margin-right:auto;text-align:center;}
  .exp-head .eyebrow{justify-content:center;}
  .exp-head p{margin-left:auto;margin-right:auto;}
  .hero-inner{padding-bottom:6.5rem;}
  .dock{bottom:.9rem;}
}
:focus-visible{outline:2.5px solid var(--tacao);outline-offset:3px;border-radius:4px;}

.card-price{font-family:var(--serif);font-size:1.15rem;color:var(--sienna);margin:-.3rem 0 .7rem;font-weight:500;}
.card-actions{display:flex;align-items:center;gap:1.1rem;flex-wrap:wrap;margin-top:auto;padding-top:1.1rem;}
.card-link.ghost{color:var(--ink-55);}
.card-link.ghost:hover{color:var(--sienna);}
button.card-link{background:none;border:none;cursor:pointer;font-family:var(--sans);padding:0;}

.modal[hidden],.modal-scrim[hidden]{display:none;}
.modal-scrim{
  position:fixed;inset:0;z-index:90;background:rgba(6,57,63,.72);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
  opacity:0;transition:opacity .35s var(--ease);
}
.modal-scrim.show{opacity:1;}
.modal{
  position:fixed;inset:0;z-index:95;display:flex;align-items:center;justify-content:center;
  padding:1.25rem;opacity:0;transition:opacity .35s var(--ease);
}
.modal.show{opacity:1;}
.modal-panel{
  position:relative;background:var(--foam);border-radius:var(--radius);width:min(660px,100%);
  max-height:min(86vh,900px);overflow-y:auto;box-shadow:0 40px 90px -30px rgba(0,0,0,.6);
  transform:translateY(16px) scale(.98);transition:transform .4s var(--ease);
  -webkit-overflow-scrolling:touch;
}
.modal.show .modal-panel{transform:none;}
.modal-close{
  position:absolute;top:.9rem;right:.9rem;z-index:2;width:40px;height:40px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  background:rgba(255,255,255,.9);border:1px solid var(--line);color:var(--ink);
  transition:background .25s var(--ease),transform .25s var(--ease);
}
.modal-close:hover{background:#fff;transform:rotate(90deg);}
.modal-close svg{width:18px;height:18px;}
.modal-head{padding:2rem 1.9rem 1.4rem;border-bottom:1px solid var(--line);}
.modal-chip{
  display:inline-block;font-size:.7rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  color:var(--wedgewood);background:rgba(10,109,125,.1);padding:.35rem .75rem;border-radius:100px;
}
.modal-head h3{font-family:var(--serif);font-size:clamp(1.7rem,4vw,2.3rem);font-weight:500;color:var(--ink);margin:.8rem 0 .3rem;}
.modal-price{font-family:var(--serif);font-size:1.25rem;color:var(--sienna);margin-bottom:1rem;}
.modal-intro p{color:var(--ink-70);font-size:1rem;margin-bottom:.8rem;}
.modal-intro p:last-child{margin-bottom:0;}

.acc{padding:.6rem 1.9rem 0;}
.acc-item{border-bottom:1px solid var(--line);}
.acc-btn{
  width:100%;display:flex;align-items:center;justify-content:space-between;gap:1rem;
  background:none;border:none;cursor:pointer;padding:1.1rem 0;text-align:left;
  font-family:var(--sans);font-size:1rem;font-weight:600;color:var(--ink);
  transition:color .25s var(--ease);
}
.acc-btn:hover{color:var(--sienna);}
.acc-btn .chev{width:20px;height:20px;flex:none;color:var(--wedgewood);transition:transform .35s var(--ease);}
.acc-btn[aria-expanded="true"] .chev{transform:rotate(180deg);}
.acc-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s var(--ease);}
.acc-btn[aria-expanded="true"] + .acc-panel{grid-template-rows:1fr;}
.acc-inner{overflow:hidden;}
.acc-btn[aria-expanded="true"] + .acc-panel .acc-inner{padding-bottom:1.3rem;}
.acc-inner h4{
  font-family:var(--sans);font-size:.74rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink);margin:1rem 0 .5rem;
}
.acc-inner h4:first-child{margin-top:0;}
.acc-inner p{color:var(--ink-70);font-size:.95rem;margin-bottom:.6rem;}
.acc-inner ul{list-style:none;margin:0 0 .5rem;padding:0;}
.acc-inner li{
  position:relative;padding-left:1rem;color:var(--ink-70);font-size:.95rem;margin-bottom:.45rem;line-height:1.55;
}
.acc-inner li::before{content:"";position:absolute;left:0;top:.62em;width:5px;height:5px;border-radius:50%;background:var(--tacao);}
.acc-inner li b{color:var(--ink);font-weight:600;}
.acc-inner li .price{color:var(--sienna);font-weight:600;}
.acc-inner li small{display:block;font-size:.86rem;color:var(--ink-55);margin-top:.1rem;}
.acc-inner .note{font-size:.88rem;color:var(--ink-55);font-style:italic;margin-top:.7rem;}

.modal-foot{
  display:flex;gap:.7rem;flex-wrap:wrap;padding:1.5rem 1.9rem 1.9rem;
  position:sticky;bottom:0;background:linear-gradient(rgba(251,248,243,0),var(--foam) 28%);
}
.modal-foot .btn{flex:1;justify-content:center;min-width:190px;}
.modal-foot .btn-mail{background:var(--wedgewood);color:#fff;border:none;}
.modal-foot .btn-mail:hover{background:var(--teal);transform:translateY(-3px);}

body.modal-open{overflow:hidden;}

@media (max-width:560px){
  .modal{padding:0;align-items:flex-end;}
  .modal-panel{max-height:92vh;border-radius:var(--radius) var(--radius) 0 0;width:100%;}
  .modal-head{padding:1.8rem 1.25rem 1.2rem;}
  .acc{padding:.4rem 1.25rem 0;}
  .modal-foot{padding:1.2rem 1.25rem calc(1.5rem + env(safe-area-inset-bottom));flex-direction:column;}
  .modal-foot .btn{min-width:0;}
  .book-options{padding-bottom:calc(1.9rem + env(safe-area-inset-bottom));}
}

.card.soon .card-media img{opacity:.92;}
.card.soon{opacity:.94;}
.card.soon .card-chip{background:rgba(6,57,63,.72);}
.card.soon .card-price{color:var(--wedgewood);font-style:italic;}
.card.soon .card-body{padding-bottom:1.8rem;}

.gallery{position:relative;overflow:hidden;border-radius:var(--radius) var(--radius) 0 0;background:var(--deep);aspect-ratio:3/4;}
.gallery-track{display:flex;height:100%;transition:transform .5s var(--ease);}
.gallery-track img{min-width:100%;width:100%;height:100%;object-fit:cover;display:block;}
.gallery-nav{
  position:absolute;top:50%;transform:translateY(-50%);width:40px;height:40px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:2;
  background:rgba(255,255,255,.85);border:none;color:var(--ink);
  transition:background .25s var(--ease),transform .25s var(--ease);
}
.gallery-nav:hover{background:#fff;}
.gallery-nav svg{width:20px;height:20px;}
.gallery-nav.prev{left:.7rem;}
.gallery-nav.next{right:.7rem;}
.gallery-nav.prev:hover{transform:translateY(-50%) translateX(-2px);}
.gallery-nav.next:hover{transform:translateY(-50%) translateX(2px);}
.gallery-dots{position:absolute;bottom:.8rem;left:0;right:0;display:flex;justify-content:center;gap:.4rem;z-index:2;}
.gallery-dot{width:20px;height:20px;border-radius:50%;background:transparent;cursor:pointer;position:relative;display:flex;align-items:center;justify-content:center;transition:transform .25s var(--ease);}
.gallery-dot::after{content:"";width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.5);transition:background .25s var(--ease);}
.gallery-dot.active::after{background:#fff;}
.gallery-dot.active{transform:scale(1.15);}
.gallery + .modal-head{padding-top:1.5rem;}
@media (max-width:560px){.gallery{border-radius:0;}}



/* Full-screen Boa Vida arrival gate. The button provides the user gesture needed
   to unlock the site's ocean audio in modern browsers. */
body.arrival-open{overflow:hidden;overscroll-behavior:none;}
.arrival{
  --arrival-cta-font-size:clamp(10px,.72vw,12px);
  --arrival-cta-padding-y:clamp(15px,1.15vw,17px);
  --arrival-cta-padding-x:clamp(22px,1.9vw,28px);
  --arrival-cta-width:clamp(215px,18vw,232px);
  --arrival-cta-min-width:var(--arrival-cta-width);
  --arrival-statement-font-size:clamp(42px,5.05vw,78px);
}
.arrival[hidden]{display:none;}
.arrival__header{padding-top:max(25px,env(safe-area-inset-top));padding-left:max(34px,env(safe-area-inset-left));padding-right:max(34px,env(safe-area-inset-right));}
.arrival__place{font-weight:600;}
.arrival__line{font-variation-settings:"opsz" 72;}
.enter-button:focus-visible,.language:focus-visible{outline:2.5px solid var(--tacao-soft);outline-offset:4px;}

.arrival {
      position: fixed;
      inset: 0;
      z-index: 9999;
      display: grid;
      place-items: center;
      overflow: hidden;

      /* Brand-blue transparent glass over the live hero. */
      background:
        radial-gradient(circle at 82% 18%, rgba(210, 84, 42, .13), transparent 31%),
        linear-gradient(135deg, rgba(6, 57, 63, .91) 0%, rgba(0, 100, 112, .78) 48%, rgba(10, 76, 86, .91) 100%);

      -webkit-backdrop-filter: blur(18px) saturate(125%);
      backdrop-filter: blur(18px) saturate(125%);

      isolation: isolate;
      transition:
        opacity 2.2s var(--ease),
        visibility 0s 2.25s;
    }

    /* Glass depth / light refraction */
    .arrival::before {
      content: "";
      position: absolute;
      inset: -20%;
      z-index: -1;
      pointer-events: none;
      background:
        radial-gradient(
          circle at 18% 12%,
          rgba(255, 255, 255, .15),
          transparent 30%
        ),
        radial-gradient(
          circle at 84% 82%,
          rgba(87, 197, 214, .13),
          transparent 35%
        ),
        linear-gradient(
          112deg,
          transparent 28%,
          rgba(255, 255, 255, .045) 46%,
          transparent 61%
        );
      transform: translate3d(-1.5%, -1%, 0);
      animation: glassDrift 15s ease-in-out infinite alternate;
    }

    .arrival::after {
      content: "";
      position: absolute;
      inset: 0;
      z-index: -1;
      pointer-events: none;
      border: 1px solid rgba(255, 255, 255, .08);
      box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .12),
        inset 0 -1px 0 rgba(0, 0, 0, .05);
    }

    @keyframes glassDrift {
      from {
        transform: translate3d(-1.5%, -1%, 0) scale(1);
      }
      to {
        transform: translate3d(1.5%, 1%, 0) scale(1.025);
      }
    }

    .arrival__header {
      position: absolute;
      inset: 0 0 auto;
      z-index: 2;
      display: grid;
      grid-template-columns: 1fr auto;
      align-items: center;
      padding: 25px 34px;
      opacity: 0;
      animation: softFade 1.8s .35s var(--ease) forwards;
    }

    .arrival__logo-wrap {
      justify-self: start;
      display: inline-flex;
      align-items: center;
      min-height: 44px;
    }

    .arrival__logo {
      display: block;
      width: 118px;
      height: auto;
    }

    .arrival__logo-fallback {
      display: none;
      color: var(--foam);
      font-family: var(--serif);
      font-size: 24px;
      letter-spacing: -.035em;
    }

    .arrival__place {
      justify-self: start;
      color: var(--tacao-soft);
      font-family: var(--sans);
      font-size: 9px;
      font-weight: 500;
      letter-spacing: .18em;
      text-transform: uppercase;
    }

    /* Same visual language as the site's simple EN PT header control. */
    .arrival__languages {
      justify-self: end;
      display: inline-flex;
      align-items: center;
      gap: 2px;
      padding: 2px;
      border: 1px solid rgba(166, 225, 235, .28);
      border-radius: 999px;
      background: rgba(6, 57, 63, .18);
      font-family: var(--sans);
      font-size: 10px;
      letter-spacing: .10em;
      text-transform: uppercase;
      -webkit-backdrop-filter: blur(8px);
      backdrop-filter: blur(8px);
    }

    .language {
      appearance: none;
      border: 0;
      border-radius: 999px;
      padding: 8px 10px;
      background: transparent;
      color: rgba(251, 248, 243, .55);
      cursor: pointer;
      font-size: inherit;
      font-weight: 500;
      letter-spacing: inherit;
      text-transform: inherit;
      transition:
        color 1s var(--ease),
        opacity 1s var(--ease);
    }

    .language[aria-pressed="true"] {
      color: #fff;
      background: var(--sienna);
    }

    .language:hover {
      color: var(--foam);
    }

    .arrival__content {
      position: relative;
      z-index: 2;
      width: min(1320px, calc(100vw - 36px));
      padding: 70px 0 40px;
    }

    .arrival__stack {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      width: 100%;
      opacity: 1;
      transform: none;
    }

    .arrival__typewriter {
      /*
        Easy-to-adjust layout:
        - top line spans both columns
        - second line starts at the exact same left edge
        - button always occupies column 2
      */
      --grid-gap: clamp(18px, 2vw, 30px);
      /* Change only --grid-gap to move the button closer/further from the text. */

      display: inline-grid;
      grid-template-columns: max-content max-content;
      grid-template-areas:
        "top top"
        "bottom button";
      align-items: center;
      justify-content: center;
      column-gap: var(--grid-gap);
      row-gap: .05em;

      max-width: 100%;
      padding-left: clamp(22px, 4.5vw, 88px);
      padding-right: clamp(22px, 4.5vw, 88px);
    }

    .arrival__line {
      color: var(--foam);
      font-family: var(--serif);
      font-size: var(--arrival-statement-font-size);
      font-weight: 400;
      line-height: 1.02;
      letter-spacing: .025em;
      text-transform: uppercase;
      white-space: nowrap;

      /* Each line starts hidden and eases in smoothly, one after another,
         from the top line down. Pacing is set in site.js via
         --line-reveal-delay. */
      opacity: 0;
      transform: translateY(20px);
      filter: blur(3px);
      transition:
        opacity 1.5s var(--ease),
        transform 1.5s var(--ease),
        filter 1.5s var(--ease);
      transition-delay: var(--line-reveal-delay, 0ms);
      will-change: opacity, transform, filter;
    }

    .arrival__line.is-line-revealed {
      opacity: 1;
      transform: translateY(0);
      filter: blur(0);
    }

    .arrival__line--first {
      grid-area: top;
      justify-self: start;
    }

    .arrival__line--second {
      grid-area: bottom;
      justify-self: start;
    }

    .arrival__line--third {
      display: none;
    }

    .arrival__action {
      grid-area: button;
      justify-self: start;
    }

    .arrival__split {
      display: inline-block;
      min-height: 1.08em;
      position: relative;
      white-space: pre;
    }

    .arrival__action {
      display: flex;
      align-items: center;
      justify-content: center;
      opacity: 0;
      clip-path: inset(0 100% 0 0 round 999px);
      transform: translate3d(-14px, 4px, 0);
      animation: none;
    }

    .arrival__action.is-visible {
      animation:
        arrivalButtonReveal 1.35s
        var(--ease)
        var(--button-reveal-delay, 0ms)
        forwards;
    }

    /* Instant, non-animated visible state — used on language / layout changes
       after the first reveal so the button stays in step with the words. */
    .arrival__action.is-shown {
      opacity: 1;
      clip-path: inset(0 0 0 0 round 999px);
      transform: none;
      animation: none;
    }

    .enter-button {
      position: relative;
      appearance: none;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: auto;
      min-width: var(--arrival-cta-min-width);
      overflow: hidden;
      white-space: nowrap;
      border: 1px solid rgba(255, 255, 255, .18);
      border-radius: 999px;
      padding: 16px 24px;
      background: var(--sienna);
      color: #fff;
      box-shadow: 0 18px 40px -18px rgba(0, 0, 0, .62);
      cursor: pointer;
      font-family: var(--sans);
      font-size: var(--arrival-cta-font-size);
      font-weight: 500;
      letter-spacing: .14em;
      text-transform: uppercase;
      -webkit-backdrop-filter: blur(8px);
      backdrop-filter: blur(8px);
      transition:
        background 1s var(--ease),
        border-color 1s var(--ease),
        transform 1s var(--ease);
    }

    .enter-button::after {
      content: "→";
      display: inline-block;
      flex: 0 0 auto;
      margin-left: 18px;
      transition: transform 1s var(--ease);
    }

    .enter-button > span {
      display: inline-block;
      white-space: nowrap;
      flex: 0 0 auto;
    }

    .enter-button:hover {
      border-color: rgba(255, 255, 255, .34);
      background: var(--sienna-dark);
      transform: translateY(-1px);
    }

    .enter-button:hover::after {
      transform: translateX(4px);
    }

    html[lang="pt"] .enter-button {
      width: auto;
      min-width: var(--arrival-cta-width);
      padding: var(--arrival-cta-padding-y) var(--arrival-cta-padding-x);
    }
    @keyframes softFade {
      to {
        opacity: 1;
      }
    }

    @keyframes arrivalButtonReveal {
      0% {
        opacity: 0;
        clip-path: inset(0 100% 0 0 round 999px);
        transform: translate3d(-14px, 4px, 0);
        filter: blur(5px);
      }
      58% {
        opacity: .88;
        clip-path: inset(0 8% 0 0 round 999px);
        filter: blur(1px);
      }
      100% {
        opacity: 1;
        clip-path: inset(0 0 0 0 round 999px);
        transform: translate3d(0, 0, 0);
        filter: blur(0);
      }
    }





    .arrival.is-leaving {
      opacity: 0;
      pointer-events: none;
      visibility: hidden;
    }

    .arrival.is-leaving .arrival__content,
    .arrival.is-leaving .arrival__header {
      transform: scale(.992);
      transition: transform 2.2s var(--ease);
    }

    /*
      Phones + tablets:
      iOS/iPadOS and Android devices use the calm 4-row stack:
      line 1 / line 2 / line 3 / button.
      The coarse-pointer rule also catches larger tablets in landscape.
    */
    @media (max-width: 1024px), (pointer: coarse) and (max-width: 1366px) {
      .arrival__header {
        grid-template-columns: 1fr auto;
        padding: 20px;
      }

      .arrival__place {
        display: none;
      }

      .arrival__logo {
        width: 104px;
      }

      .arrival {
        -webkit-backdrop-filter: blur(14px) saturate(120%);
        backdrop-filter: blur(14px) saturate(120%);
      }

      .arrival__content {
        width: calc(100vw - 24px);
        padding-top: 68px;
      }

      .arrival__stack {
        width: 100%;
      }

      .arrival__typewriter {
        display: inline-grid;
        grid-template-columns: max-content;
        grid-template-areas:
          "top"
          "middle"
          "bottom"
          "button";
        justify-items: center;
        align-items: center;
        row-gap: clamp(4px, .75vh, 10px);
        column-gap: 0;
        padding-left: 12px;
        padding-right: 12px;
      }

      .arrival__line {
        font-size: clamp(28px, 6.2vw, 58px);
        letter-spacing: .01em;
        line-height: 1.02;
        justify-self: center;
        text-align: center;
      }

      .arrival__line--first {
        grid-area: top;
      }

      .arrival__line--second {
        grid-area: middle;
      }

      .arrival__line--third {
        display: block;
        grid-area: bottom;
      }

      .arrival__action {
        grid-area: button;
        justify-self: center;
        margin-top: clamp(20px, 3vh, 34px);
      }

      .enter-button {
        width: auto;
        min-width: auto;
        padding: 12px 15px;
        font-size: 8px;
        letter-spacing: .1em;
      }

      .enter-button::after {
        margin-left: 9px;
      }

      html[lang="pt"] .enter-button {
        width: auto;
        min-width: 160px;
        padding: 12px 15px;
        white-space: nowrap;
      }
    }

    @media (max-width: 480px) {
      .arrival__line {
        font-size: clamp(25px, 8.1vw, 39px);
      }

      .arrival__typewriter {
        padding-left: 8px;
        padding-right: 8px;
      }
    }

    @media (prefers-reduced-motion: reduce) {
      .arrival,
      .arrival *,
      .arrival *::before,
      .arrival *::after {
        animation-duration: .01ms !important;
        animation-delay: 0ms !important;
        transition-duration: .01ms !important;
      }

      .arrival__line {
        opacity: 1 !important;
        filter: none !important;
        transform: none !important;
      }

      .arrival__action {
        opacity: 1 !important;
        clip-path: none !important;
        transform: none !important;
      }
    }
