/* =========================================================
   1001 Luxury — 1:1 Nachbau-Demo  ·  style.css
   Tokens aus dem entschlüsselten Original-CSS
   ========================================================= */
:root{
  --white:#ffffff;
  --black:#0f0d12;
  --cream:#fdf8f5;
  --accent:#0e6b6b;
  --noches:#0c5d5a;
  --luma:#083f3d;
  --aya:#0f7d74;
  --blue:#0a4d6e;
  --terra:#b8893f;
  --blush:#f5ead6;
  --font-sans:"Hanken Grotesk",Helvetica,Arial,sans-serif;
  --font-serif:"Taviraj",Georgia,serif;
  --gap:.75rem;
  --pad:clamp(1rem,3.2vw,2.6rem);
  --maxw:1440px;
  --ease:cubic-bezier(.65,.05,.36,1);
}
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}
body{
  font-family:var(--font-sans);
  background:var(--cream);
  color:var(--black);
  overflow-x:clip;
  line-height:1.25;
}
body.lock{overflow:hidden;height:100vh}
img{display:block;width:100%;height:100%;object-fit:cover}
a{color:inherit;text-decoration:none}
em{font-style:italic;font-family:var(--font-serif);font-weight:400}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- universal media wrapper (scrubbed parallax) ---------- */
.media{position:relative;overflow:hidden}
/* Bild ragt vertikal über den Rahmen hinaus → kann driften OHNE Zoom (object-fit cover, scale 1) */
.media img{position:absolute;left:0;top:-17.5%;width:100%;height:135%;object-fit:cover;will-change:transform}
.media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}

/* ---------- link with animated underline ---------- */
.link-underline{
  font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;font-weight:600;
  position:relative;display:inline-block;padding-bottom:.35em;
}
.link-underline::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.link-underline:hover::after{transform:scaleX(1)}

/* ================= HEADER ================= */
.header{
  position:fixed;inset:0 0 auto 0;z-index:60;
  display:flex;align-items:center;justify-content:space-between;
  padding:1.1rem var(--pad);mix-blend-mode:difference;color:#fff;
  pointer-events:none;
}
.header *{pointer-events:auto}
.header__brand{font-family:var(--font-serif);font-size:1.15rem;letter-spacing:.02em;font-weight:500;line-height:1}
.header__brand span{display:block;font-size:.6rem;letter-spacing:.34em;text-transform:uppercase;font-family:var(--font-sans);opacity:.85;margin-top:.15em}
.header__menu-btn{width:46px;height:34px;background:none;border:0;cursor:pointer;position:relative}
.header__menu-btn span{position:absolute;left:6px;right:6px;height:1.5px;background:#fff;transition:transform .4s var(--ease),opacity .3s}
.header__menu-btn span:nth-child(1){top:11px}
.header__menu-btn span:nth-child(2){top:17px}
.header__menu-btn span:nth-child(3){top:23px}

/* ================= INTRO / PRELOADER ================= */
.intro{
  position:fixed;inset:0;z-index:90;background:var(--cream);
  display:grid;place-items:center;
}
.intro__image{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:min(42vw,520px);height:min(74vh,760px);
}
.intro__text{
  position:relative;z-index:2;font-family:var(--font-serif);font-style:italic;
  font-size:clamp(1.6rem,4vw,3rem);line-height:1.1;text-align:center;color:var(--black);
}
.intro__text span{display:block;overflow:hidden}
.intro--done{display:none}

/* ================= HERO ================= */
.hero{min-height:100svh;padding:var(--pad);padding-top:clamp(5rem,11vh,9rem);position:relative}
.hero__grid{
  max-width:var(--maxw);margin:0 auto;height:100%;min-height:inherit;
  display:grid;grid-template-columns:repeat(12,1fr);grid-template-rows:auto 1fr auto;
  gap:var(--gap);align-items:start;
}
.hero__word{align-self:start}
.hero__word .wm{display:block;font-family:var(--font-sans);font-weight:900;line-height:.8;letter-spacing:-.02em;text-transform:uppercase;color:var(--black);transform-origin:0 100%;font-size:clamp(2.5rem,8vw,8rem)}
.hero__word--first{grid-column:1/5;grid-row:1}
.hero__word--end{grid-column:1/13;grid-row:3;align-self:end}
.hero__word--end .wm{font-size:clamp(3rem,15vw,13rem)}
.hero__media{
  grid-column:5/13;grid-row:1/3;width:100%;height:clamp(340px,58vh,640px);align-self:start;
}
.hero__flower{position:absolute;width:clamp(46px,5vw,78px);height:auto;object-fit:contain;filter:invert(0)}
.hero__flower--tr{top:clamp(5rem,11vh,9rem);right:var(--pad)}

/* ================= EDITORIAL INTRO ================= */
.editorial{
  max-width:var(--maxw);margin:clamp(4rem,12vh,11rem) auto;padding:0 var(--pad);
  display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gap) var(--gap);align-items:start;position:relative;
}
.editorial__media{height:clamp(220px,32vw,460px)}
.editorial__media--palm{grid-column:1/5;grid-row:1}
.editorial__media--beach{grid-column:1/6;grid-row:2;margin-top:1rem;height:clamp(200px,26vw,380px)}
.editorial__flower{grid-column:9/11;grid-row:1;width:clamp(50px,6vw,92px);height:auto;object-fit:contain;justify-self:center}
.editorial__text{
  grid-column:6/13;grid-row:2;align-self:center;
  font-size:clamp(1.4rem,2.9vw,2.6rem);line-height:1.28;font-weight:500;text-indent:3em;
}

