/* ==========================================================================
   SOLiSRA — design tokens
   Palette after Valencian lustreware (Manises): tin-glaze white, cobalt,
   gold lustre, manganese for text, tosca stone for quiet surfaces.
   ========================================================================== */
:root{
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
  --tin:#F0EFEA; --stone:#E4DDD0; --card:#F8F7F3;
  --ink:#2B2326; --ink-2:#544A4C; --ink-3:#6E6365;
  --line:rgba(43,35,38,.14); --line-2:rgba(43,35,38,.28);
  --cobalt:#233F7C; --cobalt-2:#1A3166; --on-cobalt:#F6F4EE;
  --lustre:#A87E3C; --lustre-ink:#85612A;
  --sea:#3F7570; --dune:#96663C;
  --wa:#1F6E4A; --wa-2:#185A3C; --on-wa:#FFFFFF;
  --field:#233F7C; --on-field:#F3F1EB; --field-2:rgba(243,241,235,.74); --field-line:rgba(243,241,235,.2);
  --ph:#8A4A2C; --ph-bg:rgba(168,126,60,.15);
  --err:#A3352A;
  --accent:var(--cobalt);
  --display:'Marcellus','Optima','Candara','Segoe UI',Georgia,serif;
  --text:'Jost','Avenir Next','Futura','Segoe UI','Helvetica Neue',Arial,sans-serif;
  --wrap:1320px; --gut:clamp(1.25rem,4.5vw,3.5rem); --hh:74px; --pbar:60px;
  --r:4px; --mbar:0px;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --tin:#111A2C; --stone:#172238; --card:#1B2740;
    --ink:#EEEAE2; --ink-2:#CBC5BA; --ink-3:#A7A196;
    --line:rgba(238,234,226,.13); --line-2:rgba(238,234,226,.28);
    --cobalt:#89A5DD; --cobalt-2:#A3BAE6; --on-cobalt:#0E1626;
    --lustre:#D2A866; --lustre-ink:#DDB97E;
    --sea:#86BDB6; --dune:#D9A77D;
    --wa:#25D366; --wa-2:#1EBE5A; --on-wa:#111B21;
    --field:#0B1222; --on-field:#EEEAE2; --field-2:rgba(238,234,226,.72); --field-line:rgba(238,234,226,.16);
    --ph:#F0B98F; --ph-bg:rgba(210,168,102,.16);
    --err:#F2A193;
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --tin:#111A2C; --stone:#172238; --card:#1B2740;
  --ink:#EEEAE2; --ink-2:#CBC5BA; --ink-3:#A7A196;
  --line:rgba(238,234,226,.13); --line-2:rgba(238,234,226,.28);
  --cobalt:#89A5DD; --cobalt-2:#A3BAE6; --on-cobalt:#0E1626;
  --lustre:#D2A866; --lustre-ink:#DDB97E;
  --sea:#86BDB6; --dune:#D9A77D;
  --wa:#25D366; --wa-2:#1EBE5A; --on-wa:#111B21;
  --field:#0B1222; --on-field:#EEEAE2; --field-2:rgba(238,234,226,.72); --field-line:rgba(238,234,226,.16);
  --ph:#F0B98F; --ph-bg:rgba(210,168,102,.16);
  --err:#F2A193;
  color-scheme:dark;
}
body[data-dest="valencia"]{--accent:var(--cobalt)}
body[data-dest="denia"]{--accent:var(--sea)}
body[data-dest="dubai"]{--accent:var(--dune)}
[data-d="valencia"]{--dc:var(--cobalt)}
[data-d="denia"]{--dc:var(--sea)}
[data-d="dubai"]{--dc:var(--dune)}
[data-d="tbc"]{--dc:var(--ink-3)}

/* ===== Base ===== */
*,*::before,*::after{box-sizing:inherit}
html{height:100%;-webkit-text-size-adjust:100%;scroll-padding-top:env(safe-area-inset-top,0px)}
body{margin:0;min-height:100%;background:var(--tin);color:var(--ink);font:400 1.0625rem/1.62 var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg{display:block;max-width:100%}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4{font-family:var(--display);font-weight:400;margin:0;line-height:1.08;letter-spacing:.004em;color:inherit;text-wrap:balance}
p{margin:0 0 1em}
p:last-child{margin-bottom:0}
:focus-visible{outline:2px solid var(--cobalt);outline-offset:3px;border-radius:2px}
main{display:block;outline:none}
.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut)}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.skip{position:absolute;left:1rem;top:-100px;z-index:100;background:var(--ink);color:var(--tin);padding:.7rem 1rem;border-radius:8px;text-decoration:none}
.skip:focus{top:calc(env(safe-area-inset-top,0px) + .75rem)}

/* ===== Type ===== */
.t-display{font-size:clamp(2.6rem,4.2vw + 1rem,5.4rem);line-height:1.03}
.t-h2{font-size:clamp(2.05rem,2.5vw + 1rem,3.6rem);line-height:1.06}
.t-h3{font-size:clamp(1.45rem,.9vw + 1rem,1.9rem);line-height:1.16}
.t-statement{font-family:var(--display);font-size:clamp(1.9rem,2.3vw + 1rem,3.3rem);line-height:1.12}
.t-lede{font-size:clamp(1.12rem,.45vw + 1rem,1.3rem);line-height:1.58;color:var(--ink-2);max-width:48ch}
.label{display:block;font-size:.95rem;font-weight:500;line-height:1.3;color:var(--lustre-ink);margin:0 0 1rem}
body[data-dest] .label{color:var(--accent)}
body[data-dest=""] .label{color:var(--lustre-ink)}
.muted{color:var(--ink-3)}
.prose p{color:var(--ink-2);max-width:62ch}
.prose p + p{margin-top:1em}
.ph{color:var(--ph);background:var(--ph-bg);border-radius:4px;padding:.04em .38em;font-size:.94em;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.sec-field .ph,.site-footer .ph{color:#F3D9A6;background:rgba(243,217,166,.14)}
.link{font-weight:500;color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.3em;text-decoration-color:var(--line-2);transition:text-decoration-color .2s}
.link:hover{text-decoration-color:currentColor}

/* ===== Buttons ===== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;min-height:50px;padding:.8rem 1.4rem;border-radius:999px;border:1px solid transparent;font:500 1rem/1.1 var(--text);text-decoration:none;cursor:pointer;white-space:nowrap;transition:background-color .2s,color .2s,border-color .2s}
.btn svg{width:19px;height:19px;flex:none}
.btn-primary{background:var(--cobalt);color:var(--on-cobalt)}
.btn-primary:hover{background:var(--cobalt-2)}
.btn-wa{background:var(--wa);color:var(--on-wa)}
.btn-wa:hover{background:var(--wa-2)}
.btn-line{background:transparent;border-color:var(--line-2);color:var(--ink)}
.btn-line:hover{border-color:var(--ink)}
.btn-light{background:var(--on-field);color:var(--field)}
.btn-light:hover{background:#fff}
.btn-line-light{background:transparent;border-color:rgba(243,241,235,.45);color:var(--on-field)}
.btn-line-light:hover{border-color:var(--on-field)}
.btn-sm{min-height:42px;padding:.55rem 1.05rem;font-size:.95rem}
.btn-row{display:flex;flex-wrap:wrap;gap:.75rem}
.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:50%;border:1px solid var(--line-2);background:transparent;cursor:pointer;color:var(--ink)}
.icon-btn svg{width:20px;height:20px}

/* ===== Header ===== */
.site-header{position:sticky;top:env(safe-area-inset-top,0px);z-index:40;background:var(--tin);background:color-mix(in srgb,var(--tin) 90%,transparent);-webkit-backdrop-filter:blur(14px) saturate(1.1);backdrop-filter:blur(14px) saturate(1.1);border-bottom:1px solid transparent;transition:border-color .25s}
.site-header.scrolled{border-bottom-color:var(--line)}
.header-in{display:flex;align-items:center;gap:clamp(1rem,2.4vw,2.4rem);height:var(--hh)}
.brand{display:inline-flex;align-items:center;gap:.7rem;color:var(--ink);text-decoration:none;flex:none}
.brand .mark{width:30px;height:30px;color:var(--cobalt)}
.brand-word{font-family:var(--display);font-size:1.22rem;letter-spacing:.3em;margin-right:-.3em;line-height:1}
.nav{display:flex;gap:clamp(1rem,1.9vw,2rem);margin-left:auto}
.nav a{font-size:.98rem;color:var(--ink-2);text-decoration:none;padding:.35rem 0;border-bottom:1px solid transparent;transition:color .2s,border-color .2s}
.nav a:hover{color:var(--ink)}
.nav a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--lustre)}
.header-actions{display:flex;align-items:center;gap:.7rem}
.lang{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--line-2);border-radius:999px;padding:3px}
.lang a{display:inline-flex;align-items:center;justify-content:center;min-width:42px;height:34px;padding:0 .65rem;border-radius:999px;font-size:.9rem;font-weight:500;color:var(--ink-2);text-decoration:none}
.lang a[aria-current="true"]{background:var(--ink);color:var(--tin)}
.lang a:not([aria-current="true"]):hover{color:var(--ink)}
.menu-btn{display:none}
@media (max-width:1100px){
  .nav{display:none}
  .header-actions{margin-left:auto}
  .menu-btn{display:inline-flex}
}
@media (max-width:640px){
  .header-actions .btn-book{display:none}
  .brand-word{font-size:1.08rem}
  .brand .mark{width:27px;height:27px}
}

/* Mobile menu */
.menu{position:fixed;inset:0;z-index:60;background:var(--tin);display:flex;flex-direction:column;padding:calc(env(safe-area-inset-top,0px) + .25rem) var(--gut) calc(env(safe-area-inset-bottom,0px) + 1.5rem);overflow-y:auto;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .22s,transform .22s,visibility 0s .22s}
.menu.open{opacity:1;visibility:visible;transform:none;transition:opacity .22s,transform .22s}
.menu-top{display:flex;align-items:center;justify-content:space-between;height:var(--hh)}
.menu nav{display:flex;flex-direction:column;margin-top:1.25rem}
.menu nav a{font-family:var(--display);font-size:clamp(2rem,8vw,2.7rem);line-height:1.15;color:var(--ink);text-decoration:none;padding:.3rem 0}
.menu-foot{margin-top:auto;padding-top:2rem;display:grid;gap:.7rem}
.menu-foot .btn{width:100%}
.menu-lang{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem;color:var(--ink-3)}

/* ===== Arch (signature shape) ===== */
.arch{position:relative;overflow:hidden;background:var(--stone);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 140' preserveAspectRatio='none'%3E%3Cpath d='M0 140V59.16A60 60 0 0 1 50 0A60 60 0 0 1 100 59.16V140Z'/%3E%3C/svg%3E") center/100% 100% no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 140' preserveAspectRatio='none'%3E%3Cpath d='M0 140V59.16A60 60 0 0 1 50 0A60 60 0 0 1 100 59.16V140Z'/%3E%3C/svg%3E") center/100% 100% no-repeat}
.arch > .frame{position:absolute;inset:0}
.arch-wrap{position:relative}
.arch-wrap::before{content:"";position:absolute;inset:-14px;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 140' preserveAspectRatio='none'%3E%3Cpath d='M.5 140V59.4A59.5 59.5 0 0 1 50 .5A59.5 59.5 0 0 1 99.5 59.4V140' fill='none' stroke='%23B08A4A' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") center/100% 100% no-repeat}

/* ===== Hero (home + destinations) ===== */
.hero{padding-top:clamp(1.25rem,3vw,2.5rem)}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:clamp(2rem,5vw,5.5rem);align-items:end}
.hero-copy{padding-bottom:clamp(.5rem,2vw,2rem)}
.hero-where{font-size:1.02rem;font-weight:500;color:var(--lustre-ink);margin:0 0 1.4rem}
body[data-dest] .hero-where{color:var(--accent)}
body[data-dest=""] .hero-where{color:var(--lustre-ink)}
.hero h1{margin:0 0 1.6rem}
.hero h1 span{display:block}
.hero .t-lede{margin-bottom:2rem}
.hero-media{display:flex;flex-direction:column;align-items:center}
.hero-media .arch-wrap{width:min(100%,calc((100svh - var(--hh) - 170px) * .78));max-width:560px}
.hero-media .arch{aspect-ratio:5/6.4;width:100%}
.hero-media .arch .frame{opacity:0;transition:opacity .9s ease}
.hero-media .arch .frame.on{opacity:1}
.arch-tabs{display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem;margin-top:1.6rem}
.arch-tabs button,.chip{border:1px solid var(--line-2);background:transparent;border-radius:999px;padding:.48rem .95rem;font-size:.95rem;line-height:1.2;color:var(--ink-2);cursor:pointer;transition:background-color .2s,color .2s,border-color .2s}
.arch-tabs button:hover,.chip:hover{border-color:var(--ink);color:var(--ink)}
.arch-tabs button[aria-pressed="true"],.chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--tin)}

