/* Layout concept: "White city above the strait" — chalk-white sections stacked over deep Tangier-indigo bands,
   images framed in pointed Moorish arches, brass as the single accent. */
@font-face{font-family:"Marcellus";src:url("fonts/marcellus-latin-400-normal.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Manrope";src:url("fonts/manrope-latin-400-normal.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Manrope";src:url("fonts/manrope-latin-500-normal.woff2") format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Manrope";src:url("fonts/manrope-latin-600-normal.woff2") format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"Manrope";src:url("fonts/manrope-latin-700-normal.woff2") format("woff2");font-weight:700;font-display:swap}

:root{
  --bg:#ffffff;          /* pure white */
  --surface:#ffffff;
  --sand:#f7f6f2;
  --fg:#13283a;          /* Tanger indigo */
  --muted:#56656f;
  --line:rgba(19,40,58,.13);
  --band:#ffffff;        /* sections stay white */
  --band-fg:#13283a;
  --band-muted:#56656f;
  --deep:#13283a; --deep-fg:#eee9de; --deep-muted:#a9b4bb; --deep-line:var(--line);
  --zline:#2f5b57;       /* zellige line colour */
  --brass:#9c7a3c;       /* accent: lantern brass */
  --brass-soft:#c9a462;
  --zellige:#2f5b57;     /* green glaze */
  --clay:#b6643f;
  --ok:#2f7a55; --warn:#a8641f;
  --chart-1:#13283a; --chart-2:#2f5b57; --chart-3:#c9a462; --chart-4:#b6643f; --chart-5:#8fa6b2;
  --shadow:0 18px 40px -24px rgba(19,40,58,.35);
  --display:"Marcellus","Cormorant Garamond","Times New Roman",serif;
  --sans:"Manrope","Segoe UI",system-ui,-apple-system,sans-serif;
  --r:4px;
  --max:1240px;
  --gut:max(16px,env(safe-area-inset-left,0px));
  --gutr:max(16px,env(safe-area-inset-right,0px));
}

:root{color-scheme:light}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--fg);font:400 16px/1.65 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:60;background:var(--bg)}
img{max-width:100%;display:block}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--brass);outline-offset:3px}
h1,h2,h3,h4{font-family:var(--display);font-weight:400;line-height:1.12;margin:0;text-wrap:balance;letter-spacing:.005em}
h1{font-size:clamp(2.4rem,5.4vw,4.6rem)}
h2{font-size:clamp(1.9rem,3.6vw,3rem)}
h3{font-size:clamp(1.3rem,2vw,1.6rem)}
p{margin:0}
.wrap{max-width:var(--max);margin:0 auto;padding-left:var(--gut);padding-right:var(--gutr)}
.eyebrow{font:600 .74rem/1.2 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--brass);display:flex;align-items:center;gap:.7em}
.eyebrow::before{content:"";width:12px;height:12px;flex:none;background:currentColor;
  -webkit-mask:var(--star) center/contain no-repeat;mask:var(--star) center/contain no-repeat}
