/* Isobathe (nom fictif) — design system. One system for every page: ivory limestone + deep lake water, Bodoni Moda alone (one family, optical sizes + weights). */
/* Web fonts (SIL Open Font License), served by Google Fonts' CDN; latin subset rules copied from the Google Fonts CSS of 2026-10-18 so the page needs no extra stylesheet request */
@font-face { font-family: "Bodoni Moda"; font-style: normal; font-weight: 400 500; font-display: swap; src: url(https://fonts.gstatic.com/s/bodonimoda/v28/aFTQ7PxzY382XsXX63LUYJSKSKg.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: "Bodoni Moda"; font-style: italic; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/bodonimoda/v28/aFTB7PxzY382XsXX63LUYJSPUqb0qojSAq1rZLktbNxSXgM.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; }
/* metric-matched fallback (Times New Roman and its metric twin Liberation Serif): the text keeps its lines while the web font loads */
@font-face { font-family: "Bodoni fallback"; src: local("Times New Roman"), local("TimesNewRomanPSMT"), local("Liberation Serif"); size-adjust: 112%; ascent-override: 100.9%; descent-override: 35.7%; line-gap-override: 0%; }
:root {
  --paper: #f3efe8;
  --paper-2: #ebe5da;
  --card: #fbf9f5;
  --ink: #10282b;
  --ink-2: #405659;
  --ink-3: #52666a;
  --rule: #d8d0c2;
  --lake: #10292c;
  --lake-2: #17383c;
  --lake-3: #1f474c;
  --on-lake: #eef3f1;
  --on-lake-2: #b9cbc8;
  --contour: #8fb9b4;
  --brass: #7a5828;
  --brass-soft: #c9a674;
  --focus: #b5824a;
  --serif: "Bodoni Moda", "Bodoni fallback", Georgia, serif;
  --sans: var(--serif);
  --act: #7a5828; --act-ink: #fffdf8;
  --wrap: 1200px;
  --gut: clamp(16px, 4vw, 40px);
  --sec: clamp(72px, 9vw, 120px);
  --ease: cubic-bezier(.2, .7, .1, 1);
  color-scheme: light;
}
:root[data-theme="dark"] { color-scheme: dark; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { color-scheme: dark; } }
:root[data-theme="dark"] {
  --paper: #121212; --paper-2: #1a1a1a; --card: #1e1e1e;
  --ink: rgba(255,255,255,.87); --ink-2: rgba(255,255,255,.66); --ink-3: rgba(255,255,255,.6);
  --rule: #2c2c2c; --lake: #161d1e; --lake-2: #1e2729; --lake-3: #263133;
  --on-lake: rgba(255,255,255,.87); --on-lake-2: rgba(255,255,255,.64); --contour: #7fa29e;
  --brass: #cfae80; --brass-soft: #b89a70; --focus: #d6b07c; --act: #cfae80; --act-ink: #1b1408;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --paper: #121212; --paper-2: #1a1a1a; --card: #1e1e1e;
    --ink: rgba(255,255,255,.87); --ink-2: rgba(255,255,255,.66); --ink-3: rgba(255,255,255,.6);
    --rule: #2c2c2c; --lake: #161d1e; --lake-2: #1e2729; --lake-3: #263133;
    --on-lake: rgba(255,255,255,.87); --on-lake-2: rgba(255,255,255,.64); --contour: #7fa29e;
    --brass: #cfae80; --brass-soft: #b89a70; --focus: #d6b07c; --act: #cfae80; --act-ink: #1b1408;
  }
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 88px; }
body { margin: 0; background: var(--paper); color: var(--ink); font: 400 17px/1.6 var(--sans); font-feature-settings: "lnum", "tnum" 0; overflow-x: clip; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .2em; }
button, input, select, textarea { font: inherit; color: inherit; letter-spacing: inherit; }
:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
[hidden] { display: none !important; }
.sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: absolute; left: 12px; top: -60px; z-index: 50; background: var(--ink); color: var(--paper); padding: 10px 14px; }
.skip:focus { top: 12px; }
.wrap { max-width: var(--wrap); margin: 0 auto; padding: 0 var(--gut); }
.num { font-variant-numeric: tabular-nums lining-nums; }

/* type */
h1, h2, h3, .serif { font-family: var(--serif); font-weight: 400; letter-spacing: -.01em; margin: 0; font-optical-sizing: auto; }
h1 { font-size: clamp(42px, 6.4vw, 88px); line-height: 1.02; }
.phead h1 { font-size: clamp(40px, 5.2vw, 72px); }
h2 { font-size: clamp(32px, 4.2vw, 56px); line-height: 1.06; }
h3 { font-size: clamp(22px, 2.2vw, 28px); line-height: 1.15; }
h1 em, h2 em, h3 em { font-style: italic; } /* une seule italique sur le site : le titre de l’accueil */
p { margin: 0 0 1em; }
.lead { font-size: clamp(18px, 1.6vw, 21px); line-height: 1.55; color: var(--ink-2); max-width: 62ch; }
.kicker { font: 500 15px/1.3 var(--sans); letter-spacing: .01em; color: var(--brass); margin: 0 0 18px; display: flex; align-items: center; gap: 12px; }
.kicker::before { content: ""; width: 28px; height: 1px; background: currentColor; }
.small { font-size: 14px; color: var(--ink-3); }
.src { font-size: 13px; color: var(--ink-3); line-height: 1.5; }
.src a { color: inherit; }
.tag-ex { display: inline-block; font: 500 11.5px/1 var(--sans); letter-spacing: .08em; text-transform: uppercase; padding: 5px 7px 4px; border: 1px solid currentColor; border-radius: 2px; vertical-align: middle; }

