/* Theme-level compositions built on the tokens. Tokens live in tokens/ — do not add hex values here. */

:root{color-scheme:light} /* the brand is light-only; without this, dark-mode browsers draw radios and checkboxes dark */

/* ── Brand primitives ─────────────────────────────────────────── */
.soho-logo{display:inline-flex;align-items:center;gap:calc(var(--logo-w,220px) * .07);color:var(--text-brand);border:0;text-decoration:none;line-height:0}
.soho-logo svg{display:block;height:auto;flex:0 0 auto;overflow:visible} /* wordmark is live text; Cormorant runs wider than The Seasons */
.soho-logo .soho-mark{width:calc(var(--logo-w,220px) * .26)}
.soho-logo .soho-wordmark{width:calc(var(--logo-w,220px) * .72)}
.soho-logo--primary{flex-direction:column;gap:calc(var(--logo-w,220px) * .1)}
.soho-logo--primary .soho-mark{width:calc(var(--logo-w,220px) * .52)}
.soho-logo--primary .soho-wordmark{width:var(--logo-w,220px)}
.soho-logo--wordmark .soho-wordmark{width:var(--logo-w,220px)}
.soho-logo--cream{color:var(--c-cream)}
.soho-mark{display:block;height:auto}

.soho-eyebrow{display:flex;flex-direction:column;gap:var(--space-3);margin:0;font:var(--type-eyebrow);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-muted)}
.soho-eyebrow::after{content:"";width:48px;height:1px;background:var(--border-strong)}
.soho-eyebrow--on-brand{color:var(--c-blush-300)}
.soho-eyebrow--on-brand::after{background:var(--border-on-brand)}

.soho-caps{font-family:var(--font-brand);font-size:var(--text-2xs);letter-spacing:var(--tracking-caps);text-transform:uppercase}

.soho-signature{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3)}
.soho-signature__name{font-family:var(--font-display);font-weight:var(--weight-light);font-style:italic;font-size:var(--signature-size,40px);line-height:1;color:var(--text-brand)}
.soho-signature__rule{width:120px;height:1px;background:var(--border-subtle)}
.soho-signature__caption{font-family:var(--font-brand);font-size:var(--text-2xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-muted)}
.soho-signature--on-brand .soho-signature__name{color:var(--c-cream)}
.soho-signature--on-brand .soho-signature__rule{background:var(--border-on-brand)}
.soho-signature--on-brand .soho-signature__caption{color:var(--c-blush-300)}

.soho-icon{width:20px;height:20px;flex:0 0 auto}

/* Buttons: base.css a:hover (0,1,1) beats theme.json's :where() hover styles — pin the on-brand colour. */
.wp-block-button__link:hover,.wp-block-button__link:focus-visible,.wp-block-button__link:active{color:var(--text-on-brand)}
/* Secondary button: the theme's own block style. Core's "Outline" makes WordPress print global styles before this file, which flips the cascade. */
.wp-block-button.is-style-secondary .wp-block-button__link{background:transparent;color:var(--text-brand);border:var(--border-medium) solid var(--border-brand)}
.wp-block-button.is-style-secondary .wp-block-button__link:hover,.wp-block-button.is-style-secondary .wp-block-button__link:focus-visible{background:var(--state-hover-veil);color:var(--text-brand)}
.wp-block-button.is-style-secondary .wp-block-button__link:active{background:var(--state-press-veil);color:var(--text-brand)}
/* Phone and e-mail buttons get their icon from the link type, so the block stays plain editable text. */
.wp-block-button__link[href^="tel:"],.wp-block-button__link[href^="mailto:"]{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3)}
.wp-block-button__link[href^="tel:"]::before,.wp-block-button__link[href^="mailto:"]::before{content:"";width:18px;height:18px;flex:0 0 auto;background:currentColor;-webkit-mask:center/contain no-repeat;mask:center/contain no-repeat}
.wp-block-button__link[href^="tel:"]::before{-webkit-mask-image:url(../svg/icon-phone.svg);mask-image:url(../svg/icon-phone.svg)}
.wp-block-button__link[href^="mailto:"]::before{-webkit-mask-image:url(../svg/icon-mail.svg);mask-image:url(../svg/icon-mail.svg)}

/* Buttons outside the block editor (listing pieces, forms, header): same skins as core/button. */
.soho-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3);min-height:var(--control-h-md);padding:0 var(--control-px-md);font-family:var(--font-brand);font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;line-height:1;white-space:nowrap;color:var(--text-on-brand);background:var(--surface-brand);border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition-control)}
.soho-btn:hover,.soho-btn:focus-visible{background:var(--c-burgundy-800);color:var(--text-on-brand);border-color:transparent}
.soho-btn:active{background:var(--c-burgundy-900);transform:translateY(1px)}
.soho-btn .soho-icon{width:18px;height:18px}
.soho-btn--sm{min-height:var(--control-h-sm);padding:0 var(--control-px-sm);font-size:var(--text-2xs)}
.soho-btn--lg{min-height:var(--control-h-lg);padding:0 var(--control-px-lg);font-size:var(--text-sm)}
.soho-btn--block{display:flex;width:100%}
.soho-btn--secondary{background:transparent;color:var(--text-brand);border:var(--border-medium) solid var(--border-brand)}
.soho-btn--secondary:hover,.soho-btn--secondary:focus-visible{background:var(--state-hover-veil);color:var(--text-brand);border-color:var(--border-brand)}
.soho-btn--ghost{background:transparent;color:var(--text-body)}
.soho-btn--ghost:hover{background:var(--state-hover-veil);color:var(--text-body)}
.soho-btn--on-brand,.wp-block-button.is-style-on-brand .wp-block-button__link{background:transparent;color:var(--c-cream);border:1px solid var(--border-on-brand)}
.soho-btn--on-brand:hover,.wp-block-button.is-style-on-brand .wp-block-button__link:hover{background:var(--c-cream);color:var(--c-burgundy-700);border-color:var(--c-cream)}
.wp-block-button.is-style-link .wp-block-button__link{min-height:0;padding:0;background:none;color:var(--text-link);border-bottom:1px solid var(--c-burgundy-300);border-radius:0}
.wp-block-button.is-style-link .wp-block-button__link:hover{color:var(--text-link-hover);border-bottom-color:var(--c-burgundy-600)}
.wp-block-button.soho-btn-lg .wp-block-button__link{min-height:var(--control-h-lg);padding-inline:var(--control-px-lg);font-size:var(--text-sm)}
.wp-block-button.has-arrow .wp-block-button__link{gap:var(--space-3)}
.wp-block-button.has-arrow .wp-block-button__link::after{content:"";width:18px;height:18px;background:currentColor;-webkit-mask:url(../svg/icon-arrow-right.svg) center/contain no-repeat;mask:url(../svg/icon-arrow-right.svg) center/contain no-repeat}
.soho-link a,a.soho-link{font-family:var(--font-brand);font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase}
.soho-round{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:0;border-radius:var(--radius-pill);background:var(--veil-cream);color:var(--text-brand);backdrop-filter:var(--blur-veil);-webkit-backdrop-filter:var(--blur-veil);cursor:pointer;transition:var(--transition-control)}
.soho-round:hover{background:var(--c-cream)}

