/* Self-hosted Google Fonts (SIL OFL): Gloock, Hanken Grotesk. latin + latin-ext subsets. */
@font-face {
  font-family: 'Gloock';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../assets/fonts/gloock-normal-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Gloock';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../assets/fonts/gloock-normal-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Hanken Grotesk';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(../assets/fonts/hanken-grotesk-italic-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Hanken Grotesk';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(../assets/fonts/hanken-grotesk-italic-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Hanken Grotesk';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(../assets/fonts/hanken-grotesk-normal-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Hanken Grotesk';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(../assets/fonts/hanken-grotesk-normal-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Palette: dusk ink, night indigo, travertine, sand, lantern amber, pool teal */
:root{
  --ink:#1a2130; --night:#243049; --night-2:#2d3a57;
  --trav:#e6ddcd; --trav-2:#d8ccb7; --sand:#c7a77b;
  --lantern:#f0a851; --lantern-2:#ffcf8f; --pool:#2c8a91;
  --text:#ece5d8; --muted:#b3ab9e; --ink-text:#1f2533; --ink-muted:#5d5a55;
  --display:"Gloock", "Times New Roman", serif;
  --body:"Hanken Grotesk", system-ui, sans-serif;
  --wrap:min(1240px, 100% - clamp(40px, 8vw, 128px));
  --ease:cubic-bezier(.2,.7,.1,1);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
/* Lenis (MIT, darkroom.engineering) owns smooth scrolling when active */
html.lenis,html.lenis body{height:auto}
html.lenis{scroll-behavior:auto}
.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}
.lenis [data-lenis-prevent]{overscroll-behavior:contain}
.lenis.lenis-smooth iframe{pointer-events:none}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero__canvas{transition:none}}
body{margin:0;background:var(--ink);color:var(--text);font:400 17px/1.6 var(--body);-webkit-font-smoothing:antialiased;font-feature-settings:"tnum" 0}
img{max-width:100%;display:block}
a{color:inherit}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--lantern);outline-offset:3px;border-radius:2px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.skip{position:fixed;left:16px;top:-60px;z-index:200;background:var(--lantern);color:var(--ink);padding:10px 14px;text-decoration:none}
.skip:focus{top:16px}
.wrap{width:var(--wrap);margin-inline:auto}
body.is-loading{overflow:hidden}

/* ---------- loader */
.loader{position:fixed;inset:0;z-index:150;background:var(--ink);display:grid;place-items:center;transition:opacity .9s var(--ease), visibility .9s}
.loader.is-done{opacity:0;visibility:hidden}
.loader__inner{width:min(420px,80vw)}
.loader__name{font:400 clamp(26px,3vw,34px)/1.1 var(--display);margin:0}
.loader__place{margin:.3em 0 3.2rem;color:var(--muted);font-size:15px}
.loader__count{font:400 clamp(88px,14vw,160px)/.9 var(--display);color:var(--lantern-2);font-variant-numeric:tabular-nums;display:flex;align-items:flex-start}
.loader__count small{font-size:.3em;margin:.35em 0 0 .15em;color:var(--muted)}
.loader__bar{height:1px;background:rgba(236,229,216,.18);margin-top:1.5rem;overflow:hidden}
.loader__bar span{display:block;height:100%;width:100%;background:var(--lantern);transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.3,.7,.2,1)}
.loader__note{color:var(--muted);font-size:14px;margin-top:.8rem;font-variant-numeric:tabular-nums}

/* ---------- cursor */
.cursor{position:fixed;inset:0;pointer-events:none;z-index:300;display:none}
@media (hover:hover) and (pointer:fine){ body.has-cursor .cursor{display:block} body.has-cursor, body.has-cursor a, body.has-cursor button, body.has-cursor .row{cursor:none} body.has-cursor input, body.has-cursor textarea{cursor:text} }
.cursor__dot,.cursor__ring{position:absolute;left:0;top:0;border-radius:50%;will-change:transform}
.cursor__dot{width:6px;height:6px;margin:-3px 0 0 -3px;background:var(--lantern-2)}
.cursor__ring{width:38px;height:38px;margin:-19px 0 0 -19px;border:1px solid rgba(255,207,143,.6);display:grid;place-items:center;transition:width .35s var(--ease),height .35s var(--ease),margin .35s var(--ease),background-color .35s,border-color .35s}
.cursor__label{font:500 13px/1 var(--body);color:var(--ink);opacity:0;transition:opacity .2s}
.cursor.is-link .cursor__ring{width:54px;height:54px;margin:-27px 0 0 -27px;border-color:var(--lantern)}
.cursor.is-view .cursor__ring{width:86px;height:86px;margin:-43px 0 0 -43px;background:var(--lantern-2);border-color:transparent}
.cursor.is-view .cursor__label{opacity:1}
.cursor.is-view .cursor__dot{opacity:0}
.cursor.is-down .cursor__ring{transform-origin:center}

/* ---------- nav */
.nav{position:fixed;inset:0 0 auto 0;z-index:60;display:flex;align-items:center;gap:32px;padding:20px clamp(20px,4vw,56px);transition:background-color .4s, padding .4s, transform .5s var(--ease)}
.nav.is-solid{background:rgba(26,33,48,.86);backdrop-filter:blur(10px);padding-block:12px}
.nav.is-hidden{transform:translateY(-100%)}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;margin-right:auto}
.brand__mark{width:40px;height:40px;border:1px solid var(--lantern);display:grid;place-items:center;font:400 17px var(--display);color:var(--lantern-2);border-radius:50% 50% 0 0}
.brand__text{font-weight:600;font-size:15px;line-height:1.15}
.brand__text small{display:block;font-weight:400;color:var(--muted);font-size:13px}
.nav__links{display:flex;gap:28px}
.nav__links a{text-decoration:none;font-size:15px;color:var(--text);opacity:.85;position:relative}
.nav__links a::after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:1px;background:var(--lantern);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease)}
.nav__links a:hover{opacity:1}.nav__links a:hover::after{transform:scaleX(1)}

/* ---------- buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;padding:15px 26px;border-radius:999px;border:1px solid transparent;text-decoration:none;font-weight:600;font-size:16px;line-height:1;background:none;cursor:pointer;transition:background-color .3s,color .3s,border-color .3s;will-change:transform}
.btn--primary{background:var(--lantern);color:#221a10}
.btn--primary:hover{background:var(--lantern-2)}
.btn--ghost{border-color:rgba(236,229,216,.4);color:var(--text)}
.btn--ghost:hover{border-color:var(--text)}
.btn--line{border-color:rgba(240,168,81,.7);color:var(--lantern-2)}
.btn--line:hover{background:var(--lantern);color:#221a10}
.btn--small{padding:11px 18px;font-size:14px}
.btn[disabled]{opacity:.35;pointer-events:none}
.text-link{color:var(--lantern-2);text-underline-offset:4px}

/* ---------- hero */
.hero{position:relative;height:600vh}
.hero__stage{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;background:#1b1a1f var(--poster,none) center/cover no-repeat}
.hero__canvas{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity 1.2s var(--ease)}
.hero__stage.has-frame .hero__canvas{opacity:1}
.hero__vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(120% 90% at 50% 45%,transparent 55%,rgba(10,12,20,.55) 100%)}
.hero__scrim{position:absolute;inset:0;pointer-events:none}
.hero__scrim::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,24,36,.5),transparent 20%,transparent 78%,rgba(20,24,36,.45))}
.scrim-l,.scrim-r{position:absolute;inset:0}
.scrim-l{background:linear-gradient(90deg,rgba(18,22,34,.78) 0%,rgba(18,22,34,.42) 30%,rgba(18,22,34,0) 56%)}
.scrim-r{background:linear-gradient(270deg,rgba(18,22,34,.78) 0%,rgba(18,22,34,.42) 30%,rgba(18,22,34,0) 56%);opacity:0}
.hero__grain{position:absolute;inset:-50%;pointer-events:none;opacity:.07;background-image:url("../assets/grain.webp");mix-blend-mode:overlay}
.chapter{--y:0px;position:absolute;top:50%;width:min(470px,40vw);transform:translateY(calc(-50% + var(--y)));visibility:hidden}
.chapter>*{opacity:0;will-change:opacity,transform}
.chapter[data-side="left"]{left:clamp(24px,6vw,96px)}
.chapter[data-side="right"]{right:clamp(24px,6vw,96px)}
.chapter__kicker{margin:0 0 1rem;color:var(--lantern-2);font-size:16px;font-weight:500;display:flex;align-items:center;gap:12px}
.chapter__kicker::before{content:"";width:28px;height:1px;background:currentColor}
.chapter__title{font:400 clamp(44px,5.4vw,84px)/.98 var(--display);margin:0 0 1.4rem;letter-spacing:-.01em;text-wrap:balance;text-shadow:0 2px 30px rgba(10,12,20,.35)}
h1.chapter__title{font-size:clamp(50px,6.4vw,100px)}
.chapter__body{font-size:clamp(17px,1.3vw,19px);line-height:1.6;color:#efe7da;max-width:34em;margin:0;text-shadow:0 1px 16px rgba(10,12,20,.5)}
.chapter__clusters{margin:1.4rem 0 0;color:var(--muted);font-size:15px;line-height:1.7;max-width:30em}
.chapter__actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:2rem}
.chapter__facts{display:flex;gap:32px;margin:2rem 0 0}
.chapter__facts div{border-top:1px solid rgba(240,168,81,.5);padding-top:10px}
.chapter__facts dt{font-size:13px;color:var(--muted)}
.chapter__facts dd{margin:2px 0 0;font:400 24px/1.1 var(--display)}
.hero__count{position:absolute;right:clamp(24px,6vw,96px);bottom:30px;margin:0;font:400 28px/1 var(--display);color:var(--lantern-2);font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:8px}
.hero__count small{font:500 13px var(--body);color:var(--muted);letter-spacing:.08em}
.hero__progress{position:absolute;left:clamp(24px,6vw,96px);bottom:36px;margin:0;padding:0;list-style:none;display:flex;gap:6px;counter-reset:ch}
.hero__progress li{counter-increment:ch;font-size:0;width:36px;height:2px;background:rgba(236,229,216,.25);position:relative;overflow:hidden}
.hero__progress li::after{content:"";position:absolute;inset:0;background:var(--lantern-2);transform:scaleX(var(--p,0));transform-origin:left}
.hero__cue{position:absolute;left:50%;bottom:28px;transform:translateX(-50%);margin:0;font-size:14px;color:var(--text);opacity:.8;display:flex;flex-direction:column;align-items:center;gap:10px;transition:opacity .5s}
.hero__cue::after{content:"";width:1px;height:42px;background:linear-gradient(var(--text),transparent);animation:cue 2.2s var(--ease) infinite}
@keyframes cue{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

/* ---------- sections shared */
.sec-head{max-width:720px;margin-bottom:48px}
.sec-title{font:400 clamp(38px,4.4vw,64px)/1.02 var(--display);margin:0 0 18px;letter-spacing:-.01em;text-wrap:balance}
.sec-lede{font-size:clamp(17px,1.4vw,20px);color:var(--muted);margin:0;max-width:36em}
.fine{font-size:14px;color:var(--muted);margin-top:28px;max-width:70ch}
.reveal{opacity:0;transform:translateY(28px);transition:opacity 1s var(--ease),transform 1s var(--ease)}
.reveal.is-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}

