html{-webkit-text-size-adjust:100%}body{margin:0}[hidden]{display:none!important}
.lang a{display:grid;place-items:center;min-width:32px;height:32px;padding:0 4px;color:var(--muted);font:500 .66rem/1 var(--f-body);letter-spacing:.12em;text-decoration:none;transition:color .3s,background .3s}
.lang a:hover{color:var(--fg)}
.lang a[aria-current="page"]{background:var(--fg);color:var(--bg)}
.menu .lang a{min-width:48px;height:44px;font-size:.8rem}

/* Layout: jeweller's catalogue on the Riviera. Each house is a gem in its own setting —
   Perla in an arch (the brick vaults), Smeraldo & Acquamarina in an emerald cut. Dark-first. */
:root{
  color-scheme: dark;
  --bg:#0A1315; --bg-2:#0F1B1D; --bg-3:#132325; --fg:#EDE7DD; --muted:#9FAAA6; --line:#22333A;
  --pearl:#E4D6C1; --emerald:#4DAE89; --aqua:#7CCDC8;
  --pearl-hi:#FFFFFF; --pearl-mid:#E9DFD0; --pearl-lo:#AE9C82;
  --btn-bg:#EDE7DD; --btn-fg:#0A1315;
  --on-photo:#F8F4EC; --shade:rgba(4,9,10,.66);
  --grain:.05;
  --f-display:"Bodoni Moda","Bodoni 72","Didot",Georgia,serif;
  --f-body:"Jost","Futura","Avenir Next","Segoe UI",system-ui,sans-serif;
  --gutter:clamp(16px,4vw,48px);
  --cut-x:14%; --cut-y:10.5%; --cut-px:clamp(16px,2.6vw,38px);
  --ease:cubic-bezier(.2,.7,.2,1);
}
@media (prefers-color-scheme: light){
  :root:not([data-theme="dark"]){
    color-scheme: light;
    --bg:#ECEFEB; --bg-2:#F5F6F2; --bg-3:#E2E7E2; --fg:#112021; --muted:#55625E; --line:#C8D1CC;
    --pearl:#86704E; --emerald:#1B6A4D; --aqua:#21767A;
    --pearl-mid:#E6DCCB; --pearl-lo:#B6A386;
    --btn-bg:#112021; --btn-fg:#F5F6F2; --grain:.03;
  }
}
:root[data-theme="light"]{
  color-scheme: light;
  --bg:#ECEFEB; --bg-2:#F5F6F2; --bg-3:#E2E7E2; --fg:#112021; --muted:#55625E; --line:#C8D1CC;
  --pearl:#86704E; --emerald:#1B6A4D; --aqua:#21767A;
  --pearl-mid:#E6DCCB; --pearl-lo:#B6A386;
  --btn-bg:#112021; --btn-fg:#F5F6F2; --grain:.03;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:84px}
body{background:var(--bg);color:var(--fg);font-family:var(--f-body);font-weight:300;font-size:1.0625rem;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:200;opacity:var(--grain);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 .6 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}
img{max-width:100%;display:block}
a{color:inherit}
h1,h2,h3{font-family:var(--f-display);font-weight:400;line-height:1.04;margin:0;text-wrap:balance;letter-spacing:-.01em}
p{margin:0}
.wrap{max-width:1280px;margin-inline:auto;padding-inline:var(--gutter)}
.label{font-family:var(--f-body);font-weight:500;font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;color:var(--muted)}
.rule{display:flex;align-items:center;gap:14px}
.rule::before{content:"";width:32px;height:1px;background:currentColor;opacity:.6;flex:none}
:focus-visible{outline:1px solid var(--fg);outline-offset:4px}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6em;min-height:48px;padding:.75em 1.6em;border:1px solid var(--btn-bg);background:var(--btn-bg);color:var(--btn-fg);font:500 .76rem/1 var(--f-body);letter-spacing:.2em;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:background .35s,color .35s,border-color .35s}
.btn:hover{background:transparent;color:var(--fg)}
.btn.ghost{background:transparent;color:var(--fg);border-color:var(--line)}
.btn.ghost:hover{border-color:var(--fg)}
.btn svg{width:14px;height:14px;flex:none}