/* Icons on editable blocks: class "soho-ico soho-ico-<name>" draws the Lucide icon above the text. */
.soho-ico::before{content:"";display:block;width:22px;height:22px;background:var(--text-brand);-webkit-mask:var(--ico) center/contain no-repeat;mask:var(--ico) center/contain no-repeat}
.soho-ico-messages-square{--ico:url(../svg/icon-messages-square.svg)}
.soho-ico-ruler{--ico:url(../svg/icon-ruler.svg)}
.soho-ico-pen-line{--ico:url(../svg/icon-pen-line.svg)}
.soho-ico-camera{--ico:url(../svg/icon-camera.svg)}
.soho-ico-handshake{--ico:url(../svg/icon-handshake.svg)}
.soho-ico-key{--ico:url(../svg/icon-key.svg)}
.soho-ico-file-text{--ico:url(../svg/icon-file-text.svg)}
.soho-ico-calendar{--ico:url(../svg/icon-calendar.svg)}
.soho-ico-house{--ico:url(../svg/icon-house.svg)}
.soho-ico-map-pin{--ico:url(../svg/icon-map-pin.svg)}

/* ── Header (patterns/header.php) ─────────────────────────────── */
:root{--header-h:110px}
.soho-header{position:fixed;top:0;left:0;right:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:clamp(16px,3vw,32px);padding:18px clamp(20px,3.5vw,48px);color:var(--text-body);background:var(--c-paper);border-bottom:1px solid var(--border-subtle);box-shadow:var(--shadow-sm);transition:background var(--duration-base) var(--ease-soft),box-shadow var(--duration-base) var(--ease-soft),border-color var(--duration-base) var(--ease-soft)}
.wp-site-blocks > *{margin-block:0}
.wp-site-blocks > header{height:var(--header-h)} /* reserves the fixed header's height */
body:has(.soho-hero) .wp-site-blocks > header{height:0}
body:has(.soho-hero) .soho-header:not(.is-solid){background:transparent;border-bottom-color:transparent;box-shadow:none;color:var(--c-cream)}
body.admin-bar .soho-header{top:32px}
.soho-header__logo{display:flex;flex:0 0 auto;width:260px;max-width:52vw;color:var(--c-burgundy-600);border:0;line-height:0}
.soho-header__logo:hover{color:var(--c-burgundy-600)}
body:has(.soho-hero) .soho-header:not(.is-solid) .soho-header__logo{color:var(--c-cream)}
.soho-header__logo svg{width:100%;height:auto;overflow:visible} /* live text; the Cormorant stand-in runs wider than The Seasons */
.soho-header__nav{display:flex;align-items:center;gap:clamp(12px,1.8vw,24px)}
.soho-header__nav a{font-family:var(--font-brand);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;white-space:nowrap;color:inherit;opacity:.72;border:0;border-bottom:1px solid transparent;padding-bottom:3px}
.soho-header__nav a:hover,.soho-header__nav a[aria-current]{opacity:1;color:inherit;border-bottom-color:currentColor}
.soho-header:not(.is-solid) .soho-header__nav a[aria-current]{color:inherit}
.soho-header__actions{display:flex;align-items:center;gap:var(--space-3)}
body:has(.soho-hero) .soho-header:not(.is-solid) .soho-header__phone{background:transparent;color:var(--c-cream);border-color:var(--border-on-brand)}
body:has(.soho-hero) .soho-header:not(.is-solid) .soho-header__phone:hover{background:var(--c-cream);color:var(--c-burgundy-700)}
.soho-header__toggle{display:none;width:34px;height:34px;padding:0;align-items:center;justify-content:center;background:none;border:0;color:inherit;cursor:pointer}
.soho-header__toggle .soho-icon + .soho-icon,.soho-header.is-open .soho-header__toggle .soho-icon:first-child{display:none}
.soho-header.is-open .soho-header__toggle .soho-icon + .soho-icon{display:block}
@media (max-width:1179px){
  .soho-header__toggle{display:inline-flex}
  .soho-header__nav{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;padding:var(--space-2) clamp(20px,3.5vw,48px) var(--space-6);background:var(--c-paper);border-bottom:1px solid var(--border-subtle);box-shadow:var(--shadow-md);color:var(--text-body)}
  .soho-header.is-open .soho-header__nav{display:flex}
  .soho-header__nav a{font-size:var(--text-sm);padding:var(--space-4) 0;border-bottom:1px solid var(--border-subtle)}
  .soho-header__nav a[aria-current]{color:var(--text-brand)}
}
@media (max-width:600px){:root{--header-h:84px}.soho-header__logo{width:180px}.soho-header__phone{padding:0 var(--space-3)}}
@media (max-width:420px){.soho-header__phone{font-size:0;gap:0}} /* icon only */