/* ---------- listings */
.listings{background:var(--trav);color:var(--ink-text);padding:140px 0 120px;position:relative}
.listings .sec-lede,.listings .fine{color:var(--ink-muted)}
.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:40px}
.chip{border:1px solid rgba(31,37,51,.25);background:none;border-radius:999px;padding:9px 16px;font-size:15px;cursor:pointer;color:var(--ink-text);transition:background-color .25s,color .25s,border-color .25s}
.chip span{opacity:.55;margin-left:4px;font-variant-numeric:tabular-nums}
.chip:hover{border-color:var(--ink-text)}
.chip.is-on{background:var(--ink-text);color:var(--trav);border-color:var(--ink-text)}
.chip--find{margin-left:auto;border-style:dashed}
.table-head,.row__link{display:grid;grid-template-columns:120px minmax(0,1fr) 56px 104px 104px 196px;gap:20px;align-items:baseline}
.table-head{font-size:13px;color:var(--ink-muted);padding:0 0 12px;border-bottom:1px solid rgba(31,37,51,.35)}
.table-head span:nth-child(n+3){text-align:right}
.rows{list-style:none;margin:0;padding:0}
.row{border-bottom:1px solid rgba(31,37,51,.18);transition:opacity .4s, background-color .3s}
.row[hidden]{display:none}
.row__link{width:100%;text-align:left;border:0;background:none;padding:26px 0;cursor:pointer;color:inherit;position:relative}
.row__cluster{font-size:15px;color:var(--ink-muted)}
.row__cluster b{display:block;font-weight:500;color:var(--ink-text);font-size:16px}
.row__title{font:400 clamp(22px,2vw,30px)/1.15 var(--display);transition:transform .45s var(--ease)}
.row__num{text-align:right;font-variant-numeric:tabular-nums;font-size:16px}
.row__num small{display:block;font-size:12px;color:var(--ink-muted)}
.row__price{white-space:nowrap;text-align:right;font:400 clamp(20px,1.7vw,26px)/1.1 var(--display);font-variant-numeric:tabular-nums}
.row__mcl{display:none;font-weight:600;color:var(--ink-text)}
.row__title .sep{font-style:normal;color:var(--sand);opacity:.9}
.row__meta{display:block;font:400 13px var(--body);color:var(--ink-muted);margin-top:6px}
.row__thumb{display:none}
@media (hover:hover) and (pointer:fine){.rows:hover .row{opacity:.45}.rows:hover .row:hover{opacity:1}.row:hover .row__title{transform:translateX(10px)}}
.peek{position:fixed;left:0;top:0;width:340px;margin:0;pointer-events:none;z-index:40;opacity:0;transform:translate3d(-50%,-50%,0) scale(.9);transition:opacity .3s var(--ease);will-change:transform}
.peek.is-on{opacity:1}
.peek img{width:100%;aspect-ratio:3/2;object-fit:cover;clip-path:inset(0 round 4px)}
.peek__bar{position:absolute;left:0;top:-6px;height:2px;width:var(--p,0%);background:var(--lantern);transition:width .35s var(--ease)}
.peek figcaption{position:absolute;left:10px;bottom:10px;font-size:12px;color:#fff;background:rgba(20,24,36,.55);padding:3px 8px;border-radius:3px}
@media (hover:none),(max-width:900px){.peek{display:none}}

/* detail dialog */
.detail{border:0;padding:0;background:var(--trav);color:var(--ink-text);width:min(980px,94vw);max-height:92vh;border-radius:6px;overflow:auto}
.detail::backdrop{background:rgba(16,20,30,.7);backdrop-filter:blur(4px)}
.detail[open]{display:grid;grid-template-columns:1.2fr 1fr;animation:pop .45s var(--ease)}
@keyframes pop{from{opacity:0;transform:translateY(20px)}}
.detail form{position:absolute;right:14px;top:14px;z-index:2}
.detail__close{background:var(--trav);border:1px solid rgba(31,37,51,.25);border-radius:999px;padding:7px 14px;cursor:pointer;font-size:14px;color:var(--ink-text)}
.detail__media{position:relative;min-width:0;display:flex;flex-direction:column;background:var(--ink)}
.detail__stage{position:relative;flex:1;min-height:320px}
.detail__stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.detail__nav{position:absolute;top:50%;transform:translateY(-50%);width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.5);background:rgba(20,24,36,.45);color:#fff;font-size:26px;line-height:1;cursor:pointer;backdrop-filter:blur(4px)}
.detail__nav:hover{background:rgba(20,24,36,.75)}
.detail__nav--prev{left:12px}.detail__nav--next{right:12px}
.detail__thumbs{display:flex;gap:6px;overflow-x:auto;padding:8px;scrollbar-width:thin}
.detail__thumbs button{flex:none;width:72px;height:50px;padding:0;border:1px solid transparent;border-radius:3px;overflow:hidden;cursor:pointer;background:none;opacity:.6}
.detail__thumbs button.is-on{border-color:var(--lantern);opacity:1}
.detail__thumbs img{width:100%;height:100%;object-fit:cover;display:block}
.tag{position:absolute;left:12px;bottom:12px;font-size:12px;color:#fff;background:rgba(20,24,36,.6);padding:4px 9px;border-radius:3px}
.detail__body{padding:48px 36px 36px}
.detail__cluster{margin:0 0 8px;color:var(--ink-muted)}
.detail__title{font:400 34px/1.08 var(--display);margin:0 0 14px}
.detail__price{font:400 28px var(--display);margin:0 0 24px}
.detail__specs{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0 0 28px;border-top:1px solid rgba(31,37,51,.2);padding-top:16px}
.detail__specs dt{font-size:13px;color:var(--ink-muted)}.detail__specs dd{margin:0;font-size:18px;font-weight:500}
.detail__actions{display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.detail .btn--ghost{border-color:rgba(31,37,51,.35);color:var(--ink-text)}

/* ---------- clusters */
.clusters{padding:140px 0;background:var(--ink)}
.clusters__grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;grid-template-areas:"head head" "plan card";gap:24px 48px;align-items:start}
.clusters .sec-head{grid-area:head;margin-bottom:12px}
.legend{display:flex;gap:22px;margin-top:22px;font-size:14px;color:var(--muted);flex-wrap:wrap}
.lg::before{content:"";display:inline-block;width:12px;height:12px;margin-right:8px;vertical-align:-1px;border-radius:2px}
.lg--done::before{background:#8c9a6c}.lg--soon::before{border:1px dashed var(--sand)}.lg--live::before{background:var(--lantern);border-radius:50%;width:9px;height:9px}
.plan{grid-area:plan}
.plan svg{width:100%;max-width:720px;height:auto;display:block}
.plan__note{font-size:13px;color:var(--muted);margin:10px 0 0}
.plan .parcel{cursor:pointer;outline:none}
.plan .parcel path{transition:fill .3s, stroke .3s, transform .4s var(--ease);transform-box:fill-box;transform-origin:center}
.plan .parcel text{font:500 13px var(--body);fill:var(--text);pointer-events:none}
.plan .parcel:hover path,.plan .parcel:focus-visible path{stroke:var(--lantern-2);stroke-width:2}
.plan .parcel.is-on path{fill:var(--lantern);stroke:var(--lantern-2)}
.plan .parcel.is-on text{fill:var(--ink)}
.cluster-card{grid-area:card;border-left:1px solid rgba(240,168,81,.45);padding:8px 0 8px 28px;position:sticky;top:120px}
.cluster-card__type{color:var(--muted);margin:0 0 4px}
.cluster-card__name{font:400 64px/1 var(--display);margin:0 0 20px;color:var(--lantern-2)}
.cluster-card__status{font-size:19px;margin:0 0 6px}
.cluster-card__note{color:var(--muted);margin:0 0 18px}
.cluster-card__live{margin:0 0 18px;font-weight:500}

/* ---------- sell */
.sell{background:var(--night);padding:140px 0}
.sell__grid{display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(40px,6vw,96px);align-items:start}
.ticks{list-style:none;padding:0;margin:40px 0 0}
.ticks li{padding:16px 0 16px 34px;border-top:1px solid rgba(236,229,216,.14);position:relative;max-width:34em}
.ticks li::before{content:"";position:absolute;left:4px;top:24px;width:12px;height:7px;border-left:1.5px solid var(--lantern);border-bottom:1.5px solid var(--lantern);transform:rotate(-45deg)}
.estimator{background:var(--night-2);border-radius:6px;padding:clamp(24px,3vw,40px);position:relative}
.est__top{display:flex;align-items:center;gap:18px;margin-bottom:26px}
.est__step{margin:0;font-size:14px;color:var(--muted);white-space:nowrap}
.est__bar{flex:1;height:2px;background:rgba(236,229,216,.15)}
.est__bar span{display:block;height:100%;width:25%;background:var(--lantern);transition:width .5s var(--ease)}
.est__panel{border:0;padding:0;margin:0;display:none;min-height:300px}
.est__panel.is-on{display:block;animation:fadeStep .5s var(--ease)}
@keyframes fadeStep{from{opacity:0;transform:translateX(16px)}}
.est__panel legend{font:400 30px/1.15 var(--display);margin-bottom:22px;padding:0}
.est__sub{margin:24px 0 10px;color:var(--muted);font-size:15px}
.opts{display:flex;flex-wrap:wrap;gap:8px}
.opt{position:relative;display:inline-block}
.opt input{position:absolute;inset:0;opacity:0;pointer-events:none;margin:0}
.opt span{display:inline-block;padding:10px 16px;border:1px solid rgba(236,229,216,.25);border-radius:999px;font-size:15px;cursor:pointer;transition:all .25s}
.opt:hover span{border-color:var(--text)}
.opt input:checked+span{background:var(--lantern);color:#221a10;border-color:var(--lantern)}
.opt input:focus-visible+span{outline:2px solid var(--lantern-2);outline-offset:2px}
.field{display:block;margin-top:18px}
.field span{display:block;font-size:14px;color:var(--muted);margin-bottom:6px}
.field input{width:100%;background:transparent;border:0;border-bottom:1px solid rgba(236,229,216,.3);color:var(--text);font:400 19px var(--body);padding:8px 0}
.field input:focus{outline:none;border-color:var(--lantern)}
.est__nav{display:flex;justify-content:space-between;margin-top:28px}
.est__error{color:var(--lantern-2);font-size:14px;min-height:1.4em;margin:10px 0 0}
.est__summary{margin-top:22px;font-size:15px;color:var(--muted);border-top:1px solid rgba(236,229,216,.14);padding-top:14px}
.est__summary b{color:var(--text);font-weight:500}
.est__done h3{font:400 32px var(--display);margin:0 0 12px}
.placeholder-note{font-size:14px;color:var(--lantern-2);margin:18px 0}
.ph{color:var(--lantern-2)}

/* ---------- market */
.market{padding:130px 0;background:var(--ink)}
.market .date{display:block;font:400 18px var(--body);color:var(--muted);margin-top:10px}
.market__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:48px;margin-top:56px}
.stat{border-top:1px solid rgba(240,168,81,.5);padding-top:22px}
.stat__n{font:400 clamp(44px,4.6vw,72px)/1 var(--display);margin:0 0 16px;color:var(--lantern-2);white-space:nowrap}
.stat__t{margin:0;color:var(--muted);max-width:28em}

/* ---------- about */
.about{padding:130px 0;background:var(--trav);color:var(--ink-text)}
.about .fine{color:var(--ink-muted)}
.about__grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(40px,6vw,96px);align-items:center}
.portrait{margin:0;position:relative;max-width:460px;width:100%;justify-self:center}
.portrait picture{display:block;position:relative;aspect-ratio:4/5;border-radius:999px 999px 6px 6px;overflow:hidden;background:var(--ink);box-shadow:0 40px 80px -40px rgba(26,33,48,.75),0 0 0 1px rgba(26,33,48,.12)}
.portrait img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 18%;filter:saturate(.9) contrast(1.05) brightness(.97) sepia(.06)}
.portrait picture::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(120% 90% at 50% 30%,transparent 55%,rgba(26,33,48,.38) 100%),linear-gradient(180deg,rgba(199,167,123,.10),transparent 35%,rgba(26,33,48,.28))}
.portrait picture::after{content:"";position:absolute;inset:12px;z-index:2;pointer-events:none;border:1px solid rgba(199,167,123,.75);border-radius:999px 999px 3px 3px}
.portrait figcaption{margin-top:16px;font:400 20px/1.2 var(--display);color:var(--ink-text);text-align:center}
.portrait figcaption span{display:block;font:400 13px/1.5 var(--body);color:var(--ink-muted);letter-spacing:.04em;margin-top:4px}
.facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 28px;margin:26px 0 0;padding-top:18px;border-top:1px solid rgba(31,37,51,.2);max-width:36em}
.facts dt{font-size:13px;color:var(--ink-muted)}.facts dd{margin:2px 0 0;font-size:16px;font-weight:500}
.about .fine a,.listings .fine a{color:inherit}
.avatar{display:block;flex:none;border-radius:50%;overflow:hidden;background:var(--ink);box-shadow:0 0 0 1px rgba(199,167,123,.8),0 0 0 4px rgba(26,33,48,.9)}
.avatar img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 12%;filter:saturate(.9) contrast(1.05) sepia(.05)}
.avatar--lg{width:88px;height:88px}.avatar--sm{width:44px;height:44px}
.about__quote{font:400 clamp(24px,2.2vw,32px)/1.3 var(--display);margin:0 0 22px}
.about__text p{max-width:36em}
.badges{list-style:none;padding:0;margin:28px 0 0;display:flex;flex-wrap:wrap;gap:8px}
.badges li{border:1px solid rgba(31,37,51,.3);border-radius:999px;padding:8px 16px;font-size:15px}