/* Header */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:40;background:color-mix(in srgb,var(--bg) 84%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid transparent;transition:border-color .4s}
.top.scrolled{border-bottom-color:var(--line)}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:70px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;min-width:0}
.brand .gems{display:flex;gap:2px;flex:none}
.brand .gems svg{width:18px;height:18px}
.brand .word{font-family:var(--f-display);font-style:italic;font-size:1.45rem;line-height:1;letter-spacing:.005em;white-space:nowrap}
.nav{display:flex;align-items:center;gap:26px}
.nav a.link{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;text-decoration:none;color:var(--muted);transition:color .3s;white-space:nowrap}
.nav a.link:hover{color:var(--fg)}
.nav .btn{min-height:40px;padding:.6em 1.2em}
.lang{display:flex;border:1px solid var(--line)}
.lang button{min-width:32px;height:32px;padding:0 4px;background:transparent;border:0;color:var(--muted);font:500 .66rem/1 var(--f-body);letter-spacing:.12em;cursor:pointer;transition:color .3s,background .3s}
.lang button:hover{color:var(--fg)}
.lang button[aria-pressed="true"]{background:var(--fg);color:var(--bg)}
.menu-btn{display:none;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:1px solid var(--line);background:transparent;color:var(--fg);cursor:pointer;transition:border-color .3s}
.menu-btn:hover{border-color:var(--fg)}
.langpick{position:relative;display:flex}
.langpick .lang .ln{display:none}
.lang-toggle{display:none;align-items:center;gap:6px;height:40px;padding:0 10px;border:1px solid var(--line);background:transparent;color:var(--fg);font:500 .72rem/1 var(--f-body);letter-spacing:.14em;cursor:pointer;transition:border-color .3s}
.lang-toggle:hover,.langpick.open .lang-toggle{border-color:var(--fg)}
.lang-toggle svg{width:16px;height:16px;flex:none}
.lang-toggle svg.chev{width:12px;height:12px;transition:transform .3s var(--ease)}
.langpick.open .lang-toggle svg.chev{transform:rotate(180deg)}
.menu-btn i{display:grid;gap:5px;width:22px}
.menu-btn i::before,.menu-btn i::after{content:"";height:1px;background:currentColor}
.progress{position:absolute;left:0;right:0;bottom:-1px;height:1px;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--pearl),var(--emerald),var(--aqua))}
@supports (animation-timeline: scroll()){ .progress{animation:grow linear both;animation-timeline:scroll(root)} @keyframes grow{to{transform:scaleX(1)}} }
@media (max-width:1360px){ .nav a.link.opt{display:none} }
@media (max-width:1080px){ .nav a.link{display:none} }
@media (max-width:760px){
  .menu-btn{display:inline-flex}
  .nav > .btn{display:none}
  .lang-toggle{display:inline-flex}
  .langpick .lang{display:none;position:absolute;right:0;top:calc(100% + 10px);z-index:50;flex-direction:column;min-width:190px;padding:6px;background:var(--bg-2);box-shadow:0 18px 40px rgba(0,0,0,.28)}
  .langpick.open .lang{display:flex}
  .langpick .lang button,.langpick .lang a{display:flex;justify-content:space-between;align-items:center;gap:16px;min-width:0;height:46px;padding:0 12px;font-size:.78rem}
  .langpick .lang .ln{display:inline;font-family:var(--f-display);font-size:1.05rem;letter-spacing:0;text-transform:none}
  .nav{gap:8px}
  .nav .btn{padding:.6em .9em;letter-spacing:.14em}
  .brand .word{font-size:1.25rem}
}
@media (max-width:380px){ .brand .gems{display:none} }

/* Mobile menu */
.menu{position:fixed;inset:0;z-index:60;background:var(--bg);display:grid;grid-template-rows:auto 1fr auto;gap:24px;padding:calc(env(safe-area-inset-top,0px) + 14px) var(--gutter) calc(env(safe-area-inset-bottom,0px) + 28px);overflow-y:auto}
.menu-head{display:flex;justify-content:space-between;align-items:center;min-height:56px}
.menu nav{display:grid;align-content:center}
.menu nav a{display:flex;justify-content:space-between;align-items:baseline;gap:16px;font-family:var(--f-display);font-style:italic;font-size:clamp(2rem,9vw,3rem);line-height:1.15;padding-block:12px;border-bottom:1px solid var(--line);text-decoration:none}
.menu nav a small{font:500 .66rem var(--f-body);font-style:normal;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.menu .lang{justify-self:start}
.menu .lang button{min-width:48px;height:44px;font-size:.8rem}
.menu-foot{display:grid;gap:18px}
@media (prefers-reduced-motion: no-preference){
  .menu:not([hidden]) nav a{animation:up .6s var(--ease) both}
  .menu:not([hidden]) nav a:nth-child(2){animation-delay:.05s}
  .menu:not([hidden]) nav a:nth-child(3){animation-delay:.1s}
  .menu:not([hidden]) nav a:nth-child(4){animation-delay:.15s}
  .menu:not([hidden]) nav a:nth-child(5){animation-delay:.2s}
  .menu:not([hidden]) nav a:nth-child(6){animation-delay:.25s}
}

/* Hero */
.hero{padding-block:clamp(36px,6vw,88px) clamp(40px,6vw,80px)}
.hero-grid{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.3fr);gap:clamp(32px,5vw,80px);align-items:center}
.hero-copy{display:grid;gap:26px;min-width:0}
.hero h1{display:grid;gap:22px;font-size:inherit}
.hero h1 .big{font-family:var(--f-display);font-size:clamp(3rem,7.2vw,6.6rem);line-height:.98;letter-spacing:-.015em}
.hero h1 .big em{display:block;font-style:italic}
.hero .lede{font-size:clamp(1.05rem,1.35vw,1.18rem);color:var(--muted);max-width:46ch}
.hero .ctas{display:flex;flex-wrap:wrap;gap:12px}
.cue{display:flex;align-items:center;gap:14px;color:var(--muted);text-decoration:none;width:max-content}
.cue i{position:relative;width:56px;height:1px;background:var(--line);overflow:hidden}
.cue i::after{content:"";position:absolute;inset:0;background:var(--fg);transform:translateX(-100%)}
@media (prefers-reduced-motion: no-preference){ .cue i::after{animation:cue 2.6s var(--ease) infinite} }
@keyframes cue{60%,100%{transform:translateX(100%)}}
.settings{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(12px,1.8vw,26px);align-items:start}
.setting{display:block;text-decoration:none;min-width:0}
.setting:nth-child(1){margin-top:14%}
.setting:nth-child(3){margin-top:28%}
.setting figure{margin:0;display:grid;gap:14px;transform:translate3d(calc(var(--mx,0) * var(--d,10) * 1px),calc(var(--my,0) * var(--d,10) * 1px),0);transition:transform .9s var(--ease)}
.setting:nth-child(1) figure{--d:8}.setting:nth-child(2) figure{--d:16}.setting:nth-child(3) figure{--d:24}
.setting figcaption{display:flex;align-items:center;gap:8px;font-family:var(--f-display);font-style:italic;font-size:clamp(1rem,1.5vw,1.3rem)}
.setting figcaption svg{width:16px;height:16px;flex:none}
.setting figcaption small{margin-left:auto;font:500 .62rem var(--f-body);font-style:normal;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.cycle{position:relative;aspect-ratio:3/4;max-width:100%;overflow:hidden;background:var(--bg-2)}
.cycle img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.1);transition:opacity 1.8s ease,transform 8s ease-out}
.cycle img.on{opacity:1;transform:scale(1)}
@media (prefers-reduced-motion: no-preference){
  .hero-copy > *{animation:up 1s var(--ease) both}
  .hero-copy > *:nth-child(2){animation-delay:.08s}
  .hero-copy > *:nth-child(3){animation-delay:.16s}
  .hero-copy > *:nth-child(4){animation-delay:.24s}
  .setting{animation:up 1.2s var(--ease) both}
  .setting:nth-child(1){animation-delay:.2s}.setting:nth-child(2){animation-delay:.32s}.setting:nth-child(3){animation-delay:.44s}
}
@keyframes up{from{opacity:0;transform:translateY(26px)}}
@media (max-width:860px){
  .hero-grid{grid-template-columns:1fr}
  .settings{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;margin-inline:calc(var(--gutter) * -1);padding-inline:var(--gutter);scroll-padding-inline:var(--gutter);scrollbar-width:none;gap:14px;padding-bottom:6px}
  .settings::-webkit-scrollbar{display:none}
  .setting{flex:0 0 64%;scroll-snap-align:start;margin-top:0!important}
}