/* ── Footer (patterns/footer.php) ─────────────────────────────── */
.soho-footer{background:var(--surface-brand-deep);color:var(--c-cream);padding:var(--space-20) var(--layout-gutter-lg) var(--space-10)}
.soho-footer a{color:inherit}
.soho-footer p{margin:0}
.soho-footer__cols,.soho-footer__bottom{max-width:var(--layout-max);margin:0 auto}
.soho-footer__cols{display:grid;grid-template-columns:1fr 3fr;gap:var(--space-16);align-items:start} /* logo in the first quarter; the side column's own 3-col grid puts the nav at ~¼ and the button at ~½ (Marine, 2026-10-14) */
.soho-footer__brand{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-6)}
.soho-logo--secondary svg{width:var(--logo-w,120px)}
.soho-footer .soho-logo--primary .soho-mark{width:94px}
.soho-footer__side{display:flex;flex-direction:column;justify-content:space-between;gap:var(--space-10);align-self:stretch}
.soho-footer__top{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-10);align-items:start} /* nav | « Nous contacter » | empty */
.soho-footer__contact{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-3) var(--space-6);margin:0}
.soho-footer__contact a{display:inline-flex;align-items:center;gap:var(--space-2);font:var(--type-body-sm);color:var(--c-blush-300);border:0}
.soho-footer__contact a:hover{color:var(--c-cream)}
.soho-footer__contact a::before{content:"";width:18px;height:18px;flex:0 0 auto;background:currentColor;-webkit-mask:center/contain no-repeat;mask:center/contain no-repeat} /* icon from the link's address */
.soho-footer__contact a[href^="mailto:"]::before{-webkit-mask-image:url(../svg/icon-mail.svg);mask-image:url(../svg/icon-mail.svg)}
.soho-footer__contact a[href*="instagram.com"]::before{-webkit-mask-image:url(../svg/icon-instagram.svg);mask-image:url(../svg/icon-instagram.svg)}
.soho-footer__contact a[href*="facebook.com"]::before{-webkit-mask-image:url(../svg/icon-facebook.svg);mask-image:url(../svg/icon-facebook.svg)}
.soho-footer__nav{display:flex;flex-direction:column;gap:var(--space-4);list-style:none;margin:0;padding:0} /* core list block, edited in the site editor */
.soho-footer__nav li{align-self:flex-start;margin:0}
.soho-footer__nav a{font:var(--type-body-sm);opacity:.8;border:0}
.soho-footer__nav a:hover{opacity:1;color:var(--c-cream)}
.wp-block-group.soho-footer__bottom{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:var(--space-8);margin-top:var(--space-16);padding-top:var(--space-6);border-top:1px solid var(--border-on-brand)} /* block-class prefix: the group's own layout rule zeroes margin-block-start otherwise */
.soho-footer__bottom .soho-signature__name{--signature-size:30px;color:var(--c-cream)}
.soho-footer__legal{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-6)}
.soho-footer__legal a{font-family:var(--font-brand);font-size:var(--text-2xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--c-blush-300);border-bottom:1px solid var(--border-on-brand)}
.soho-footer__legal a:hover{color:var(--c-cream)}
.soho-footer__right{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-4)}
.soho-footer__note{margin:0;font:var(--type-label);color:var(--c-blush-300);text-align:right} /* the « Estimation offerte* » footnote, under the legal links, every page */
.soho-footer__note a{color:inherit;border-bottom:1px solid var(--border-on-brand)}
.soho-footer__note a:hover{color:var(--c-cream)}
@media (max-width:760px){.soho-footer{padding-inline:var(--layout-gutter)}.soho-footer__cols{grid-template-columns:1fr;gap:var(--space-10)}.soho-footer__top{grid-template-columns:1fr}.soho-footer__contact{justify-content:flex-start}.soho-footer__right{align-items:flex-start}.soho-footer__note{text-align:left}}

/* ── Page sections (patterns/page-*.php, templates) ───────────── */
.soho-main{display:block}
.soho-main .wp-block-post-content > *,.soho-main > *{margin-block:0}
.soho-section{padding:var(--section-y) var(--layout-gutter-lg);background:var(--surface-page)}
.soho-section > *{max-width:var(--layout-max);margin-inline:auto}
.soho-section--paper{background:var(--surface-card)}
.soho-section--greige{background:var(--surface-sunken)}
.soho-section--brand{background:var(--surface-brand);color:var(--c-cream)}
.soho-section--brand h1,.soho-section--brand h2{color:var(--c-cream)}
.soho-section--brand a:not(.wp-block-button__link){color:var(--c-cream);border-bottom-color:var(--border-on-brand)}
.soho-section--band{padding-block:var(--space-20)}
.soho-section--tight-bottom{padding-bottom:var(--space-12)}
.soho-section--legal{padding-top:var(--space-16)}
.soho-section--legal{padding-inline:max(var(--layout-gutter-lg),calc((100% - 880px) / 2))} /* centres an 880px column; child margins stay free */
.soho-section__head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-8);margin-bottom:var(--space-12)}
.soho-section__aside{font:var(--type-body-sm);color:var(--text-muted);max-width:30ch;margin:0}
.soho-h1{font:var(--weight-light) clamp(34px,4.4vw,var(--text-3xl))/var(--leading-tight) var(--font-display);margin:var(--space-6) 0 var(--space-8);max-width:22ch}
.soho-h2{font:var(--weight-light) var(--text-2xl)/var(--leading-snug) var(--font-display);margin:var(--space-5) 0 0;max-width:24ch}
.soho-split .soho-h2{margin-bottom:var(--space-6)}
.soho-h2--spaced{margin-bottom:var(--space-12)}
.soho-muted{color:var(--text-muted)}
.soho-small{font:var(--type-body-sm)}
.soho-narrow{max-width:46ch}
.soho-prose-width{max-width:var(--layout-prose)}
.soho-on-brand-muted{color:var(--c-blush-300)}
.soho-label{font:var(--type-eyebrow);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-muted);margin:0 0 var(--space-6)}
.soho-quote{font:var(--weight-light) var(--text-2xl)/1.34 var(--font-display);margin:var(--space-6) 0 var(--space-8);max-width:30ch}
.soho-stack{display:flex;flex-direction:column;gap:var(--space-5)}
.soho-stack > *{margin:0}
.soho-box .soho-stack{gap:var(--space-3)}
.soho-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-5);margin-top:var(--space-8)}
.soho-actions > *{margin:0}
.soho-split{display:grid;gap:var(--space-20);align-items:center}
.soho-split > *,.soho-grid-3 > *,.soho-grid-4 > *,.soho-steps > *{margin:0!important}
.soho-split--5-7{grid-template-columns:5fr 7fr}
.soho-split--7-5{grid-template-columns:7fr 5fr}
.soho-split--auto{grid-template-columns:1fr auto;gap:var(--space-16)}
.soho-section--brand .soho-split{gap:var(--space-16)}
.soho-split--top{align-items:start}
.soho-split--portrait{grid-template-columns:240px minmax(0,640px);justify-content:center;gap:var(--space-16)}
.soho-split--portrait .soho-arch{max-width:240px}
@media (min-width:1001px){.soho-split--portrait .soho-arch{transform:translateX(-40px)}} /* À propos: portrait a touch left of the centred pair (Marine, 2026-10-14) */
.soho-grid-3,.soho-grid-4{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--grid-gap-lg)}
.soho-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.soho-arch{margin:0}
.soho-arch img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:var(--radius-arch)}
.soho-box{padding:var(--space-6);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);box-shadow:var(--shadow-xs)}
.soho-box--lg{padding:var(--space-8)}
.soho-box--sunken{background:var(--surface-sunken);border-color:transparent;box-shadow:none}
.soho-box > *{margin-block:0}
.soho-box.soho-ico::before{margin-bottom:var(--space-4)}
.soho-portrait{float:right;margin:0 0 var(--space-6) var(--space-6)!important} /* beside the card's title, right */
.soho-portrait img{width:120px;height:auto;aspect-ratio:3/4;object-fit:cover;border-radius:var(--radius-arch)}
.soho-portrait ~ .wp-block-buttons{clear:both}
.soho-brandmark{display:grid;place-items:center;color:var(--c-cream)}
.soho-brandmark .soho-mark{width:var(--mark-w,240px)}
.soho-split--7-5 > .soho-brandmark{justify-items:end} /* À propos « Le nom »: the Ruban at the right edge, not centred in its column (Marine, 2026-10-14) */