/* header */
.hd { position: sticky; top: 0; z-index: 30; background: color-mix(in srgb, var(--paper) 92%, transparent); backdrop-filter: blur(10px); border-bottom: 1px solid transparent; transition: border-color .3s; }
.hd.is-scrolled { border-bottom-color: var(--rule); }
.hd-in { display: flex; align-items: center; gap: 28px; height: 76px; }
.logo { display: flex; align-items: center; gap: 12px; text-decoration: none; margin-right: auto; }
.logo svg { width: 34px; height: 34px; flex: none; }
.logo b { font: 400 25px/1 var(--serif); letter-spacing: .02em; }
.logo small { display: block; font: 500 13px/1.2 var(--sans); letter-spacing: .01em; color: var(--ink-3); margin-top: 4px; }
.nav { display: flex; gap: 22px; }
.nav a { font-size: 14.5px; text-decoration: none; color: var(--ink-2); padding: 6px 0; border-bottom: 1px solid transparent; }
.nav a:hover { color: var(--ink); }
.nav a[aria-current="page"] { color: var(--ink); border-bottom-color: var(--brass); }
.hd-actions { display: flex; align-items: center; gap: 10px; }
.icon-btn { width: 40px; height: 40px; display: grid; place-items: center; border: 1px solid var(--rule); background: transparent; border-radius: 50%; cursor: pointer; color: var(--ink); }
.icon-btn svg { width: 18px; height: 18px; }
.menu-btn { display: none; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 46px; padding: 12px 22px; border-radius: 0; font: 500 15px/1.2 var(--sans); letter-spacing: .02em; text-decoration: none; cursor: pointer; border: 1px solid var(--act); background: var(--act); color: var(--act-ink); transition: background .25s, color .25s, border-color .25s; }
.btn:hover { background: transparent; color: var(--act); }
.btn--ghost { background: transparent; color: var(--ink); }
.btn--ghost:hover { background: var(--ink); color: var(--paper); }
.btn--light { background: #c9a674; color: #10282b; border-color: #c9a674; }
.btn--light:hover { background: transparent; color: #e7cfa6; }
.btn--line { background: transparent; color: var(--on-lake); border-color: color-mix(in srgb, var(--on-lake) 50%, transparent); }
.btn--line:hover { border-color: var(--on-lake); background: color-mix(in srgb, var(--on-lake) 8%, transparent); }
.btn svg { width: 16px; height: 16px; }
.hd .btn { min-height: 40px; padding: 9px 16px; font-size: 14px; }
.link-arrow { font-weight: 500; text-decoration: none; border-bottom: 1px solid var(--brass); padding-bottom: 2px; }
.link-arrow::after { content: " →"; }

/* mobile menu */
.drawer { position: fixed; inset: 0; z-index: 40; background: var(--lake); color: var(--on-lake); display: none; flex-direction: column; padding: 18px var(--gut) 32px; }
.drawer.is-open { display: flex; }
.drawer-top { display: flex; justify-content: space-between; align-items: center; height: 40px; margin-bottom: 28px; }
.drawer .icon-btn { color: var(--on-lake); border-color: color-mix(in srgb, var(--on-lake) 30%, transparent); }
.drawer nav { display: flex; flex-direction: column; border-top: 1px solid color-mix(in srgb, var(--on-lake) 18%, transparent); }
.drawer nav a { font: 400 30px/1.1 var(--serif); text-decoration: none; padding: 14px 0; border-bottom: 1px solid color-mix(in srgb, var(--on-lake) 18%, transparent); display: flex; justify-content: space-between; align-items: baseline; }
.drawer nav a span { font: 500 12px var(--sans); letter-spacing: .1em; color: var(--on-lake-2); }
.drawer .drawer-foot { margin-top: auto; display: grid; gap: 10px; font-size: 14px; color: var(--on-lake-2); }

/* sections */
.sec { padding: var(--sec) 0; }
.sec--tight { padding: calc(var(--sec) * .6) 0; }
.sec--alt { background: var(--paper-2); }
.sec--lake { background: var(--lake); color: var(--on-lake); }
.sec--lake .lead, .sec--lake .small, .sec--lake .src { color: var(--on-lake-2); }
.sec--lake .kicker { color: var(--brass-soft); }
.head2 { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 24px 64px; align-items: end; margin-bottom: 52px; }
.head2 .lead { margin: 0; }

/* page head (inner pages) */
.phead { padding: clamp(48px, 7vw, 96px) 0 clamp(36px, 5vw, 64px); border-bottom: 1px solid var(--rule); }
.phead-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 28px 72px; align-items: center; }
.phead .lead { margin: 0; }
.crumbs { font-size: 13px; color: var(--ink-3); margin-bottom: 22px; }
.crumbs a { color: inherit; }

/* hero */
.hero { position: relative; min-height: min(calc(100svh - 76px), 860px); display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: 1fr auto; color: #f6f3ee; isolation: isolate; overflow: hidden; }
.hero-media { position: absolute; inset: 0; z-index: -2; }
.hero-media img { width: 100%; height: 100%; object-fit: cover; transform-origin: 60% 40%; animation: drift 24s var(--ease) both; }
@keyframes drift { from { transform: scale(1.06); } to { transform: scale(1); } }
.hero::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(9,24,26,.18) 0%, rgba(9,24,26,.22) 30%, rgba(9,24,26,.55) 62%, rgba(9,24,26,.78) 100%); }
.hero-body { align-self: end; padding-bottom: 44px; }
.hero h1 { max-width: 13ch; text-wrap: balance; }
.hero .lead { color: rgba(246,243,238,.88); margin: 22px 0 30px; max-width: 46ch; }
.hero-ctas { display: flex; flex-wrap: wrap; gap: 12px; }
.hero-bar { border-top: 1px solid rgba(246,243,238,.28); background: rgba(9,24,26,.42); backdrop-filter: blur(6px); }
.hero-bar ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); }
.hero-bar li { padding: 18px 20px 16px 0; border-right: 1px solid rgba(246,243,238,.18); margin-right: 20px; }
.hero-bar li:last-child { border-right: 0; margin-right: 0; }
.hero-bar b { display: block; font: 400 28px/1.1 var(--serif); }
.hero-bar span { font-size: 13px; color: rgba(246,243,238,.78); }
.hero-credit { position: absolute; right: var(--gut); top: 16px; font-size: 11.5px; color: rgba(246,243,238,.75); }
.hero-credit a { color: inherit; }