/* Gem settings */
.arch{border-radius:999px 999px 3px 3px}
.cut{clip-path:polygon(var(--cut-x) 0,calc(100% - var(--cut-x)) 0,100% var(--cut-y),100% calc(100% - var(--cut-y)),calc(100% - var(--cut-x)) 100%,var(--cut-x) 100%,0 calc(100% - var(--cut-y)),0 var(--cut-y))}
.cut-px{clip-path:polygon(var(--cut-px) 0,calc(100% - var(--cut-px)) 0,100% var(--cut-px),100% calc(100% - var(--cut-px)),calc(100% - var(--cut-px)) 100%,var(--cut-px) 100%,0 calc(100% - var(--cut-px)),0 var(--cut-px))}
.mount{padding:5px;border:1px solid var(--line);transition:border-color .5s,background .5s}
.mount.arch{border-radius:999px 999px 6px 6px}
.mount.cut{border:0;padding:1px;background:var(--line)}
.mount.cut>.cycle,.mount.cut>.lead-img{clip-path:inherit;border:5px solid var(--bg)}
.setting:hover .mount.arch{border-color:var(--pearl)}
.setting:hover .mount.cut.emerald{background:var(--emerald)}
.setting:hover .mount.cut.aqua{background:var(--aqua)}

/* Marquee */
.marquee{border-block:1px solid var(--line);overflow:hidden;padding-block:20px}
.mq-track{display:flex;width:max-content}
.mq-item{display:flex;align-items:center;gap:26px;padding-inline:26px 0;font-family:var(--f-display);font-style:italic;font-size:clamp(1.25rem,2.2vw,1.9rem);white-space:nowrap;color:var(--muted)}
.mq-item svg{width:14px;height:14px;color:var(--aqua)}
@media (prefers-reduced-motion: no-preference){ .mq-track{animation:mq 60s linear infinite} }
@keyframes mq{to{transform:translateX(-50%)}}