/* Hero (home) */
.soho-hero{position:relative;min-height:680px;display:grid;align-items:end;overflow:hidden;background:var(--c-burgundy-900);color:var(--text-on-image)}
.soho-hero__image{position:absolute;inset:0;margin:0}
.soho-hero__image img{width:100%;height:100%;object-fit:cover}
.soho-hero::before,.soho-hero::after{content:"";position:absolute;inset:0;z-index:1;background:var(--image-protect-left)}
.soho-hero::after{background:var(--image-protect)}
.soho-hero__inner{position:relative;z-index:2;width:100%;max-width:calc(var(--layout-max) + 2 * var(--layout-gutter-lg));margin:0 auto;padding:calc(var(--space-24) + var(--header-h)) var(--layout-gutter-lg) var(--space-20)}
.soho-hero__inner > *{margin-block:0}
.soho-hero__title{font:var(--weight-light) clamp(40px,5.6vw,var(--text-4xl))/var(--leading-tight) var(--font-display);letter-spacing:var(--tracking-display);color:var(--text-on-image);max-width:26ch;margin-top:var(--space-6)!important}
.soho-hero__lede{font:var(--type-body);max-width:60ch;margin-top:var(--space-6)!important;opacity:.92}
.soho-hero__buttons{gap:var(--space-4);margin-top:var(--space-8)!important}

/* « Ma façon de travailler »: six numbered steps, hairline above, no cards */
.soho-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-8) var(--space-6);margin-top:var(--space-10)!important;counter-reset:step}
.soho-step{counter-increment:step;position:relative;display:flex;flex-direction:column;gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--border-subtle);font:var(--weight-regular) var(--text-md)/var(--leading-snug) var(--font-display)}
.soho-step::after{content:counter(step,decimal-leading-zero);position:absolute;top:var(--space-4);right:0;font-family:var(--font-display);font-size:var(--text-lg);line-height:1;color:var(--c-burgundy-300)}