/* lake map (signature) */
.lakeband { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 6fr); gap: 56px; align-items: center; }
.lakemap { position: relative; margin: 0; }
.lakemap svg { width: 100%; height: auto; display: block; overflow: visible; }
.lakemap .shore { fill: var(--lake-2); stroke: var(--on-lake); stroke-width: 1.4; }
.lakemap .iso { fill: none; stroke: var(--contour); stroke-width: 1; vector-effect: non-scaling-stroke; }
.lakemap .iso-glow { stroke: #f1e2c6; stroke-width: 1.4; }
.lakemap .pt circle { fill: var(--lake); stroke: var(--brass-soft); stroke-width: 2; vector-effect: non-scaling-stroke; transition: r .3s var(--ease), fill .3s; }
.lakemap .pt text { font: 500 30px var(--sans); fill: var(--on-lake-2); letter-spacing: .04em; transition: fill .3s; }
.lakemap .pt.is-on circle { fill: var(--brass-soft); r: 11; }
.lakemap .pt.is-on text { fill: var(--on-lake); }
.lakemap .pt.is-dim { opacity: .45; }
.lakemap .pt--prop circle { fill: var(--brass-soft); stroke: var(--lake); }
.lakemap figcaption { font-size: 12.5px; color: var(--on-lake-2); margin-top: 14px; line-height: 1.5; }
.lakemap.is-drawing .iso { stroke-dasharray: var(--len) var(--len); stroke-dashoffset: var(--len); animation: draw 2.4s var(--ease) forwards; animation-delay: var(--d, 0s); }
@keyframes draw { to { stroke-dashoffset: 0; } }
.shorelist { list-style: none; margin: 0; padding: 0; border-top: 1px solid color-mix(in srgb, var(--on-lake) 18%, transparent); }
.shorelist li { border-bottom: 1px solid color-mix(in srgb, var(--on-lake) 18%, transparent); }
.shorelist button, .shorelist a.row { all: unset; box-sizing: border-box; cursor: pointer; display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; gap: 16px; align-items: baseline; width: 100%; padding: 16px 0; }
.shorelist .n { font: 500 12px var(--sans); color: var(--brass-soft); letter-spacing: .08em; }
.shorelist .t { font: 400 24px/1.15 var(--serif); }
.shorelist .t small { display: block; font: 400 14.5px/1.5 var(--sans); color: var(--on-lake-2); margin-top: 6px; max-height: 0; overflow: hidden; opacity: 0; transition: max-height .45s var(--ease), opacity .3s; }
.shorelist .v { font-size: 14px; color: var(--on-lake-2); text-align: right; white-space: nowrap; }
.shorelist li.is-on .t small { max-height: 120px; opacity: 1; }
.shorelist li.is-on .t { color: #fff; }
:root[data-theme="dark"] .shorelist li.is-on .t { color: var(--on-lake); }

/* figures */
.figs { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--rule); }
.figs > div { padding: 22px 22px 20px 0; border-right: 1px solid var(--rule); margin-right: 22px; }
.figs > div:last-child { border-right: 0; margin-right: 0; }
.figs b { display: block; font: 400 clamp(34px, 3.6vw, 48px)/1 var(--serif); margin-bottom: 10px; }
.figs span { display: block; font-size: 14.5px; color: var(--ink-2); }
.figs .src { margin-top: 8px; }
.sec--lake .figs, .sec--lake .figs > div { border-color: color-mix(in srgb, var(--on-lake) 18%, transparent); }
.sec--lake .figs span { color: var(--on-lake-2); }

/* listing cards */
.grid-props { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 44px 28px; }
.prop { position: relative; display: flex; flex-direction: column; text-decoration: none; }
.prop-media { position: relative; aspect-ratio: 4 / 5; overflow: hidden; background: var(--paper-2); }
.prop-media img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease), filter .6s; }
.prop:hover .prop-media img { transform: scale(1.035); }
.prop-media .badge { position: absolute; left: 14px; top: 14px; background: var(--paper); color: var(--ink); font: 600 10.5px/1 var(--sans); letter-spacing: .12em; text-transform: uppercase; padding: 7px 9px 6px; }
.prop-media .wl { position: absolute; left: 0; right: 0; bottom: 0; height: 0; background: linear-gradient(180deg, transparent, rgba(16,41,44,.55)); transition: height .6s var(--ease); }
.prop:hover .wl { height: 38%; }
.prop-meta { padding-top: 16px; display: grid; gap: 4px; }
.prop-meta .where { font: 500 14px/1.3 var(--sans); letter-spacing: .01em; color: var(--brass); }
.prop-meta h3 { font-size: 24px; }
.prop-meta .facts { font-size: 14.5px; color: var(--ink-2); }
.prop-meta .price { font: 400 19px/1.3 var(--serif); margin-top: 4px; }
.prop--off .prop-media img { filter: blur(14px) saturate(.6); transform: scale(1.12); }
.prop--off:hover .prop-media img { transform: scale(1.14); }
.prop--off .lock { position: absolute; inset: 0; display: grid; place-content: center; text-align: center; color: #f6f3ee; gap: 8px; padding: 20px; }
.prop--off .lock b { font: 400 26px/1.1 var(--serif); }
.prop--off .lock span { font-size: 14px; opacity: .9; }
.feature { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 28px; }
.feature .prop:first-child { grid-row: span 2; }
.feature .prop:first-child .prop-media { aspect-ratio: 5 / 4.6; }
.feature .prop:not(:first-child) { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px; align-items: end; }
.feature .prop:not(:first-child) .prop-media { aspect-ratio: 4 / 4.6; }

/* off-market steps */
.steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); counter-reset: s; border-top: 1px solid color-mix(in srgb, var(--on-lake) 20%, transparent); }
.steps li { padding: 26px 26px 6px 0; counter-increment: s; }
.steps li::before { content: counter(s, decimal-leading-zero); display: block; font: 400 15px var(--serif); font-style: italic; color: var(--brass-soft); margin-bottom: 14px; }
.steps b { display: block; font: 400 23px/1.2 var(--serif); margin-bottom: 8px; }
.steps p { font-size: 15.5px; color: var(--on-lake-2); margin: 0; }
.sec:not(.sec--lake) .steps { border-color: var(--rule); }
.sec:not(.sec--lake) .steps p { color: var(--ink-2); }
.sec:not(.sec--lake) .steps li::before { color: var(--brass); }