/* Booking bar */
.bookbar{margin-top:clamp(2rem,4vw,3.25rem);display:grid;grid-template-columns:1.7fr 1fr 1fr .8fr auto;align-items:stretch;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:.55rem .55rem .55rem 1.4rem;box-shadow:0 1px 1px rgba(43,35,38,.04),0 22px 50px -34px rgba(43,35,38,.45)}
.bookbar .bf{display:flex;flex-direction:column;justify-content:center;padding:.45rem 1.1rem;border-left:1px solid var(--line);min-width:0}
.bookbar .bf:first-child{border-left:0;padding-left:0}
.bookbar label{font-size:.82rem;color:var(--ink-3);margin-bottom:.15rem}
.bookbar select,.bookbar input{width:100%;min-width:0;border:0;background:transparent;font-size:1rem;font-weight:500;color:var(--ink);padding:.15rem 0;min-height:30px;-webkit-appearance:none;appearance:none;border-radius:0}
.bookbar select{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23857a7c' stroke-width='1.5'/%3E%3C/svg%3E") right center/11px no-repeat;padding-right:1.25rem}
.bookbar input:focus-visible,.bookbar select:focus-visible{outline:none}
.bookbar .bf:focus-within{box-shadow:inset 0 -2px 0 var(--cobalt)}
.bookbar .btn{margin-left:.5rem;align-self:stretch;min-height:56px;border-radius:13px}

/* ===== Sections ===== */
.sec{padding-block:clamp(4.5rem,9vw,8.5rem)}
.sec-tight{padding-block:clamp(3rem,6vw,5rem)}
.sec-stone{background:var(--stone)}
.sec-field{background:var(--field);color:var(--on-field)}
.sec-field p{color:var(--field-2)}
.sec-head{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:1.5rem 4rem;align-items:end;margin-bottom:clamp(2.5rem,5vw,4.25rem)}
.sec-head p{color:var(--ink-2);max-width:48ch;margin:0}
.sec-head.solo{grid-template-columns:minmax(0,1fr)}

/* Intro statement */
.intro{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:2rem 5rem;align-items:start}
.intro .t-statement{max-width:17ch}
.intro-side p{color:var(--ink-2);font-size:1.08rem}
.intro-side .link{display:inline-block;margin-top:1.25rem}

/* Destination portals */
.portals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1.25rem,3vw,2.75rem)}
.portal{display:block;color:inherit;text-decoration:none}
.portal .arch{aspect-ratio:4/5.3;width:100%}
.portal h3{margin:1.4rem 0 .45rem;font-size:clamp(1.65rem,1.1vw + 1rem,2.15rem);display:flex;align-items:center;gap:.65rem}
.portal h3::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--dc);flex:none}
.portal p{color:var(--ink-2);margin:0 0 .7rem;max-width:34ch}
.portal .meta{font-size:.95rem;color:var(--ink-3)}
.portal:hover h3 span{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em}

/* Split features */
.split{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:clamp(2rem,6vw,6.5rem);align-items:center}
.split.rev{grid-template-columns:minmax(0,.88fr) minmax(0,1.12fr)}
.split.rev .split-media{order:2}
.split-media > .frame{aspect-ratio:4/5;border-radius:var(--r)}
.split-copy h2{margin-bottom:1.4rem}
.split-copy .prose{margin-bottom:2rem}
.ticks{list-style:none;margin:0 0 2.25rem;padding:0;display:grid;gap:.75rem}
.ticks li{display:flex;align-items:center;gap:.8rem;color:var(--ink)}
.ticks svg{width:22px;height:22px;color:var(--accent);flex:none}
.split-copy[data-d] .ticks svg{color:var(--dc)}

/* Outside / inside pair */
.pair{position:relative;padding-bottom:16%}
.pair > .frame{border-radius:var(--r)}
.pair > .frame:first-child{width:76%;aspect-ratio:4/5}
.pair > .frame:last-child{position:absolute;right:0;bottom:0;width:50%;aspect-ratio:4/5;outline:10px solid var(--tin)}
.sec-stone .pair > .frame:last-child{outline-color:var(--stone)}
.pair-tag{position:absolute;top:.85rem;left:.85rem;z-index:5;background:var(--tin);color:var(--ink);font-size:.88rem;font-weight:500;padding:.25rem .7rem;border-radius:999px}
.floors-mini{list-style:none;margin:0 0 2.25rem;padding:0;border-left:2px solid var(--cobalt)}
.floors-mini li{padding:.55rem 0 .55rem 1.1rem;display:flex;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--line)}
.floors-mini li:last-child{border-bottom:0}
.floors-mini span{color:var(--ink-3);font-size:.95rem;text-align:right}

/* Founders */
.founders{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:clamp(1.5rem,4vw,4rem);align-items:start}
.founder .syl{font-family:var(--display);font-size:clamp(4rem,9vw,8.5rem);line-height:.9;letter-spacing:.18em;color:var(--cobalt);margin:0 0 1.5rem}
.founder h3{font-family:var(--text);font-weight:500;font-size:1.1rem;margin-bottom:.6rem;line-height:1.35}
.founder p{color:var(--ink-2);max-width:40ch}
.founders-join{font-family:var(--display);font-size:clamp(2.4rem,5vw,4.5rem);line-height:1;color:var(--lustre);padding-top:clamp(.75rem,2vw,1.75rem)}
.founders-line{margin-top:clamp(2.5rem,5vw,4rem);padding-top:1.5rem;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem}
.founders-line p{font-family:var(--display);font-size:clamp(1.3rem,1vw + 1rem,1.75rem);margin:0;color:var(--ink)}

/* Direct booking */
.direct{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(2rem,6vw,6rem);align-items:start}
.direct h2{margin-bottom:1.25rem}
.direct-copy p{color:var(--ink-2);max-width:42ch;margin-bottom:2rem}
.benefits{list-style:none;margin:0;padding:0}
.benefits li{padding:1.4rem 0;border-top:1px solid var(--line)}
.benefits li:last-child{border-bottom:1px solid var(--line)}
.benefits h3{font-size:1.4rem;margin-bottom:.4rem}
.benefits p{color:var(--ink-2);margin:0;max-width:52ch}

/* Reviews (placeholders until verified) */
.reviews{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem;margin-top:2.5rem}
.review{border:1px dashed var(--line-2);border-radius:14px;padding:1.5rem;min-height:170px;display:flex;flex-direction:column;justify-content:space-between;gap:1rem}
.review .q{font-family:var(--display);font-size:1.25rem;line-height:1.3}
.review-rating{margin-top:1rem}

/* WhatsApp band */
.wa-band{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:2rem 4rem;align-items:end}
.wa-band h2{color:var(--on-field);max-width:18ch;margin-bottom:1.25rem}
.wa-band p{max-width:46ch;margin:0}
.wa-band .btn-row{justify-content:flex-end}

/* ===== Footer ===== */
.site-footer{background:var(--field);color:var(--on-field);padding:clamp(3rem,6vw,5rem) 0 calc(2rem + var(--mbar))}
.sec-field + .site-footer{border-top:1px solid var(--field-line)}
.foot-grid{display:grid;grid-template-columns:1.5fr repeat(3,minmax(0,1fr));gap:2.5rem}
.foot-brand .brand{color:var(--on-field)}
.foot-brand .brand .mark{color:var(--on-field)}
.foot-brand p{color:var(--field-2);margin-top:1rem;max-width:30ch}
.site-footer h3{font-family:var(--text);font-size:.95rem;font-weight:500;color:var(--field-2);margin-bottom:.9rem}
.site-footer ul{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}
.site-footer a{color:var(--on-field);text-decoration:none}
.site-footer a:hover{text-decoration:underline;text-underline-offset:.25em}
.site-footer button.as-link{background:none;border:0;padding:0;cursor:pointer;color:var(--on-field);text-align:left}
.site-footer button.as-link:hover{text-decoration:underline;text-underline-offset:.25em}
.foot-legal{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--field-line);display:flex;flex-wrap:wrap;gap:.6rem 1.75rem;font-size:.9rem;color:var(--field-2)}