/* Reviews */
.soho-review{display:flex;flex-direction:column;gap:var(--space-6);padding:var(--space-8)}
.soho-stars{display:flex;gap:var(--space-1);color:var(--text-brand)}
.soho-stars svg{fill:currentColor}
.soho-review__text{flex:1;font:var(--weight-light) var(--text-md)/1.6 var(--font-display)}
.soho-review__name{padding-top:var(--space-4);border-top:1px solid var(--border-subtle);font-family:var(--font-brand);font-size:var(--text-2xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;line-height:1.6}
.soho-review__name span{font:var(--type-label);letter-spacing:0;text-transform:none;color:var(--text-subtle)}

/* À propos figures and services */
.soho-figure__big{font:var(--weight-light) var(--text-2xl)/1.2 var(--font-display);margin:0 0 var(--space-2)!important}
.soho-figure__sub{font:var(--type-body-sm);color:var(--text-muted)}
.soho-rule-item{display:flex;flex-direction:column;gap:var(--space-3);padding-top:var(--space-5);border-top:1px solid var(--border-subtle)}
.soho-rule-item > *{margin:0}
.soho-rule-item__title{font:var(--type-h3);font-size:var(--text-md)}
.soho-rule-item__text{font:var(--type-body-sm);color:var(--text-muted)}

/* Estimation: how it works */
.soho-howto{display:grid;gap:var(--space-6)}
.soho-howto__step{display:grid;grid-template-columns:28px 1fr;column-gap:var(--space-4);margin:0;font:var(--type-body-sm);color:var(--text-muted)}
.soho-howto__step span{grid-row:span 2;font-family:var(--font-display);font-size:var(--text-lg);line-height:1.2;color:var(--text-brand)}
.soho-howto__step strong{font:var(--type-h3);font-size:var(--text-base);color:var(--text-body)}

/* Mentions légales */
.soho-legal__title{font:var(--type-h3);color:var(--text-brand);margin:var(--space-12) 0 var(--space-4)}
.soho-legal{margin:0}
.soho-legal table{width:100%;border-collapse:collapse;border-top:1px solid var(--border-subtle)}
.soho-legal td{padding:var(--space-4) 0;border:0;border-bottom:1px solid var(--border-subtle);vertical-align:top;font:var(--type-body)}
.soho-legal td:first-child{width:15rem;padding-right:var(--space-6);padding-top:calc(var(--space-4) + 4px);font-family:var(--font-brand);font-size:var(--text-2xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-subtle)}
.soho-legal em{color:var(--text-subtle)}

@media (max-width:1000px){
  .soho-split,.soho-split--5-7,.soho-split--7-5{grid-template-columns:1fr;gap:var(--space-12)}
  .soho-split--auto .soho-brandmark{display:none}
  .soho-split--7-5 > .soho-brandmark{justify-items:center} /* stacked: back under the text, centred */
  .soho-grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .soho-box:has(> .soho-portrait){text-align:center} /* once the split stacks, a floated portrait leaves a void: centre it above the label */
  .soho-box > .soho-portrait{float:none;width:120px;margin:0 auto var(--space-5)!important} /* width: img is display:block, auto margins need one */
}
@media (max-width:760px){
  .soho-section{padding:var(--section-y-sm) var(--layout-gutter)}
  .soho-section__head{flex-direction:column;align-items:flex-start}
  .soho-grid-3,.soho-grid-4,.soho-steps{grid-template-columns:1fr}
  .soho-hero{min-height:560px}
  .soho-hero__inner{padding-inline:var(--layout-gutter)}
  .soho-legal td{display:block;width:auto!important;padding:var(--space-2) 0}
  .soho-legal td:first-child{border:0;padding-top:var(--space-4)}
}

/* ── Forms and dialogs (inc/forms.php) ────────────────────────── */
.soho-form{display:flex;flex-direction:column;gap:var(--space-6)}
.soho-form > *{margin:0}
.soho-hp{position:absolute;left:-9999px}
.soho-form__grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-6)}
.soho-field{display:flex;flex-direction:column;gap:var(--space-2);margin:0}
.soho-field label{font:var(--type-label);color:var(--text-muted)}
.soho-field input,.soho-field select,.soho-field textarea{width:100%;min-height:var(--control-h-md);padding:var(--space-3) var(--space-4);font:var(--type-body-sm);color:var(--text-body);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xs);appearance:none}
.soho-field select{background:var(--surface-card) url(../svg/icon-chevron-down.svg) no-repeat right var(--space-4) center/17px;padding-right:var(--space-10)}
.soho-field input:focus,.soho-field select:focus,.soho-field textarea:focus{outline:none;border-color:var(--border-brand);box-shadow:0 0 0 3px var(--focus-ring-soft)}
.soho-field input:user-invalid{border-color:var(--c-burgundy-600)}
.soho-field__hint{font:var(--type-label);color:var(--text-subtle)}
.soho-radios{display:flex;flex-wrap:wrap;gap:var(--space-8)}
.soho-radio,.soho-check{display:flex;gap:var(--space-3);align-items:flex-start;cursor:pointer;font:var(--type-body-sm)}
.soho-radio input,.soho-check input{margin:4px 0 0;accent-color:var(--c-burgundy-600);width:16px;height:16px}
.soho-radio span,.soho-check span{display:flex;flex-direction:column}
.soho-radio small,.soho-check small{font:var(--type-label);color:var(--text-subtle)}
.soho-form__submit{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-5);margin-top:var(--space-4)!important}
.soho-form__aside{font:var(--type-label);color:var(--text-subtle)}
.soho-form__error{font:var(--type-label);color:var(--c-burgundy-600)}
.soho-toast{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);background:var(--surface-card);border:1px solid var(--border-subtle);border-left:3px solid var(--status-success-fg);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);font:var(--type-body-sm)}
.soho-dialog{width:min(480px,calc(100vw - 32px));padding:0;border:0;border-radius:var(--radius-sm);background:var(--surface-card);color:var(--text-body);box-shadow:var(--shadow-lg)}
.soho-dialog::backdrop{background:rgba(43,27,31,.4)}
.soho-dialog .soho-form{position:relative;gap:var(--space-5);padding:var(--space-8)}
.soho-dialog__title{font:var(--type-h2);margin:0;padding-right:var(--space-10)}
.soho-dialog__close{position:absolute;top:var(--space-6);right:var(--space-6);display:inline-flex;padding:var(--space-2);background:none;border:0;color:var(--text-muted);cursor:pointer}
.soho-dialog__intro{font:var(--type-body-sm);color:var(--text-muted)}
.soho-dialog__footer{display:flex;justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-2)!important}
@media (max-width:760px){.soho-form__grid{grid-template-columns:1fr}}

/* ── Listings: shared pieces (inc/biens.php) ──────────────────── */
.soho-badge{display:inline-flex;align-items:center;height:24px;padding:0 var(--space-3);font-family:var(--font-brand);font-size:var(--text-2xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;border-radius:var(--radius-xs)}
.soho-badge--success{background:var(--status-success-bg);color:var(--status-success-fg)}
.soho-badge--notice{background:var(--status-notice-bg);color:var(--status-notice-fg)}
.soho-badge--info{background:var(--status-info-bg);color:var(--status-info-fg)}
.soho-badge--brand{background:var(--surface-brand);color:var(--text-on-brand)}

.soho-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--grid-gap-lg);margin:0;padding:0;list-style:none}
.soho-card{position:relative;display:flex;flex-direction:column;gap:var(--space-4);transition:transform var(--duration-base) var(--ease-soft)}
.soho-card:hover{transform:translateY(-3px)}
.soho-card__frame{position:relative}
.soho-card__media{position:relative;isolation:isolate;overflow:hidden;aspect-ratio:4/5;border-radius:var(--radius-arch-soft);background:var(--surface-sunken);box-shadow:var(--shadow-sm);transition:box-shadow var(--duration-base) var(--ease-soft)}
.soho-card:hover .soho-card__media{box-shadow:var(--shadow-md)}
.soho-card__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity var(--duration-base) var(--ease-soft),transform var(--duration-slow) var(--ease-out)}
.soho-card__media img.is-active{opacity:1}
.soho-card:hover .soho-card__media img{transform:scale(1.03)}
.soho-card__frame > .soho-badge{position:absolute;bottom:var(--space-4);left:var(--space-4);z-index:2} /* outside the clipped arch, whose rounded top would cut it */
.soho-card__nav{position:absolute;top:50%;left:var(--space-3);right:var(--space-3);z-index:3;display:flex;justify-content:space-between;transform:translateY(-50%);opacity:0;pointer-events:none;transition:opacity var(--duration-fast) var(--ease-soft)}
.soho-card__nav button{pointer-events:auto}
.soho-card:hover .soho-card__nav,.soho-card__nav:focus-within{opacity:1}
@media (hover:none){.soho-card__nav{opacity:1}}
.soho-card__dots{position:absolute;bottom:var(--space-5);right:var(--space-4);z-index:2;display:flex;gap:6px}
.soho-card__dots span{width:6px;height:6px;border-radius:var(--radius-pill);background:var(--c-cream);opacity:.5;transition:opacity var(--duration-fast) var(--ease-soft)}
.soho-card__dots span.is-active{opacity:1}
.soho-card__body{display:flex;flex-direction:column;gap:var(--space-2)}
.soho-card__kind{color:var(--text-subtle)}
.soho-card__place{display:inline-flex;align-items:center;gap:var(--space-2);font:var(--type-body);color:var(--text-body)}
.soho-card__place .soho-icon{color:var(--text-brand);flex:0 0 auto}
.soho-card__title{font:var(--type-h3);margin:0}
.soho-card__link{color:var(--text-body);border:0}
.soho-card__link::after{content:"";position:absolute;inset:0;z-index:1} /* the whole card opens the listing; the arrows sit above */
.soho-card:hover .soho-card__link{color:var(--text-brand)}
.soho-card__price{font-family:var(--font-display);font-size:var(--text-lg);color:var(--text-brand)}
.soho-card__facts{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin-top:var(--space-2);font:var(--type-body-sm);color:var(--text-muted)}
.soho-card__facts span{display:inline-flex;align-items:center;gap:var(--space-2)}
@media (max-width:1000px){.soho-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.soho-cards{grid-template-columns:1fr}}