/* split blocks */
.split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 64px; align-items: center; }
.split--wide { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
.split-media { position: relative; }
.split-media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.split--fill { align-items: stretch; }
.split--fill .split-media { position: relative; min-height: 380px; }
.split--fill .split-media img { position: absolute; inset: 0; width: 100%; height: calc(100% - 26px); aspect-ratio: auto; }
.split--fill .split-media .cap { position: absolute; left: 0; bottom: 0; margin: 0; }
@media (max-width: 760px) { .split--fill .split-media { min-height: 0; } .split--fill .split-media img { position: static; height: auto; aspect-ratio: 4 / 3; } .split--fill .split-media .cap { position: static; margin-top: 8px; } }
.split-media .cap { font-size: 12px; color: var(--ink-3); margin-top: 8px; }
.ticks { list-style: none; padding: 0; margin: 22px 0 0; display: grid; gap: 0; border-top: 1px solid var(--rule); }
.ticks li { padding: 14px 0 14px 30px; border-bottom: 1px solid var(--rule); position: relative; }
.ticks li::before { content: ""; position: absolute; left: 2px; top: 23px; width: 14px; height: 1px; background: var(--brass); }
.ticks b { font-weight: 600; }
.sec--lake .ticks, .sec--lake .ticks li { border-color: color-mix(in srgb, var(--on-lake) 18%, transparent); }

/* cta band */
.cta { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 40px 64px; align-items: center; }
.cta-actions { display: grid; gap: 12px; }
.cta-actions .btn { width: 100%; }
.cta-actions .small { margin: 6px 0 0; }
.sec--lake .cta-actions .small { color: var(--on-lake-2); }

/* footer */
.ft { background: var(--lake); color: var(--on-lake); padding: 72px 0 28px; position: relative; overflow: hidden; }
.ft-lines { position: absolute; right: -40px; top: -30px; width: 360px; opacity: .22; pointer-events: none; }
.ft-lines path { fill: none; stroke: var(--contour); stroke-width: 1; vector-effect: non-scaling-stroke; }
.ft-grid { position: relative; display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 40px; }
.ft h2 { font-size: 30px; margin-bottom: 14px; }
.ft p, .ft li { font-size: 14.5px; color: var(--on-lake-2); }
.ft ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; }
.ft a { text-decoration: none; }
.ft a:hover { text-decoration: underline; }
.ft h3 { font: 500 15px/1.3 var(--sans); letter-spacing: .01em; color: var(--brass-soft); margin-bottom: 16px; }
.ft-bottom { position: relative; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; margin-top: 56px; padding-top: 22px; border-top: 1px solid color-mix(in srgb, var(--on-lake) 16%, transparent); font-size: 13px; color: var(--on-lake-2); }