/* ================= VILLAS (pinned) ================= */
.villas{position:relative;z-index:1}
.villa{
  height:100vh;min-height:100svh;color:#fff;padding:clamp(4.5rem,9vh,7rem) var(--pad) clamp(2rem,5vh,3.5rem);
  display:grid;grid-template-columns:repeat(12,1fr);grid-template-rows:auto auto 1fr auto;gap:.6rem var(--gap);
  position:sticky;top:0;overflow:hidden;
}
.villa__dim{position:absolute;inset:0;background:#0a0712;opacity:0;pointer-events:none;z-index:6}
.villa--noches{background:var(--noches)}
.villa--luma{background:var(--luma)}
.villa--aya{background:var(--aya)}
/* text on the LEFT, photo on the RIGHT — no overlap, fully legible */
.villa__label{
  grid-column:1/8;grid-row:1;align-self:start;
  font-family:var(--font-serif);font-style:italic;font-weight:300;
  font-size:clamp(2rem,5vw,5rem);line-height:1;opacity:.9;
}
.villa__thumb{
  grid-column:8/13;grid-row:1/5;align-self:center;
  width:100%;height:min(70vh,620px);
}
.villa__excerpt{
  grid-column:1/7;grid-row:2;align-self:start;margin-top:1.2rem;
  text-align:left;display:flex;flex-direction:column;gap:1.2rem;align-items:flex-start;
}
.villa__excerpt p{font-size:1rem;max-width:34ch;opacity:.92;line-height:1.5}
.villa__title{
  grid-column:1/8;grid-row:4;align-self:end;
  font-weight:800;font-size:clamp(3.2rem,11vw,10.5rem);line-height:.86;letter-spacing:-.02em;
  text-transform:none;
}

/* ================= EXPERIENCES ================= */
.experiences{position:relative}
.experiences__intro{
  max-width:var(--maxw);margin:0 auto;padding:clamp(3rem,9vh,8rem) var(--pad);
  display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gap);align-items:start;
}
.experiences__cove{grid-column:1/9;grid-row:1;height:clamp(260px,40vw,560px)}
.experiences__title{
  grid-column:1/9;grid-row:2;margin-top:1.4rem;
  font-weight:800;text-transform:uppercase;font-size:clamp(2rem,5.4vw,4.6rem);line-height:1.02;letter-spacing:-.01em;
}
.experiences__toucan{grid-column:10/13;grid-row:1;height:clamp(160px,16vw,230px);align-self:end}
.experiences__cta{grid-column:9/13;grid-row:2;justify-self:end;align-self:end}
.experiences__activities{
  background:var(--blue);color:#fff;padding:clamp(3rem,8vh,7rem) var(--pad);
  display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:minmax(120px,auto);gap:var(--gap);
  max-width:none;
}
.act{position:relative}
.act--surf{grid-column:2/7;grid-row:1/3;height:clamp(280px,38vw,540px)}
.act--horse{grid-column:8/12;grid-row:2/4;height:clamp(220px,26vw,380px)}
.act--volcano{grid-column:1/8;grid-row:4/6;height:clamp(260px,34vw,520px);margin-top:2rem}
.act--volcano .media{height:100%}
.act--bird{grid-column:9/12;grid-row:5;height:clamp(150px,16vw,230px)}
.act__frame{position:absolute;inset:-14px;width:calc(100% + 28px);height:calc(100% + 28px);pointer-events:none}
.act__frame rect{fill:none;stroke:#fff;stroke-width:1.4;vector-effect:non-scaling-stroke;stroke-dasharray:100;stroke-dashoffset:100}

/* ================= SERVICES ================= */
.services{
  max-width:var(--maxw);margin:clamp(4rem,12vh,11rem) auto;padding:0 var(--pad);
  display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gap) var(--gap);align-items:start;position:relative;
}
.services__media--a{grid-column:7/13;grid-row:1/3;height:clamp(320px,40vw,640px)}
.services__media--b{grid-column:1/5;grid-row:2;height:clamp(220px,26vw,380px);margin-top:6vh}
.services__title{grid-column:1/8;grid-row:3;margin-top:clamp(3rem,10vh,8rem);font-family:var(--font-serif);font-weight:400;font-size:clamp(2rem,4.6vw,4rem);line-height:1.12}
.services__text{grid-column:8/13;grid-row:4;align-self:start;margin-top:1.5rem;font-size:clamp(1.05rem,1.4vw,1.35rem);max-width:36ch;line-height:1.5;color:#5b5560}
.services__media--c{grid-column:1/6;grid-row:4/6;height:clamp(340px,42vw,640px);margin-top:3vh}
.services__cta{grid-column:8/13;grid-row:5;align-self:start;margin-top:2rem}

/* ================= CTA ================= */
.cta{min-height:78svh;display:grid;place-items:center;text-align:center;padding:var(--pad);position:relative}
.cta__flower{position:absolute;top:14%;width:clamp(60px,7vw,110px);height:auto;object-fit:contain}
.cta__text{font-family:var(--font-serif);font-weight:400;font-size:clamp(2.6rem,9vw,8.5rem);line-height:.98}
.cta__button{margin-top:2.4rem;background:var(--accent);color:#fff;border-radius:999px;padding:1.1em 2.6em;font-weight:700;font-size:.85rem;letter-spacing:.14em;text-transform:uppercase;transition:transform .4s var(--ease),background .4s}
.cta__button:hover{transform:translateY(-3px);background:#5a26e0}

/* ================= FOOTER ================= */
.footer{background:var(--black);color:#fff;padding:clamp(3rem,7vh,6rem) var(--pad) 2rem;display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gap);align-items:end}
.footer__brand{grid-column:1/6;height:clamp(220px,24vw,360px)}
.footer__nav{grid-column:8/13;display:flex;flex-direction:column;gap:.55rem;font-size:1.6rem;font-weight:300}
.footer__nav a{opacity:.7;transition:opacity .3s,padding-left .3s var(--ease)}
.footer__nav a:hover{opacity:1;padding-left:.5rem}
.footer__nav .is-strong{font-weight:700;opacity:1}
.footer__meta{grid-column:1/13;margin-top:3rem;display:flex;justify-content:space-between;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;opacity:.55;border-top:1px solid rgba(255,255,255,.18);padding-top:1.4rem;flex-wrap:wrap;gap:.6rem}

/* ================= FULLSCREEN MENU ================= */
.menu{
  position:fixed;inset:0;z-index:80;background:var(--white);
  display:grid;grid-template-columns:1fr 1fr;align-items:stretch;
  clip-path:polygon(0 0,100% 0,100% 0,0 0);pointer-events:none;
}
.menu.open{pointer-events:auto}
.menu__close{position:absolute;top:1rem;right:var(--pad);z-index:3;background:none;border:0;font-size:2.4rem;line-height:1;cursor:pointer;color:var(--black);font-weight:200}
.menu__media{position:relative;overflow:hidden}
.menu__media img:first-child{width:100%;height:100%;object-fit:cover}
.menu__doodle{position:absolute;bottom:6%;left:8%;width:clamp(60px,8vw,120px);height:auto;object-fit:contain}
.menu__nav{display:flex;flex-direction:column;justify-content:center;align-items:flex-end;gap:.15rem;padding:var(--pad) clamp(2rem,6vw,6rem)}
.menu__nav a{font-size:clamp(1.6rem,3vw,2.6rem);font-weight:300;line-height:1.2;transition:color .3s,transform .4s var(--ease);transform:translateY(110%);opacity:0}
.menu.open .menu__nav a{transform:translateY(0);opacity:1}
.menu__nav a:hover{color:var(--accent)}
.menu__nav a.is-active{color:var(--accent)}
.menu__nav .menu__book{font-weight:800;color:var(--black);margin-top:.4rem}
.menu__lang{display:flex;gap:1.4rem;margin-top:2.4rem}
.menu__lang button{background:none;border:0;cursor:pointer;font-family:var(--font-sans);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;opacity:.5;transition:opacity .3s}
.menu__lang button.is-active,.menu__lang button:hover{opacity:1}

/* ================= CONTACT "DOOR" DIALOG ================= */
.door{width:24.75rem;max-width:90vw;border:none;background:transparent;position:fixed;top:0;right:1.5rem;left:auto;margin:0;padding:0;z-index:400;overflow:visible}
.door::backdrop{background:rgba(15,13,18,.45)}
.door__container{display:flex;flex-direction:column;height:auto}
.door__handle{width:100%;line-height:0}
.door__handle svg{width:100%;height:auto;display:block}
.door__handle path{fill:var(--blush)}
.door__content{background:var(--blush);padding:2.4rem 2.25rem 2.6rem;display:flex;flex-direction:column;gap:1rem;color:var(--terra)}
.door__hi{font-family:var(--font-serif);font-style:italic;font-size:1.5rem;color:#7a4e3c;margin-bottom:.4rem}
.door__content a{display:flex;justify-content:center;align-items:center;text-align:center;border:1px dashed var(--terra);padding:1em;font-size:.8rem;letter-spacing:.06em;color:#7a4e3c;transition:background .3s}
.door__content a:hover{background:rgba(175,122,100,.12)}
.door__close{margin-top:.6rem;background:none;border:0;cursor:pointer;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:#7a4e3c;align-self:center}

/* ================= RESPONSIVE ================= */
@media (max-width:1023px){
  .hero__grid{grid-template-rows:auto auto auto}
  .hero__word--first{grid-column:1/8}
  .hero__media{grid-column:1/13;grid-row:2;height:46vh}
  .hero__word--end{grid-column:1/13;grid-row:3}
  .editorial{gap:1.4rem}
  .editorial__media--palm{grid-column:1/8}
  .editorial__media--beach{grid-column:6/13;grid-row:1;margin-top:0}
  .editorial__text{grid-column:1/13;grid-row:2;text-indent:2em}
  /* villas: no pin, simple stack */
  .villa{position:static;height:auto;min-height:auto;padding-block:clamp(3rem,8vh,5rem);grid-template-rows:auto auto auto}
  .villa__label{grid-column:1/7;font-size:clamp(2.4rem,10vw,5rem)}
  .villa__thumb{grid-column:7/13;grid-row:1/2;width:100%;height:46vh}
  .villa__excerpt{grid-column:1/13;grid-row:2;text-align:left;align-items:flex-start;margin-top:1.4rem}
  .villa__excerpt p{max-width:none}
  .villa__title{grid-row:3;font-size:clamp(3rem,22vw,7rem);margin-top:1rem}
  .experiences__cove,.experiences__title{grid-column:1/13}
  .experiences__toucan{grid-column:8/13;grid-row:3;height:160px}
  .experiences__cta{grid-column:1/13;justify-self:start;margin-top:1rem}
  .act--surf{grid-column:1/9;grid-row:1/3}
  .act--horse{grid-column:7/13;grid-row:3/5}
  .act--volcano{grid-column:1/10;grid-row:5/7}
  .act--bird{grid-column:8/13;grid-row:7}
  .services>*{grid-column:1/13 !important;grid-row:auto !important;margin-top:1.2rem !important}
  .services__media--a,.services__media--c{height:50vh}
  .footer__brand{grid-column:1/13}
  .footer__nav{grid-column:1/13;margin-top:2rem;font-size:1.3rem}
  .menu{grid-template-columns:1fr}
  .menu__media{display:none}
  .menu__nav{align-items:flex-start}
}

/* Demo bewusst ohne reduced-motion-Abschaltung — spiegelt das Original. */