/* ── Listing pages (templates/archive-bien.html) ──────────────── */
.soho-biens__top{padding-bottom:var(--space-8)}
.soho-biens__list{padding-top:var(--space-6)}
.soho-biens__head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-10);margin-top:var(--space-5)}
.soho-biens__title{font:var(--weight-light) clamp(32px,4.4vw,var(--text-3xl))/var(--leading-tight) var(--font-display);margin:0;max-width:20ch}
.soho-biens__intro{font:var(--type-body-sm);color:var(--text-muted);max-width:38ch;margin:0}
.soho-filters{margin-top:var(--space-12)}
.soho-tabs{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-8);border-bottom:1px solid var(--border-subtle)}
.soho-tab{padding:0 0 var(--space-3);margin-bottom:-1px;font-family:var(--font-brand);font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;white-space:nowrap;color:var(--text-muted);background:none;border:0;border-bottom:var(--border-medium) solid transparent;cursor:pointer;transition:var(--transition-control)}
.soho-tab:hover{color:var(--text-body)}
.soho-tab[aria-current],.soho-tab[aria-selected="true"]{color:var(--text-brand);border-bottom-color:var(--border-brand)}
.soho-filters__row{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-6) var(--space-8);margin-top:var(--space-6)}
.soho-filters__pills{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}
.soho-filters__pills > .soho-icon{color:var(--text-subtle);margin-right:var(--space-2)}
.soho-tag{display:inline-flex;align-items:center;height:32px;padding:0 var(--space-4);border-radius:var(--radius-pill);font:var(--type-body-sm);color:var(--text-body);border:1px solid var(--border-subtle);transition:var(--transition-control)}
.soho-tag:hover{background:var(--surface-soft-tint);color:var(--text-body)}
.soho-tag[aria-pressed="true"]{background:var(--surface-brand);color:var(--text-on-brand);border-color:transparent}
.soho-select select{height:var(--control-h-md);min-width:210px;padding:0 var(--space-10) 0 var(--space-4);font:var(--type-body-sm);color:var(--text-body);background:var(--surface-card) url(../svg/icon-chevron-down.svg) no-repeat right var(--space-4) center/17px;border:1px solid var(--border-subtle);border-radius:var(--radius-xs);appearance:none}
.soho-select select:focus{outline:none;border-color:var(--border-brand);box-shadow:0 0 0 3px var(--focus-ring-soft)}
.soho-biens .wp-block-query-pagination{margin-top:var(--space-16)}

/* ── Temporary « en préparation » page (templates/archive-bien-vendus.html) ── */
.soho-wip{min-height:50vh;display:flex;align-items:center}
.soho-wip .soho-h1{max-width:20ch}