:root{--star:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath d='M50 0l14.6 14.6H85.4v20.8L100 50 85.4 64.6v20.8H64.6L50 100 35.4 85.4H14.6V64.6L0 50l14.6-14.6V14.6h20.8z'/%3E%3C/svg%3E");
  --ztile:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' viewBox='0 0 64 64'%3E%3Cpath d='M64.00,32.00 L54.63,41.37 L54.63,54.63 L41.37,54.63 L32.00,64.00 L22.63,54.63 L9.37,54.63 L9.37,41.37 L0.00,32.00 L9.37,22.63 L9.37,9.37 L22.63,9.37 L32.00,0.00 L41.37,9.37 L54.63,9.37 L54.63,22.63Z M47.00,32.00 L42.61,36.39 L42.61,42.61 L36.39,42.61 L32.00,47.00 L27.61,42.61 L21.39,42.61 L21.39,36.39 L17.00,32.00 L21.39,27.61 L21.39,21.39 L27.61,21.39 L32.00,17.00 L36.39,21.39 L42.61,21.39 L42.61,27.61Z M0,-7 L7,0 L0,7 L-7,0Z M64,-7 L71,0 L64,7 L57,0Z M0,57 L7,64 L0,71 L-7,64Z M64,57 L71,64 L64,71 L57,64Z' fill='none' stroke='black' stroke-width='0.8'/%3E%3C/svg%3E");
  --zorn:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 24'%3E%3Cg fill='none' stroke='black' stroke-width='1'%3E%3Cpath d='M71.00,12.00 L67.78,15.22 L67.78,19.78 L63.22,19.78 L60.00,23.00 L56.78,19.78 L52.22,19.78 L52.22,15.22 L49.00,12.00 L52.22,8.78 L52.22,4.22 L56.78,4.22 L60.00,1.00 L63.22,4.22 L67.78,4.22 L67.78,8.78Z'/%3E%3Cpath d='M65.50,12.00 L63.89,13.61 L63.89,15.89 L61.61,15.89 L60.00,17.50 L58.39,15.89 L56.11,15.89 L56.11,13.61 L54.50,12.00 L56.11,10.39 L56.11,8.11 L58.39,8.11 L60.00,6.50 L61.61,8.11 L63.89,8.11 L63.89,10.39Z'/%3E%3Cpath d='M38,12 l4,-4 l4,4 l-4,4z M74,12 l4,-4 l4,4 l-4,4z'/%3E%3C/g%3E%3C/svg%3E");
  --arch:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cpath d='M0 100V34C0 16 22 4 50 0c28 4 50 16 50 34v66z'/%3E%3C/svg%3E")}
.lede{font-size:clamp(1.05rem,1.4vw,1.2rem);color:var(--muted);max-width:60ch}
.muted{color:var(--muted)}
.num{font-variant-numeric:tabular-nums}
section{padding-block:clamp(48px,6.5vw,92px)}
.sec-head{display:flex;justify-content:space-between;align-items:end;gap:24px;flex-wrap:wrap;margin-bottom:clamp(28px,4vw,48px)}
.sec-head > div{display:grid;gap:14px;min-width:0}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6em;padding:.95em 1.6em;border-radius:var(--r);border:1px solid transparent;
  font:600 .82rem/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:background .2s,color .2s,border-color .2s,transform .2s}
.btn-primary{background:var(--fg);color:var(--bg)}
.btn-primary:hover{background:var(--brass);color:#fff}
.btn-brass{background:var(--brass);color:#fff}
.btn-brass:hover{background:var(--fg);color:var(--bg)}
.btn-ghost{border-color:var(--line);background:transparent}
.btn-ghost:hover{border-color:var(--fg)}
.band .btn-ghost{border-color:var(--line);color:var(--band-fg)}
.band .btn-ghost:hover{border-color:var(--band-fg)}
.link{font:600 .78rem/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;border-bottom:1px solid var(--brass);padding-bottom:5px;color:var(--fg);background:none;border-top:0;border-left:0;border-right:0;cursor:pointer}
.link:hover{color:var(--brass)}

/* header */
.topbar{background:var(--bg);border-bottom:1px solid var(--line);color:var(--muted);font-size:.78rem;letter-spacing:.04em}
.topbar .wrap{display:flex;justify-content:space-between;gap:16px;padding-block:8px;flex-wrap:wrap}
.topbar a{text-decoration:none}.topbar a:hover{color:var(--fg)}
.topbar .tb-right{display:flex;gap:18px;align-items:center}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden}
.seg button{background:none;border:0;color:var(--muted);padding:3px 10px;font-size:.72rem;font-weight:600;letter-spacing:.08em;cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--fg);color:var(--bg)}
header.site{position:sticky;top:env(safe-area-inset-top,0px);z-index:50;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;height:76px}
.logo{display:flex;align-items:center;gap:12px;text-decoration:none;min-width:0}
.logo svg{width:38px;height:38px;flex:none;color:var(--brass)}
.logo b{display:block;font:400 1.35rem/1 var(--display);letter-spacing:.22em}
.logo small{display:block;font:600 .6rem/1 var(--sans);letter-spacing:.32em;text-transform:uppercase;color:var(--muted);margin-top:6px}
nav.main{display:flex;gap:28px;align-items:center}
nav.main a{text-decoration:none;font-weight:500;font-size:.92rem;position:relative;padding-block:8px}
nav.main a::after{content:"";position:absolute;left:0;right:100%;bottom:2px;height:1px;background:var(--brass);transition:right .25s}
nav.main a:hover::after,nav.main a[aria-current="page"]::after{right:0}
.menu-btn{display:none;background:none;border:1px solid var(--line);border-radius:var(--r);width:44px;height:44px;cursor:pointer}
.menu-btn span{display:block;width:18px;height:1.5px;background:var(--fg);margin:4px auto}
.drawer{position:fixed;inset:0;z-index:70;background:var(--bg);color:var(--fg);padding:calc(24px + env(safe-area-inset-top,0px)) var(--gutr) 24px var(--gut);display:flex;flex-direction:column;gap:6px}
.drawer a{font:400 1.9rem/1.4 var(--display);text-decoration:none}
.drawer .close{align-self:flex-end;background:none;border:1px solid var(--line);color:var(--band-fg);border-radius:var(--r);width:44px;height:44px;font-size:1.4rem;cursor:pointer;margin-bottom:24px}
@media (max-width:980px){nav.main{display:none}.menu-btn{display:block}.hdr-cta{display:none}}