/* Sea */
.sea{padding-block:clamp(64px,9vw,128px)}
.sea-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,5vw,80px);align-items:end;margin-bottom:clamp(28px,4vw,48px)}
.sea-head h2{font-size:clamp(2.4rem,5.4vw,4.8rem);font-style:italic}
.sea-head p{color:var(--muted);max-width:46ch}
.sea-frame{position:relative;overflow:hidden;height:clamp(320px,52vw,660px);background:var(--bg-2);display:block;width:100%;padding:0;border:0;cursor:zoom-in;color:var(--on-photo)}
.sea-frame img{position:absolute;left:0;top:-8%;width:100%;height:116%;object-fit:cover;object-position:center 55%;transition:transform 1.6s var(--ease)}
.sea-frame:hover img{transform:scale(1.03)}
@supports (animation-timeline: view()){ @media (prefers-reduced-motion: no-preference){
  .sea-frame img{animation:drift linear both;animation-timeline:view();animation-range:cover}
  @keyframes drift{from{translate:0 -6%}to{translate:0 6%}}
}}
.sea-frame .tag{position:absolute;left:clamp(16px,3vw,40px);bottom:clamp(16px,3vw,40px);display:flex;align-items:center;gap:10px;font-family:var(--f-display);font-style:italic;font-size:1.1rem;text-shadow:0 1px 18px rgba(0,0,0,.45)}
.sea-frame .tag svg{width:16px;height:16px}
.sea-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-bottom:1px solid var(--line)}
.sea-stat{display:flex;align-items:baseline;gap:18px;padding:26px 0;flex-wrap:wrap}
.sea-stat + .sea-stat{padding-left:clamp(16px,3vw,40px);border-left:1px solid var(--line)}
.sea-stat b{font-family:var(--f-display);font-weight:400;font-size:clamp(2.4rem,5vw,3.8rem);line-height:1;font-variant-numeric:lining-nums}
.sea-stat span{display:grid;gap:2px}
.sea-stat span i{font-family:var(--f-display);font-size:1.15rem}
.tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:14px}
.tile{position:relative;aspect-ratio:4/5;overflow:hidden;padding:0;border:0;background:var(--bg-2);cursor:zoom-in;color:var(--on-photo)}
.tile img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease)}
.tile:hover img{transform:scale(1.05)}
.tile .cap,.mosaic .cap{position:absolute;left:0;right:0;bottom:0;padding:40px 14px 12px;font-size:.84rem;text-align:left;background:linear-gradient(transparent,var(--shade));opacity:0;transition:opacity .4s}
.tile:hover .cap,.tile:focus-visible .cap,.mosaic button:hover .cap,.mosaic button:focus-visible .cap{opacity:1}
@media (hover:none){ .tile .cap,.mosaic .cap{opacity:1} }
@media (max-width:760px){ .sea-head{grid-template-columns:1fr} .tiles{grid-template-columns:repeat(2,minmax(0,1fr))} .sea-stats{grid-template-columns:1fr} .sea-stat + .sea-stat{padding-left:0;border-left:0;border-top:1px solid var(--line)} }