/* ── Listing (templates/single-bien.html) ─────────────────────── */
.soho-fiche__body{padding-top:var(--space-6);padding-bottom:var(--space-12)} /* photos first, right under the header, then title and price (Livio, 2026-10-14) */
.soho-fiche__main > .soho-fiche__head{margin-top:var(--space-8);margin-bottom:var(--space-10)}
.soho-fiche__headline{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-10)}
.soho-fiche__place{display:flex;align-items:center;gap:var(--space-2);margin:var(--space-3) 0 var(--space-4);font:var(--type-body);color:var(--text-subtle)}
.soho-fiche__place svg{flex:none;color:var(--text-brand)}
.soho-fiche__title{font:var(--weight-light) clamp(32px,4.4vw,var(--text-3xl))/var(--leading-tight) var(--font-display);margin:0;max-width:26ch}
.soho-fiche__price{text-align:right}
.soho-fiche__amount{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--text-brand);white-space:nowrap}
.soho-fiche__sub{font:var(--type-label);color:var(--text-subtle);margin-top:4px}
.soho-fiche__grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--space-10);align-items:start}
.soho-fiche__grid > *,.soho-fiche__main > *,.soho-fiche__aside > *{margin-block:0}
.soho-gallery__main{position:relative;border-radius:6px;overflow:hidden;box-shadow:var(--shadow-sm)} /* no arch on the fiche photo, at any width (Marine, 2026-10-14) */
.soho-gallery__nav{position:absolute;top:50%;left:var(--space-4);right:var(--space-4);z-index:2;display:flex;justify-content:space-between;transform:translateY(-50%);pointer-events:none}
.soho-gallery__nav .soho-round{width:40px;height:40px;pointer-events:auto;box-shadow:var(--shadow-xs)}
.soho-gallery__count{position:absolute;right:var(--space-4);bottom:var(--space-4);z-index:2;padding:3px 10px;border-radius:var(--radius-pill);background:var(--veil-cream);backdrop-filter:var(--blur-veil);-webkit-backdrop-filter:var(--blur-veil);font:var(--type-label);color:var(--text-brand)}
.soho-gallery__main{display:flex;justify-content:center;align-items:center;height:min(620px,70vh);background:var(--surface-sunken)} /* fixed frame; every photo fits inside whole, portrait ones centred on greige */
.soho-gallery__main img{display:block;width:auto;max-width:100%;height:100%;object-fit:contain}
/* Card ↔ fiche: the photo morphs between the card and the gallery (cross-document view transition; the @view-transition opt-in is inline in <head>, functions.php; site.js names the one card involved). */
.soho-gallery__main img{view-transition-name:bien-photo}
::view-transition-group(bien-photo){animation-duration:var(--duration-slow);animation-timing-function:var(--ease-out)}
::view-transition-old(bien-photo),::view-transition-new(bien-photo){width:100%;height:100%;object-fit:cover;overflow:clip} /* card (cover) and fiche (contain) differ in ratio: fill the moving frame */
::view-transition-image-pair(bien-photo){overflow:clip;animation:soho-vt-arch var(--duration-slow) var(--ease-out) both} /* the corners morph too: snapshots have none, so the arch is drawn here (iOS showed the jump, Livio 2026-10-14) */
html:has(.soho-gallery)::view-transition-image-pair(bien-photo){animation-name:soho-vt-unarch} /* the new page styles the transition: into a fiche the arch relaxes, back to a list it grows */
@keyframes soho-vt-arch{from{border-radius:6px}to{border-radius:var(--radius-arch-soft)}}
@keyframes soho-vt-unarch{from{border-radius:var(--radius-arch-soft)}to{border-radius:6px}}
.soho-gallery__nav [data-gallery-step="-1"]{view-transition-name:bien-prev} /* the arrows travel with the photo (Livio, 2026-10-14) */
.soho-gallery__nav [data-gallery-step="1"]{view-transition-name:bien-next}
.soho-fiche__head .soho-badge{display:flex;width:fit-content;view-transition-name:bien-badge} /* and the status badge (Livio, 2026-10-14); block-level, WebKit skips inline boxes */
@media (prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-image-pair(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}
.soho-gallery__thumbs{display:grid;grid-auto-flow:column;grid-auto-columns:120px;gap:var(--space-3);margin-top:var(--space-3);padding:3px 3px var(--space-2);overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin} /* one scrolling row, however many photos */
.soho-gallery__thumbs button{padding:0;border:0;background:none;cursor:pointer;border-radius:var(--radius-sm);overflow:hidden;outline-offset:2px}
.soho-gallery__thumbs img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;opacity:.8;transition:opacity var(--duration-fast) var(--ease-soft)}
.soho-gallery__thumbs button[aria-current] {outline:1.5px solid var(--border-brand)}
.soho-gallery__thumbs button[aria-current] img,.soho-gallery__thumbs button:hover img{opacity:1}
.soho-tabset{margin-top:var(--space-10)}
.soho-tabpanel{margin-top:var(--space-8);max-width:var(--layout-prose)}
.soho-tabset:not(:has([aria-selected])) .soho-tabpanel + .soho-tabpanel{margin-top:var(--space-12)} /* no JS: panels read top to bottom */
.soho-prose{font:var(--type-body)}
.soho-prose > *{margin:0}
.soho-prose > * + *{margin-top:var(--space-4)}
.soho-prose h2,.soho-prose h3,.soho-prose h4{font:var(--type-h3);color:var(--text-brand);margin-top:var(--space-6)}
.soho-prose h2 + *,.soho-prose h3 + *,.soho-prose h4 + *{margin-top:var(--space-3)}
.soho-checklist{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-3)}
.soho-checklist li{display:flex;gap:var(--space-3);align-items:center;padding-bottom:var(--space-3);border-bottom:1px solid var(--border-subtle)}
.soho-checklist .soho-icon{color:var(--text-brand)}
.soho-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:var(--space-4);margin:var(--space-12) 0 var(--space-16)!important;padding-block:var(--space-6);border-block:1px solid var(--border-subtle)}
.soho-fact{display:flex;flex-direction:column;gap:var(--space-2)}
.soho-fact .soho-icon{color:var(--text-subtle)}
.soho-fact .soho-caps{color:var(--text-subtle);letter-spacing:var(--tracking-label)}
.soho-fact__value{font-family:var(--font-display);font-size:var(--text-md)}
.soho-fiche__section{margin-bottom:var(--space-16)!important}
.soho-fiche__section > .soho-eyebrow{margin-bottom:var(--space-6)}
.soho-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap} /* read by screen readers, not seen */
.soho-map{position:relative;z-index:0;height:320px;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--border-subtle);background:var(--surface-sunken)}
.soho-map__note{font:var(--type-label);color:var(--text-subtle);margin:var(--space-3) 0 0}
.soho-energy{display:flex;flex-direction:column;gap:var(--space-6)}
.soho-energy > *{margin:0}
.soho-energy__scales{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--space-10)}
.soho-dpe{margin:0;display:flex;flex-direction:column;gap:var(--space-3);min-width:0}
.soho-dpe figcaption{display:flex;flex-direction:column;gap:2px}
.soho-dpe figcaption .soho-caps{color:var(--text-subtle);letter-spacing:var(--tracking-label)}
.soho-dpe__title{font:var(--type-h3);font-size:var(--text-md)}
.soho-dpe__bars{display:flex;flex-direction:column;gap:4px}
.soho-dpe__row{display:grid;grid-template-columns:minmax(0,1fr) 7.5rem;align-items:center;gap:var(--space-3)}
.soho-dpe__bar{height:24px;display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-3);border-radius:var(--radius-xs);clip-path:polygon(0 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,0 100%)}
.soho-dpe__bar span{font:var(--type-label);font-size:11px;white-space:nowrap}
.soho-dpe__bar b{font-family:var(--font-brand);font-weight:400;font-size:var(--text-sm);margin-right:8px}
.soho-dpe__row.is-active .soho-dpe__bar{height:34px}
.soho-dpe__row.is-active .soho-dpe__bar b{font-size:var(--text-md)}
.soho-dpe__value{display:flex;flex-direction:column;gap:2px;white-space:nowrap}
.soho-dpe__value strong{font-family:var(--font-display);font-weight:400;font-size:var(--text-xl);line-height:1}
.soho-dpe__value span{font:var(--type-label);font-size:11px;color:var(--text-muted)}
.soho-dpe__note{display:flex;align-items:center;gap:var(--space-2);margin:0;font:var(--type-label);color:var(--text-brand)} /* « Classement en C dû au GES » under the energy bars */
.soho-energy-costs{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--space-6) var(--space-10);align-items:center;padding:var(--space-6) var(--space-8);background:var(--surface-sunken);border-radius:var(--radius-sm)}
.soho-energy-costs > div{display:flex;flex-direction:column;gap:var(--space-4)}
.soho-energy-costs__label{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--text-brand);letter-spacing:var(--tracking-label)}
.soho-energy-costs__range{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3);font:var(--type-body-sm);color:var(--text-muted)}
.soho-energy-costs__range strong{font-family:var(--font-display);font-weight:400;font-size:var(--text-2xl);line-height:1;color:var(--text-body);white-space:nowrap}
.soho-energy-costs p{margin:0;font:var(--type-label);line-height:1.6;color:var(--text-subtle);padding-left:var(--space-6);border-left:1px solid var(--border-strong)}
.soho-energy__note{font:var(--type-label);color:var(--text-subtle)}
.soho-fiche__legal{max-width:var(--layout-prose);padding-top:var(--space-6);border-top:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:var(--space-3);font:var(--type-body-sm);color:var(--text-muted)}
.soho-fiche__legal p{margin:0}
.soho-fiche__aside{position:sticky;top:calc(var(--header-h) + var(--space-4));display:flex;flex-direction:column;gap:var(--space-5)}
.soho-panel{padding:var(--space-6);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);box-shadow:var(--shadow-xs)}
.soho-panel__text{font:var(--type-body-sm);color:var(--text-muted);margin:var(--space-5) 0}
.soho-panel__buttons{display:flex;flex-direction:column;gap:var(--space-3)}
.soho-panel--soft{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);background:var(--surface-soft-tint);border-color:transparent;box-shadow:none;color:var(--c-burgundy-900)}
.soho-panel__title{font:var(--type-h3);font-size:var(--text-md)}
.soho-panel__soft-text{font:var(--type-body-sm);color:var(--c-burgundy-700);margin-bottom:var(--space-3)}
.soho-fiche .soho-section--greige .soho-cards{margin-top:var(--space-10)}
.soho-fiche .soho-section--greige:not(:has(.soho-cards)){display:none} /* « À voir aussi » with nothing to show */