/* forms */
.form { display: grid; gap: 18px; }
.field { display: grid; gap: 7px; }
.field > label, .field > .lbl { font-size: 14px; font-weight: 500; }
.field .hint { font-size: 13px; color: var(--ink-3); }
.field input, .field select, .field textarea { width: 100%; min-height: 48px; padding: 12px 14px; border: 1px solid var(--rule); background: var(--card); border-radius: 0; }
.field textarea { min-height: 120px; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--ink); outline: none; box-shadow: 0 0 0 1px var(--ink); }
.field[data-error] input, .field[data-error] select, .field[data-error] textarea { border-color: #a23b2a; }
.field .err { display: none; font-size: 13px; color: #a23b2a; }
:root[data-theme="dark"] .field .err { color: #f09a85; }
.field[data-error] .err { display: block; }
.row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; border: 0; padding: 0; margin: 0; }
.chips legend { font-size: 14px; font-weight: 500; margin-bottom: 8px; padding: 0; }
.chip { position: relative; }
.chip input { position: absolute; opacity: 0; inset: 0; cursor: pointer; margin: 0; }
.chip span { display: inline-flex; align-items: center; min-height: 40px; padding: 8px 15px; border: 1px solid var(--rule); font-size: 14.5px; background: var(--card); transition: background .2s, color .2s, border-color .2s; }
.chip input:checked + span { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.chip input:focus-visible + span { outline: 2px solid var(--focus); outline-offset: 2px; }
.check { display: flex; gap: 12px; align-items: flex-start; font-size: 14.5px; }
.check input { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--ink); flex: none; }
.ok { display: none; padding: 28px; border: 1px solid var(--ink); background: var(--card); }
.ok.is-on { display: block; }
.ok h3 { margin-bottom: 10px; }
.ok dl { display: grid; grid-template-columns: auto 1fr; gap: 6px 18px; font-size: 14.5px; margin: 16px 0 0; }
.ok dt { color: var(--ink-3); }
.ok dd { margin: 0; }
.panel { background: var(--card); border: 1px solid var(--rule); padding: clamp(22px, 3vw, 36px); }

/* filters & catalogue */
.filters { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)) auto; gap: 16px; align-items: end; padding: 22px 0; border-bottom: 1px solid var(--rule); }
.filters .field select { min-height: 44px; padding: 10px 12px; }
.feat-row { display: flex; flex-wrap: wrap; gap: 8px; padding: 16px 0 0; align-items: center; }
.feat-row .lbl { font-size: 14px; color: var(--ink-3); margin-right: 6px; }
.cat-bar { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 26px 0; flex-wrap: wrap; }
.cat-bar .count { font: 400 22px var(--serif); }
.empty { display: none; text-align: center; padding: 56px 20px; border: 1px dashed var(--rule); }
.empty.is-on { display: block; }
.cat-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 40px; align-items: start; }
.cat-aside { position: sticky; top: 100px; display: grid; gap: 18px; }
.cat-aside .lakemini { background: var(--lake); color: var(--on-lake); padding: 22px; }
.cat-aside .lakemini svg { width: 100%; max-width: 190px; margin: 6px auto 10px; display: block; }
.lakemini .shore { fill: var(--lake-2); stroke: var(--on-lake-2); stroke-width: 1.2; vector-effect: non-scaling-stroke; }
.lakemini .iso { fill: none; stroke: var(--contour); stroke-width: .8; opacity: .55; vector-effect: non-scaling-stroke; }
.lakemini .dot { fill: var(--brass-soft); stroke: var(--lake); stroke-width: 2; vector-effect: non-scaling-stroke; transition: opacity .3s; }
.lakemini .dot.is-off { opacity: .15; }
.lakemini p { font-size: 13.5px; color: var(--on-lake-2); margin: 0; }
.lakemini h2 { font-size: 22px; }
.grid-props--cat { grid-template-columns: repeat(2, minmax(0, 1fr)); }