/* Catalogue index */
.index{padding-block:clamp(40px,6vw,80px) 0}
.index .label{margin-bottom:18px}
.index ol{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.index li{border-bottom:1px solid var(--line)}
.index a{display:grid;grid-template-columns:28px minmax(0,1.3fr) minmax(0,1fr) minmax(0,.6fr) 24px;gap:20px;align-items:center;padding-block:26px;text-decoration:none;transition:padding .5s var(--ease)}
.index a:hover{padding-inline-start:12px}
.index svg.gem{width:26px;height:26px}
.index .name{font-family:var(--f-display);font-style:italic;font-size:clamp(1.6rem,3.2vw,2.5rem);line-height:1.1}
.index .place,.index .guests{font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.index .arrow{width:18px;height:18px;color:var(--muted);transition:transform .4s,color .4s}
.index a:hover .arrow{transform:translateX(4px);color:var(--fg)}
.peek{position:fixed;left:0;top:0;z-index:30;width:200px;aspect-ratio:3/4;pointer-events:none;opacity:0;transition:opacity .35s;overflow:hidden;background:var(--bg-2)}
.peek.on{opacity:1}
.peek img{width:100%;height:100%;object-fit:cover}
@media (max-width:680px){
  .index a{grid-template-columns:26px minmax(0,1fr) 20px;gap:6px 14px}
  .index .place{grid-column:2;grid-row:2}
  .index .guests{grid-column:2;grid-row:3}
  .index .arrow{grid-column:3;grid-row:1/4}
}

/* House sections */
.house{padding-block:clamp(72px,10vw,140px)}
.house + .house{border-top:1px solid var(--line)}
.house-head{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(32px,6vw,96px);align-items:start}
.house.flip .house-head{grid-template-columns:minmax(0,6fr) minmax(0,5fr)}
.house.flip .house-lead{order:2}
.house-lead{position:sticky;top:100px;max-width:520px;width:100%;justify-self:center}
.lead-img{aspect-ratio:3/4;overflow:hidden}
.lead-img img{width:100%;height:100%;object-fit:cover}
@supports (animation-timeline: view()){ @media (prefers-reduced-motion: no-preference){
  .lead-img img{animation:settle linear both;animation-timeline:view();animation-range:entry 0% cover 50%}
  @keyframes settle{from{transform:scale(1.16)}to{transform:scale(1)}}
}}
.house-text{display:grid;gap:28px;min-width:0}
.house-title{display:grid;gap:14px}
.house h2{font-size:clamp(2.7rem,5.6vw,4.8rem);font-style:italic}
.gem-pearl{color:var(--pearl)} .gem-emerald{color:var(--emerald)} .gem-aqua{color:var(--aqua)}
.house h2 .amp{font-style:normal;color:var(--muted);font-size:.7em}
.house .lede{font-family:var(--f-display);font-size:clamp(1.25rem,2vw,1.6rem);line-height:1.35;max-width:32ch}
.house .body{color:var(--muted);max-width:60ch}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.fact{padding:18px 16px 18px 0;display:grid;gap:4px}
.fact b{font-family:var(--f-display);font-weight:400;font-size:2rem;line-height:1;font-variant-numeric:lining-nums tabular-nums}
.fact span{font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.amen{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px 28px;margin:0;padding:0;list-style:none}
.amen li{display:flex;gap:12px;align-items:baseline;font-size:.98rem;color:var(--fg)}
.amen li::before{content:"";flex:none;width:6px;height:6px;transform:rotate(45deg) translateY(-2px);border:1px solid var(--accent,currentColor);opacity:.8}
.amen.gem-pearl{--accent:var(--pearl)} .amen.gem-aqua{--accent:var(--aqua)}
.house-ctas{display:flex;flex-wrap:wrap;gap:12px}
.twins{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.twin{border:1px solid var(--line);padding:22px;display:grid;gap:14px;align-content:start;transition:border-color .4s}
.twin:hover{border-color:currentColor}
.twin .twin-name{display:flex;align-items:center;gap:10px;font-family:var(--f-display);font-style:italic;font-size:1.7rem;line-height:1}
.twin .twin-name svg{width:22px;height:22px}
.twin p{font-size:.92rem;color:var(--muted)}
.twin .btn{width:100%;color:var(--fg)}
@media (max-width:520px){.twins{grid-template-columns:1fr}}
@media (max-width:860px){
  .house-head,.house.flip .house-head{grid-template-columns:1fr}
  .house.flip .house-lead{order:0}
  .house-lead{position:static;max-width:420px}
}

/* Gallery strip */
.gallery{margin-top:clamp(56px,7vw,96px)}
.gallery-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.gallery-bar .arrows{display:flex;gap:8px;align-items:center}
.link-btn{background:none;border:0;padding:8px 4px;margin-right:8px;color:var(--fg);font:500 .72rem var(--f-body);letter-spacing:.2em;text-transform:uppercase;text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:1px;cursor:pointer}
.icon-btn{width:46px;height:46px;display:grid;place-items:center;border:1px solid var(--line);background:transparent;color:var(--fg);cursor:pointer;transition:border-color .3s}
.icon-btn:hover{border-color:var(--fg)}
.icon-btn svg{width:18px;height:18px}
.strip{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain}
.strip::-webkit-scrollbar{display:none}
.strip.dragging{scroll-snap-type:none;cursor:grabbing}
.strip.dragging .shot{pointer-events:none}
@media (hover:hover) and (pointer:fine){ .strip{cursor:grab} }
.shot{flex:none;scroll-snap-align:start;margin:0;padding:0;border:0;background:var(--bg-2);cursor:zoom-in;height:clamp(300px,48vw,540px);overflow:hidden;position:relative;color:var(--on-photo)}
.shot img{height:100%;width:auto;max-width:none;object-fit:cover;transition:transform 1.2s var(--ease);user-select:none;-webkit-user-drag:none}
.shot:hover img{transform:scale(1.035)}
.shot .cap{position:absolute;left:0;right:0;bottom:0;padding:40px 16px 14px;font-size:.85rem;text-align:left;background:linear-gradient(transparent,var(--shade));opacity:0;transition:opacity .4s}
.shot:hover .cap,.shot:focus-visible .cap{opacity:1}
@media (hover:none){.shot .cap{opacity:1}}
.g-track{position:relative;height:1px;background:var(--line);margin-top:20px;overflow:hidden}
.g-track i{position:absolute;top:0;height:100%;background:var(--fg);width:var(--w,25%);left:calc(var(--p,0) * (100% - var(--w,25%)));transition:left .15s linear}

/* Stays */
.stays{padding-block:clamp(72px,10vw,140px);border-top:1px solid var(--line)}
.stays-head{display:grid;gap:18px;max-width:720px;margin-bottom:clamp(36px,5vw,64px)}
.stays h2{font-size:clamp(2.3rem,4.8vw,3.8rem)}
.stays-head p{color:var(--muted)}
.stay-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border-top:1px solid var(--line)}
.stay{padding:28px 28px 32px 0;display:grid;gap:12px;align-content:start;min-width:0}
.stay + .stay{padding-left:28px;border-left:1px solid var(--line)}
.stay .dur{font-family:var(--f-display);font-size:clamp(2.2rem,3.6vw,3rem);line-height:1;font-style:italic}
.stay h3{font-family:var(--f-body);font-weight:500;font-size:.78rem;letter-spacing:.2em;text-transform:uppercase}
.stay p{color:var(--muted);font-size:.98rem}
@media (max-width:760px){ .stay-grid{grid-template-columns:1fr} .stay,.stay + .stay{padding:24px 0;border-left:0} .stay + .stay{border-top:1px solid var(--line)} }

/* Territory */
.territory{padding-block:clamp(72px,10vw,140px);background:var(--bg-2);border-block:1px solid var(--line)}
.territory .intro{display:grid;gap:18px;max-width:680px;margin-bottom:clamp(40px,6vw,72px)}
.territory h2{font-size:clamp(2.2rem,4.6vw,3.6rem)}
.territory .intro p{color:var(--muted)}
.places{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(28px,5vw,72px)}
.place{display:grid;gap:18px;align-content:start;min-width:0}
.place h3{font-size:clamp(1.8rem,3.2vw,2.5rem);font-style:italic}
.place ul{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}
.place li{padding:16px 0;border-bottom:1px solid var(--line);display:grid;gap:2px}
.place li b{font-weight:500;font-size:1rem}
.place li span{color:var(--muted);font-size:.95rem}
.mosaic{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,clamp(150px,18vw,250px));gap:14px;margin-top:clamp(44px,6vw,80px)}
.mosaic button{position:relative;padding:0;border:0;overflow:hidden;background:var(--bg-3);cursor:zoom-in;color:var(--on-photo);min-width:0}
.mosaic button:first-child{grid-column:span 2;grid-row:span 2}
.mosaic img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease)}
.mosaic button:hover img{transform:scale(1.05)}
.mosaic-label{margin-top:clamp(44px,6vw,80px);margin-bottom:-26px}
@media (max-width:760px){
  .places{grid-template-columns:1fr}
  .mosaic{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto}
  .mosaic button{aspect-ratio:1/1}
  .mosaic button:first-child{grid-column:span 2;grid-row:auto;aspect-ratio:3/2}
  .mosaic-label{margin-bottom:-30px}
}