@media (max-width:900px){
  .soho-biens__head,.soho-fiche__headline{flex-direction:column;align-items:flex-start;gap:var(--space-5)}
  .soho-fiche__price{text-align:left}
  .soho-fiche__grid{grid-template-columns:minmax(0,1fr)} /* minmax: the thumbnail strip must scroll, not widen the page */
  .soho-fiche__main{display:contents} /* stacked: photos, title and price, the contact panel, then the rest */
  .soho-fiche__main > *{order:3}
  .soho-fiche__main > .soho-gallery{order:0}
  .soho-fiche__main > .soho-fiche__head{order:1;margin-block:0}
  .soho-fiche__aside{position:static;order:2}
  .soho-gallery__main{height:auto;max-height:70vh}
  .soho-gallery__main img{width:100%;height:auto;max-height:70vh}
}
/* ── Holding page (« bientôt en ligne ») ──────────────────────── */
.soho-holding{min-height:100vh;min-height:100svh;display:grid;grid-template-columns:1.05fr .95fr;background:var(--surface-page);color:var(--text-body)}
.soho-holding__copy{display:flex;flex-direction:column;justify-content:space-between;gap:var(--space-12);padding:56px clamp(24px,5vw,64px)}
.soho-holding__copy > .soho-logo{--logo-w:min(220px,60vw)}
.soho-holding__body{margin:0}
.soho-holding__body > * + *{margin-block-start:var(--space-6)}
.soho-holding__body .soho-eyebrow + *{margin-block-start:28px}
.soho-holding__title{font:var(--weight-light) clamp(38px,5.2vw,var(--text-4xl))/var(--leading-tight) var(--font-display);letter-spacing:var(--tracking-display);margin:0;max-width:16ch}
.soho-holding__lede{font:var(--type-body);color:var(--text-muted);margin:0;max-width:44ch}
.soho-holding__bar{gap:var(--space-8);padding-top:28px;border-top:1px solid var(--border-subtle)}
.soho-holding__body .soho-holding__cta{margin-block-start:var(--space-10)}
.soho-holding__cta .wp-block-button__link{min-height:var(--control-h-lg);padding-inline:var(--control-px-lg);font-size:var(--text-sm)}
.soho-holding__cta .wp-block-button__link:active{background:var(--c-burgundy-900);transform:translateY(1px)}
.soho-holding__hours{font:var(--type-body-sm);line-height:1.4;color:var(--text-muted);margin:0}
.soho-holding__bar .soho-signature{--signature-size:42px}
.soho-holding__contact{font:var(--type-body-sm);line-height:1.9;margin:0}
.soho-holding__contact a{color:inherit;border:0}
.soho-holding__contact a:hover{color:var(--text-brand)}
.soho-holding__contact .is-subtle{color:var(--text-subtle)}
.soho-holding__photo{position:relative;overflow:hidden;background:var(--surface-brand-deep)}
.soho-holding__photo .wp-block-image{position:absolute;inset:0;margin:0}
.soho-holding__photo img{width:100%;height:100%;object-fit:cover}
.soho-holding__photo::after{content:"";position:absolute;inset:0;background:var(--image-protect)}
.soho-holding__photo-bar{position:absolute;left:0;right:0;bottom:0;z-index:1;padding:44px 48px;color:var(--text-on-image)}
.soho-holding__photo-bar p{margin:0}
.soho-holding__photo-bar .soho-mark{width:56px}
@media (max-width:900px){
  .soho-holding{grid-template-columns:1fr}
  .soho-holding__copy{padding:40px var(--layout-gutter) 48px;gap:var(--space-10)}
  .wp-block-group.soho-holding__bar{flex-direction:column;align-items:flex-start;gap:var(--space-6)}
  .soho-holding__contact.has-text-align-right{text-align:left}
  .soho-holding__photo{min-height:38vh;order:-1}
  .soho-holding__photo-bar{padding:var(--space-6) var(--layout-gutter)}
}