/* property sheet */
.gal { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); grid-template-rows: 1fr 1fr; gap: 10px; height: min(70vh, 620px); }
.gal button { all: unset; cursor: zoom-in; position: relative; overflow: hidden; background: var(--paper-2); }
.gal button:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.gal button:first-child { grid-row: span 2; }
.gal img { width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--ease); }
.gal button:hover img { transform: scale(1.025); }
.gal .more { position: absolute; right: 14px; bottom: 14px; background: var(--paper); color: var(--ink); font-size: 13.5px; padding: 8px 12px; }
.sheet { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 64px; align-items: start; }
.sheet-side { position: sticky; top: 100px; display: grid; gap: 16px; }
.keyfacts { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); margin: 32px 0 40px; }
.keyfacts div { padding: 18px 14px 16px 0; }
.keyfacts b { display: block; font: 400 28px/1.1 var(--serif); }
.keyfacts span { font-size: 13.5px; color: var(--ink-3); }
.levels { display: grid; gap: 0; border-top: 1px solid var(--rule); margin-top: 18px; }
.levels > div { display: grid; grid-template-columns: 160px minmax(0, 1fr); gap: 20px; padding: 16px 0; border-bottom: 1px solid var(--rule); }
.levels b { font: 400 19px var(--serif); }
.levels p { margin: 0; color: var(--ink-2); font-size: 15.5px; }
.dist { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; border-top: 1px solid var(--rule); margin-top: 18px; }
.dist div { padding: 16px 14px 12px 0; border-right: 1px solid var(--rule); margin-right: 14px; }
.dist div:last-child { border-right: 0; }
.dist b { display: block; font: 400 24px var(--serif); }
.dist span { font-size: 13.5px; color: var(--ink-3); }
.dpe { display: flex; gap: 3px; margin-top: 10px; }
.dpe span { flex: 1; text-align: center; font: 600 12px/26px var(--sans); color: #fff; opacity: .4; }
.dpe span.is-on { opacity: 1; transform: scaleY(1.25); }
.price-box .price { font: 400 34px/1.1 var(--serif); margin: 6px 0 4px; }
.h1-sheet { font-size: clamp(38px, 5vw, 68px); }
.rules.rules--2 { grid-template-columns: 1fr 1fr; }
.sheet-block { padding: 40px 0; border-top: 1px solid var(--rule); }
.sheet-block:first-of-type { border-top: 0; }
.sheet-block h2 { font-size: clamp(28px, 3vw, 38px); margin-bottom: 18px; }
.sheet-map { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 32px; align-items: center; background: var(--lake); color: var(--on-lake); padding: 26px; }
.sheet-map svg { width: 100%; }
.sheet-map .shore { fill: var(--lake-2); stroke: var(--on-lake-2); stroke-width: 1.2; vector-effect: non-scaling-stroke; }
.sheet-map .iso { fill: none; stroke: var(--contour); stroke-width: .8; opacity: .55; vector-effect: non-scaling-stroke; }
.sheet-map .dot { fill: var(--brass-soft); stroke: var(--lake); stroke-width: 3; vector-effect: non-scaling-stroke; }
.sheet-map .ring { fill: none; stroke: var(--brass-soft); stroke-width: 1.2; vector-effect: non-scaling-stroke; animation: ring 2.6s var(--ease) infinite; transform-box: fill-box; transform-origin: center; }
@keyframes ring { from { transform: scale(.4); opacity: 1; } to { transform: scale(2.2); opacity: 0; } }
.sheet-map p { color: var(--on-lake-2); font-size: 15px; }
.sheet-map h3 { margin-bottom: 8px; }

dialog.lb { border: 0; padding: 0; max-width: 100vw; max-height: 100vh; width: 100vw; height: 100vh; background: rgba(8,20,22,.96); color: #f6f3ee; }
dialog.lb::backdrop { background: rgba(8,20,22,.8); }
.lb-in { display: grid; grid-template-rows: auto 1fr auto; height: 100%; padding: 18px var(--gut); }
.lb-top { display: flex; justify-content: space-between; align-items: center; font-size: 14px; }
.lb-top .icon-btn, .lb-nav .icon-btn { color: #f6f3ee; border-color: rgba(246,243,238,.35); }
.lb-img { display: grid; place-items: center; min-height: 0; padding: 16px 0; }
.lb-img img { max-height: 100%; max-width: 100%; object-fit: contain; }
.lb-nav { display: flex; justify-content: space-between; align-items: center; gap: 16px; font-size: 13px; color: rgba(246,243,238,.75); }

/* valuation steps */
.vsteps { display: flex; gap: 0; margin: 0 0 28px; padding: 0; list-style: none; border-bottom: 1px solid var(--rule); }
.vsteps li { flex: 1; padding: 0 0 12px; font-size: 13.5px; color: var(--ink-3); border-bottom: 2px solid transparent; margin-bottom: -1px; }
.vsteps li b { display: block; font: 400 18px var(--serif); color: var(--ink-3); }
.vsteps li.is-on { border-bottom-color: var(--ink); color: var(--ink); }
.vsteps li.is-on b, .vsteps li.is-done b { color: var(--ink); }
.vstep { display: none; }
.vstep.is-on { display: grid; gap: 18px; }
.vnav { display: flex; justify-content: space-between; gap: 12px; margin-top: 8px; }
.levels-pick { display: grid; gap: 10px; border: 0; padding: 0; margin: 0; }
.levels-pick legend { font-size: 14px; font-weight: 500; margin-bottom: 10px; padding: 0; }
.lv { position: relative; display: block; }
.lv input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.lv > span { display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 14px; padding: 16px; border: 1px solid var(--rule); background: var(--card); transition: border-color .2s, box-shadow .2s; }
.lv i { width: 18px; height: 18px; border: 1px solid var(--ink-3); border-radius: 50%; margin-top: 3px; position: relative; }
.lv input:checked + span { border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
.lv input:checked + span i::after { content: ""; position: absolute; inset: 3px; border-radius: 50%; background: var(--ink); }
.lv input:focus-visible + span { outline: 2px solid var(--focus); outline-offset: 2px; }
.lv b { display: block; font: 400 20px var(--serif); }
.lv small { font-size: 14px; color: var(--ink-2); }

/* tables & notes */
.tbl { width: 100%; border-collapse: collapse; font-size: 15px; }
.tbl th, .tbl td { text-align: left; padding: 13px 12px 13px 0; border-bottom: 1px solid var(--rule); vertical-align: top; }
.tbl th { font: 500 14px/1.3 var(--sans); letter-spacing: .01em; color: var(--ink-3); }
.tbl td.r, .tbl th.r { text-align: right; }
.tbl-wrap { overflow-x: auto; }
.sec--lake .tbl th, .sec--lake .tbl td { border-color: color-mix(in srgb, var(--on-lake) 18%, transparent); }
.sec--lake .tbl th { color: var(--on-lake-2); }
.bars { display: grid; gap: 12px; margin-top: 10px; }
.bar { display: grid; grid-template-columns: 170px minmax(0, 1fr) 96px; gap: 14px; align-items: center; font-size: 14.5px; }
.bar i { display: block; height: 10px; background: color-mix(in srgb, var(--contour) 30%, transparent); position: relative; }
.bar i::after { content: ""; position: absolute; inset: 0 auto 0 0; width: var(--w); background: var(--brass-soft); transform-origin: left; transform: scaleX(0); transition: transform 1.1s var(--ease); }
.bars.is-in .bar i::after { transform: scaleX(1); }
.tbl .tbar { width: 34%; vertical-align: middle; }
.tbl .tbar i { display: block; height: 8px; background: color-mix(in srgb, var(--contour) 25%, transparent); position: relative; }
.tbl .tbar i::after { content: ""; position: absolute; inset: 0 auto 0 0; width: var(--w); background: var(--brass-soft); transform-origin: left; transform: scaleX(0); transition: transform 1.1s var(--ease); }
.bars.is-in .tbar i::after { transform: scaleX(1); }

.bar .v { text-align: right; font-variant-numeric: tabular-nums; }
.rules { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.rule { border-top: 1px solid var(--ink); padding-top: 20px; }
.rule h3 { font-size: 23px; margin-bottom: 10px; }
.rule p { font-size: 15.5px; color: var(--ink-2); }
.prose { max-width: 70ch; }
.prose h2 { font-size: 30px; margin: 44px 0 14px; }
.prose h2:first-child { margin-top: 0; }
.prose p, .prose li { color: var(--ink-2); }
.toc { position: sticky; top: 100px; display: grid; gap: 8px; font-size: 14.5px; }
.toc a { color: var(--ink-2); text-decoration: none; }
.toc a:hover { color: var(--ink); }
.legal { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 56px; align-items: start; }


/* worlds switch (home) */
.worlds { display: flex; gap: 0; border-bottom: 1px solid var(--rule); margin-bottom: 36px; overflow-x: auto; scrollbar-width: none; }
.worlds button { all: unset; cursor: pointer; display: flex; align-items: baseline; gap: 10px; padding: 14px 26px 14px 0; margin-right: 26px; font: 400 clamp(20px, 2vw, 26px)/1.2 var(--serif); color: var(--ink-3); border-bottom: 2px solid transparent; margin-bottom: -1px; white-space: nowrap; transition: color .25s, border-color .25s; }
.worlds button .n { font: 500 12px var(--sans); letter-spacing: .08em; color: var(--brass); }
.worlds button[aria-selected="true"] { color: var(--ink); border-bottom-color: var(--ink); }
.worlds button:hover { color: var(--ink); }
.worlds button:focus-visible { outline: 2px solid var(--focus); outline-offset: 4px; }
.tabpanel { animation: fadeup .6s var(--ease); }
@keyframes fadeup { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.off-panel { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 48px; align-items: center; }
.off-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.off-text h3 { font-size: clamp(26px, 2.6vw, 34px); margin-bottom: 16px; }
.off-text p { color: var(--ink-2); }
.off-text .btn { margin: 8px 0 14px; }
.more-line { margin: 40px 0 0; text-align: right; }
.live { display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 26px 0 0; font: 500 15px/1.4 var(--sans); letter-spacing: .01em; color: rgba(246,243,238,.82); }
.live span + span::before { content: "·"; margin-right: 18px; opacity: .7; }
.hero--page { min-height: min(72svh, 640px); grid-template-rows: 1fr; }
.hero--page .hero-body { padding-bottom: 56px; }
@media (max-width: 760px) {
  .off-panel { grid-template-columns: minmax(0, 1fr); gap: 28px; }
  .off-cards { grid-template-columns: 1fr 1fr; gap: 14px; }
  .off-cards .prop-meta h3 { font-size: 19px; }
  .off-cards .lock b { font-size: 20px; }
  .off-cards .lock span { display: none; }
  .more-line { text-align: left; }
  .worlds { flex-wrap: wrap; overflow: visible; }
  .worlds button { font-size: 19px; padding: 10px 0; margin-right: 18px; }
  .tbl--prices th:nth-child(2), .tbl--prices td:nth-child(2) { display: none; }
  .tbl--prices { font-size: 14px; }
  .hero--page { min-height: 70svh; }
}

/* reveal */
.rv { opacity: 0; transform: translateY(18px); transition: opacity .9s var(--ease), transform .9s var(--ease); }
.rv.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001s !important; animation-delay: 0s !important; transition-duration: .001s !important; }
  .rv { opacity: 1; transform: none; }
}

/* responsive */
@media (max-width: 1080px) {
  .nav { display: none; }
  .menu-btn { display: grid; }
  .hd .btn { display: none; }
  .grid-props { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cat-layout { grid-template-columns: minmax(0, 1fr); }
  .cat-aside { position: static; grid-template-columns: 1fr 1fr; }
  .sheet { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .sheet-side { position: static; grid-template-columns: 1fr 1fr; margin-bottom: 24px; }
  .ft-grid { grid-template-columns: 1fr 1fr; }
  .filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  body { font-size: 16px; }
  .hd-in { height: 64px; gap: 10px; }
  .logo b { font-size: 22px; }
  .logo small { display: none; }
  html { scroll-padding-top: 76px; }
  .head2, .phead-grid, .split, .split--wide, .cta, .lakeband, .legal { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .head2 { margin-bottom: 34px; }
  .hero { min-height: calc(100svh - 64px); }
  .hero-body { padding-bottom: 28px; }
  .hero-bar ul { grid-template-columns: 1fr 1fr; }
  .hero-bar li { padding: 14px 12px 12px 0; margin-right: 12px; }
  .hero-bar li:nth-child(2) { border-right: 0; margin-right: 0; }
  .hero-bar li:nth-child(-n+2) { border-bottom: 1px solid rgba(246,243,238,.18); }
  .hero-bar b { font-size: 23px; }
  .figs { grid-template-columns: 1fr 1fr; }
  .figs > div { padding: 18px 12px 16px 0; margin-right: 12px; }
  .figs > div:nth-child(2n) { border-right: 0; margin-right: 0; }
  .figs > div:nth-child(-n+2) { border-bottom: 1px solid var(--rule); }
  .sec--lake .figs > div { border-color: color-mix(in srgb, var(--on-lake) 18%, transparent); }
  .grid-props, .grid-props--cat { grid-template-columns: minmax(0, 1fr); gap: 36px; }
  .feature { grid-template-columns: minmax(0, 1fr); }
  .feature .prop:first-child { grid-row: auto; }
  .feature .prop:not(:first-child) { grid-template-columns: minmax(0, 1fr); }
  .steps { grid-template-columns: minmax(0, 1fr); }
  .steps li { padding: 20px 0 16px; border-bottom: 1px solid color-mix(in srgb, var(--on-lake) 20%, transparent); }
  .sec:not(.sec--lake) .steps li { border-color: var(--rule); }
  .steps li::before { margin-bottom: 8px; }
  .ft-grid { grid-template-columns: 1fr; gap: 30px; }
  .row2 { grid-template-columns: minmax(0, 1fr); }
  .filters { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .filters > .field:first-child { grid-column: 1 / -1; }
  .cat-aside { grid-template-columns: minmax(0, 1fr); }
  .gal { height: auto; grid-template-columns: 1fr 1fr; grid-template-rows: auto; }
  .gal button:first-child { grid-column: 1 / -1; grid-row: auto; aspect-ratio: 4 / 3; }
  .gal button:not(:first-child) { aspect-ratio: 1; }
  .keyfacts { grid-template-columns: 1fr 1fr; }
  .keyfacts div:nth-child(-n+2) { border-bottom: 1px solid var(--rule); }
  .levels > div { grid-template-columns: minmax(0, 1fr); gap: 4px; }
  .dist { grid-template-columns: minmax(0, 1fr); }
  .dist div { border-right: 0; border-bottom: 1px solid var(--rule); margin-right: 0; }
  .sheet-side { grid-template-columns: minmax(0, 1fr); }
  .sheet-map { grid-template-columns: minmax(0, 1fr); gap: 14px; padding: 20px; }
  .sheet-map svg { width: 120px; }
  .rules, .rules.rules--2 { grid-template-columns: minmax(0, 1fr); }
  .figs--src { grid-template-columns: minmax(0, 1fr); }
  .figs.figs--src > div { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 4px 16px; border-right: 0; margin-right: 0; border-bottom: 1px solid var(--rule); padding: 16px 0; }
  .figs--src > div b { grid-row: span 2; font-size: 30px; }
  .figs--src > div .src { margin-top: 2px; }
  .tbl--prices .tbar { display: none; }
  .bar { grid-template-columns: 110px minmax(0, 1fr) 78px; gap: 10px; font-size: 13.5px; }
  .toc { position: static; grid-template-columns: 1fr 1fr; }
  .vsteps li { font-size: 0; }
  .vsteps li b { font-size: 15px; }
  .shorelist .t { font-size: 21px; }
}

/* Téléphone : le contrôle et son résultat à l'écran ensemble (2026-11-08) */
@media (max-width: 760px) {
  /* Le lac : la carte reste collée sous l'en-tête pendant qu'on choisit une commune dans la liste */
  .lakeband { display: block; }
  .lakeband .lakemap { position: sticky; top: 64px; z-index: 5; background: var(--lake); padding: 6px 0 4px; margin-bottom: 8px; }
  .lakeband .lakemap svg { height: 30svh; width: auto; max-width: 100%; margin: 0 auto; }
  .lakeband .lakemap figcaption { font-size: 10.5px; line-height: 1.3; margin-top: 2px; }
}