/* Booking request */
.request{padding-block:clamp(72px,10vw,140px)}
.request .wrap{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,6fr);gap:clamp(32px,6vw,96px);align-items:start}
.request-copy{display:grid;gap:22px;min-width:0}
.request h2{font-size:clamp(2.4rem,5vw,4rem)}
.request-copy p{color:var(--muted);max-width:42ch}
.request-copy .wa-line a{color:var(--fg);text-decoration-thickness:1px;text-underline-offset:5px;font-family:var(--f-display);font-size:1.3rem}
.direct{display:grid;border-top:1px solid var(--line);margin-top:8px}
.direct a{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0;border-bottom:1px solid var(--line);text-decoration:none;transition:padding .4s var(--ease)}
.direct a:hover{padding-inline-start:8px}
.direct .dn{display:flex;align-items:center;gap:10px;font-family:var(--f-display);font-style:italic;font-size:1.3rem}
.direct .dn svg{width:18px;height:18px}
.direct .dl{font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
form{display:grid;gap:22px;border:1px solid var(--line);padding:clamp(22px,4vw,44px);background:var(--bg-2);min-width:0}
.houses{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;border:0;margin:0;padding:0;min-width:0}
.houses legend{margin-bottom:12px}
.houses label{position:relative;display:grid;justify-items:center;gap:8px;padding:16px 8px 14px;border:1px solid var(--line);cursor:pointer;text-align:center;transition:border-color .3s,background .3s}
.houses input{position:absolute;opacity:0;pointer-events:none}
.houses label svg{width:24px;height:24px}
.houses .hn{font-family:var(--f-display);font-style:italic;font-size:1.05rem;line-height:1.1}
.houses .hg{font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.houses label:has(input:checked){border-color:currentColor;background:var(--bg)}
.houses label:has(input:focus-visible){outline:1px solid var(--fg);outline-offset:3px}
.row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.field{display:grid;gap:8px;min-width:0}
.field label,.field .flabel{font-size:.7rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.field input,.field textarea{width:100%;font:400 1rem var(--f-body);color:var(--fg);background:transparent;border:0;border-bottom:1px solid var(--line);padding:10px 0;border-radius:0;transition:border-color .3s}
.field input:focus,.field textarea:focus{outline:none;border-bottom-color:var(--fg)}
.field textarea{resize:vertical;min-height:84px}
.stepper{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:4px 0}
.stepper output{font-family:var(--f-display);font-size:1.6rem;font-variant-numeric:tabular-nums}
.stepper button{width:40px;height:40px;border:1px solid var(--line);background:transparent;color:var(--fg);font-size:1.2rem;cursor:pointer}
.stepper button:disabled{opacity:.3;cursor:not-allowed}
.summary{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 16px;padding-top:18px;border-top:1px solid var(--line)}
.summary .sum-main{font-family:var(--f-display);font-size:1.35rem}
.summary .sum-note{font-size:.85rem;color:var(--muted)}
.form-ctas{display:flex;flex-wrap:wrap;gap:12px}
.form-ctas .btn{flex:1 1 200px}
.hint{font-size:.82rem;color:var(--muted);white-space:pre-line}
@media (max-width:860px){.request .wrap{grid-template-columns:1fr}}
@media (max-width:440px){.row{grid-template-columns:1fr}.houses .hg{letter-spacing:.08em}}

/* FAQ */
.faq{padding-block:0 clamp(72px,10vw,140px)}
.faq .wrap{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,6fr);gap:clamp(32px,6vw,96px)}
.faq h2{font-size:clamp(2rem,4vw,3rem)}
.faq-list{border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px 0;cursor:pointer;list-style:none;font-family:var(--f-display);font-size:clamp(1.15rem,1.8vw,1.4rem)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";flex:none;width:10px;height:10px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:rotate(45deg) translateY(-3px);transition:transform .4s var(--ease)}
.faq details[open] summary::after{transform:rotate(-135deg) translateY(-3px)}
.faq details p{padding:0 0 22px;color:var(--muted);max-width:60ch}
@media (max-width:860px){.faq .wrap{grid-template-columns:1fr}}

/* Footer */
footer{border-top:1px solid var(--line);padding-block:56px calc(56px + env(safe-area-inset-bottom,0px))}
footer .wrap{display:grid;grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr));gap:28px}
footer .fb{display:grid;gap:10px;align-content:start}
footer small{font-size:.82rem;color:var(--muted);line-height:1.65}
footer .fh{font-family:var(--f-display);font-style:italic;font-size:1.15rem;display:flex;align-items:center;gap:8px}
footer .fh svg{width:16px;height:16px}
.code{font-variant-numeric:tabular-nums;letter-spacing:.02em}
@media (max-width:760px){footer .wrap{grid-template-columns:1fr 1fr}footer .fb:first-child{grid-column:1/-1}footer{padding-bottom:calc(120px + env(safe-area-inset-bottom,0px))}}

/* Dock */
.dock{position:fixed;left:0;right:0;bottom:0;z-index:45;display:flex;gap:10px;padding:10px 12px calc(10px + env(safe-area-inset-bottom,0px));background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--line);transform:translateY(110%);transition:transform .6s var(--ease)}
.dock.show{transform:none}
.dock .btn{flex:1;min-height:48px}
.dock .wa{flex:0 0 auto;width:52px;padding:0}
.dock .wa svg{width:20px;height:20px}
@media (min-width:761px){
  .dock{left:auto;right:24px;bottom:calc(24px + env(safe-area-inset-bottom,0px));padding:0;background:none;border:0;backdrop-filter:none;-webkit-backdrop-filter:none}
  .dock .req{display:none}
  .dock .wa{width:58px;height:58px;border-radius:50%}
}