/* ---------- close */
.close{padding:150px 0;background:linear-gradient(180deg,var(--night) 0%,var(--ink) 100%)}
.close__grid{display:grid;grid-template-columns:1.4fr 1fr;gap:64px;align-items:end}
.close__title{font:400 clamp(44px,5.4vw,88px)/1 var(--display);margin:0 0 24px;text-wrap:balance}
.card-contact{border:1px solid rgba(236,229,216,.18);border-radius:6px;padding:32px}
.card-contact p{margin:0;color:var(--muted)}
.card-contact__name{font:400 30px var(--display);color:var(--text)!important;margin-bottom:6px!important}
.card-contact dl{margin:24px 0 0}
.card-contact dl div{display:flex;justify-content:space-between;padding:10px 0;border-top:1px solid rgba(236,229,216,.12)}
.card-contact dt{color:var(--muted)}.card-contact dd{margin:0}
.card-contact__head{display:flex;gap:20px;align-items:center}
.card-contact__links{display:flex;gap:20px;flex-wrap:wrap;margin-top:18px!important;font-size:14px}
.card-contact__links a{color:var(--lantern-2);text-decoration:none;border-bottom:1px solid rgba(255,207,143,.35)}.card-contact__links a:hover{border-color:var(--lantern-2)}

/* ---------- footer */
.foot{padding:60px 0 120px;border-top:1px solid rgba(236,229,216,.1);font-size:14px;color:var(--muted)}
.foot__grid{display:grid;grid-template-columns:1fr auto;gap:24px 48px}
.foot__brand{color:var(--text);font-weight:600;margin:0}
.foot__brand span{font-weight:400;color:var(--muted)}
.foot nav{display:flex;gap:24px;flex-wrap:wrap}
.foot nav a{text-decoration:none}.foot nav a:hover{color:var(--text)}
.foot__legal{grid-column:1/-1;max-width:90ch;margin:0;line-height:1.6}