/* ===== Collection ===== */
.page-head{padding-block:clamp(3rem,6vw,5.5rem) clamp(2rem,4vw,3rem)}
.page-head h1{margin-bottom:1.25rem}
.page-head .t-lede{max-width:56ch}
.filters{display:flex;flex-wrap:wrap;gap:1rem 2.75rem;align-items:center;padding-block:1.1rem;border-block:1px solid var(--line);margin-bottom:clamp(2rem,4vw,3rem)}
.filter-group{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}
.filter-group > span{font-size:.92rem;color:var(--ink-3);margin-right:.45rem}
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3.25rem clamp(1.25rem,2.4vw,2.25rem)}
.card{display:flex;flex-direction:column;color:inherit;text-decoration:none}
.card-media{position:relative}
.card-media .frame{aspect-ratio:4/5;border-radius:var(--r)}
.badge{position:absolute;top:.8rem;left:.8rem;z-index:5;background:var(--tin);color:var(--ink);font-size:.85rem;font-weight:500;padding:.25rem .7rem;border-radius:999px}
.badge.todo{background:var(--ph-bg);color:var(--ph);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.card-dest{display:flex;align-items:center;gap:.55rem;font-size:.95rem;color:var(--ink-3);margin:1.15rem 0 .4rem}
.card-dest i{width:9px;height:9px;border-radius:50%;background:var(--dc);flex:none}
.card h3{font-size:1.65rem;margin-bottom:.45rem}
.card:hover h3{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em}
.card p{color:var(--ink-2);margin:0 0 .9rem;max-width:40ch}
.units{display:flex;flex-wrap:wrap;gap:.35rem}
.units span{font-size:.86rem;border:1px solid var(--line-2);border-radius:999px;padding:.2rem .65rem;color:var(--ink-2)}
.col-note{margin-top:clamp(2.5rem,5vw,4rem);padding:1.15rem 1.35rem;border-left:2px solid var(--cobalt);background:var(--card);max-width:720px;color:var(--ink-2)}
.empty{grid-column:1/-1;padding:3rem 0;color:var(--ink-2)}
.coast{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:2rem 4rem;align-items:center}
.coast svg{width:100%;height:auto}
.coast .land{fill:var(--stone)}
.coast .shore{fill:none;stroke:var(--ink-3);stroke-width:1.2}
.coast .dot{fill:var(--cobalt)}
.coast .dot.d{fill:var(--sea)}
.coast .dot.x{fill:var(--dune)}
.coast text{font-family:var(--text);font-size:15px;fill:var(--ink)}
.coast .sea-t{font-family:var(--display);font-size:18px;fill:var(--ink-3);letter-spacing:.12em}
.coast .inset{fill:none;stroke:var(--line-2)}

/* ===== Property pages ===== */
.p-hero{position:relative;height:min(84svh,900px);min-height:520px;overflow:hidden;color:#F7F4EE}
.p-hero > .frame{position:absolute;inset:0}
.p-hero::after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(180deg,rgba(18,14,12,0) 38%,rgba(18,14,12,.66) 100%)}
.p-hero > .frame .frame-tag{top:1rem;right:1rem;left:auto;bottom:auto}
.p-hero-in{position:absolute;left:0;right:0;bottom:clamp(2rem,5vw,4.25rem);z-index:4}
.p-hero .where{font-size:1.02rem;font-weight:500;margin:0 0 .9rem;color:rgba(247,244,238,.9)}
.p-hero h1{font-size:clamp(2.9rem,5vw + 1rem,6.2rem);line-height:1;margin-bottom:1rem;color:#F7F4EE}
.p-hero .sub{font-size:clamp(1.12rem,.6vw + 1rem,1.4rem);max-width:38ch;color:rgba(247,244,238,.92);margin-bottom:1.75rem}
.p-hero .ph{color:#F6DDB0;background:rgba(246,221,176,.16)}
.p-bar{position:sticky;top:calc(env(safe-area-inset-top,0px) + var(--hh));z-index:30;background:var(--tin);border-bottom:1px solid var(--line)}
.p-bar-in{display:flex;align-items:center;gap:1.5rem;height:var(--pbar)}
.p-bar strong{font-family:var(--display);font-weight:400;font-size:1.2rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:28ch}
.p-bar nav{display:flex;gap:1.3rem}
.p-bar nav button{background:none;border:0;padding:.4rem 0;color:var(--ink-2);cursor:pointer;font-size:.96rem}
.p-bar nav button:hover{color:var(--ink)}
.p-bar .acts{margin-left:auto;display:flex;gap:.5rem}
.p-bar .icon-btn{width:42px;height:42px;background:var(--wa);border-color:var(--wa);color:#fff}
.anchor{scroll-margin-top:calc(var(--hh) + var(--pbar) + 1rem)}
.overview{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:clamp(2rem,6vw,6rem);align-items:start}
.overview .t-statement{max-width:21ch;margin-bottom:2rem;font-size:clamp(1.7rem,1.8vw + 1rem,2.6rem)}
.glance{border-top:1px solid var(--ink);padding-top:1.1rem}
.glance h2{font-family:var(--text);font-size:1rem;font-weight:500;margin-bottom:1rem;color:var(--ink)}
.glance dl{margin:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:.75rem 1.5rem}
.glance dt{color:var(--ink-3)}
.glance dd{margin:0;text-align:right}
.reg{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--line);font-size:.92rem;color:var(--ink-3)}

/* Journey */
.journey-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,6vw,6.5rem)}
.journey-media{position:sticky;top:calc(var(--hh) + var(--pbar) + 3vh);height:calc(100svh - var(--hh) - var(--pbar) - 6vh);display:flex;align-items:center}
.stage{position:relative;width:100%;max-height:100%;aspect-ratio:4/5;border-radius:var(--r);overflow:hidden;background:var(--stone)}
.stage > .frame{position:absolute;inset:0;opacity:0;transition:opacity .8s ease}
.stage > .frame.on{opacity:1}
.stage-dots{position:absolute;right:1rem;top:1rem;z-index:6;display:flex;gap:.35rem}
.stage-dots i{width:22px;height:3px;border-radius:2px;background:rgba(255,255,255,.4);transition:background-color .3s}
.stage-dots i.on{background:#fff}
.journey-steps{padding-block:6vh 10vh}
.step{min-height:74svh;display:flex;flex-direction:column;justify-content:center;max-width:31rem;opacity:.32;transition:opacity .45s}
.step.on{opacity:1}
.step .n{display:flex;align-items:center;gap:.8rem;font-family:var(--display);font-size:1.05rem;color:var(--accent);margin-bottom:1rem}
.step .n::after{content:"";width:3rem;height:1px;background:currentColor}
.step h3{font-size:clamp(2rem,2.3vw + 1rem,3.1rem);margin-bottom:1rem}
.step p{color:var(--ink-2);font-size:1.12rem}
.step-media{display:none}

/* Floor selector */
.floors{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:clamp(2rem,5vw,5.5rem);align-items:start}
.bldg{position:sticky;top:calc(var(--hh) + var(--pbar) + 2rem)}
.bldg svg{width:100%;max-width:460px;height:auto;margin-inline:auto;overflow:visible}
.bldg .wall{fill:var(--card);stroke:var(--ink);stroke-width:1.4}
.bldg .detail{fill:none;stroke:var(--ink);stroke-width:1.1;stroke-opacity:.55}
.bldg .glass{fill:var(--stone);stroke:var(--ink);stroke-width:1.1;stroke-opacity:.7}
.bldg .fl{cursor:pointer;outline:none}
.bldg .fl .tint{fill:var(--accent);fill-opacity:0;stroke:none;transition:fill-opacity .25s}
.bldg .fl:hover .tint{fill-opacity:.07}
.bldg .fl.on .tint{fill-opacity:.17}
.bldg .fl:focus-visible .tint{stroke:var(--accent);stroke-width:2.5;fill-opacity:.1}
.bldg .door{fill:var(--card);stroke:var(--ink);stroke-width:1.4;transition:fill .25s}
.bldg .door.on{fill:var(--accent)}
.bldg .route{fill:none;stroke:var(--accent);stroke-width:2;stroke-dasharray:3 6;stroke-linecap:round;opacity:0;transition:opacity .25s}
.bldg .route.on{opacity:1}
.bldg .flabel{font-family:var(--text);font-size:14px;fill:var(--ink-3)}
.bldg .flabel.on{fill:var(--ink);font-weight:500}
.bldg .dlabel{font-family:var(--text);font-size:13px;fill:var(--ink-2);text-anchor:middle}
.legend{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem 1.4rem;margin-top:1.25rem;font-size:.9rem;color:var(--ink-3)}
.legend span{display:inline-flex;align-items:center;gap:.5rem}
.legend i{width:12px;height:17px;border:1.4px solid var(--ink);border-radius:6px 6px 1px 1px;background:var(--card)}
.legend i.on{background:var(--accent)}
.unit-panel{border-top:1px solid var(--ink);padding-top:1.25rem}
.unit-panel .floor-tabs{display:flex;flex-wrap:wrap;gap:.4rem;margin:0 0 2rem}
.unit-panel .viewing{font-size:.92rem;color:var(--ink-3);margin-bottom:.35rem}
.unit-panel h3{font-size:clamp(1.85rem,1.6vw + 1rem,2.6rem);margin-bottom:.35rem}
.unit-level{color:var(--ink-3);margin-bottom:1.6rem}
.entrance{display:flex;gap:1rem;align-items:flex-start;padding:1.1rem 1.2rem;background:var(--card);border:1px solid var(--line);border-radius:12px;margin-bottom:1.5rem}
.entrance svg{width:30px;height:30px;flex:none;color:var(--accent)}
.entrance strong{display:block;font-weight:500;margin-bottom:.15rem}
.entrance p{margin:0;color:var(--ink-2)}
.unit-dl{margin:0 0 1.25rem;display:grid;grid-template-columns:auto minmax(0,1fr);gap:.65rem 1.5rem}
.unit-dl dt{color:var(--ink-3)}
.unit-dl dd{margin:0;text-align:right}
.unit-note{font-size:.95rem;color:var(--ink-2);margin:1.25rem 0 1.75rem}
.one-apt{padding:.9rem 1.1rem;border-left:2px solid var(--accent);background:var(--card);color:var(--ink);margin-bottom:1.5rem;font-weight:500}

/* Features */
.features{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:2.25rem}
.feat{display:flex;align-items:center;gap:.95rem;padding:1.2rem 0;border-top:1px solid var(--line)}
.feat svg{width:26px;height:26px;color:var(--accent);flex:none}
.feat-extra{margin-top:1.25rem;color:var(--ink-2)}

/* Gallery */
.gallery{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-rows:clamp(150px,17vw,250px);gap:clamp(.6rem,1.1vw,1rem)}
.gallery > .frame{height:100%;border-radius:var(--r)}
.gallery .w4{grid-column:span 4}.gallery .w5{grid-column:span 5}.gallery .w6{grid-column:span 6}.gallery .w7{grid-column:span 7}.gallery .w8{grid-column:span 8}.gallery .w12{grid-column:span 12}
.gallery .h2{grid-row:span 2}

/* Day in Dénia */
.day{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(.75rem,1.6vw,1.4rem)}
.day figure{margin:0}
.day .frame{aspect-ratio:3/4;border-radius:var(--r);margin-bottom:1.1rem}
.day h3{font-size:1.5rem;margin-bottom:.4rem}
.day p{color:var(--ink-2);margin:0}

/* Location */
.loc{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(2rem,5vw,5rem);align-items:start}
.loc > .frame{aspect-ratio:4/3;border-radius:var(--r)}
.loc h3{font-size:1.5rem;margin-bottom:.6rem}
.nearby{list-style:none;margin:1.5rem 0;padding:0}
.nearby li{padding:.95rem 0;border-top:1px solid var(--line)}
.nearby strong{display:block;font-weight:500}
.nearby span{color:var(--ink-2);font-size:.98rem}

/* Highlights (destination pages) */
.highlights{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 2.5rem}
.hl{padding:1.6rem 0 1.8rem;border-top:1px solid var(--line)}
.hl h3{font-size:1.45rem;margin-bottom:.5rem}
.hl p{color:var(--ink-2);margin:0}

/* FAQ */
.faq{max-width:880px}
.faq details{border-top:1px solid var(--line)}
.faq details:last-child{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;position:relative;padding:1.3rem 3rem 1.3rem 0;font-family:var(--display);font-size:clamp(1.18rem,.5vw + 1rem,1.4rem);line-height:1.3}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";position:absolute;right:.35rem;top:50%;width:15px;height:15px;transform:translateY(-50%);transition:transform .25s;background:linear-gradient(currentColor,currentColor) center/100% 1.5px no-repeat,linear-gradient(currentColor,currentColor) center/1.5px 100% no-repeat}
.faq details[open] summary::after{transform:translateY(-50%) rotate(45deg)}
.faq .a{padding:0 3rem 1.5rem 0;color:var(--ink-2);max-width:66ch}

/* CTA band (property) */
.cta-band{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2rem 4rem;align-items:end;padding:clamp(2rem,4vw,3.25rem);border-radius:20px;background:var(--card);border:1px solid var(--line)}
.cta-band h2{margin-bottom:.9rem}
.cta-band p{color:var(--ink-2);margin:0;max-width:52ch}

/* ===== Book page ===== */
.book{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:clamp(2rem,6vw,6rem);align-items:start}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.3rem 1.25rem}
.form-grid .full{grid-column:1/-1}
.f label{display:block;font-weight:500;margin-bottom:.45rem}
.f .hint{display:block;font-size:.9rem;color:var(--ink-3);margin-top:.35rem}
.f input,.f select,.f textarea{width:100%;background:var(--card);color:var(--ink);border:1px solid var(--line-2);border-radius:12px;padding:.8rem .95rem;min-height:52px;font-size:1rem;-webkit-appearance:none;appearance:none}
.f select{background:var(--card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23857a7c' stroke-width='1.5'/%3E%3C/svg%3E") right 1rem center/11px no-repeat;padding-right:2.4rem}
.f textarea{min-height:120px;resize:vertical}
.f input:focus-visible,.f select:focus-visible,.f textarea:focus-visible{outline:2px solid var(--cobalt);outline-offset:1px}
.f [aria-invalid="true"]{border-color:var(--err)}
.f .err{display:none;color:var(--err);font-size:.92rem;margin-top:.4rem}
.f .err.show{display:block}
.f[hidden]{display:none}
.seg{display:inline-flex;border:1px solid var(--line-2);border-radius:999px;padding:3px;gap:2px}
.seg label{margin:0;font-weight:500;font-size:.95rem;cursor:pointer}
.seg input{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}
.seg span{display:inline-block;padding:.45rem .95rem;border-radius:999px;color:var(--ink-2)}
.seg input:checked + span{background:var(--ink);color:var(--tin)}
.seg input:focus-visible + span{outline:2px solid var(--cobalt);outline-offset:2px}
.err-summary{display:none;border:1px solid var(--err);border-radius:12px;padding:1rem 1.25rem;margin-bottom:1.5rem;color:var(--ink)}
.err-summary.show{display:block}
.err-summary ul{margin:.4rem 0 0;padding-left:1.2rem;color:var(--err)}
.engine-note{margin-top:1.75rem;font-size:.95rem}
.summary-card{position:sticky;top:calc(var(--hh) + 1.5rem);background:var(--card);border:1px solid var(--line);border-radius:18px;padding:1.75rem}
.summary-card h2{font-family:var(--text);font-size:1rem;font-weight:500;margin-bottom:1rem}
.summary-card .s-name{font-family:var(--display);font-size:1.6rem;line-height:1.15;margin-bottom:.35rem}
.summary-card dl{margin:1.25rem 0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:.6rem 1rem}
.summary-card dt{color:var(--ink-3)}
.summary-card dd{margin:0;text-align:right}
.summary-card .s-foot{border-top:1px solid var(--line);padding-top:1.1rem;color:var(--ink-2);font-size:.95rem}
.summary-card .btn{width:100%;margin-top:1.25rem}

/* ===== Story ===== */
.story-founder{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(2rem,6vw,6rem);align-items:center}
.story-founder.rev{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr)}
.story-founder.rev .arch-wrap{order:2}
.story-founder .arch-wrap{width:min(100%,400px);justify-self:center}
.story-founder .arch{aspect-ratio:4/5.2;width:100%}
.story-founder .syl{font-family:var(--display);font-size:clamp(4rem,8vw,7.5rem);line-height:.9;letter-spacing:.18em;color:var(--cobalt);margin-bottom:1.25rem}
.story-founder h2{font-family:var(--text);font-weight:500;font-size:1.25rem;margin-bottom:1.25rem;line-height:1.35}
.quote{margin:2rem 0 0;padding:0 0 0 1.25rem;border-left:2px solid var(--lustre);font-family:var(--display);font-size:1.35rem;line-height:1.35}
.details-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 2.5rem}
.details-grid div{padding:1.5rem 0 1.75rem;border-top:1px solid var(--line)}
.details-grid h3{font-size:1.5rem;margin-bottom:.4rem}
.details-grid p{color:var(--ink-2);margin:0}

/* ===== Brand page ===== */
.dirs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}
.dir{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--card)}
.dir.sel{border-color:var(--cobalt);box-shadow:0 0 0 1px var(--cobalt)}
.dir .art{height:210px;display:grid;place-items:center;background:#F0EFEA;color:#2B2326;border-bottom:1px solid var(--line)}
.dir .body{padding:1.25rem 1.35rem 1.5rem}
.dir h3{font-size:1.45rem;margin-bottom:.4rem;display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.dir h3 small{font-family:var(--text);font-size:.8rem;font-weight:500;background:var(--cobalt);color:var(--on-cobalt);padding:.15rem .55rem;border-radius:999px}
.dir p{color:var(--ink-2);margin:0;font-size:.98rem}
.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}
.tile{border-radius:16px;padding:2.25rem 1.5rem 1.25rem;min-height:250px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem}
.tile.light{background:#F0EFEA;color:#2B2326;border:1px solid var(--line)}
.tile.dark{background:#16213A;color:#F0EFEA}
.tile.cob{background:#233F7C;color:#F0EFEA}
.tile .cap{font-size:.88rem;opacity:.75;margin-top:auto;align-self:flex-start}
.lockup{display:flex;align-items:center;gap:.9rem}
.lockup .mark{width:46px;height:46px}
.lockup .word{font-family:var(--display);font-size:2rem;letter-spacing:.3em;margin-right:-.3em;line-height:1}
.lockup.stack{flex-direction:column;gap:1rem}
.lockup.stack .mark{width:60px;height:60px}
.lockup.stack .word{font-size:1.7rem}
.icons-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:2rem}
.icons-row figure{margin:0;display:flex;flex-direction:column;align-items:center;gap:.6rem;font-size:.85rem;color:var(--ink-3)}
.app-icon{width:96px;height:96px;border-radius:22px;background:#233F7C;display:grid;place-items:center;color:#F0EFEA}
.app-icon .mark{width:62px;height:62px}
.swatches{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}
.sw{border-radius:14px;overflow:hidden;border:1px solid var(--line);background:var(--card)}
.sw .c{height:110px}
.sw .m{padding:.8rem 1rem;font-size:.92rem;line-height:1.4}
.sw .m b{display:block;font-weight:500;font-size:1rem}
.sw .m span{color:var(--ink-3);font-variant-numeric:tabular-nums}
.specimen{padding:1.75rem 0;border-top:1px solid var(--line);display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);gap:1rem 3rem;align-items:end}
.specimen .big{font-size:clamp(2.6rem,4vw + 1rem,4.6rem);line-height:1}
.specimen .big.sans{font-family:var(--text);font-weight:400}
.specimen p{color:var(--ink-2);margin:0}
.voice{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 2.5rem}
.voice div{padding:1.4rem 0;border-top:1px solid var(--line)}
.voice h3{font-size:1.35rem;margin-bottom:.35rem}
.voice p{color:var(--ink-2);margin:0}
.dest-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}
.dest-tile{border-radius:16px;overflow:hidden;min-height:280px;position:relative;display:flex;flex-direction:column;justify-content:flex-end;padding:1.4rem;color:#F4F1EA}
.dest-tile .lockup .word{font-size:1.25rem}
.dest-tile .lockup .mark{width:32px;height:32px}
.dest-tile p{margin:.6rem 0 0;font-size:.95rem;opacity:.85}
.dt-v{background:#233F7C radial-gradient(circle at 0 0,transparent 13px,rgba(255,255,255,.12) 14px,rgba(255,255,255,.12) 16px,transparent 17px) 0 0/44px 44px}
.dt-d{background:linear-gradient(180deg,#9CC0BB 0,#9CC0BB 56%,#F4F1EA 56%,#F4F1EA calc(56% + 1px),#3F7570 calc(56% + 1px),#2B5653 100%)}
.dt-x{background:#B98454}
.dt-x::before{content:"";position:absolute;inset:auto 0 0 0;height:60%;background:radial-gradient(120% 70% at 30% 100%,#9A6A40 0 60%,transparent 61%),radial-gradient(110% 60% at 85% 100%,#A9764A 0 58%,transparent 59%)}
.dest-tile > *{position:relative}
.apps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}
.app{border-radius:16px;min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.9rem;padding:1.5rem;position:relative}
.app .cap{position:absolute;left:1.2rem;bottom:1rem;font-size:.85rem;opacity:.75}
.app.plaque{background:#BFA987 linear-gradient(135deg,rgba(255,255,255,.18),rgba(0,0,0,.08));color:#2B2326}
.plaque-in{border:1.5px solid rgba(43,35,38,.6);padding:1.4rem 1.6rem;display:flex;flex-direction:column;align-items:center;gap:.8rem;background:rgba(240,239,234,.25)}
.plaque-in .mark{width:40px;height:40px}
.plaque-in span{font-family:var(--display);letter-spacing:.24em;font-size:.95rem;margin-right:-.24em;text-align:center;line-height:1.5}
.app.avatar{background:var(--card);border:1px solid var(--line)}
.avatar-c{width:120px;height:120px;border-radius:50%;background:#233F7C;display:grid;place-items:center;color:#F0EFEA}
.avatar-c .mark{width:66px;height:66px}
.app.card-w{background:#E4DDD0;color:#2B2326}
.wcard{background:#F8F7F3;width:72%;aspect-ratio:7/5;border-radius:6px;box-shadow:0 14px 30px -18px rgba(0,0,0,.4);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6rem;font-family:var(--display)}
.wcard .mark{width:34px;height:34px;color:#233F7C}
.wcard b{font-weight:400;font-size:1.35rem}
.wcard i{font-style:normal;font-size:1rem;color:#6E6365}

/* ===== WhatsApp dialog ===== */
dialog.wa{border:0;padding:0;border-radius:20px;width:min(540px,calc(100vw - 2rem));max-height:calc(100svh - 2rem);background:var(--tin);color:var(--ink);box-shadow:0 30px 90px -20px rgba(0,0,0,.5)}
dialog.wa::backdrop{background:rgba(14,18,30,.5)}
.wa-in{padding:1.5rem 1.5rem 1.35rem;overflow-y:auto}
.wa-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.5rem}
.wa-head h2{font-size:1.7rem}
.wa-head .icon-btn{width:40px;height:40px;flex:none}
.wa-sub{color:var(--ink-2);font-size:.98rem;margin-bottom:1.25rem}
.wa-row{margin-bottom:1.1rem}
.wa-row > span{display:block;font-size:.9rem;color:var(--ink-3);margin-bottom:.45rem}
.wa-topics{display:flex;flex-wrap:wrap;gap:.4rem}
.wa textarea{width:100%;min-height:118px;resize:vertical;background:var(--card);border:1px solid var(--line-2);border-radius:12px;padding:.8rem .95rem;font-size:1rem;line-height:1.5;color:var(--ink)}
.wa-notice{font-size:.92rem;color:var(--ink-2);background:var(--ph-bg);border-radius:10px;padding:.75rem .9rem;margin-bottom:1rem}
.wa-actions{display:flex;flex-wrap:wrap;gap:.6rem}
.wa-actions .btn{flex:1 1 auto}
.wa-actions a[aria-disabled="true"]{opacity:.45;pointer-events:none}

/* ===== Persistent contact ===== */
.fab{position:fixed;right:calc(1.25rem + env(safe-area-inset-right,0px));bottom:calc(1.25rem + env(safe-area-inset-bottom,0px));z-index:35;display:inline-flex;align-items:center;gap:.55rem;border:0;border-radius:999px;padding:.85rem 1.2rem .85rem 1rem;background:var(--wa);color:#fff;font:500 1rem/1 var(--text);cursor:pointer;box-shadow:0 14px 34px -14px rgba(16,60,40,.7)}
.fab:hover{background:var(--wa-2)}
.fab svg{width:22px;height:22px}
.mbar{position:fixed;left:0;right:0;bottom:0;z-index:35;display:none;gap:.6rem;padding:.65rem var(--gut) calc(.65rem + env(safe-area-inset-bottom,0px));background:var(--tin);background:color-mix(in srgb,var(--tin) 94%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line)}
.mbar .btn{min-height:48px}
.mbar .btn-primary{flex:1}

/* ===== Photo placeholders (art-directed until photography arrives) ===== */
.frame{position:relative;overflow:hidden;margin:0;background:#CFC3B0;isolation:isolate}
.frame .art{position:absolute;inset:0}
.frame .art > svg{position:absolute;inset:0;width:100%;height:100%}
.frame::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.2;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.frame-tag{position:absolute;left:.75rem;bottom:.75rem;z-index:4;max-width:calc(100% - 1.5rem);font:400 .78rem/1.35 var(--text);color:#F7F4EE;background:rgba(24,20,18,.5);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:.3rem .55rem;border-radius:6px}
.frame-tag b{font-weight:600}
.arch .frame-tag{left:50%;transform:translateX(-50%);bottom:1rem;text-align:center;width:max-content;max-width:80%}

.k-sea .art{--s1:#E3E1D8;--s2:#E8DCC8;--s3:#E5C9A4;--w1:#7FA3A0;--w2:#4F7E80;--w3:#24474A;--sun:rgba(255,244,222,.95);--glow:rgba(255,220,180,.42);--glint:rgba(255,240,215,.5);--sx:66%;--hz:56%;
  background:radial-gradient(ellipse 30% 7% at var(--sx) var(--hz),var(--sun),transparent 70%),radial-gradient(ellipse 80% 34% at var(--sx) var(--hz),var(--glow),transparent 70%),linear-gradient(180deg,var(--s1) 0%,var(--s2) 30%,var(--s3) calc(var(--hz) - .2%),var(--w1) var(--hz),var(--w2) calc(var(--hz) + 14%),var(--w3) 100%)}
.k-sea .art::before{content:"";position:absolute;left:0;right:0;top:var(--hz);bottom:0;background:radial-gradient(ellipse 7% 70% at var(--sx) 0,var(--glint),transparent 70%),repeating-linear-gradient(180deg,rgba(255,250,240,.09) 0 1px,transparent 1px 8px)}
.t-dawn .art{--s1:#D6D5DE;--s2:#E4CFC8;--s3:#EBC1AA;--w1:#9AAAB0;--w2:#62818A;--w3:#2E4651;--sun:rgba(255,228,208,.95);--glow:rgba(240,190,170,.45);--glint:rgba(255,220,200,.5);--sx:28%}
.t-noon .art{--s1:#C4D8DF;--s2:#D8E5E5;--s3:#ECEFE9;--w1:#6FAAA8;--w2:#2F7C84;--w3:#174E5A;--sun:rgba(255,255,250,.55);--glow:rgba(255,255,255,.18);--glint:rgba(255,255,255,.45);--sx:50%}
.t-golden .art{--s1:#E8D3B2;--s2:#EDBE8C;--s3:#E7A06C;--w1:#A08670;--w2:#5E5E58;--w3:#2D3638;--sun:rgba(255,228,172,1);--glow:rgba(255,180,110,.5);--glint:rgba(255,205,140,.6);--sx:70%}
.t-night .art{--s1:#121A2B;--s2:#1F2C45;--s3:#384763;--w1:#25344A;--w2:#152131;--w3:#0A111B;--sun:rgba(235,236,225,.8);--glow:rgba(150,170,210,.16);--glint:rgba(220,225,235,.32);--sx:28%;--hz:60%}
.k-beach .art{background:linear-gradient(180deg,#E6DED0 0%,#DCD0BC 38%,#80A8A5 38.3%,#4F8083 52%,#7FA7A1 56%,#EFE6D4 57%,#E6D8BE 70%,#D6C3A2 100%)}
.k-facade .art{background:linear-gradient(180deg,#DCC6A4 0%,#CFB28A 60%,#B9966C 100%)}
.k-entrance .art{background:#6A5440}
.k-interior .art{background:#ECE6DC}
.k-bed .art{background:#E7DED1}
.k-shower .art{background:#D8D2C8}
.k-balcony .art{background:linear-gradient(180deg,#D3DEE2 0%,#E4E5DF 45%,#EADFCD 70%)}
.k-kitchen .art{background:#E9E3D8}
.k-city .art{background:linear-gradient(180deg,#E9CDAA 0%,#E4B28A 42%,#C19280 68%,#857078 100%)}
.k-dune .art{background:linear-gradient(180deg,#ECDCC8 0%,#E8C7A6 42%,#DFB189 100%)}
.k-plaster .art{background:radial-gradient(60% 40% at 30% 30%,rgba(255,255,255,.35),transparent 70%),radial-gradient(50% 50% at 80% 75%,rgba(160,140,110,.14),transparent 70%),#E3DBCD}
.k-site .art{background:linear-gradient(rgba(35,63,124,.09) 1px,transparent 1px) 0 0/26px 26px,linear-gradient(90deg,rgba(35,63,124,.09) 1px,transparent 1px) 0 0/26px 26px,#E8E3D9}
.k-map .art{background:#E5DFD3}
.k-portrait .art{background:radial-gradient(70% 55% at 50% 30%,#E9DFCF,#CDBDA4 70%,#B7A386 100%)}
.k-detail .art{background:radial-gradient(circle at 0 0,#2B4C7E 0 22%,transparent 23%) 0 0/56px 56px,radial-gradient(circle at 100% 100%,#2B4C7E 0 22%,transparent 23%) 0 0/56px 56px,radial-gradient(circle at 50% 50%,transparent 0 24%,#B08A4A 25% 27%,transparent 28%) 0 0/56px 56px,#EFE9DC}

/* Gentle drift on the hero's active image only */
@keyframes drift{from{transform:scale(1.06)}to{transform:scale(1)}}
.hero-media .frame.on .art{animation:drift 9s ease-out both}

/* ===== Responsive ===== */
@media (max-width:1100px){
  .foot-grid{grid-template-columns:1fr 1fr}
  .foot-brand{grid-column:1/-1}
  .p-bar nav{display:none}
}
@media (max-width:980px){
  .bookbar{grid-template-columns:1fr 1fr;padding:.75rem;border-radius:16px;gap:0}
  .bookbar .bf{padding:.6rem .8rem;border-left:0;border-top:1px solid var(--line)}
  .bookbar .bf:first-child{grid-column:1/-1;border-top:0;padding-left:.8rem}
  .bookbar .bf:nth-child(3){border-left:1px solid var(--line)}
  .bookbar .bf:nth-child(4){grid-column:1/-1}
  .bookbar .btn{grid-column:1/-1;margin:.5rem 0 0}
}
@media (max-width:900px){
  :root{--mbar:76px}
  .mbar{display:flex}
  .fab{display:none}
  .p-bar{display:none}
  .anchor{scroll-margin-top:calc(var(--hh) + 1rem)}
  .hero-grid{grid-template-columns:1fr;gap:1.75rem}
  .hero-media{order:-1}
  .hero-media .arch-wrap{width:min(78%,calc(54svh * .78))}
  .arch-tabs{margin-top:1.25rem}
  .hero-copy{padding-bottom:0}
  .sec-head,.intro,.split,.split.rev,.direct,.wa-band,.overview,.floors,.loc,.book,.coast,.cta-band,.story-founder,.story-founder.rev{grid-template-columns:minmax(0,1fr)}
  .split.rev .split-media,.story-founder.rev .arch-wrap{order:0}
  .wa-band .btn-row{justify-content:flex-start}
  .founders{grid-template-columns:minmax(0,1fr)}
  .founders-join{padding:0}
  .portals,.day{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:1rem;margin-inline:calc(-1 * var(--gut));padding-inline:var(--gut);scrollbar-width:none}
  .portals::-webkit-scrollbar,.day::-webkit-scrollbar,.gallery::-webkit-scrollbar{display:none}
  .portal{flex:0 0 74%;scroll-snap-align:start}
  .day figure{flex:0 0 70%;scroll-snap-align:start}
  .cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .reviews,.dirs,.apps,.dest-tiles{grid-template-columns:minmax(0,1fr)}
  .features,.highlights,.details-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .journey-grid{grid-template-columns:minmax(0,1fr)}
  .journey-media{display:none}
  .journey-steps{padding:0}
  .step{min-height:0;opacity:1;padding-block:1.5rem 2.5rem}
  .step-media{display:block;margin-bottom:1.5rem}
  .step-media .frame{aspect-ratio:4/3;border-radius:var(--r)}
  .bldg{position:static}
  .bldg svg{max-width:340px}
  .gallery{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:.75rem;margin-inline:calc(-1 * var(--gut));padding-inline:var(--gut);grid-auto-rows:auto;scrollbar-width:none}
  .gallery > .frame{flex:0 0 84%;height:auto;aspect-ratio:4/5;scroll-snap-align:start}
  .summary-card{position:static}
  .swatches{grid-template-columns:repeat(2,minmax(0,1fr))}
  .specimen{grid-template-columns:minmax(0,1fr)}
  .cta-band .btn-row{justify-content:flex-start}
}
@media (max-width:640px){
  .cards,.features,.highlights,.details-grid,.voice,.tiles,.form-grid{grid-template-columns:minmax(0,1fr)}
  .pair{padding-bottom:22%}
  .p-hero{height:78svh;min-height:480px}
  .wa-head h2{font-size:1.45rem}
  dialog.wa{width:100%;max-width:100%;margin:auto 0 0;border-radius:20px 20px 0 0;max-height:92svh}
  .wa-in{padding-bottom:calc(1.25rem + env(safe-area-inset-bottom,0px))}
  .foot-grid{grid-template-columns:minmax(0,1fr)}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}

/* ===== Additions ===== */
.pt0{padding-top:0}
ol.journey-steps{list-style:none;margin:0;padding-inline:0}
.f .lbl{display:block;font-weight:500;margin-bottom:.45rem}
.wa-lbl{display:block;font-size:.9rem;color:var(--ink-3);margin-bottom:.45rem}
.frame-tag .ph{color:#F6DDB0;background:rgba(246,221,176,.18)}
.split-copy[data-d] .label{color:var(--dc)}
.ov-lead{font-family:var(--display);font-size:clamp(1.45rem,1.1vw + 1rem,2rem);line-height:1.32;color:var(--ink);max-width:32ch;margin-bottom:1.5rem}
.dest-intro{max-width:760px}
.dest-intro p{font-size:clamp(1.12rem,.45vw + 1rem,1.28rem);line-height:1.6;color:var(--ink-2)}
.dest-intro p:first-child{color:var(--ink)}
.dest-intro .note{font-size:1rem;margin-top:1.5rem}
.site-footer{border-top:1px solid var(--field-line)}
.swatches{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}
.brand-concept{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(2rem,6vw,6rem);align-items:center}
.concept-tile{background:var(--stone);border-radius:20px;aspect-ratio:1;display:grid;place-items:center;color:var(--cobalt)}
.concept-tile .mark{width:52%;height:auto}
.sub-h{font-family:var(--text);font-size:1rem;font-weight:500;color:var(--ink-3);margin:2.5rem 0 1rem}
.sitemap{columns:2;column-gap:2rem;font-size:.9rem;margin-top:1rem}
@media (max-width:900px){.brand-concept{grid-template-columns:minmax(0,1fr)}.concept-tile{max-width:320px}}
.bldg{color:var(--ink)}
.bldg .route circle{fill:var(--accent);stroke:none}
.review blockquote{margin:0}
.tile.light .mark,.dir .art .mark{color:#233F7C}
.cob-ink{color:var(--cobalt)}
.m64{width:64px;height:64px}.m32{width:32px;height:32px}.m16{width:16px;height:16px}
.icons-row figcaption{color:var(--ink-3)}
.hero-media .arch-wrap{width:min(100%,calc((100svh - var(--hh) - 270px) * .78));min-width:min(100%,300px)}
@media (max-width:900px){.hero-media .arch-wrap{width:min(74%,calc(46svh * .78));min-width:0}}
.coast .land{fill:var(--tin)}
.coast .sea-t{fill:var(--ink-2)}

/* ===== Airbnb booking + group stays ===== */
.group-card{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(2rem,5vw,4rem);align-items:center;background:var(--field);color:var(--on-field);border-radius:22px;padding:clamp(1.75rem,4vw,3.5rem)}
.group-card h2{color:var(--on-field);margin-bottom:1.1rem;max-width:16ch}
.group-card p{color:var(--field-2);max-width:56ch}
body .group-card .label{color:#E2C48E}
.group-card .ph{color:#F3D9A6;background:rgba(243,217,166,.14)}
.group-card > .frame{aspect-ratio:4/3.4;border-radius:14px}
.grp-floors{list-style:none;margin:1.4rem 0 1.25rem;padding:0;display:grid;gap:.45rem}
.grp-floors li{display:flex;align-items:center;gap:.65rem;color:var(--on-field)}
.grp-floors li::before{content:"";width:8px;height:8px;border-radius:50%;background:#C9A15E}
.grp-note{font-size:.92rem;margin-top:1rem}
.as-btn{background:none;border:0;padding:0;cursor:pointer;margin-top:1.25rem;font-size:.98rem;text-align:left}
.cta-band.stack{grid-template-columns:minmax(0,1fr)}
.book-list{display:grid;gap:1rem}
.book-row{display:grid;grid-template-columns:132px minmax(0,1fr) auto;gap:1.5rem;align-items:center;padding:1rem;border:1px solid var(--line);border-radius:18px;background:var(--card)}
.book-row.group{border:1.5px dashed var(--cobalt)}
.book-row .frame{aspect-ratio:1;border-radius:12px}
.book-row .frame-tag{display:none}
.book-row .card-dest{margin:0 0 .3rem}
.book-row h2{margin-bottom:.3rem}
.book-row .muted{margin:0 0 .5rem}
.br-acts{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;justify-content:flex-end}
.wa-ic{width:50px;height:50px;background:var(--wa);border-color:var(--wa);color:#fff}
.hub-label{margin:2.25rem 0 0}
.page-head .bookbar{margin-top:.75rem}
.bookbar.hub{grid-template-columns:1fr 1fr .8fr;padding:.55rem 1.4rem}
.toast{position:fixed;left:50%;bottom:calc(1.5rem + var(--mbar) + env(safe-area-inset-bottom,0px));transform:translate(-50%,16px);z-index:70;width:max-content;max-width:min(560px,calc(100vw - 2rem));background:var(--ink);color:var(--tin);padding:.9rem 1.15rem;border-radius:12px;font-size:.95rem;line-height:1.45;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;box-shadow:0 18px 40px -16px rgba(0,0,0,.45)}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast .ph{color:#F3D9A6;background:rgba(243,217,166,.16)}
@media (max-width:980px){
  .bookbar.hub{padding:.75rem}
  .bookbar.hub .bf:first-child{grid-column:auto}
  .bookbar.hub .bf:nth-child(2){border-left:1px solid var(--line);border-top:0}
  .bookbar.hub .bf:nth-child(3){grid-column:1/-1;border-left:0}
}
@media (max-width:900px){.group-card{grid-template-columns:minmax(0,1fr)}}
@media (max-width:640px){
  .book-row{grid-template-columns:84px minmax(0,1fr);gap:1rem}
  .br-acts{grid-column:1/-1;justify-content:flex-start}
  .br-acts .btn{flex:1}
}

/* ===== Ratings, WhatsApp numbers ===== */
.rating{display:inline-flex;align-items:center;flex-wrap:wrap;gap:.45rem;color:var(--ink);font-weight:500;text-decoration:none}
.rating:hover{text-decoration:underline;text-underline-offset:.25em}
.rating .star{color:var(--lustre)}
.rating .sh{font-size:.82rem;font-weight:500;border:1px solid var(--line-2);border-radius:999px;padding:.1rem .55rem;color:var(--ink-2)}
.rating-line{margin:-1rem 0 2rem}
.p-hero .hero-rating{font-size:1rem;margin:-1rem 0 1.5rem}
.p-hero .rating{color:#F7F4EE}
.p-hero .rating .star{color:#E2C48E}
.p-hero .rating .sh{color:#F7F4EE;border-color:rgba(247,244,238,.45)}
.site-footer .num{display:block;font-size:.88rem;color:var(--field-2);margin-top:.1rem}
.wa-num{font-size:.9rem;color:var(--ink-3);margin-bottom:1rem}
.reg{overflow-wrap:anywhere}

/* ===== Country labels ===== */
.portal h3 .country{color:var(--ink-3)}
.portal:hover h3 .country{text-decoration:none}
.p-hero .where span{display:block}
.p-hero .where .type{font-weight:400;opacity:.88;margin-top:.2rem}
.portal:hover h3 .pn{text-decoration:none}
.portal:hover h3 .n{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em}

/* ===== Address + Google Maps ===== */
.addr-k{font-size:.9rem;color:var(--ink-3);margin:0 0 .25rem}
.addr{font-style:normal;font-size:1.15rem;line-height:1.5;margin:0 0 1rem}
.area{font-size:1.05rem;margin:0 0 .35rem}
.maps-row{margin:0 0 1.75rem}
.map-link{display:block;border-radius:var(--r)}
.loc > .map-link .frame{aspect-ratio:4/3;border-radius:var(--r)}
.map-link:hover .frame{outline:2px solid var(--accent);outline-offset:3px}

/* ===== Destination guides: things to do + where to eat ===== */
.hl .tag{display:inline-block;font-size:.82rem;font-weight:500;color:var(--accent);margin-bottom:.45rem}
.eat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}
.eat{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:1.35rem 1.4rem 1.25rem}
.eat .cat{font-size:.85rem;font-weight:500;color:var(--accent);margin-bottom:.45rem}
.eat h3{font-size:1.4rem;margin-bottom:.25rem}
.eat .area{font-size:.92rem;color:var(--ink-3);margin:0 0 .6rem}
.eat p{color:var(--ink-2);margin:0 0 1rem}
.eat .link{margin-top:auto;font-size:.95rem;align-self:flex-start}
@media (max-width:900px){.eat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.eat-grid{grid-template-columns:minmax(0,1fr)}}

/* ===== Transportation ===== */
.transport{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.25rem}
.tr{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:1.4rem 1.4rem 1.5rem}
.tr svg{width:30px;height:30px;color:var(--accent);margin-bottom:1rem}
.tr h3{font-size:1.4rem;margin-bottom:.5rem}
.tr p{color:var(--ink-2);margin:0}
.tr-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;margin-top:1.5rem}
.tr-foot p{margin:0}
@media (max-width:1100px){.transport{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.transport{grid-template-columns:minmax(0,1fr)}}
.transport.many{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:1100px){.transport.many{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.transport.many{grid-template-columns:minmax(0,1fr)}}

/* ===== Wordmark: sun-dotted i ===== */
.wm{white-space:nowrap}
.wm-i{display:inline-grid;justify-items:center;align-items:baseline;letter-spacing:0;margin-right:.3em}
.wm-i > *{grid-area:1/1}
.wm-sun{width:.2em;height:.2em;border-radius:50%;background:#B08A4A;position:relative;bottom:.53em}

/* ===== Instagram ===== */
.ig-link{display:inline-flex;align-items:center;gap:.45rem}
.ig-link svg{width:18px;height:18px;flex:none}
.ig-row{margin-top:1.75rem}
.ig-row .ig-h{opacity:.7;font-weight:400}

/* ===== Real photography ===== */
.frame.has-photo{background:#d9d4cb}
.frame.has-photo::after{display:none}
.frame > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.hero-media .frame.on > img{animation:drift 9s ease-out both}
.gal-note{margin:0 0 clamp(1.75rem,3.5vw,2.75rem)}
.unit-photo .frame{aspect-ratio:16/10;border-radius:12px;margin-bottom:1.4rem}
.unit-extra{color:var(--ink);margin:-1rem 0 1.5rem}

/* ===== Hero video ===== */
.frame > video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.hero-media .frame.on.has-video > img{animation:none}
.arch-wrap .vid-toggle{position:absolute;right:.9rem;bottom:.9rem;z-index:6;display:none;align-items:center;justify-content:center;width:42px;height:42px;border:0;border-radius:50%;background:rgba(24,20,18,.55);color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);cursor:pointer}
.arch-wrap.has-vid .vid-toggle{display:inline-flex}
.arch-wrap .vid-toggle svg{width:18px;height:18px}

/* ===== Gallery tabs ===== */
.gal-tabs{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1.5rem}
.gal-panel[hidden]{display:none}
.tr-links{display:flex;flex-wrap:wrap;gap:.4rem 1.1rem;margin-top:.9rem!important;font-size:.95rem}
.tr-links .link svg{width:14px;height:14px;display:inline-block;vertical-align:-2px;margin-left:.25rem}

/* ===== Legal pages ===== */
.legal{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:clamp(2rem,5vw,5rem);align-items:start}
.legal-body{max-width:760px}
.legal-body h2{font-size:clamp(1.35rem,.6vw + 1.1rem,1.65rem);margin:2.5rem 0 .9rem}
.legal-body p,.legal-body li{color:var(--ink-2)}
.legal-body ul{padding-left:1.2rem;margin:0 0 1em}
.legal-body li{margin:.35rem 0}
.legal-draft{margin-bottom:1.5rem}
.legal-table{overflow-x:auto;margin:0 0 1.5rem}
.legal-table table{border-collapse:collapse;width:100%;min-width:560px;font-size:.95rem}
.legal-table th,.legal-table td{border-bottom:1px solid var(--line);padding:.65rem .7rem;text-align:left;vertical-align:top}
.legal-table th{font-weight:500;color:var(--ink)}
.legal-table td{color:var(--ink-2)}
.legal-nav{position:sticky;top:calc(var(--hh) + 1.5rem);border-top:1px solid var(--ink);padding-top:1rem}
.legal-nav h2{font-family:var(--text);font-size:1rem;font-weight:500;margin-bottom:.75rem}
.legal-nav ul{list-style:none;padding:0;margin:0;display:grid;gap:.55rem}
.foot-legal a{color:var(--field-2);text-decoration:none}
.foot-legal a:hover{color:var(--on-field);text-decoration:underline;text-underline-offset:.25em}
@media (max-width:900px){.legal{grid-template-columns:minmax(0,1fr)}.legal-nav{position:static}}

/* ===== Direct-booking savings ===== */
.save-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1.25rem 2rem;align-items:center;background:var(--field);color:var(--on-field);border-radius:20px;padding:clamp(1.4rem,3vw,2rem) clamp(1.4rem,3vw,2.25rem);margin-bottom:1.5rem}
.save-badge{width:108px;height:108px;border-radius:50%;background:#B08A4A;color:#2B2326;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;box-shadow:0 0 0 7px rgba(176,138,74,.28);flex:none}
.save-badge span{font-size:.85rem;font-weight:500}
.save-badge b{font-family:var(--display);font-weight:400;font-size:2rem;margin-top:.2rem;white-space:nowrap}
.save-copy h2{color:var(--on-field);font-size:clamp(1.4rem,1vw + 1rem,1.95rem);line-height:1.15;margin-bottom:.45rem}
.save-copy p{color:var(--field-2);margin:0;max-width:54ch}
.save-acts{display:flex;flex-direction:column;align-items:flex-start;gap:.55rem}
.save-alt{font-size:.88rem;color:var(--field-2)}
@media (max-width:980px){.save-card{grid-template-columns:auto minmax(0,1fr)}.save-acts{grid-column:1/-1}}
@media (max-width:640px){.save-badge{width:84px;height:84px}.save-badge b{font-size:1.55rem}.save-acts,.save-acts .btn{width:100%}.br-acts .btn{flex:1 1 100%}}
@media (max-width:640px){.save-card{grid-template-columns:minmax(0,1fr);gap:1rem}.save-badge{width:76px;height:76px;box-shadow:0 0 0 5px rgba(176,138,74,.28)}.save-badge b{font-size:1.4rem}}

/* ===== Property banner: photo shown whole inside the arch (for portrait or smaller photos) ===== */
.p-hero--arch > .frame img{filter:blur(26px) saturate(1.15);transform:scale(1.18)}
.p-hero--arch::after{background:linear-gradient(90deg,rgba(14,18,30,.82) 0%,rgba(14,18,30,.55) 55%,rgba(14,18,30,.3) 100%)}
.p-hero-arch{position:absolute;z-index:4;top:50%;transform:translateY(-50%);right:max(var(--gut),calc((100vw - var(--wrap)) / 2 + var(--gut)));height:min(80%,620px);aspect-ratio:5/6.4}
.p-hero-arch .arch-wrap,.p-hero-arch .arch{width:100%;height:100%}
.p-hero--arch .p-hero-in .wrap > *{max-width:min(40rem,52vw)}
.p-hero--arch .p-hero-in{top:0;bottom:0;display:flex;align-items:center}
.p-hero--arch .p-hero-in .wrap{width:100%}
@media (max-width:900px){
  .p-hero-arch{display:none}
  .p-hero--arch > .frame img{filter:none;transform:none}
  .p-hero--arch::after{background:linear-gradient(180deg,rgba(18,14,12,0) 30%,rgba(18,14,12,.72) 100%)}
  .p-hero--arch .p-hero-in{top:auto;bottom:clamp(2rem,5vw,4.25rem);display:block}
  .p-hero--arch .p-hero-in .wrap > *{max-width:none}
}
@media (max-width:900px){.p-hero--arch::after{background:linear-gradient(180deg,rgba(14,18,30,.2) 0%,rgba(14,18,30,.62) 32%,rgba(14,18,30,.86) 100%)}}

/* ===== Guest reviews ===== */
.reviews.has{align-items:stretch}
.rv{margin:0;border:1px solid var(--line);background:var(--card);border-radius:16px;padding:1.6rem 1.6rem 1.4rem;display:flex;flex-direction:column;gap:1.1rem;min-height:0;justify-content:flex-start}
.sec-stone .rv:not(.rv--feature){background:var(--tin)}
.rv blockquote{margin:0}
.rv-stars{color:var(--lustre);letter-spacing:.18em;font-size:.95rem;margin:0}
.rv-title{font-family:var(--display);font-size:1.32rem;line-height:1.28;color:var(--ink);margin:0 0 .85rem}
.rv-body{color:var(--ink-2);font-size:.98rem;line-height:1.6;margin:0}
.rv figcaption{margin-top:auto;display:flex;flex-direction:column;gap:.1rem;padding-top:.9rem;border-top:1px solid var(--line)}
.rv-name{font-weight:500;color:var(--ink)}
.rv-meta{font-size:.9rem;color:var(--ink-3)}
.rv-prop{font-size:.85rem;color:var(--accent);margin-top:.3rem}
.rv--feature{grid-column:1/-1;background:var(--field);border-color:transparent;color:var(--on-field);display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:1.5rem 3rem;align-items:end;padding:clamp(1.75rem,4vw,3rem)}
.rv--feature .rv-stars{grid-column:1/-1;color:#D7B271}
.rv--feature .rv-title{font-size:clamp(1.7rem,1.6vw + 1rem,2.5rem);line-height:1.15;color:var(--on-field);max-width:24ch;margin-bottom:1.1rem}
.rv--feature .rv-body{color:var(--field-2);font-size:1.05rem;max-width:62ch}
.rv--feature figcaption{border-top:0;border-left:1px solid var(--field-line);padding:0 0 0 1.25rem}
.rv--feature .rv-name{color:var(--on-field)}
.rv--feature .rv-meta{color:var(--field-2)}
.rv--feature .rv-prop{color:#E2C48E}
.rv-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.75rem 2rem;margin-top:1.4rem}
.rv-foot p{margin:0;font-size:.92rem}
@media (max-width:900px){.rv--feature{grid-template-columns:minmax(0,1fr)}.rv--feature figcaption{border-left:0;border-top:1px solid var(--field-line);padding:1rem 0 0}}

/* ===== Property banner video ===== */
.p-hero > .frame > video{z-index:1}
.p-hero .p-vid{position:absolute;top:1rem;right:1rem;z-index:6;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border:0;border-radius:50%;background:rgba(24,20,18,.55);color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);cursor:pointer}
.p-hero .p-vid svg{width:18px;height:18px}
.p-hero--video::after{background:linear-gradient(90deg,rgba(14,18,30,.66) 0%,rgba(14,18,30,.34) 45%,rgba(14,18,30,0) 75%),linear-gradient(180deg,rgba(18,14,12,0) 35%,rgba(18,14,12,.6) 100%)}
@media (max-width:900px){.p-hero--video::after{background:linear-gradient(180deg,rgba(14,18,30,.1) 0%,rgba(14,18,30,.55) 40%,rgba(14,18,30,.82) 100%)}}

/* Home headline: always three lines */
.hero h1 span{display:block;width:max-content;max-width:none;white-space:nowrap}
.hero-copy{min-width:0}
.hero h1{max-width:100%}
@media (max-width:900px){.hero-grid{grid-template-columns:minmax(0,1fr)}}

/* ===== Very small phones ===== */
@media (max-width:420px){.btn{white-space:normal;text-align:center;max-width:100%}}
@media (max-width:360px){
  .header-in{gap:.5rem}
  .brand{gap:.5rem}
  .brand-word{font-size:.98rem;letter-spacing:.22em;margin-right:-.22em}
  .lang a{min-width:36px;padding:0 .5rem}
  .header-actions .icon-btn{width:42px;height:42px}
  .mbar{gap:.45rem}
  .mbar .btn{padding-inline:.85rem}
}

/* ---- Button groups: one straight row when they fit, an even stack when they don't ---- */
.btn-row{align-items:center}
.btn-row.is-stacked,.br-acts.is-stacked{display:grid;grid-template-columns:minmax(0,max-content);justify-content:start}
.btn-row.is-stacked > .btn,.br-acts.is-stacked > .btn{width:100%}
.wa-band .btn-row.is-stacked,.br-acts.is-stacked{justify-content:end}
@media (max-width:900px){.wa-band .btn-row.is-stacked{justify-content:start}}
/* a little less side padding in the mid range, so more rows fit on one line */
@media (min-width:641px) and (max-width:1279px){.btn{padding-left:1.15rem;padding-right:1.15rem}}
/* home hero: give the words a little more room beside the arch on small laptops */
@media (min-width:901px) and (max-width:1199px){.hero-grid{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr)}}
/* phones: every button row stacks at full width, all the same size */
@media (max-width:640px){
  .btn-row{display:grid;grid-template-columns:minmax(0,1fr)}
  .btn-row > .btn{width:100%}
}
/* Blue Boutique booking band */
.cta-acts{display:grid;gap:1.4rem}
.cta-air{display:flex;align-items:center;flex-wrap:wrap;gap:.6rem 1rem;padding-top:1.4rem;border-top:1px solid var(--line)}
.cta-air-k{margin:0;font-size:.95rem;color:var(--ink-2)}
@media (max-width:640px){.cta-air{display:grid}}
/* WhatsApp band: the buttons take the room they need, the words take the rest */
@media (min-width:901px){.wa-band{grid-template-columns:minmax(0,1fr) auto}}
/* photo-and-words sections: even columns on small laptops so the buttons sit in one line */
@media (min-width:901px) and (max-width:1279px){.split,.split.rev{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,4.5vw,4rem)}}
@media (min-width:901px) and (max-width:1279px){.direct,.loc{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,4.5vw,4rem)}}
.rating .rt{min-width:0}
/* home hero: the two buttons and the Dénia / Valencia / Dubai tabs share one straight line */
@media (min-width:901px){
  .hero-copy{padding-bottom:0}
  .arch-tabs{min-height:50px;align-items:center;align-content:center}
}

/* WhatsApp buttons: deep green #1F6E4A with white text (6.2:1) throughout the light site.
   Dark mode uses WhatsApp green #25D366 with near-black #111B21 text (8.8:1); white on #25D366 is only 2:1. */
.fab,.p-bar .icon-btn,.wa-ic{color:var(--on-wa)}
.fab:hover,.p-bar .icon-btn:hover,.wa-ic:hover{background:var(--wa-2);border-color:var(--wa-2);color:var(--on-wa)}
.btn-wa:hover{color:var(--on-wa)}

/* One WhatsApp green on every screen: the deep green with white text. On dark backgrounds
   (navy bands and cards, the footer, photo heroes) a thin light outline keeps the button's shape crisp. */
.sec-field,.site-footer,.group-card,.save-card,.rv--feature,.tile.dark,.p-hero{--wa-ring:rgba(247,244,238,.55)}
.btn-wa{border-color:var(--wa-ring,transparent)}
.btn-wa:hover{border-color:var(--wa-ring,transparent)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .btn-wa{border-color:transparent}}
:root[data-theme="dark"] .btn-wa{border-color:transparent}

/* Property heroes: a soft shade behind the words, so they read on bright photos (white walls, sky).
   The left side, where the words sit, is shaded; the right side of the photo stays bright. */
.p-hero:not(.p-hero--arch)::after{background:
  linear-gradient(90deg,rgba(12,16,28,.8) 0%,rgba(12,16,28,.62) 30%,rgba(12,16,28,.28) 58%,rgba(12,16,28,0) 78%),
  linear-gradient(180deg,rgba(12,16,28,0) 45%,rgba(12,16,28,.5) 100%)}
.p-hero-in{text-shadow:0 1px 2px rgba(10,12,20,.5),0 0 22px rgba(10,12,20,.4)}
.p-hero-in .btn,.p-hero-in .sh{text-shadow:none}
.p-hero .where .type{opacity:1;color:rgba(247,244,238,.92)}
.p-hero .sub .ln{display:block}
@media (max-width:900px){
  .p-hero:not(.p-hero--arch)::after{background:linear-gradient(180deg,rgba(12,16,28,.2) 0%,rgba(12,16,28,.6) 30%,rgba(12,16,28,.88) 100%)}
}
.p-hero .where .ph{display:inline}
/* floating WhatsApp button: hidden at the top of the home page, where the booking bar is */
.fab{transition:opacity .25s,transform .25s,visibility .25s}
body.fab-hide .fab{opacity:0;visibility:hidden;transform:translateY(12px)}

/* Live map (click to load) */
.map-embed{position:relative;aspect-ratio:4/3;border-radius:var(--r);overflow:hidden;background:var(--stone);border:1px solid var(--line)}
.map-embed .art{position:absolute;inset:0;opacity:.85}
.map-embed .art svg{width:100%;height:100%;display:block}
.map-embed .map-cta{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6rem;text-align:center;padding:1rem}
.map-embed .map-show{box-shadow:0 10px 30px -12px rgba(20,20,30,.45);background:var(--card);color:var(--ink);border-color:var(--line-2)}
.map-embed .map-show:hover{background:var(--tin)}
.map-embed .map-show svg{width:20px;height:20px}
.map-embed .map-note{margin:0;font-size:.85rem;color:var(--ink-2);background:color-mix(in srgb,var(--card) 85%,transparent);padding:.2rem .6rem;border-radius:999px}
.map-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.map-embed .map-cta{justify-content:flex-end;padding-bottom:clamp(1rem,4%,1.75rem)}
/* destination pages: list of stays beside the map */
.dm-list{list-style:none;margin:0 0 1.5rem;padding:0}
.dm-list li{padding:.85rem 0;border-top:1px solid var(--line)}
.dm-list li:last-child{border-bottom:1px solid var(--line)}
.dm-list .dm-name{display:block;font-family:var(--display);font-size:1.3rem;color:var(--ink);text-decoration:none}
.dm-list .dm-name:hover{text-decoration:underline;text-underline-offset:.2em}
.dm-list span{display:block;font-size:.95rem;color:var(--ink-2);margin-top:.15rem}
/* home: with two destinations, the pair of arches sits centred instead of leaving an empty third column */
@media (min-width:901px){.portals.n2{grid-template-columns:repeat(2,minmax(0,420px));justify-content:center;gap:clamp(2rem,6vw,5rem)}}

/* When to come: four seasons */
.seasons{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(1.25rem,3vw,2.5rem)}
.season{border-top:1px solid var(--line-2);padding-top:1.25rem}
.season-m{margin:0 0 .35rem;font-size:.9rem;color:var(--accent)}
.season h3{font-size:1.5rem;margin:0 0 .6rem}
.season p:last-child{margin:0;color:var(--ink-2)}
@media (max-width:1100px){.seasons{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.seasons{grid-template-columns:minmax(0,1fr)}}
/* Book page: how direct booking works */
.dsteps{margin:clamp(2rem,4vw,3rem) 0;padding:clamp(1.5rem,3vw,2.25rem);border:1px solid var(--line);border-radius:20px;background:var(--card)}
.dsteps h2{margin:0 0 1.5rem}
.dsteps ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.5rem}
.dsteps li{position:relative}
.dsteps .n{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:var(--cobalt);color:var(--on-cobalt);font-weight:500;margin-bottom:.75rem}
.dsteps h3{font-size:1.15rem;margin:0 0 .35rem}
.dsteps li p{margin:0;color:var(--ink-2);font-size:.97rem}
.dsteps-note{margin:1.5rem 0 0;padding-top:1.25rem;border-top:1px solid var(--line);font-size:.95rem;color:var(--ink-2)}
@media (max-width:980px){.dsteps ol{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.dsteps ol{grid-template-columns:minmax(0,1fr)}}
.map-embed.is-on{display:flex;flex-direction:column}
.map-embed.is-on iframe{position:static;flex:1;min-height:0}
.map-embed .map-out{display:flex;align-items:center;justify-content:center;gap:.4rem;padding:.55rem .75rem;font-size:.88rem;color:var(--ink-2);background:var(--card);border-top:1px solid var(--line);text-decoration:none}
.map-embed .map-out:hover{color:var(--ink);text-decoration:underline}
.map-embed .map-out svg{width:14px;height:14px}

/* Valencia: the building and its floors (no empty grid cells) */
.bstack{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:clamp(1rem,2vw,1.5rem);align-items:stretch}
.bstack-whole,.bfloor{color:inherit;text-decoration:none;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;transition:border-color .2s,box-shadow .2s,transform .2s}
.bstack-whole:hover,.bfloor:hover{border-color:var(--line-2);box-shadow:0 18px 40px -28px rgba(30,28,40,.45);transform:translateY(-2px)}
.bstack-whole{display:flex;flex-direction:column}
.bstack-media{position:relative;flex:1;min-height:360px}
.bstack-media .frame{position:absolute;inset:0}
.bstack-media .badge{z-index:5}
.bstack-tx{padding:1.1rem 1.5rem 1.4rem}
.bstack-tx .card-dest{margin:0 0 .4rem}
.bstack-tx h3{font-size:1.65rem;margin:0 0 .45rem}
.bstack-tx p{color:var(--ink-2);margin:0 0 .9rem;max-width:44ch}
.bstack-floors{list-style:none;margin:0;padding:0;display:grid;grid-template-rows:repeat(3,minmax(0,1fr));gap:clamp(1rem,2vw,1.5rem)}
.bstack-floors li{display:flex}
.bfloor{flex:1;display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr) auto;align-items:center;gap:1.25rem;padding-right:1.25rem;min-height:170px}
.bfloor-media{position:relative;align-self:stretch;min-height:150px}
.bfloor-media .frame{position:absolute;inset:0}
.bfloor-tx{padding:1rem 0}
.bfloor-k{margin:0 0 .3rem;font-size:.85rem;color:var(--accent)}
.bfloor h3{font-size:1.4rem;margin:0 0 .35rem}
.bfloor-tx > p:last-child{margin:0;color:var(--ink-2);font-size:.95rem}
.bfloor-go{font-size:1.4rem;color:var(--ink-3);transition:transform .2s,color .2s}
.bfloor:hover .bfloor-go{transform:translateX(3px);color:var(--ink)}
@media (max-width:900px){
  .bstack{grid-template-columns:minmax(0,1fr)}
  .bstack-media{min-height:0;aspect-ratio:4/3;flex:none}
  .bfloor{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr) auto;min-height:0}
}
@media (max-width:520px){
  .bfloor{grid-template-columns:110px minmax(0,1fr);padding-right:1rem;gap:1rem}
  .bfloor-media{min-height:120px}
  .bfloor-go{display:none}
  .bfloor h3{font-size:1.2rem}
}

/* Blue Boutique drawing, modelled on the real facade */
.bldg .facade{fill:color-mix(in srgb,var(--cobalt) 9%,var(--card))}
.bldg .fl .hit{fill:transparent}
.bldg .box{fill:var(--card);stroke:var(--ink);stroke-width:1;stroke-opacity:.6}
.bldg .bloom{fill:#D46A93;fill-opacity:.8}
.bldg .leaf{fill:#6E9A68;fill-opacity:.8}
.bldg .door rect{fill:var(--card);stroke:var(--ink);stroke-width:1.4;transition:fill .25s}
.bldg .door.on rect{fill:var(--accent)}
.bldg .door.on .detail{stroke:var(--on-cobalt);stroke-opacity:.6}
.bldg .knock{fill:var(--lustre)}
.legend i{border-radius:2px}
.legend .lg-stairs{display:inline-block;width:20px;border-top:2px dashed var(--accent)}
.r-short{margin:.5rem 0 0 !important;font-size:.9rem !important;color:var(--ink) !important;font-weight:500}
.r-short .star{color:var(--lustre)}
.unit-rating{margin:.25rem 0 .6rem}
/* review cards share the row evenly: two cards take half each, one takes the full width */
.reviews.has.n2{grid-template-columns:repeat(2,minmax(0,1fr))}
.reviews.has.n1{grid-template-columns:minmax(0,1fr)}
@media (max-width:900px){.reviews.has.n2{grid-template-columns:minmax(0,1fr)}}
.reviews.has.n4{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:900px){.reviews.has.n4{grid-template-columns:minmax(0,1fr)}}
/* two featured reviews (one per apartment) sit side by side */
.reviews.has.f2{grid-template-columns:repeat(2,minmax(0,1fr))}
.reviews.has.f2 .rv--feature{grid-column:auto;display:flex;flex-direction:column;align-items:stretch;gap:0}
.reviews.has.f2 .rv--feature .rv-stars{margin-bottom:1.5rem}
.reviews.has.f2 .rv--feature .rv-body{margin-bottom:1.5rem}
.reviews.has.f2 .rv--feature .rv-title{font-size:clamp(1.45rem,1vw + 1rem,1.9rem)}
.reviews.has.f2 .rv--feature figcaption{border-left:0;border-top:1px solid var(--field-line);padding:1rem 0 0;margin-top:auto}
@media (max-width:900px){.reviews.has.f2{grid-template-columns:minmax(0,1fr)}}
/* three featured reviews (one per apartment): a column per apartment, featured review on top */
.reviews.has.f3{grid-template-columns:repeat(3,minmax(0,1fr))}
.reviews.has.f3 .rv--feature{grid-column:auto;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:clamp(1.6rem,2.4vw,2.25rem)}
.reviews.has.f3 .rv--feature .rv-stars{margin-bottom:1.25rem}
.reviews.has.f3 .rv--feature .rv-title{font-size:clamp(1.35rem,.8vw + 1rem,1.7rem)}
.reviews.has.f3 .rv--feature .rv-body{font-size:1rem;margin-bottom:1.5rem}
.reviews.has.f3 .rv--feature figcaption{border-left:0;border-top:1px solid var(--field-line);padding:1rem 0 0;margin-top:auto}
@media (min-width:901px) and (max-width:1180px){
  .reviews.has.f3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .reviews.has.f3 .rv--feature{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:1.5rem 3rem;align-items:end;padding:clamp(1.75rem,4vw,3rem)}
  .reviews.has.f3 .rv--feature .rv-stars{margin-bottom:0}
  .reviews.has.f3 .rv--feature .rv-body{margin-bottom:0}
  .reviews.has.f3 .rv--feature figcaption{border-top:0;border-left:1px solid var(--field-line);padding:0 0 0 1.25rem;margin-top:0}
}
/* phones and tablets: more than three reviews become a swipeable row instead of a long stack */
@media (max-width:900px){
  .reviews.has.swipe{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:1rem;margin-inline:calc(-1 * var(--gut));padding-inline:var(--gut);scroll-padding-inline:var(--gut);scrollbar-width:none;align-items:stretch;padding-bottom:.25rem}
  .reviews.has.swipe::-webkit-scrollbar{display:none}
  .reviews.has.swipe > .rv{flex:0 0 min(86%,440px);scroll-snap-align:start}
  .reviews.has.swipe .rv--feature{display:flex;flex-direction:column;align-items:stretch;gap:0;padding:1.6rem}
  .reviews.has.swipe .rv--feature .rv-stars{margin-bottom:1.1rem}
  .reviews.has.swipe .rv--feature .rv-title{font-size:1.4rem}
  .reviews.has.swipe .rv--feature .rv-body{font-size:1rem;margin-bottom:1.25rem}
  .reviews.has.swipe .rv--feature figcaption{border-left:0;border-top:1px solid var(--field-line);padding:1rem 0 0;margin-top:auto}
  .reviews.has.swipe:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
}

/* Private chef & catering: the dark feature card with two portrait photos, the second set lower */
.chef-media{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(.75rem,1.5vw,1.25rem);align-items:start}
.chef-media .frame{aspect-ratio:3/4;border-radius:16px;overflow:hidden;margin:0}
.chef-media .cm1{margin-top:clamp(2rem,6vw,4.5rem)}
.chef-card{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}
.chef-card h2{max-width:18ch}
@media (max-width:900px){.chef-card{grid-template-columns:minmax(0,1fr)}}

/* home hero tabs: stay name on top, city underneath */
.arch-tabs.at-stays{gap:.5rem}
.arch-tabs.at-stays button{display:inline-flex;flex-direction:column;align-items:center;border-radius:16px;padding:.5rem 1.15rem .55rem;line-height:1.15}
.arch-tabs.at-stays .at-name{font-size:.98rem}
.arch-tabs.at-stays .at-city{font-size:.78rem;opacity:.72;margin-top:.12rem;letter-spacing:.02em}

/* a city with one stay: the stay card, then the map filling the rest of the row (same height as the photo) */
.stay-map{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:3.25rem clamp(1.25rem,2.4vw,2.25rem);align-items:start}
.stay-map .sm-map .map-embed{aspect-ratio:8/5}
.sm-tx h3{font-size:1.65rem;margin:1.15rem 0 .45rem}
.sm-tx p{color:var(--ink-2);margin:0 0 1rem;max-width:52ch}
.sm-tx .maps-row{margin-top:0}
@media (max-width:900px){.stay-map{grid-template-columns:minmax(0,1fr);gap:2.25rem}.stay-map .sm-map .map-embed{aspect-ratio:4/3}}

/* both columns end in a button, lined up at the bottom */
.stay-map{align-items:stretch}
.stay-map .card,.stay-map .sm-map,.stay-map .sm-tx{display:flex;flex-direction:column}
.stay-map .sm-tx{flex:1}
.stay-map .card .sm-cta,.stay-map .sm-tx .maps-row{margin-top:auto}
.stay-map .card .sm-cta{align-self:flex-start}
.stay-map .card:hover .sm-cta{background:var(--ink)}
.sm-tx .sm-area{margin-top:1.15rem}
.sm-tx .sm-area svg{width:14px;height:14px;flex:none;color:var(--accent)}
.sm-tx h3{margin-top:0}
.stay-map .sm-tx .maps-row{margin-bottom:0}

/* Valencia: the three apartments in a row under the card + map, same three-column grid */
.sm-floors{list-style:none;margin:clamp(1.75rem,3vw,2.5rem) 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1.25rem,2.4vw,2.25rem)}
.sm-floors li{display:flex}
@media (min-width:901px){
  .sm-floors .bfloor{display:flex;flex-direction:column;align-items:stretch;gap:0;padding:0;min-height:0}
  .sm-floors .bfloor-media{aspect-ratio:4/3;min-height:0;flex:none}
  .sm-floors .bfloor-tx{padding:1rem 1.25rem 1.25rem;flex:1;display:flex;flex-direction:column}
  .sm-floors .bfloor-tx .r-short{margin-top:auto !important;padding-top:.5rem}
  .sm-floors .bfloor-go{position:absolute;right:1.1rem;bottom:1.1rem}
  .sm-floors .bfloor{position:relative}
}
@media (max-width:900px){.sm-floors{grid-template-columns:minmax(0,1fr);gap:1rem}}
@media (max-width:640px){.stay-map .card .sm-cta{align-self:stretch;width:100%}}

/* map links under a things-to-do item */
.hl .hl-maps{display:flex;flex-wrap:wrap;gap:.35rem 1.25rem;margin:.7rem 0 0}
.hl .hl-maps .link{font-size:.95rem}

/* building drawing: the apartments' balconies (right) in green, the staircase-side ones (left) faded */
.bldg .balc-on .wall{fill:#2F7D57;stroke:#2F7D57}
.bldg .balc-on .detail{stroke:#2F7D57;stroke-opacity:.95;stroke-width:1.5}
.bldg .balc-off .wall{fill:var(--card);stroke-opacity:.3}
.bldg .balc-off .detail{stroke-opacity:.2;stroke-dasharray:2 3}
.legend .lg-balc{display:inline-block;width:20px;height:6px;border-radius:2px;background:#2F7D57}
.legend .lg-balc.off{background:transparent;border:1.5px dashed color-mix(in srgb,var(--ink) 35%,transparent);height:7px}