/* Lightbox */
.lb{position:fixed;inset:0;z-index:100;background:rgba(5,9,10,.97);color:#F8F4EC;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;padding:calc(env(safe-area-inset-top,0px) + 12px) 12px calc(env(safe-area-inset-bottom,0px) + 14px)}
.lb[hidden]{display:none}
.lb-top{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:4px 4px 12px}
.lb-count{font-size:.75rem;letter-spacing:.22em;font-variant-numeric:tabular-nums;opacity:.8}
.lb-stage{position:relative;display:grid;place-items:center;min-height:0;touch-action:pan-y}
.lb-stage img{max-height:100%;max-width:100%;object-fit:contain;user-select:none;-webkit-user-drag:none;transition:opacity .4s}
.lb .icon-btn{color:#F8F4EC;border-color:rgba(248,244,236,.25);background:rgba(5,9,10,.4)}
.lb .icon-btn:hover{border-color:#F8F4EC}
.lb-prev,.lb-next{position:absolute;top:50%;transform:translateY(-50%)}
.lb-prev{left:4px}.lb-next{right:4px}
.lb-cap{text-align:center;padding-top:12px;font-family:var(--f-display);font-style:italic;font-size:1.1rem;min-height:2.4em}
.lb-thumbs{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding:6px 2px 0;justify-content:flex-start}
.lb-thumbs::-webkit-scrollbar{display:none}
.lb-thumbs button{flex:none;width:46px;height:60px;padding:0;border:1px solid transparent;background:none;opacity:.45;cursor:pointer;transition:opacity .3s,border-color .3s}
.lb-thumbs button[aria-current="true"]{opacity:1;border-color:#F8F4EC}
.lb-thumbs img{width:100%;height:100%;object-fit:cover}
@media (min-width:700px){.lb-thumbs{justify-content:center}}
@media (max-width:600px){.lb-prev,.lb-next{display:none}}

/* Motion */
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion: no-preference){
    .rise{animation:rise linear both;animation-timeline:view();animation-range:entry 0% entry 45%}
    @keyframes rise{from{opacity:.4;transform:translateY(32px)}to{opacity:1;transform:none}}
  }
}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{transition-duration:.01ms!important;animation:none!important;scroll-behavior:auto!important}
  .cycle img{transform:none!important}
}

/* ---- v2: sub-pages, cards, guides ---- */
.crumbs{padding-top:22px}
.crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 10px;font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.crumbs li+li::before{content:"/";margin-right:10px;opacity:.5}
.crumbs a{text-decoration:none;transition:color .3s}.crumbs a:hover{color:var(--fg)}
.crumbs [aria-current]{color:var(--fg)}
.ph{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(32px,6vw,96px);align-items:center;padding-block:clamp(28px,5vw,64px) clamp(56px,8vw,112px)}
.ph-text{display:grid;gap:26px;min-width:0}
.ph h1{display:grid;gap:16px;font-size:inherit}
.ph-name{font-family:var(--f-display);font-size:clamp(3rem,7vw,6rem);font-style:italic;line-height:.98}
.ph-sub{font-family:var(--f-body);font-weight:400;font-size:clamp(1rem,1.4vw,1.15rem);letter-spacing:.02em;line-height:1.4}
.ph .lede{font-family:var(--f-display);font-size:clamp(1.25rem,2vw,1.6rem);line-height:1.35;max-width:34ch}
.ph-media{max-width:480px;width:100%;justify-self:center}
@media (max-width:860px){.ph{grid-template-columns:1fr}.ph-media{max-width:380px;justify-self:start}}
.pgal{padding-block:0 clamp(56px,8vw,112px)}
.pgal .gallery-bar{margin-bottom:18px}
.pgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px 14px}
.pgrid figure{margin:0;display:grid;gap:8px;align-content:start;min-width:0}
.pshot{display:block;width:100%;aspect-ratio:4/5;padding:0;border:0;background:var(--bg-2);cursor:zoom-in;overflow:hidden;color:inherit}
.pshot img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
@media (max-width:1000px){.pgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:640px){.pgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 10px}.pgrid figcaption{font-size:.74rem}}
.pshot:hover img{transform:scale(1.03)}
.pgrid figcaption{font-size:.82rem;color:var(--muted);line-height:1.45}
.pbody{padding-block:clamp(56px,8vw,112px);border-top:1px solid var(--line)}
.pcols{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:clamp(32px,6vw,96px);align-items:start}
.prose{display:grid;gap:clamp(36px,5vw,56px);min-width:0}
.prose section{display:grid;gap:16px}
.prose h2{font-size:clamp(1.8rem,3.4vw,2.6rem);font-style:italic}
.prose p,.prose li{color:var(--muted);max-width:64ch}
.prose p+p{margin-top:14px}
.prose a{color:var(--fg);text-decoration-thickness:1px;text-underline-offset:5px}
.prose ul{margin:0;padding:0;list-style:none;display:grid;gap:10px}
.prose ul li{display:flex;gap:12px;align-items:baseline}
.prose ul li::before{content:"";flex:none;width:6px;height:6px;transform:rotate(45deg) translateY(-2px);border:1px solid var(--aqua);opacity:.8}
.paside{position:sticky;top:100px;display:grid;gap:18px;min-width:0}
.box{border:1px solid var(--line);padding:clamp(20px,2.4vw,28px);display:grid;gap:16px;align-content:start}
.box .amen{grid-template-columns:1fr}
.codes-list{display:grid;gap:4px;font-size:.85rem;color:var(--muted)}
.box .btn{width:100%;line-height:1.3;text-align:center}
@media (max-width:860px){.pcols{grid-template-columns:1fr}.paside{position:static}}
.cards-sec{padding-block:clamp(64px,9vw,120px);border-top:1px solid var(--line)}
.cards-head{display:grid;gap:16px;margin-bottom:clamp(28px,4vw,48px);max-width:720px}
.cards-head h2{font-size:clamp(2.2rem,4.6vw,3.6rem)}
.cards-head p{color:var(--muted)}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:clamp(18px,2.4vw,28px)}
.card{display:grid;gap:12px;text-decoration:none;align-content:start;min-width:0}
.card .cimg{aspect-ratio:4/3;overflow:hidden;background:var(--bg-2)}
.card .cimg img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.card:hover .cimg img{transform:scale(1.04)}
.card .cm{font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.card .ct{font-family:var(--f-display);font-style:italic;font-size:clamp(1.35rem,2vw,1.6rem);line-height:1.15;display:flex;align-items:center;gap:10px}
.card .ct svg{width:18px;height:18px;flex:none}
.card p{color:var(--muted);font-size:.95rem}
.card .more{display:flex;align-items:center;gap:8px;font-size:.7rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase}
.card .more svg{width:16px;height:16px;transition:transform .4s var(--ease)}
.card:hover .more svg{transform:translateX(4px)}
.gh{padding-block:clamp(28px,5vw,64px) clamp(28px,4vw,48px)}
.gh > div{display:grid;gap:22px;max-width:900px}
.gh h1{font-size:clamp(2.7rem,6.4vw,5.6rem);font-style:italic;line-height:1}
.gh .lede{font-family:var(--f-display);font-size:clamp(1.2rem,2vw,1.55rem);line-height:1.4;max-width:42ch}
.gh-img{margin-block:0 clamp(56px,8vw,96px)}
.gh-img .frame{height:clamp(260px,46vw,600px);overflow:hidden;background:var(--bg-2)}
.gh-img img{width:100%;height:100%;object-fit:cover}
.gh-img figcaption{margin-top:10px;font-size:.82rem;color:var(--muted)}
.gbody{padding-block:0 clamp(56px,8vw,112px)}
.stay-mini{display:grid;grid-template-columns:64px minmax(0,1fr);gap:14px;align-items:center;text-decoration:none;padding:12px 0;border-bottom:1px solid var(--line)}
.stay-mini:first-of-type{border-top:1px solid var(--line)}
.stay-mini img{width:64px;height:64px;object-fit:cover}
.stay-mini b{font-family:var(--f-display);font-style:italic;font-weight:400;font-size:1.25rem;display:block;line-height:1.2}
.stay-mini small{display:block;line-height:1.5;margin-top:4px;font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.tlink{display:inline-flex;align-items:center;gap:8px;color:var(--fg);font-size:.72rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:1px}
.twin-more{color:var(--fg);font-size:.7rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;text-underline-offset:5px;text-decoration-thickness:1px}
.fnav{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:28px;padding-top:28px;margin-top:8px;border-top:1px solid var(--line)}
.fnav ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.fnav a{font-size:.88rem;color:var(--muted);text-decoration:none;transition:color .3s}.fnav a:hover{color:var(--fg)}
.fnav .label{margin-bottom:6px}