/* hero */
.hero{padding-block:clamp(36px,5vw,64px) clamp(56px,7vw,96px);position:relative}
.hero .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,5vw,72px);align-items:center}
.hero-copy{display:grid;gap:26px;min-width:0}
.hero h1 em{font-style:normal;color:var(--brass)}
.hero-art{position:relative;aspect-ratio:4/5;max-width:100%}
.hero-art .zfield{inset:-18% -30% -10% -30%;z-index:-1}
.hero{isolation:isolate;overflow:hidden}
.arch{-webkit-mask:var(--arch) center/100% 100% no-repeat;mask:var(--arch) center/100% 100% no-repeat;overflow:hidden}
.hero-art .arch{position:absolute;inset:0}
.hero-art .arch img{width:100%;height:100%;object-fit:cover}
.hero-art .frame{position:absolute;inset:-14px -14px 0 -14px;border:1px solid var(--brass);border-bottom:0;
  -webkit-mask:none;border-radius:50% 50% 0 0 / 34% 34% 0 0;pointer-events:none;opacity:.6}
.hero-badge{position:absolute;left:-24px;bottom:36px;background:var(--surface);box-shadow:var(--shadow);padding:16px 20px;display:grid;gap:2px;border-left:2px solid var(--brass)}
.hero-badge b{font:400 1.6rem/1 var(--display)}
.hero-badge span{font-size:.78rem;color:var(--muted)}
.search{display:grid;grid-template-columns:1fr 1fr 1fr auto;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:var(--r)}
.search label{display:grid;gap:2px;padding:12px 18px;border-right:1px solid var(--line);min-width:0}
.search label span{font:600 .66rem/1.2 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.search select{border:0;background:transparent;padding:2px 0;font-weight:600;min-width:0;width:100%;cursor:pointer}
.search .btn{border-radius:0 var(--r) var(--r) 0}
.hero-proof{display:flex;gap:28px;flex-wrap:wrap;color:var(--muted);font-size:.86rem}
.hero-proof span{display:flex;gap:8px;align-items:center}
.hero-proof i{width:8px;height:8px;background:var(--zellige);transform:rotate(45deg);display:inline-block}
@media (max-width:900px){.hero .wrap{grid-template-columns:1fr}.hero-art{max-width:460px;width:100%;justify-self:center;aspect-ratio:5/5}.hero-badge{left:0}}
@media (max-width:640px){.search{grid-template-columns:1fr}.search label{border-right:0;border-bottom:1px solid var(--line)}.search .btn{border-radius:0 0 var(--r) var(--r);padding:1.1em}}

/* minimal zellige: line-art star-and-cross, used sparingly */
.zdiv{display:flex;align-items:center;gap:20px;max-width:var(--max);margin:0 auto;padding-left:var(--gut);padding-right:var(--gutr)}
.zdiv::before,.zdiv::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--line) 30%,var(--line))}
.zdiv::after{background:linear-gradient(270deg,transparent,var(--line) 30%,var(--line))}
.zdiv i{width:clamp(180px,26vw,320px);height:40px;flex:none;position:relative;background:var(--brass);opacity:.9;
  -webkit-mask:var(--ztile) center/40px 40px repeat-x,linear-gradient(90deg,transparent,#000 30%,#000 70%,transparent);-webkit-mask-composite:source-in;
  mask:var(--ztile) center/40px 40px repeat-x,linear-gradient(90deg,transparent,#000 30%,#000 70%,transparent);mask-composite:intersect}
.zfield{position:absolute;pointer-events:none;background:var(--zline);opacity:.3;
  -webkit-mask:var(--ztile) 0 0/64px 64px repeat,radial-gradient(closest-side,#000 45%,transparent);-webkit-mask-composite:source-in;
  mask:var(--ztile) 0 0/64px 64px repeat,radial-gradient(closest-side,#000 45%,transparent);mask-composite:intersect}
.zstrip{height:96px;background:var(--brass);opacity:.35;
  -webkit-mask:var(--ztile) center/64px 64px repeat-x,linear-gradient(90deg,transparent,#000 25%,#000 75%,transparent);-webkit-mask-composite:source-in;
  mask:var(--ztile) center/64px 64px repeat-x,linear-gradient(90deg,transparent,#000 25%,#000 75%,transparent);mask-composite:intersect}

/* bands */
.band{background:var(--band);color:var(--band-fg)}
.band .muted,.band .lede{color:var(--band-muted)}
.band .eyebrow{color:var(--brass)}
.sand{background:var(--bg)}

/* positioning / about */
.about .wrap{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(32px,6vw,96px);align-items:center}
.about-art{position:relative;aspect-ratio:4/5}
.about-art .zfield{inset:-14% -24%;z-index:-1}
.about{isolation:isolate;overflow:hidden}
.about-art .arch{position:absolute;inset:0}
.about-art img{width:100%;height:100%;object-fit:cover}
.about-copy{display:grid;gap:24px;min-width:0}
.not-list{display:flex;gap:10px;flex-wrap:wrap}
.not-list span{border:1px solid var(--line);padding:6px 14px;border-radius:999px;font-size:.85rem;color:var(--band-muted)}
.not-list span s{text-decoration-color:var(--brass)}
.bridge{display:grid;grid-template-columns:1fr auto 1fr;gap:18px;align-items:start;border-top:1px solid var(--line);padding-top:24px}
.bridge h4{font-size:1.15rem;margin-bottom:8px}
.bridge ul{margin:0;padding:0;list-style:none;display:grid;gap:6px;font-size:.92rem;color:var(--band-muted)}
.bridge .mid{width:44px;height:44px;color:var(--brass);margin-top:4px}
@media (max-width:900px){.about .wrap{grid-template-columns:1fr}.about-art{max-width:420px;aspect-ratio:1}}
@media (max-width:560px){.bridge{grid-template-columns:1fr}.bridge .mid{transform:rotate(90deg)}}

/* listing cards */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,2.4vw,32px)}
@media (max-width:1000px){.cards{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.cards{grid-template-columns:1fr}}
.card{display:grid;grid-template-rows:auto 1fr;text-decoration:none;background:var(--surface);border:1px solid var(--line);transition:transform .3s,box-shadow .3s;min-width:0}
.card:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.card .ph{position:relative;aspect-ratio:16/11;overflow:hidden;background:var(--sand)}
.card .ph img{width:100%;height:100%;object-fit:cover;transition:transform .8s}
.card:hover .ph img{transform:scale(1.04)}
.chips{position:absolute;top:14px;left:14px;display:flex;gap:6px;flex-wrap:wrap}
.chip{font:700 .64rem/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;padding:7px 10px;background:var(--surface);color:var(--fg);border-radius:2px}
.chip.st-available{background:var(--zellige);color:#fff}
.chip.st-reserved{background:var(--clay);color:#fff}
.chip.st-offplan{background:var(--brass);color:#fff}
.chip.demo{background:rgba(255,255,255,.88);color:#13283a}
.card .body{padding:20px 22px 22px;display:grid;gap:12px;align-content:start}
.card .loc{font:600 .7rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.card h3{font-size:1.35rem}
.card .price{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
.card .price b{font:400 1.45rem/1 var(--display)}
.card .yield{font-size:.8rem;color:var(--zellige);font-weight:600}
.facts{display:flex;gap:18px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:12px;font-size:.86rem;color:var(--muted)}
.facts span b{color:var(--fg);font-weight:600}

/* process */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--line)}
.step{padding:32px 28px 8px 0;display:grid;gap:14px;align-content:start;min-width:0}
.step + .step{padding-left:28px;border-left:1px solid var(--line)}
.step .n{font:400 3rem/1 var(--display);color:var(--brass)}
.step ul{margin:0;padding:0;list-style:none;display:grid;gap:8px;color:var(--muted);font-size:.94rem}
.step li{display:grid;grid-template-columns:14px 1fr;gap:10px}
.step li::before{content:"";width:6px;height:6px;margin-top:.62em;background:var(--zellige);transform:rotate(45deg)}
@media (max-width:900px){.steps{grid-template-columns:1fr}.step,.step+.step{padding:28px 0;border-left:0;border-bottom:1px solid var(--line)}}

/* why tangier */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:48px}
.stat{background:var(--band);padding:28px 24px;display:grid;gap:10px;align-content:start}
.stat b{font:400 clamp(2rem,3.4vw,2.8rem)/1 var(--display);color:var(--fg)}
.stat::before{content:"";width:16px;height:16px;background:var(--brass);-webkit-mask:var(--star) center/contain no-repeat;mask:var(--star) center/contain no-repeat}
.stat span{font-size:.9rem;color:var(--band-muted)}
.why-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(32px,6vw,96px);align-items:end}
.src{font-size:.74rem;color:var(--band-muted);margin-top:14px}
.src a{color:var(--band-muted)}
@media (max-width:900px){.stats{grid-template-columns:repeat(2,1fr)}.why-grid{grid-template-columns:1fr}}
@media (max-width:460px){.stats{grid-template-columns:1fr}}

/* trust */
.trust{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.trust div{background:var(--bg);padding:30px 26px;display:grid;gap:10px;align-content:start}
.trust svg{width:30px;height:30px;color:var(--zellige)}
.trust p{color:var(--muted);font-size:.94rem}
@media (max-width:900px){.trust{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.trust{grid-template-columns:1fr}}

/* neighborhoods */
.hoods{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2vw,28px)}
.hood{position:relative;display:block;text-decoration:none;color:#fff;aspect-ratio:4/5;overflow:hidden;background:var(--sand)}
.hood img{width:100%;height:100%;object-fit:cover;transition:transform .8s}
.hood:hover img{transform:scale(1.05)}
.hood::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,22,32,0) 40%,rgba(10,22,32,.82))}
.hood .t{position:absolute;left:22px;right:22px;bottom:20px;z-index:1;display:grid;gap:6px}
.hood .t h3{color:#fff}
.hood .t span{font-size:.8rem;letter-spacing:.06em;color:#e6dccb}
@media (max-width:900px){.hoods{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.hoods{grid-template-columns:1fr}.hood{aspect-ratio:16/11}}

/* journal */
.posts{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,2.4vw,32px)}
.post{display:grid;gap:14px;text-align:left;background:none;border:0;padding:0;cursor:pointer;color:inherit}
.post .ph{aspect-ratio:16/10;overflow:hidden}
.post img{width:100%;height:100%;object-fit:cover;transition:transform .8s}
.post:hover img{transform:scale(1.04)}
.post h3{font-size:1.3rem}
.post p{color:var(--muted);font-size:.94rem}
@media (max-width:900px){.posts{grid-template-columns:1fr}}

/* social */
.social-band .wrap{display:grid;grid-template-columns:1fr auto;gap:32px;align-items:center}
.social-links{display:flex;gap:12px;flex-wrap:wrap}
@media (max-width:760px){.social-band .wrap{grid-template-columns:1fr}}

/* contact */
.contact .wrap{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(32px,6vw,96px)}
.contact-info{display:grid;gap:22px;align-content:start}
.contact-info dl{display:grid;gap:14px;margin:0}
.contact-info dt{font:600 .68rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.contact-info dd{margin:4px 0 0;font-size:1.05rem}
form.lead{display:grid;grid-template-columns:1fr 1fr;gap:16px;background:var(--surface);border:1px solid var(--line);padding:clamp(20px,3vw,36px)}
form.lead .full{grid-column:1/-1}
.field{display:grid;gap:6px;min-width:0}
.field label,.field .lbl{font:600 .68rem/1.2 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);background:var(--bg);padding:12px 14px;border-radius:var(--r);min-width:0}
.field textarea{min-height:110px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--brass)}
.consent{display:grid;grid-template-columns:20px 1fr;gap:10px;font-size:.82rem;color:var(--muted);align-items:start}
.consent input{margin-top:3px;accent-color:var(--zellige)}
.form-ok{grid-column:1/-1;border-left:2px solid var(--ok);padding:12px 16px;background:color-mix(in srgb,var(--ok) 10%,transparent);font-size:.92rem}
.form-err{grid-column:1/-1;border-left:2px solid var(--clay);padding:12px 16px;font-size:.92rem}
@media (max-width:900px){.contact .wrap{grid-template-columns:1fr}}
@media (max-width:560px){form.lead{grid-template-columns:1fr}}

/* footer */
footer.site{background:var(--deep);color:var(--deep-muted);font-size:.9rem;padding-block:64px 32px}
footer .cols{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:32px}
footer h4{color:var(--deep-fg);font:600 .7rem/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;margin-bottom:16px}
footer ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
footer a{text-decoration:none}footer a:hover{color:var(--deep-fg)}
footer .logo b{color:var(--deep-fg)}
footer .logo svg{color:var(--brass-soft)}
footer .legal{border-top:1px solid var(--deep-line);margin-top:48px;padding-top:24px;display:grid;gap:10px;font-size:.78rem}
@media (max-width:860px){footer .cols{grid-template-columns:1fr 1fr}}
@media (max-width:480px){footer .cols{grid-template-columns:1fr}}

/* listings page */
.page-head{padding-block:clamp(40px,6vw,72px) 28px;display:grid;gap:16px}
.filters{display:flex;gap:12px;flex-wrap:wrap;align-items:end;padding-block:20px;border-block:1px solid var(--line);margin-bottom:32px}
.filters .field{flex:1 1 160px}
.filters .count{margin-left:auto;font-size:.9rem;color:var(--muted);align-self:center}
.empty{padding:48px;text-align:center;border:1px dashed var(--line);color:var(--muted)}

/* listing detail */
.crumbs{font-size:.82rem;color:var(--muted);padding-block:22px;display:flex;gap:8px;flex-wrap:wrap}
.crumbs a{text-decoration:none}.crumbs a:hover{color:var(--brass)}
.gallery{display:grid;grid-template-columns:2fr 1fr 1fr;grid-template-rows:1fr 1fr;gap:8px;height:clamp(300px,52vw,600px)}
.gallery button{border:0;padding:0;cursor:pointer;overflow:hidden;position:relative;background:var(--sand)}
.gallery button:first-child{grid-row:1/3}
.gallery img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.gallery button:hover img{transform:scale(1.03)}
.gallery .all{position:absolute;right:14px;bottom:14px;background:var(--surface);color:var(--fg);font:600 .72rem/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;padding:10px 14px;border-radius:2px}
@media (max-width:760px){.gallery{grid-template-columns:1fr 1fr;grid-template-rows:2fr 1fr;height:auto}.gallery button:first-child{grid-column:1/3;grid-row:auto;aspect-ratio:16/11}.gallery button{aspect-ratio:16/11}.gallery button:nth-child(n+4){display:none}}
.detail{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:clamp(28px,4vw,64px);padding-block:40px 80px;align-items:start}
@media (max-width:1040px){.detail{grid-template-columns:minmax(0,1fr)}}
.side,.book{min-width:0}
.d-main{display:grid;gap:48px;min-width:0}
.d-title{display:grid;gap:14px}
.d-title .row{display:flex;justify-content:space-between;align-items:end;gap:20px;flex-wrap:wrap}
.d-price b{font:400 clamp(2rem,3.4vw,2.8rem)/1 var(--display);display:block}
.d-price span{font-size:.86rem;color:var(--muted)}
.keyfacts{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.keyfacts div{background:var(--bg);padding:16px 18px;display:grid;gap:4px}
.keyfacts b{font:400 1.45rem/1 var(--display)}
.keyfacts span{font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.snap{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);position:relative;overflow:hidden}
.snap::before{content:"";position:absolute;inset:0;background:var(--zline);opacity:.07;-webkit-mask:var(--ztile) 0 0/48px 48px repeat;mask:var(--ztile) 0 0/48px 48px repeat;pointer-events:none}
.snap div{position:relative}
.snap div{padding:22px 24px;display:grid;gap:6px}
.snap div + div{border-left:1px solid var(--line)}
.snap b{font:400 1.7rem/1 var(--display);color:var(--fg)}
.snap span{font-size:.8rem;color:var(--muted)}
@media (max-width:620px){.snap{grid-template-columns:1fr}.snap div+div{border-left:0;border-top:1px solid var(--line)}}
.block h2{font-size:clamp(1.6rem,2.6vw,2.1rem);margin-bottom:18px}
.desc{display:grid;gap:14px;color:var(--fg);max-width:68ch}
.desc.clamped{max-height:9.6em;overflow:hidden;-webkit-mask:linear-gradient(#000 60%,transparent);mask:linear-gradient(#000 60%,transparent)}
.acc{border-top:1px solid var(--line)}
.acc details{border-bottom:1px solid var(--line)}
.acc summary{list-style:none;cursor:pointer;padding:18px 0;display:flex;justify-content:space-between;align-items:center;font:400 1.2rem/1.2 var(--display)}
.acc summary::-webkit-details-marker{display:none}
.acc summary::after{content:"+";font:300 1.5rem/1 var(--sans);color:var(--brass);transition:transform .2s}
.acc details[open] summary::after{transform:rotate(45deg)}
.acc dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 32px;margin:0 0 20px}
.acc dl div{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px dashed var(--line);font-size:.93rem}
.acc dt{color:var(--muted)}.acc dd{margin:0;font-weight:600;text-align:right}
@media (max-width:620px){.acc dl{grid-template-columns:1fr}}
.dist{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.dist div{display:flex;justify-content:space-between;gap:12px;border:1px solid var(--line);padding:14px 16px;font-size:.92rem;background:var(--surface)}
.dist b{font-weight:600}

/* calculators */
.calc{border:1px solid var(--line);background:var(--surface);min-width:0}
.block{min-width:0}
.tabs{display:flex;border-bottom:1px solid var(--line);overflow-x:auto}
.tabs button{flex:1 0 auto;background:none;border:0;border-bottom:2px solid transparent;padding:18px 20px;font:600 .74rem/1.2 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);cursor:pointer;white-space:nowrap}
.tabs button[aria-selected="true"]{color:var(--fg);border-bottom-color:var(--brass)}
.calc-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(20px,3vw,40px);padding:clamp(18px,3vw,32px)}
@media (max-width:760px){.calc-body{grid-template-columns:minmax(0,1fr)}}
.inputs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-content:start}
.inputs .full{grid-column:1/-1}
@media (max-width:420px){.inputs{grid-template-columns:1fr}}
.inp{display:grid;gap:6px;min-width:0}
.inp label{font:600 .66rem/1.2 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);display:flex;justify-content:space-between;gap:8px}
.inp .box{display:flex;align-items:center;border:1px solid var(--line);border-radius:var(--r);background:var(--bg)}
.inp .box:focus-within{border-color:var(--brass)}
.inp input[type=number],.inp select{border:0;background:transparent;padding:11px 12px;width:100%;min-width:0;font-weight:600;font-variant-numeric:tabular-nums}
.inp input:focus,.inp select:focus{outline:none}
.inp .unit{padding:0 12px;color:var(--muted);font-size:.86rem;white-space:nowrap}
.inp input[type=range]{width:100%;accent-color:var(--zellige)}
.inp .hint{font-size:.74rem;color:var(--muted)}
.result{display:grid;gap:18px;align-content:start}
.big{display:grid;gap:4px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.big span{font:600 .68rem/1.2 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.big b{font:400 clamp(2.1rem,3.6vw,2.8rem)/1 var(--display)}
.big b.neg{color:var(--clay)}
.big small{color:var(--muted);font-size:.85rem}
.donut-row{display:grid;grid-template-columns:140px 1fr;gap:20px;align-items:center}
@media (max-width:420px){.donut-row{grid-template-columns:1fr}.donut-row svg{max-width:160px}}
.legend{display:grid;gap:8px;margin:0;padding:0;list-style:none;font-size:.9rem}
.legend li{display:grid;grid-template-columns:12px 1fr auto;gap:10px;align-items:center}
.legend i{width:10px;height:10px;border-radius:2px}
.legend .v{font-weight:600;font-variant-numeric:tabular-nums}
.legend .p{color:var(--muted);font-size:.8rem;margin-left:6px}
.kv{display:grid;gap:0;margin:0}
.kv div{display:flex;justify-content:space-between;gap:16px;padding:9px 0;border-bottom:1px dashed var(--line);font-size:.92rem}
.kv dt{color:var(--muted)}.kv dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums;text-align:right}
.kv .tot{border-bottom:0;border-top:1px solid var(--fg);padding-top:12px;margin-top:4px}
.kv .tot dt{color:var(--fg);font-weight:600}
.kv .neg dd{color:var(--clay)}
.flow{display:flex;height:16px;border-radius:2px;overflow:hidden;background:var(--sand)}
.flow span{height:100%}
.toggle{display:flex;gap:10px;align-items:center;font-size:.88rem}
.toggle input{accent-color:var(--zellige);width:18px;height:18px}
.calc-foot{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:center;padding:14px clamp(18px,3vw,32px);border-top:1px solid var(--line);font-size:.76rem;color:var(--muted)}
.calc-foot button{background:none;border:1px solid var(--line);padding:8px 14px;border-radius:var(--r);cursor:pointer;font-weight:600;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase}
.calc-foot button:hover{border-color:var(--fg)}

/* sidebar */
.side{position:sticky;top:calc(96px + env(safe-area-inset-top,0px));display:grid;gap:20px}
@media (max-width:1040px){.side{position:static}}
.agent{display:grid;grid-template-columns:64px 1fr;gap:16px;align-items:center;padding:20px;border:1px solid var(--line);background:var(--surface)}
.agent .av{width:64px;height:64px;border-radius:50%;background:var(--bg);border:1px solid var(--brass);color:var(--brass);display:grid;place-items:center;font:400 1.4rem/1 var(--display)}
.agent b{display:block;font-weight:600}
.agent span{font-size:.84rem;color:var(--muted)}
.book{border:1px solid var(--line);background:var(--surface);padding:22px;display:grid;gap:16px}
.book h3{font-size:1.4rem}
.days{display:grid;grid-auto-flow:column;grid-auto-columns:64px;gap:8px;overflow-x:auto;padding-bottom:4px}
.days button,.slots button,.mode button{border:1px solid var(--line);background:var(--bg);border-radius:var(--r);cursor:pointer;padding:10px 6px;display:grid;gap:2px;justify-items:center;font-size:.78rem}
.days button b{font:400 1.3rem/1 var(--display)}
.days button[aria-pressed="true"],.slots button[aria-pressed="true"],.mode button[aria-pressed="true"]{border-color:var(--fg);background:var(--fg);color:var(--bg)}
.slots{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.slots button{padding:9px 4px;font-weight:600}
.mode{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.mode button{padding:12px;font-weight:600;font-size:.84rem}
.book .field input{background:var(--bg)}

/* lightbox & modal */
.lightbox,.modal{position:fixed;inset:0;z-index:90;background:rgba(6,14,20,.94);display:grid;grid-template-rows:auto 1fr auto;color:#eee9de;padding:calc(12px + env(safe-area-inset-top,0px)) var(--gutr) calc(12px + env(safe-area-inset-bottom,0px)) var(--gut)}
.lightbox .lb-top{display:flex;justify-content:space-between;align-items:center;padding-block:8px;font-size:.86rem}
.lightbox .stage{display:grid;place-items:center;min-height:0;position:relative}
.lightbox .stage img{max-height:100%;max-width:100%;object-fit:contain}
.lb-btn{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.2);color:#fff;width:48px;height:48px;border-radius:50%;cursor:pointer;font-size:1.3rem;display:grid;place-items:center}
.lb-btn:hover{background:rgba(255,255,255,.18)}
.lightbox .prev,.lightbox .next{position:absolute;top:50%;transform:translateY(-50%)}
.lightbox .prev{left:0}.lightbox .next{right:0}
.lightbox .thumbs{display:flex;gap:8px;justify-content:center;overflow-x:auto;padding-top:10px}
.lightbox .thumbs button{border:2px solid transparent;padding:0;width:84px;height:56px;flex:none;cursor:pointer;background:none;opacity:.6}
.lightbox .thumbs button[aria-current="true"]{border-color:var(--brass-soft);opacity:1}
.lightbox .thumbs img{width:100%;height:100%;object-fit:cover}
.modal{display:block;overflow-y:auto;background:rgba(6,14,20,.75)}
.modal article{max-width:720px;margin:40px auto;background:var(--bg);color:var(--fg);padding:clamp(24px,4vw,48px);display:grid;gap:18px;position:relative}
.modal article .lb-btn{position:absolute;top:16px;right:16px;background:var(--sand);color:var(--fg);border-color:var(--line)}
.modal article img{aspect-ratio:16/8;object-fit:cover;width:100%}
.modal article h2{padding-right:48px}
.modal article p,.modal article li{color:var(--fg)}
.modal article ul{margin:0;padding-left:20px;display:grid;gap:6px}

.legal-page{max-width:820px;padding-block:56px 96px;display:grid;gap:16px}
.legal-page h2{font-size:1.5rem;margin-top:20px}
.legal-page .todo{background:color-mix(in srgb,var(--brass) 14%,transparent);padding:2px 6px}

.reveal{animation:rise .8s cubic-bezier(.2,.7,.2,1) both}
@keyframes rise{from{opacity:.001;transform:translateY(14px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.wa-float{position:fixed;right:calc(18px + env(safe-area-inset-right,0px));bottom:calc(18px + env(safe-area-inset-bottom,0px));z-index:40;width:56px;height:56px;border-radius:50%;background:var(--zellige);color:#fff;display:grid;place-items:center;box-shadow:var(--shadow)}
.wa-float svg{width:26px;height:26px}