/* ---------- concierge */
.concierge-toggle{position:fixed;right:24px;bottom:24px;z-index:70;display:flex;align-items:center;gap:10px;background:var(--trav);color:var(--ink-text);border:0;border-radius:999px;padding:12px 20px 12px 16px;font-weight:600;font-size:15px;cursor:pointer;box-shadow:0 10px 30px -10px rgba(0,0,0,.5);transition:opacity .4s, transform .4s var(--ease)}
.concierge-toggle svg{width:22px;height:22px;color:#a8671f}
.concierge-toggle[aria-expanded="true"]{opacity:0;pointer-events:none}
body.is-loading .concierge-toggle{opacity:0}
.concierge{position:fixed;right:24px;bottom:24px;z-index:80;width:min(420px,calc(100vw - 32px));height:min(640px,calc(100vh - 48px));background:var(--night);color:var(--text);border:1px solid rgba(236,229,216,.12);border-radius:8px;display:flex;flex-direction:column;box-shadow:0 30px 80px -20px rgba(0,0,0,.6);transform-origin:bottom right;animation:cOpen .45s var(--ease)}
.concierge[hidden]{display:none}
@keyframes cOpen{from{opacity:0;transform:translateY(16px) scale(.97)}}
.concierge__head{display:flex;justify-content:space-between;gap:16px;padding:20px 22px 16px;border-bottom:1px solid rgba(236,229,216,.12)}
.concierge__title{font:400 24px/1.1 var(--display);margin:0 0 4px}
.concierge__head .avatar{align-self:flex-start;margin-top:2px}.concierge__who{flex:1;min-width:0}
.concierge__sub{font-size:13px;color:var(--muted);margin:0;line-height:1.45}
.concierge__close{align-self:flex-start;border:1px solid rgba(236,229,216,.3);background:none;border-radius:999px;padding:6px 12px;font-size:13px;cursor:pointer;color:var(--text)}
.concierge__log{flex:1;overflow-y:auto;padding:18px 22px;display:flex;flex-direction:column;gap:12px;scroll-behavior:smooth}
.msg{max-width:88%;font-size:15px;line-height:1.5;animation:fadeStep .35s var(--ease)}
.msg--bot{align-self:flex-start}
.msg--me{align-self:flex-end;background:var(--trav);color:var(--ink-text);padding:9px 14px;border-radius:14px 14px 2px 14px}
.msg p{margin:0 0 8px}.msg p:last-child{margin:0}
.hit{display:grid;grid-template-columns:72px 1fr;gap:12px;align-items:center;background:var(--night-2);border-radius:6px;padding:8px;margin-top:6px;border:0;width:100%;text-align:left;cursor:pointer;color:inherit}
.hit:hover{background:#36446a}
.hit img{width:72px;height:52px;object-fit:cover;border-radius:3px}
.hit b{display:block;font-weight:600;font-size:14px}
.hit span{font-size:13px;color:var(--muted)}
.msg .btn{margin-top:8px;padding:10px 16px;font-size:14px}
.concierge__chips{display:flex;gap:6px;flex-wrap:wrap;padding:0 22px 12px}
.concierge__chips button{border:1px solid rgba(236,229,216,.22);background:none;border-radius:999px;padding:6px 11px;font-size:13px;cursor:pointer;color:var(--text)}
.concierge__chips button:hover{border-color:var(--text)}
.concierge__form{display:flex;gap:8px;padding:12px 16px 16px;border-top:1px solid rgba(236,229,216,.12)}
.concierge__form input{flex:1;border:1px solid rgba(236,229,216,.25);border-radius:999px;padding:10px 16px;background:var(--ink);font:400 15px var(--body);color:var(--text);min-width:0}
.concierge__form input:focus{outline:2px solid var(--lantern);outline-offset:1px}

/* ---------- responsive */
@media (max-width:1100px){
  .table-head,.row__link{grid-template-columns:110px minmax(0,1fr) 50px 100px 150px}
  .table-head span:nth-child(5),.row__num--plot{display:none}
}
@media (max-width:900px){
  body{font-size:16px}
  .nav__links{display:none}
  .nav{padding:14px 18px}
  .chapter{width:auto;left:20px!important;right:20px!important;top:auto;bottom:84px;transform:translateY(var(--y))}
  .chapter__title{font-size:clamp(38px,10vw,56px)}
  h1.chapter__title{font-size:clamp(42px,11.5vw,62px)}
  .chapter__body{font-size:16px}
  .chapter__clusters{display:none}
  .scrim-l{background:linear-gradient(0deg,rgba(18,22,34,.9) 0%,rgba(18,22,34,.55) 42%,rgba(18,22,34,0) 68%);opacity:1!important}
  .scrim-r{display:none}
  .hero__cue{display:none}
  .hero__progress{left:20px;right:auto;bottom:auto;top:78px}
  .hero__count{right:20px;bottom:auto;top:66px;font-size:20px}
  .hero{height:520vh}
  .nav .btn{display:none}
  .chapter{bottom:100px}
  .listings,.clusters,.sell,.market,.about{padding:96px 0}
  .table-head{display:none}
  .row__link{grid-template-columns:96px 1fr;grid-template-areas:"thumb title" "thumb price";gap:4px 16px;padding:18px 0}
  .row__thumb{display:block;grid-area:thumb;width:96px;height:72px;object-fit:cover;border-radius:3px;align-self:center}
  .row__cluster,.row__num{display:none}
  .row__mcl{display:inline}
  .row__title{grid-area:title;font-size:20px}
  .row__price{grid-area:price;text-align:left;font-size:19px}
  .rows:hover .row{opacity:1}
  .chip--find{margin-left:0}
  .clusters__grid{grid-template-columns:1fr;grid-template-areas:"head" "plan" "card"}
  .cluster-card{position:static}
  .cluster-card__name{font-size:48px}
  .sell__grid,.about__grid,.close__grid{grid-template-columns:1fr}
  .market__grid{grid-template-columns:1fr;gap:36px}
  .portrait{max-width:320px}
  .detail[open]{grid-template-columns:1fr}
  .detail__stage{aspect-ratio:3/2;min-height:0;flex:none}
  .detail__thumbs button{width:60px;height:42px}
  .facts{gap:12px 18px}
  .card-contact__head{gap:16px}.avatar--lg{width:72px;height:72px}
  .detail__body{padding:28px 22px}
  .foot__grid{grid-template-columns:1fr}
  .concierge{right:8px;bottom:8px;width:calc(100vw - 16px);height:calc(100svh - 80px)}
  .concierge-toggle{right:16px;bottom:16px}
}

.concierge__form input::placeholder{color:#8c8578}
.msg .fine-note{font-size:13px;color:var(--muted)}
@media (max-width:900px){
  .chapter__facts{gap:18px}
  .chapter__facts dd{font-size:19px}
}


/* =====================================================================
   v5 UI: functional navigation, filters, forms, contact surfaces
   ===================================================================== */
html.is-locked{overflow:hidden}
.nav__links a.is-active{opacity:1;color:var(--lantern-2)}
.nav__links a.is-active::after{transform:scaleX(1)}
.nav__links a{padding:10px 0}
.brand{min-height:44px}
.nav__toggle{display:none;width:48px;height:48px;border:1px solid rgba(236,229,216,.35);border-radius:50%;background:rgba(26,33,48,.35);backdrop-filter:blur(6px);cursor:pointer;position:relative;flex:none}
.nav__toggle span{position:absolute;left:14px;right:14px;height:1.5px;background:var(--text);transition:transform .35s var(--ease)}
.nav__toggle span:first-child{top:19px}.nav__toggle span:last-child{top:27px}
.nav__toggle[aria-expanded="true"] span:first-child{transform:translateY(4px) rotate(45deg)}
.nav__toggle[aria-expanded="true"] span:last-child{transform:translateY(-4px) rotate(-45deg)}

/* mobile menu */
.menu{position:fixed;inset:0;z-index:120;background:rgba(16,20,30,.55);opacity:0;transition:opacity .35s var(--ease)}
.menu.is-open{opacity:1}
.menu__inner{position:absolute;inset:0 0 0 auto;width:min(420px,100%);background:var(--ink);padding:18px 22px calc(28px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:28px;overflow:auto;transform:translateX(24px);transition:transform .45s var(--ease)}
.menu.is-open .menu__inner{transform:none}
.menu__top{display:flex;justify-content:space-between;align-items:center}
.menu__label{margin:0;color:var(--muted);font-size:14px;letter-spacing:.08em;text-transform:uppercase}
.menu__close,.concierge__close,.detail__close{min-height:44px;min-width:44px;padding:0 16px;border-radius:999px;cursor:pointer}
.menu__close{border:1px solid rgba(236,229,216,.3);background:none;color:var(--text);font-size:14px}
.menu__links{display:flex;flex-direction:column}
.menu__links a{display:flex;align-items:baseline;gap:16px;min-height:60px;padding:12px 0;border-bottom:1px solid rgba(236,229,216,.1);text-decoration:none;font:400 36px/1.1 var(--display)}
.menu__links a small{font:500 13px var(--body);color:var(--muted);font-variant-numeric:tabular-nums}
.menu__links a.is-active{color:var(--lantern-2)}
.menu__agent{display:flex;gap:14px;align-items:center}
.menu__name{margin:0;font:400 22px var(--display)}.menu__role{margin:2px 0 0;color:var(--muted);font-size:14px}
.menu__actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.menu__actions .btn{padding:14px 8px;font-size:15px;min-height:48px}
.avatar--md{width:56px;height:56px}.avatar--xs{width:36px;height:36px}

/* filters */
.filters{display:block}
.filters__chips{display:flex;flex-wrap:wrap;gap:8px}
.filters__controls{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:flex-end;margin-top:18px}
.chip{min-height:44px}
.sel{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--ink-muted)}
.sel select{appearance:none;-webkit-appearance:none;min-height:44px;min-width:150px;padding:0 36px 0 14px;border:1px solid rgba(31,37,51,.28);border-radius:999px;font:500 15px var(--body);color:var(--ink-text);background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%231f2533' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 14px center;cursor:pointer}
.sel select:hover{border-color:var(--ink-text)}
.filters__controls .chip--find{margin-left:auto}
.filters__count{margin:18px 0 0;font-size:14px;color:var(--ink-muted);font-variant-numeric:tabular-nums}
.table-head{padding-right:124px}
.row{display:flex;align-items:center;gap:20px}
.row__link{flex:1;min-width:0}
.row__enq{flex:none;width:104px;min-height:44px;border:1px solid rgba(31,37,51,.3);border-radius:999px;background:none;color:var(--ink-text);font:600 14px var(--body);cursor:pointer;transition:background-color .25s,color .25s,border-color .25s}
.row__enq:hover{background:var(--ink-text);color:var(--trav);border-color:var(--ink-text)}
.rows-empty{padding:40px 0;border-bottom:1px solid rgba(31,37,51,.18)}
.rows-empty p{font:400 26px var(--display);margin:0 0 16px}
.btn--dark{background:var(--ink-text);color:var(--trav)}.btn--dark:hover{background:#000}
.listings :focus-visible,.about :focus-visible{outline-color:#a8671f}

/* detail dialog */
.detail__nav{width:48px;height:48px}
.detail__stage{touch-action:pan-y;user-select:none}
.detail__specs{grid-template-columns:repeat(3,minmax(0,1fr))}
.detail__actions .btn{min-height:48px}
.detail__thumbs button{min-height:44px}
.detail__thumbs button:focus-visible{outline:2px solid var(--lantern);outline-offset:1px}

/* estimator result */
.est__result{margin:6px 0 4px}
.est__kicker{margin:0 0 6px;color:var(--lantern-2);font-size:13px;letter-spacing:.06em;text-transform:uppercase}
.est__figure{margin:0;font:400 clamp(30px,3.2vw,44px)/1.1 var(--display);font-variant-numeric:tabular-nums}
.est__figure span{font:400 .5em var(--body);color:var(--muted);margin:0 .3em}
.est__central{margin:6px 0 0;color:var(--text)}
.est__reason{margin:0;font:400 22px/1.3 var(--display)}
.est__basis{margin:14px 0 0;font-size:13px;line-height:1.55;color:var(--muted)}
.est__send-note{font-size:14px;color:var(--muted);margin:20px 0 12px}
.est__send{display:flex;flex-wrap:wrap;gap:10px}
.field input[aria-invalid="true"],.field textarea[aria-invalid="true"]{border-color:#ff9d7a}
.opt span{min-height:44px;display:inline-flex;align-items:center}

/* enquiry form */
.close__grid{align-items:start}
.enquiry{margin-top:40px;max-width:720px}
.enquiry__grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 28px}
.field--wide{grid-column:1/-1}
.field textarea,.field select{width:100%;background:transparent;border:0;border-bottom:1px solid rgba(236,229,216,.3);color:var(--text);font:400 18px var(--body);padding:8px 0;resize:vertical;border-radius:0}
.field select{appearance:none;-webkit-appearance:none;min-height:44px;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23ece5d8' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 4px center;padding-right:24px;cursor:pointer}
.field select option{color:var(--ink-text);background:var(--trav)}
.field input{min-height:44px}
.field textarea:focus,.field select:focus{outline:none;border-color:var(--lantern)}
.field input:focus-visible,.field textarea:focus-visible,.field select:focus-visible{box-shadow:0 2px 0 var(--lantern)}
.field--req>span::after{content:" *";color:var(--lantern-2)}
.field__err{display:block;min-height:1.3em;font-style:normal;font-size:13px;color:#ffb199;margin-top:4px}
.enquiry__via{border:0;padding:0;margin:18px 0 0;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.enquiry__via legend{float:left;margin-right:10px;font-size:14px;color:var(--muted)}
.enquiry__foot{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:28px}
.enquiry__note{margin:0;font-size:13px;color:var(--muted);max-width:30em}
.enquiry__errors{border:1px solid rgba(255,177,153,.5);background:rgba(255,157,122,.08);border-radius:6px;padding:14px 18px;margin-bottom:18px;font-size:15px}
.enquiry__errors p{margin:0 0 6px}.enquiry__errors ul{margin:0;padding-left:18px}.enquiry__errors a{color:#ffcdbd}
.enquiry-done{margin-top:40px;max-width:720px;border:1px solid rgba(240,168,81,.4);border-radius:8px;padding:clamp(22px,3vw,36px);background:rgba(36,48,73,.55);animation:fadeStep .5s var(--ease)}
.enquiry-done:focus{outline:none}
.enquiry-done__kicker{margin:0 0 6px;color:var(--lantern-2);font-size:13px;letter-spacing:.08em;text-transform:uppercase}
.enquiry-done h3{font:400 34px/1.1 var(--display);margin:0 0 8px}
.enquiry-done>p{color:var(--muted);margin:0 0 14px}
.enquiry-done__msg{white-space:pre-wrap;font:400 14px/1.55 var(--body);background:rgba(16,20,30,.5);border-radius:6px;padding:14px 16px;margin:0 0 18px;max-height:260px;overflow:auto;color:var(--text)}
.enquiry-done__actions{display:flex;flex-wrap:wrap;gap:10px}

/* contact card */
.card-contact{background:rgba(26,33,48,.4);position:sticky;top:100px}
.card-contact dd a{color:var(--text);text-decoration:none;border-bottom:1px solid rgba(236,229,216,.25);font-variant-numeric:tabular-nums;display:inline-block;padding:6px 0}
.card-contact dd a:hover{border-color:var(--lantern-2);color:var(--lantern-2)}
.card-contact dl div{align-items:center}
.ph-tag{display:inline-block;margin-left:6px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--lantern-2);border:1px dashed rgba(240,168,81,.6);border-radius:3px;padding:1px 6px;vertical-align:2px}
.ph-tag[hidden],[data-placeholder-note][hidden]{display:none}
.card-contact__actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:22px}
.card-contact__actions .btn{min-height:46px}
.card-contact__links a{display:inline-flex;align-items:center;min-height:44px}
.card-contact__concierge{width:100%;margin-top:10px;min-height:46px}

/* footer */
.foot__agent{display:flex;gap:14px;align-items:center}
.foot__sub{font-weight:400;color:var(--muted)}
.foot__nav{align-items:center}
.foot nav a,.foot__btn{display:inline-flex;align-items:center;min-height:44px}
.foot__btn{background:none;border:0;padding:0;color:inherit;font:inherit;cursor:pointer;text-decoration:none}
.foot__btn:hover{color:var(--text)}
.foot__social{display:contents}.foot__social[hidden]{display:none}

/* back to top */
.to-top{position:fixed;right:24px;bottom:92px;z-index:65;width:48px;height:48px;border-radius:50%;border:1px solid rgba(236,229,216,.3);background:rgba(26,33,48,.8);backdrop-filter:blur(8px);color:var(--text);display:grid;place-items:center;cursor:pointer;transition:opacity .3s,transform .3s var(--ease)}
.to-top[hidden]{display:none}
.to-top svg{width:20px;height:20px}
.to-top:hover{border-color:var(--lantern-2);color:var(--lantern-2)}

/* toasts */
.toasts{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:400;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:min(520px,calc(100vw - 32px))}
.toast{background:var(--trav);color:var(--ink-text);padding:12px 18px;border-radius:999px;font-size:14px;font-weight:500;box-shadow:0 14px 40px -12px rgba(0,0,0,.55);opacity:0;transform:translateY(10px);transition:opacity .3s,transform .35s var(--ease);text-align:center}
.toast.is-in{opacity:1;transform:none}
.toast--warn{background:#ffd9c9}

/* concierge extras */
.msg__actions{display:flex;flex-wrap:wrap;gap:8px}
.msg__actions .btn{margin-top:0}
.msg__list{margin:0 0 8px;padding-left:18px}.msg__list li{margin:2px 0}
.msg a:not(.btn){color:var(--lantern-2)}
.concierge__close{padding:0 14px}
.concierge__form input{min-height:44px}
.concierge__form .btn{min-height:44px}

/* mobile contact bar */
.cbar{display:none}
@media (max-width:900px){
  .nav__toggle{display:block}
  .nav{gap:12px}
  .cbar{position:fixed;left:0;right:0;bottom:0;z-index:70;display:flex;align-items:center;gap:8px;padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:rgba(26,33,48,.92);backdrop-filter:blur(12px);border-top:1px solid rgba(236,229,216,.12);transition:transform .45s var(--ease)}
  body.is-loading .cbar,body.menu-open .cbar{transform:translateY(110%)}
  .cbar__who{flex:1;min-width:0;margin:0;font-size:12px;line-height:1.2;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .cbar__who b{display:block;color:var(--text);font-size:15px;font-weight:600}
  .cbar__btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:46px;min-width:46px;padding:0 14px;border-radius:999px;border:1px solid rgba(236,229,216,.3);background:none;color:var(--text);font:600 15px var(--body);text-decoration:none;cursor:pointer}
  .cbar__btn svg{width:18px;height:18px}
  .cbar__btn--wa{background:var(--lantern);border-color:var(--lantern);color:#221a10}
  .cbar__btn--find{padding:0}
  .concierge-toggle{display:none}
  .to-top{right:14px;bottom:84px}
  .toasts{bottom:84px}
  .foot{padding-bottom:110px}
  .concierge{z-index:90;bottom:0;right:0;width:100vw;height:100svh;border-radius:0}
  .filters__controls .chip--find{margin-left:0}
  .sel{flex:1 1 140px}.sel select{min-width:0;width:100%}
  .table-head{padding-right:0}
  .row{display:block;position:relative}
  .row__link{padding-right:0}
  .row__enq{position:absolute;right:0;bottom:16px;width:auto;padding:0 16px}
  .enquiry__grid{grid-template-columns:1fr}
  .card-contact{position:static}
  .detail{max-height:100svh;width:100vw;border-radius:0;max-width:100vw}
  .detail__nav{width:44px;height:44px}
  .detail__specs{grid-template-columns:repeat(2,minmax(0,1fr))}
  .concierge__chips button{min-height:44px}
  .card-contact__links a{min-height:44px}
  .text-link{display:inline-flex;align-items:center;min-height:44px}
  .fine a{display:inline-block;padding:10px 0}
}

/* Mobile hero, portrait phones: chapter copy sits in the sky above the villa;
   calls to action drop to the foreground below it. CSS only; frames untouched. */
@media (max-width:900px) and (orientation:portrait){
  .chapter{top:calc(104px + env(safe-area-inset-top));bottom:calc(80px + env(safe-area-inset-bottom));transform:none}
  .chapter__kicker{margin-bottom:.6rem;font-size:14px}
  .chapter__title{font-size:clamp(32px,8.8vw,44px);margin-bottom:.8rem}
  h1.chapter__title{font-size:clamp(36px,9.6vw,48px)}
  .chapter__body{font-size:15px;line-height:1.5;max-width:30em}
  .chapter__actions,.chapter__facts{position:absolute;left:0;right:0;bottom:0;margin:0}
  .chapter__actions .btn{min-height:48px}
  .scrim-l{background:linear-gradient(180deg,rgba(18,22,34,.82) 0%,rgba(18,22,34,.55) 30%,rgba(18,22,34,0) 52%,rgba(18,22,34,0) 72%,rgba(18,22,34,.7) 100%)}
}
@media (max-width:900px) and (orientation:portrait) and (max-height:700px){
  .chapter__body{display:none}
}

/* reduced motion: no smooth scrolling, no decorative animation */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}

.about__bio{font:400 clamp(21px,1.9vw,27px)/1.4 var(--display);margin:0 0 12px;max-width:34em}
.about__src{font-size:14px;color:var(--ink-muted);margin:0 0 6px}
.about__src a{color:inherit}
.detail__dz{color:#8a5317;font-weight:600;font-size:15px;min-height:44px;display:inline-flex;align-items:center}
.detail__dz[hidden]{display:none}

/* Lenis owns scroll position; browser scroll anchoring fights it when the listings filter changes page height */
html,body{overflow-anchor:none}
.loader.is-done{pointer-events:none}
.nav:focus-within{transform:none}
@media (max-width:900px){
  .fine a,.about__src a{display:inline-flex;align-items:center;min-height:44px;padding:0}
  .card-contact dd a{display:inline-flex;align-items:center;min-height:44px;padding:0}
  .foot nav a,.foot__btn{min-width:44px;justify-content:center}
}

@media (max-width:400px){.cbar__who{display:none}.cbar{justify-content:flex-end}.cbar .avatar{margin-right:auto}}

/* =============================================================================
   AUDIT PASS 27 Sep 2026: fast start, bug fixes, premium polish (appended layer)
   ============================================================================= */
/* fast start: static poster is the first paint; canvas fades in over it once frames stream in */
.hero__poster{position:absolute;inset:0;margin:0}
.hero__poster img{width:100%;height:100%;object-fit:cover;object-position:50% 63%}
.hero__stage.has-frame .hero__poster{visibility:hidden;transition:visibility 0s 1.2s}
/* first chapter is visible before any JS runs (no blank hero, no-JS safe) */
.chapter:first-of-type{visibility:visible}
.chapter:first-of-type>*{opacity:1}
.chapter__direct{margin:18px 0 0;font-size:15px;color:var(--muted)}
.chapter__direct a{color:var(--text);text-underline-offset:4px;text-decoration-color:rgba(255,207,143,.6)}
.chapter__direct a:hover{color:var(--lantern-2)}
/* hero stream indicator: thin line that fills as scroll frames arrive, then fades */
.hero__stage::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:calc(var(--load,0) * 100%);background:var(--lantern);opacity:.7;transition:width .3s linear,opacity .8s;pointer-events:none;z-index:3}
.hero.is-loaded .hero__stage::after{opacity:0}
/* nav: direct WhatsApp next to Book a viewing (desktop) */
.nav__wa{font-size:14px;font-weight:600;text-decoration:none;color:var(--text);margin-right:6px;padding:10px 6px;opacity:.85}
.nav__wa:hover{color:var(--lantern-2);opacity:1}
@media (max-width:900px){.nav__wa{display:none}}
/* contrast: chip counts were 4.45:1 on the active chip */
.chip span{opacity:.8}
/* listings: editorial name + portal tags; thumbnails on desktop too */
.row__tags{display:block;font:500 13px/1.4 var(--body);letter-spacing:.02em;color:var(--ink-muted);margin-top:8px}
.row__tags .sep{color:var(--sand);font-style:normal}
.row__meta{margin-top:4px}
@media (min-width:901px){
  .table-head,.row__link{align-items:center}
  .row__thumb{display:block;width:120px;height:84px;object-fit:cover;border-radius:3px}
  .row__cluster{display:none}
  .row__mcl{display:none}
}
/* mobile: Enquire overlapped the meta line and price on every row; it now sits on its own line */
@media (max-width:900px){
  .row{display:flex;flex-wrap:wrap;align-items:center}
  .row__link{flex:1 1 100%;padding-bottom:8px}
  .row__enq{position:static;margin:0 0 16px 112px;min-height:44px;padding:0 20px}
  .to-top{display:none!important}               /* the sticky contact bar already covers this; it overlapped rows */
  .plan .parcel text{font-size:24px}            /* labels were ~8px on a 390px screen */
}
/* about: bio reads as body copy, not a second headline */
.about__bio{font:400 clamp(17px,1.35vw,20px)/1.65 var(--body);color:var(--ink-text)}
/* Netlify's injected "Powered by Netlify" badge covered the WhatsApp and concierge buttons on the live site */
#nl-badge-frame{display:none!important}

/* first chapter visible on first paint (LCP), JS takes over on scroll */
.chapter[data-range^="0,"]{visibility:visible}
.chapter[data-range^="0,"]>*{opacity:1}
.nav__lang{color:var(--lantern-2);text-decoration:none;font-size:15px;padding:6px 10px;border:1px solid rgba(240,168,81,.35);border-radius:999px;font-family:"IBM Plex Sans Arabic",system-ui,sans-serif}
.nav__lang:hover{border-color:var(--lantern)}
.consent{display:flex;gap:10px;align-items:flex-start;margin:1rem 0 .5rem;font-size:15px;color:var(--muted);cursor:pointer}
.consent input{margin-top:.3em;accent-color:var(--lantern);width:18px;height:18px;flex:none}

/* native cursors */
body{cursor:auto}a,button,label.opt,.row__link,.parcel,[role="button"],summary{cursor:pointer}input,textarea{cursor:text}.cursor,.peek{display:none!important}

/* ROUND 2 (27 Sep 2026): valuation step 2 */
.est__kind{margin:6px 0 0;color:var(--lantern-2);font-size:16px}
.est__hint{margin:8px 0 0;color:var(--muted);font-size:14px;line-height:1.5}
.close__guided{margin:-8px 0 28px}
.jny-open-btn{background:none;border:0;padding:8px 0;color:var(--lantern-2);font:inherit;font-size:16px;text-decoration:underline;text-underline-offset:4px;cursor:pointer;min-height:44px}
.jny-open-btn:hover{color:var(--lantern)}
.field[hidden],#estBedsTh[hidden]{display:none}

/* =============================================================================
   v6 (29 Sep 2026): chapter snap controls, Mohamed's photo slots, floor-plan entry points
   ============================================================================= */
/* progress bars are chapter buttons (bigger hit area than the 2px line) */
.hero__progress li{overflow:visible}
.hero__progress li::after{transition:transform .25s linear}
.hero__progress button{position:absolute;left:0;right:0;top:-11px;bottom:-11px;padding:0;margin:0;border:0;background:none;cursor:pointer;border-radius:2px}
.hero__progress button:focus-visible{outline-offset:1px}
.hero__progress button:hover~*,.hero__progress li:hover{background:rgba(236,229,216,.45)}
.hero__skip{position:absolute;z-index:3;right:calc(clamp(24px,6vw,96px) + 112px);bottom:28px;margin:0;padding:8px 2px;border:0;background:none;color:var(--text);font:500 13px/1 var(--body);letter-spacing:.08em;text-transform:uppercase;opacity:.72;cursor:pointer;border-bottom:1px solid rgba(255,207,143,.45);transition:opacity .3s,color .3s}
.hero__skip:hover,.hero__skip:focus-visible{opacity:1;color:var(--lantern-2)}

/* Mohamed's photo slots: a small passe-partout frame opposite the chapter copy */
.hero__inset{position:absolute;z-index:2;bottom:104px;width:clamp(150px,13.5vw,212px);margin:0;visibility:hidden;opacity:0;will-change:opacity,transform;pointer-events:none}
.hero__inset[data-side="right"]{right:clamp(24px,6vw,96px)}
.hero__inset[data-side="left"]{left:clamp(24px,6vw,96px)}
.inset__frame{position:relative;aspect-ratio:4/5;padding:7px;background:rgba(20,25,38,.62);border:1px solid rgba(240,168,81,.5);box-shadow:0 24px 60px -24px rgba(6,8,14,.8)}
.inset__frame img{width:100%;height:100%;object-fit:cover;display:block}
.inset__ph{position:absolute;inset:7px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:14px;border:1px dashed rgba(255,207,143,.32);background:linear-gradient(160deg,rgba(45,58,87,.55),rgba(26,33,48,.75))}
.inset__ph svg{width:38%;max-width:64px;color:var(--lantern-2);opacity:.75}
.inset__ph p{margin:0;font:400 15px/1.25 var(--display);color:var(--text)}
.inset__ph small{font:600 10.5px/1.3 var(--body);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.inset__cap{display:flex;align-items:baseline;gap:10px;margin-top:10px;font-size:13px;color:#efe7da;text-shadow:0 1px 10px rgba(10,12,20,.6)}
.inset__n{font:400 18px/1 var(--display);color:var(--lantern-2)}
.hero__inset.is-placeholder .inset__t{display:none}
@media (max-width:900px){
  .hero__skip{right:auto;left:auto;bottom:auto;top:66px;right:96px;padding:6px 2px;font-size:12px}
  .hero__progress li{width:24px}
  .hero__inset{width:92px;bottom:auto;top:112px;right:20px!important;left:auto!important}
  .inset__frame{padding:4px}.inset__ph{inset:4px;padding:6px;gap:5px}
  .inset__ph p{font-size:11px}.inset__ph small{display:none}
  .inset__cap{margin-top:6px;font-size:11px}.inset__n{font-size:14px}
}
@media (max-width:900px) and (orientation:portrait){
  .hero__inset{top:auto;bottom:calc(152px + env(safe-area-inset-bottom))}
}
@media (max-width:900px) and (orientation:portrait) and (max-height:700px){.hero__inset{display:none}}

/* clusters: floor-plan entry points */
.cluster-card__plans{display:flex;flex-direction:column;gap:10px;margin:22px 0 4px;padding-top:18px;border-top:1px solid rgba(240,168,81,.22)}
.cluster-card__plans .btn{align-self:flex-start}
.cluster-card__pnote{margin:0;font-size:13px;color:var(--muted)}
.plan__hint{display:inline-flex;align-items:center;gap:8px;margin:14px 0 0;font-size:14px;color:var(--lantern-2)}
.plan__hint::before{content:"";width:22px;height:1px;background:currentColor}
.inset__frame img[hidden]{display:none}

/* ===== v7 plan finder (#finder). Shared by css/site.css (/) and css/lite.css (/ar/) ===== */
.fx-sec{--fxg:#f0a851;--fxg2:#ffcf8f;--fxt:#ece5d8;--fxm:#b3ab9e;--fxl:rgba(240,168,81,.22);--fxd:var(--display,var(--ar,serif));--fxb:var(--body,var(--ar,system-ui,sans-serif));position:relative;background:radial-gradient(90% 60% at 100% 0,rgba(240,168,81,.07),transparent 60%),var(--ink,#1a2130)}
.fx-sec .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.fx-head{max-width:760px;margin:0 0 44px}
.fx-kicker{display:flex;align-items:center;gap:12px;margin:0 0 16px;color:var(--fxg2);font:600 13px/1 var(--fxb);letter-spacing:.16em;text-transform:uppercase}
.fx-kicker::before{content:"";width:34px;height:1px;background:currentColor}
.fx-h2{font-size:clamp(28px,4vw,46px);margin:0 0 14px}
.fx-lede{margin:0;max-width:40em;color:var(--fxm);font-size:clamp(16px,1.3vw,19px);line-height:1.6}
.fx{margin:0;display:grid;gap:28px}
.fx-q{margin:0;padding:0;border:0;min-width:0}
.fx-q[hidden]{display:none}
.fx-q__l{display:flex;align-items:center;gap:12px;padding:0;margin:0 0 14px;font:600 14px/1 var(--fxb);letter-spacing:.12em;text-transform:uppercase;color:var(--fxt)}
.fx-q__n{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;border:1px solid var(--fxl);font:italic 400 16px/1 var(--fxd);color:var(--fxg2);letter-spacing:0}
/* type tiles: real radios */
.fx-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.fx-tile{position:relative;display:grid;grid-template-rows:auto auto 1fr;gap:6px;padding:22px 22px 20px;border:1px solid rgba(236,229,216,.14);border-radius:18px;background:linear-gradient(160deg,rgba(255,255,255,.035),rgba(255,255,255,0) 60%);cursor:pointer;transition:border-color .25s,background-color .25s,transform .35s cubic-bezier(.2,.7,.1,1)}
.fx-tile:hover{border-color:rgba(240,168,81,.55)}
.fx-tile input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.fx-tile__i{display:block;color:var(--fxg);opacity:.85;margin-bottom:8px}
.fx-tile__i svg{width:120px;height:56px;display:block}
.fx-tile__t{font:400 clamp(24px,2.2vw,32px)/1.05 var(--fxd);color:var(--fxt)}
.fx-tile__m{font-size:14px;color:var(--fxm);align-self:end}
.fx-tile::after{content:"";position:absolute;top:18px;inset-inline-end:18px;width:22px;height:22px;border-radius:50%;border:1px solid rgba(236,229,216,.3);transition:background-color .2s,border-color .2s,box-shadow .2s}
.fx-tile:has(input:checked){border-color:var(--fxg);background:radial-gradient(120% 90% at 0 0,rgba(240,168,81,.16),rgba(240,168,81,.03) 70%)}
.fx-tile:has(input:checked)::after{background:var(--fxg);border-color:var(--fxg);box-shadow:inset 0 0 0 5px #221a10}
.fx-tile:has(input:focus-visible){outline:2px solid var(--fxg);outline-offset:3px}
.fx-tile:has(input:checked) .fx-tile__i{opacity:1;color:var(--fxg2)}
/* bedroom chips */
.fx-chips{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.fx-chip{position:relative;cursor:pointer}
.fx-chip input{position:absolute;opacity:0;width:1px;height:1px}
.fx-chip span{display:inline-flex;align-items:center;min-height:46px;padding:0 20px;border-radius:999px;border:1px solid rgba(236,229,216,.24);font:500 15px/1 var(--fxb);color:var(--fxt);transition:background-color .2s,border-color .2s,color .2s}
.fx-chip:hover span{border-color:var(--fxg)}
.fx-chip input:checked+span{background:var(--fxg);border-color:var(--fxg);color:#221a10;font-weight:600}
.fx-chip input:focus-visible+span{outline:2px solid var(--fxg);outline-offset:3px}
.fx-tog{display:inline-flex;align-items:center;gap:10px;margin-top:14px;min-height:44px;cursor:pointer;color:var(--fxt);font-size:15px}
.fx-tog[hidden]{display:none}
.fx-tog input{width:20px;height:20px;accent-color:var(--fxg);margin:0}
/* results */
.fx-res{min-height:120px;border-top:1px solid var(--fxl);padding-top:22px}
.fx-hint{margin:0;color:var(--fxm);font-size:16px;max-width:34em}
.fx-res__h{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:10px 24px;margin:0 0 16px}
.fx-res__n{margin:0;font:400 clamp(22px,2vw,28px)/1.2 var(--fxd);color:var(--fxt)}
.fx-link{min-height:44px;padding:0 2px;border:0;background:none;color:var(--fxg2);font:600 15px/1 var(--fxb);text-decoration:underline;text-underline-offset:5px;cursor:pointer}
.fx-cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.fx-card{display:flex;flex-direction:column;border:1px solid rgba(236,229,216,.12);border-radius:16px;overflow:hidden;background:linear-gradient(180deg,#212a3d,#1b2233);animation:fxIn .5s cubic-bezier(.2,.7,.1,1) both;animation-delay:calc(var(--i,0) * 60ms)}
@keyframes fxIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.fx-card{animation:none}}
.fx-card__img{position:relative;display:block;width:100%;aspect-ratio:4/3;padding:14px;margin:0;border:0;background:#efe8dc;cursor:zoom-in;overflow:hidden}
.fx-card.is-ph .fx-card__img{background:#1d2536}
.fx-card__img img{width:100%;height:100%;object-fit:contain;display:block;transition:transform .6s cubic-bezier(.2,.7,.1,1)}
.fx-card__img:hover img{transform:scale(1.04)}
.fx-rank,.fx-badge{position:absolute;top:10px;inset-inline-start:10px;padding:5px 10px;border-radius:999px;font:700 11px/1 system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase}
.fx-rank{background:#1a2130;color:var(--fxg2)}
.fx-badge{background:rgba(240,168,81,.16);border:1px solid rgba(240,168,81,.6);color:var(--fxg2)}
.fx-card__b{display:flex;flex-direction:column;gap:6px;padding:16px 18px 18px;flex:1}
.fx-card__t{margin:0;font:400 21px/1.15 var(--fxd);color:var(--fxt)}
.fx-card__c{margin:0;font-size:14px;color:var(--fxm)}
.fx-card__s{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0 4px}
.fx-card__s div{border-top:1px solid var(--fxl);padding-top:7px;min-width:0}
.fx-card__s dt{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--fxm)}
.fx-card__s dd{margin:2px 0 0;font:400 18px/1.2 var(--fxd);color:var(--fxt);overflow-wrap:anywhere}
.fx-todo{display:inline-block;font:600 11.5px/1.35 system-ui,sans-serif;color:var(--fxg2);background:rgba(240,168,81,.1);padding:2px 6px;border-radius:4px}
.fx-card__ph{margin:0;font-size:12.5px;color:var(--fxg2)}
.fx-card__a{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:10px}
.fx-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border-radius:999px;border:1px solid transparent;font:600 14px/1 var(--fxb);text-decoration:none;cursor:pointer;transition:background-color .2s,border-color .2s,color .2s}
.fx-btn--p{background:var(--fxg);color:#221a10}.fx-btn--p:hover{background:var(--fxg2)}
.fx-btn--l{border-color:rgba(240,168,81,.55);color:var(--fxg2);background:none}.fx-btn--l:hover{border-color:var(--fxg2)}
/* all 15 clusters, collapsed */
.fx-idx{margin-top:40px;border-top:1px solid var(--fxl);border-bottom:1px solid var(--fxl)}
.fx-idx summary{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px;cursor:pointer;list-style:none;font:400 clamp(19px,1.7vw,24px)/1.2 var(--fxd);color:var(--fxt)}
.fx-idx summary::-webkit-details-marker{display:none}
.fx-idx summary svg{width:22px;height:22px;flex:none;color:var(--fxg);transition:transform .3s}
.fx-idx[open] summary svg{transform:rotate(180deg)}
.fx-idx summary:hover{color:var(--fxg2)}
.fx-idx__note{margin:0 0 18px;color:var(--fxm);font-size:14.5px}
.fx-idx__grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:18px 36px;padding-bottom:26px}
.fx-idx__h{margin:0 0 8px;font:600 12.5px/1 var(--fxb);letter-spacing:.14em;text-transform:uppercase;color:var(--fxm)}
.fx-idx__h small{color:var(--fxg2);margin-inline-start:6px;font-size:inherit}
.fx-idx__l{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:4px 16px}
.fx-cl{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;min-height:48px;padding:8px 0;border:0;border-bottom:1px solid rgba(236,229,216,.08);background:none;color:var(--fxt);text-align:start;font:400 18px/1.2 var(--fxd);cursor:pointer}
.fx-cl small{font:400 12.5px/1.2 var(--fxb);color:var(--fxm)}
.fx-cl.is-soon small{color:var(--fxg2)}
.fx-cl:hover .fx-cl__n{color:var(--fxg2)}
.fx-dot{position:absolute;top:13px;inset-inline-end:4px;width:8px;height:8px;border-radius:50%;background:var(--fxg);box-shadow:0 0 0 4px rgba(240,168,81,.15)}
.fx-note{margin:18px 0 0;font-size:13px;color:var(--fxm);max-width:60em}
/* Arabic */
[dir="rtl"] .fx-kicker,[dir="rtl"] .fx-q__l,[dir="rtl"] .fx-idx__h,[dir="rtl"] .fx-card__s dt,[dir="rtl"] .fx-rank,[dir="rtl"] .fx-badge{letter-spacing:0;text-transform:none}
[dir="rtl"] .fx-kicker{font-size:15px}[dir="rtl"] .fx-q__l{font-size:16px}[dir="rtl"] .fx-idx__h{font-size:14px}[dir="rtl"] .fx-card__s dt{font-size:13px}[dir="rtl"] .fx-rank,[dir="rtl"] .fx-badge{font-size:12.5px}
[dir="rtl"] .fx-tile__t,[dir="rtl"] .fx-res__n,[dir="rtl"] .fx-card__t,[dir="rtl"] .fx-idx summary{font-weight:600}
[dir="rtl"] .fx-tile__t{font-size:clamp(22px,2vw,28px)}[dir="rtl"] .fx-card__t{font-size:18px}[dir="rtl"] .fx-cl{font-size:17px;font-weight:600}[dir="rtl"] .fx-card__s dd{font-size:16px;font-weight:600}
[dir="rtl"] .fx-tile__i svg{transform:scaleX(-1)}
@media (max-width:900px){
  .fx-cards{grid-template-columns:1fr 1fr}
  .fx-idx__grid{grid-template-columns:1fr 1fr}.fx-idx__g:first-child{grid-column:1/-1}
}
@media (max-width:640px){
  .fx-head{margin-bottom:30px}
  .fx-tiles{grid-template-columns:1fr;gap:10px}
  .fx-tile{grid-template-columns:88px 1fr;grid-template-rows:auto auto;column-gap:14px;row-gap:2px;padding:14px 48px 14px 14px;align-items:center}
  [dir="rtl"] .fx-tile{padding:14px 14px 14px 48px}
  .fx-tile__i{grid-row:1/3;margin:0}.fx-tile__i svg{width:88px;height:42px}
  .fx-tile__m{align-self:start;font-size:13.5px}
  .fx-tile::after{top:50%;margin-top:-11px}
  .fx-chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}.fx-chip{flex:none}
  .fx-cards{grid-template-columns:1fr;gap:14px}
  .fx-card{display:grid;grid-template-columns:118px 1fr}
  .fx-card__img{aspect-ratio:auto;height:100%;min-height:140px;padding:8px}
  .fx-card__b{padding:12px 14px 14px}
  .fx-card__t{font-size:18px}
  .fx-card__s dd{font-size:16px}
  .fx-rank,.fx-badge{top:6px;inset-inline-start:6px;padding:4px 7px;font-size:9.5px}
  .fx-card__a .fx-btn{flex:1;padding:0 10px}
  .fx-idx__grid{grid-template-columns:1fr}
  .fx-idx__l{grid-template-columns:1fr 1fr}
}
.fx-lgd{display:inline-flex;align-items:center;gap:8px;margin-inline-start:6px}
.fx-dot--i{position:static;display:inline-block;flex:none}
/* v7: real plan thumbs (white Emaar drawings) on warm paper, floors side by side */
.fx-th{display:flex;gap:6px;width:100%;height:100%;justify-content:center}
.fx-th img{flex:1 1 0;min-width:0;height:100%;object-fit:contain;mix-blend-mode:multiply}
.fx-card.is-ph .fx-th img{mix-blend-mode:normal;object-fit:cover}
.fx-card__img{background:#f3eee4}
.fx-card__s dd small{display:block;margin-top:2px;font:400 12px/1.3 var(--fxb);color:var(--fxm)}
.fx-ns{font:500 13.5px/1.3 var(--fxb);color:#e5dccb}
.fx-rows{list-style:none;margin:0;padding:0;border-top:1px solid rgba(236,229,216,.1)}
.fx-row{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.8fr) minmax(0,1.2fr) auto;align-items:center;gap:10px 20px;padding:12px 0;border-bottom:1px solid rgba(236,229,216,.1)}
.fx-row__n{font:400 21px/1.15 var(--fxd);color:var(--fxt)}
.fx-row__n small{display:block;margin-top:3px;font:400 12.5px/1.2 var(--fxb);color:var(--fxm)}
.fx-row__c{font-size:14.5px;color:var(--fxm)}
.fx-row__s{font:400 17px/1.2 var(--fxd);color:var(--fxt)}
.fx-badge--i{position:static;display:inline-block;padding:3px 7px;font-size:10px}
[dir="rtl"] .fx-row__n{font-weight:600;font-size:18px}[dir="rtl"] .fx-row__s{font-weight:600;font-size:15px}
@media (max-width:640px){
  .fx-row{grid-template-columns:1fr auto;gap:4px 12px}
  .fx-row__n{grid-column:1}.fx-row .fx-btn{grid-column:2;grid-row:1/4}
  .fx-row__c,.fx-row__s{grid-column:1;font-size:14px}
  .fx-th img{mix-blend-mode:multiply}
}
.fx-btn{white-space:nowrap}
@media (max-width:640px){.fx-card__a{flex-wrap:wrap}.fx-card__a .fx-btn{padding:0 12px;font-size:13.5px}}
.fx-cn{display:inline;min-height:0;padding:0;border:0;background:none;color:inherit;font:inherit;text-decoration:underline;text-decoration-color:rgba(240,168,81,.55);text-underline-offset:3px;cursor:pointer}
.fx-cn:hover,.fx-cn:focus-visible{color:var(--fxg2)}
.fx-row__n .fx-cn{text-align:start;font-weight:inherit}
@media (pointer:coarse){.fx-cn{padding-block:12px;margin-block:-12px}}

/* bgfix (29 Sep 2026): the "shadow while scrolling" came from stacked near-identical navies (ink #1a2130 / night #243049 / a night-to-ink gradient),
   a gold radial tint on the finder, a fixed gradient nav bar on /ar/, blurred fixed bars, and reveals that were still fading when on screen.
   Every dark section is now one flat ink; sections are separated by a hairline, fixed bars are solid, reveals finish as they enter. */
.fx-sec{background:var(--ink,#1a2130)}
.sell,.close{background:var(--ink,#1a2130)}
.sell{border-block:1px solid rgba(236,229,216,.08)}
.hero__stage{background-color:var(--ink,#1a2130)}
.nav.is-solid{background:var(--ink,#1a2130);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:0 1px 0 rgba(236,229,216,.08)}
.to-top{background:var(--ink,#1a2130);-webkit-backdrop-filter:none;backdrop-filter:none}
.cbar{background:rgba(26,33,48,.98)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
.reveal{transform:translateY(14px);transition:opacity .5s var(--ease,ease),transform .5s var(--ease,ease)}
.lnav{background:var(--ink,#1a2130);box-shadow:0 1px 0 rgba(240,168,81,.14)}
/* /ar/ concierge button (panel css loads on first tap) */
.lc-toggle{position:fixed;inset-inline-end:20px;bottom:20px;z-index:25;display:flex;align-items:center;gap:8px;min-height:48px;padding:0 18px;border-radius:999px;border:0;background:#e6ddcd;color:#1a2130;font:600 15px/1 var(--ar,system-ui,sans-serif);cursor:pointer;box-shadow:0 12px 30px -12px rgba(0,0,0,.6)}
.lc-toggle svg{width:20px;height:20px}
.lc-toggle[aria-expanded="true"]{visibility:hidden}
@media (max-width:820px){.lc-toggle{bottom:calc(78px + env(safe-area-inset-bottom))}}

/* concierge v7: answer chips, suggested questions, comparisons, Arabic replies */
.msg__chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 4px}
.cchip{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:999px;border:1px solid rgba(240,168,81,.55);background:rgba(240,168,81,.08);color:var(--text,#ece5d8);font:500 14px/1.2 inherit;font-family:inherit;cursor:pointer;text-align:start}
.cchip:hover,.cchip:focus-visible{background:rgba(240,168,81,.2);border-color:#f0a851}
.cchip--q{border-color:rgba(236,229,216,.28);background:none;color:var(--muted,#b3ab9e)}
.cchip--q:hover,.cchip--q:focus-visible{color:var(--text,#ece5d8);border-color:rgba(236,229,216,.6);background:none}
.cmp{border-inline-start:2px solid rgba(240,168,81,.45);padding-inline-start:10px;margin:8px 0}
.msg[dir="rtl"]{align-self:flex-start;font-family:"IBM Plex Sans Arabic",system-ui,sans-serif;line-height:1.7}
.msg--me[dir="rtl"]{align-self:flex-end}
.msg[dir="rtl"] .msg__list{padding-left:0;padding-right:18px}
.msg .hit{width:100%;text-align:start;border:0;color:inherit;font:inherit;cursor:pointer}
.msg{font-size:15px}
.msg .fine-note{font-size:13px}
@media (max-width:900px){.concierge__chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:10px}.concierge__chips button{flex:none;white-space:nowrap}}

/* qa.css (QA pass, 29 Sep 2026). Appended last by _tests/cat-css.sh so it wins over base + finder + bgfix at equal specificity. */

/* 1. Contact: "Buying or selling? Answer a few quick questions" is now a designed gold pill, not an underlined
      link that grows a hard rectangle when focused. The keyboard ring follows the pill shape. */
.close__guided{margin:-4px 0 32px}
.jny-open-btn{display:inline-flex;align-items:center;gap:12px;min-height:46px;padding:0 8px 0 20px;border:1px solid rgba(240,168,81,.45);border-radius:999px;
  background:rgba(240,168,81,.06);color:var(--lantern-2);font:500 15px/1.3 var(--body);text-decoration:none;text-align:start;cursor:pointer;
  transition:background-color .25s,border-color .25s,color .25s}
.jny-open-btn__a{display:inline-grid;place-items:center;flex:none;width:32px;height:32px;border-radius:50%;background:var(--lantern);color:var(--ink);font-size:15px;line-height:1;transition:transform .25s var(--ease,ease)}
.jny-open-btn:hover{background:rgba(240,168,81,.12);border-color:var(--lantern);color:var(--lantern-2)}
.jny-open-btn:hover .jny-open-btn__a{transform:translateX(3px)}
.jny-open-btn:focus-visible{outline:2px solid var(--lantern-2);outline-offset:3px;border-radius:999px}
.jny-open-btn.is-pfocus:focus-visible{outline:none}   /* focus handed back after a mouse/touch-opened journey */
@media (max-width:480px){.jny-open-btn{font-size:14.5px;padding:8px 6px 8px 16px;gap:10px}}

/* 2. /ar/ valuation form: the radios inherited the full-width text-input box (width:100%, 48px tall, filled) and drew as big white discs */
.lform .f .r{margin-inline-end:22px;min-height:44px}
.lform .f .r input,.lform .consent input{width:18px;height:18px;min-height:0;min-width:0;padding:0;margin:0;border:0;border-radius:0;background:none;flex:none;accent-color:var(--lantern)}

/* 3. /ar/ Latin fallback fonts in Arabic text: rank/placeholder badges were system-ui (DejaVu/Segoe), the lang switch used an unloaded Hanken */
[dir="rtl"] .fx-rank,[dir="rtl"] .fx-badge,[dir="rtl"] .fx-todo{font-family:var(--fxb)}
.fp[dir="rtl"] .fp__badge,.fp[dir="rtl"] .fp-todo{font-family:var(--fb)}
.lite--ar .lang{font-family:var(--ar)}
.lite--ar .lcard__price{font-family:'Gloock',var(--ar)}

/* 4. Numbers and phone numbers never split across lines */
.chapter__direct [data-agent],.lform input[type=tel],.lite--ar a[href^="tel:"] span{white-space:nowrap}

/* 5. About caption: the nested role/company spans inherited display:block, leaving the comma alone on its own line */
.portrait figcaption span span{display:inline;margin:0}

/* 6. /ar/ headings: no one-word last lines such as a lone "3؟" (EN titles already balance; "A specialist's" gets a no-break space in index.html) */
.lite h1,.lite h2{text-wrap:balance}

/* 7. Listing chips: the count reads as a badge, so "Anya 1 1" no longer looks like a typo */
.chip span{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;margin-left:8px;border-radius:999px;background:rgba(31,37,51,.08);font-size:12px;opacity:1;vertical-align:1px}
.chip.is-on span{background:rgba(236,229,216,.18)}

/* 8. Listing detail: editorial name as the title, portal headline as a quiet tag line */
.detail__tags{display:block;margin-top:10px;font:500 13px/1.45 var(--body);letter-spacing:.02em;color:var(--ink-muted)}

/* 9. Mobile listing rows: built-up area was hidden with the table columns */
.row__mbua{display:none}
@media (max-width:900px){.row__mbua{display:inline}}

/* 11. Tap targets of at least 44px (checklist item 10). Hero progress dots stay 24px tall on phones (WCAG 2.5.8 AA
       minimum) because the Skip intro control shares their row. */
.hero__skip{display:inline-flex;align-items:center;min-height:44px;min-width:44px}
.nav__lang,.lite .lang{display:inline-flex;align-items:center;min-height:44px;min-width:44px;justify-content:center}
.chip{min-height:44px}
.lnav__links a{display:inline-flex;align-items:center;min-height:44px;padding:0 4px}
.lite .consent{min-height:44px;align-items:center}
.foot__nav a{display:inline-flex;align-items:center;min-height:44px}
@media (min-width:901px){.hero__progress button{top:-21px;bottom:-21px}}
/* sticky header: anchors and focused fields land below it, not under it */
html{scroll-padding-top:96px}

/* 12. Floor-plan panel (checklist item 7): one banner + one badge per card; no repeated per-card "Placeholder" note;
       fewer than four cards get wider cards instead of a sparse grid */
.fp .fp-card .fp-card__ph{display:none}
.fp .fp-grid:not(:has(> li:nth-child(4))){grid-template-columns:repeat(auto-fill,minmax(300px,380px))}
@media (max-width:600px){.fp .fp-grid:not(:has(> li:nth-child(3))){grid-template-columns:1fr}}

/* 13. AR permit row stays hidden until real Trakheesi numbers are added (then remove the hidden attribute) */
.lcard__permit[hidden]{display:none!important}

/* 14. The /ar/ listing cards are regenerated by the daily listings sync (sync-listings.mjs), whose template still prints
   "رقم تصريح الإعلان: [TODO: real data required]". Keep that sync-owned block byte-for-byte and hide the permit row here
   until real Trakheesi numbers exist. */
.lcard__permit{display:none!important}
