/* Generated by bin/build-css.sh from styles.css and tokens/. Do not edit: change those and rebuild. */
/* --- tokens/fonts.css --- */
/* Immobilière SO HO — webfonts.
   Self-hosted (GDPR): the @font-face rules are generated by WordPress from theme.json
   (settings.typography.fontFamilies[].fontFace → assets/fonts/*.woff2). No CDN import.
   SUBSTITUTIONS: the charter specifies Alta / Alta Light, The Seasons and Amicale Light.
   None of those binaries were supplied. When the licensed files arrive, add their fontFace
   entries in theme.json and repoint the three --font-sub-* variables below. */
:root{
  /* substitution map — keep in sync with the handoff readme › Visual foundations › Type */
  --font-sub-alta: "Marcellus";             /* stands in for Alta / Alta Light ("Marcellus Sans" does not exist on Google Fonts) */
  --font-sub-seasons: "Cormorant Garamond"; /* stands in for The Seasons */
  --font-sub-amicale: "Sacramento";         /* stands in for Amicale Light */
}

/* --- tokens/colors.css --- */
:root{
  /* ── Charter palette (exact values from Charte graphique Immo SO HO, p.4) ── */
  --c-cream:#f8f7f2;
  --c-burgundy:#6a2c37;
  --c-olive:#bec46a;
  --c-blush:#efcdc6;
  --c-greige:#efeae2;

  /* ── Derived ramps (mixed from the five charter colours only) ── */
  --c-burgundy-900:#3a1820;
  --c-burgundy-800:#4c1f29;
  --c-burgundy-700:#5b2531;
  --c-burgundy-600:#6a2c37;
  --c-burgundy-500:#84424e;
  --c-burgundy-300:#b08a91;
  --c-burgundy-100:#e6d5d8;

  --c-olive-700:#8d9348;
  --c-olive-600:#a7ad58;
  --c-olive-500:#bec46a;
  --c-olive-300:#d6da9c;
  --c-olive-100:#eef0d6;

  --c-blush-500:#d9a69c;
  --c-blush-400:#e6bab1;
  --c-blush-300:#efcdc6;
  --c-blush-100:#f8e6e2;

  --c-ink:#2b1b1f;
  --c-ink-70:#5c4a4e;
  --c-ink-50:#8a797d;
  --c-ink-30:#b8abae;
  --c-paper:#ffffff;
  --c-greige-dark:#e2dbd0;
  --c-line:#e0d8ce;

  /* ── Semantic: text ── */
  --text-body:var(--c-ink);
  --text-muted:var(--c-ink-70);
  --text-subtle:var(--c-ink-50);
  --text-brand:var(--c-burgundy-600);
  --text-on-brand:var(--c-cream);
  --text-on-image:var(--c-cream);
  --text-link:var(--c-burgundy-600);
  --text-link-hover:var(--c-burgundy-800);

  /* ── Semantic: surface ── */
  --surface-page:var(--c-cream);
  --surface-card:var(--c-paper);
  --surface-sunken:var(--c-greige);
  --surface-alt:var(--c-greige);
  --surface-brand:var(--c-burgundy-600);
  --surface-brand-deep:var(--c-burgundy-900);
  --surface-accent:var(--c-olive-500);
  --surface-accent-soft:var(--c-olive-100);
  --surface-soft:var(--c-blush-300);
  --surface-soft-tint:var(--c-blush-100);

  /* ── Semantic: border ── */
  --border-subtle:var(--c-line);
  --border-strong:var(--c-ink-30);
  --border-brand:var(--c-burgundy-600);
  --border-on-brand:rgba(248,247,242,.28);

  /* ── Semantic: status (mapped onto the charter palette, no new hues) ── */
  --status-success-fg:var(--c-olive-700);
  --status-success-bg:var(--c-olive-100);
  --status-notice-fg:var(--c-burgundy-600);
  --status-notice-bg:var(--c-blush-100);
  --status-info-fg:var(--c-ink-70);
  --status-info-bg:var(--c-greige);

  /* ── Interaction ── */
  --state-hover-veil:rgba(43,27,31,.06);
  --state-press-veil:rgba(43,27,31,.12);
  --focus-ring:var(--c-burgundy-600);
  --focus-ring-soft:rgba(106,44,55,.22);
  --overlay-scrim:rgba(43,27,31,.46);
  --image-protect:linear-gradient(to top,rgba(43,27,31,.62) 0%,rgba(43,27,31,.18) 46%,rgba(43,27,31,0) 78%); /* @kind other */
  /* side scrim — for copy set over the left of a full-bleed photo (heroes). Pair with --image-protect. */
  --image-protect-left:linear-gradient(to right,rgba(43,27,31,.82) 0%,rgba(43,27,31,.62) 38%,rgba(43,27,31,.14) 72%,rgba(43,27,31,0) 100%); /* @kind other */
}

/* --- tokens/typography.css --- */
:root{
  /* families */
  --font-brand:var(--font-sub-alta),"Optima","Gill Sans",sans-serif;   /* Alta — logo, eyebrows, buttons, nav */
  --font-display:var(--font-sub-seasons),"Didot",Georgia,serif;         /* The Seasons — headlines, prices */
  --font-body:"Jost",var(--font-sub-alta),system-ui,sans-serif;         /* running UI + body copy */
  --font-script:var(--font-sub-amicale),"Brush Script MT",cursive;      /* signature only */

  /* type scale — 1.25 major third off a 16px body */
  --text-2xs:11px;
  --text-xs:12px;
  --text-sm:14px;
  --text-base:16px;
  --text-md:18px;
  --text-lg:22px;
  --text-xl:28px;
  --text-2xl:36px;
  --text-3xl:48px;
  --text-4xl:64px;
  --text-5xl:84px;

  /* line heights */
  --leading-tight:1.04;
  --leading-snug:1.18;
  --leading-normal:1.5;
  --leading-relaxed:1.68;

  /* weights (Marcellus Sans & Sacramento ship 400 only) */
  --weight-light:300;
  --weight-regular:400;
  --weight-medium:500;

  /* tracking — wide caps are the brand's signature */
  --tracking-caps:.18em;
  --tracking-label:.12em;
  --tracking-normal:0;
  --tracking-display:-.01em;

  /* composed roles */
  --type-display:var(--weight-light) var(--text-3xl)/var(--leading-tight) var(--font-display);
  --type-h1:var(--weight-light) var(--text-2xl)/var(--leading-snug) var(--font-display);
  --type-h2:var(--weight-regular) var(--text-xl)/var(--leading-snug) var(--font-display);
  --type-h3:var(--weight-regular) var(--text-lg)/var(--leading-snug) var(--font-display);
  --type-eyebrow:var(--weight-regular) var(--text-xs)/1.2 var(--font-brand);
  --type-body:var(--weight-light) var(--text-base)/var(--leading-relaxed) var(--font-body);
  --type-body-sm:var(--weight-light) var(--text-sm)/var(--leading-normal) var(--font-body);
  --type-label:var(--weight-regular) var(--text-xs)/1.3 var(--font-body);
  --type-button:var(--weight-regular) var(--text-xs)/1 var(--font-brand);
  --type-signature:var(--weight-regular) var(--text-2xl)/1 var(--font-script);
}

/* --- tokens/spacing.css --- */
:root{
  --space-0:0;
  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-5:20px;
  --space-6:24px;
  --space-8:32px;
  --space-10:40px;
  --space-12:48px;
  --space-16:64px;
  --space-20:80px;
  --space-24:96px;
  --space-32:128px;
  --space-40:160px;

  /* layout */
  --layout-max:1280px;
  --layout-prose:64ch;
  --layout-gutter:24px;
  --layout-gutter-lg:48px;
  --section-y:var(--space-24);
  --section-y-sm:var(--space-16);
  --grid-gap:24px;
  --grid-gap-lg:40px;

  /* controls */
  --control-h-sm:34px;
  --control-h-md:44px;
  --control-h-lg:54px;
  --control-px-sm:16px;
  --control-px-md:24px;
  --control-px-lg:34px;
}

/* --- tokens/radii.css --- */
:root{
  --radius-none:0;
  --radius-xs:2px;
  --radius-sm:4px;
  --radius-md:8px;
  --radius-lg:16px;
  --radius-xl:28px;
  --radius-pill:999px;
  /* arch — the brandmark's loop + the moodboard's arched windows */
  --radius-arch:50% 50% 0 0 / 32% 32% 0 0;
  --radius-arch-soft:48% 48% 6px 6px / 26% 26% 6px 6px;
  --radius-leaf:60% 0 60% 0;
  --border-hairline:1px;
  --border-medium:1.5px;
}

/* --- tokens/elevation.css --- */
:root{
  /* warm, low, diffuse — never grey or dramatic */
  --shadow-none:none;
  --shadow-xs:0 1px 2px rgba(43,27,31,.04);
  --shadow-sm:0 2px 8px rgba(43,27,31,.05);
  --shadow-md:0 8px 24px -8px rgba(43,27,31,.10);
  --shadow-lg:0 20px 48px -16px rgba(43,27,31,.16);
  --shadow-inset-hairline:inset 0 0 0 1px var(--border-subtle);
  --blur-veil:blur(14px); /* @kind other */
  --veil-cream:rgba(248,247,242,.82);
  --veil-ink:rgba(43,27,31,.32);
}

/* --- tokens/motion.css --- */
:root{
  --duration-instant:90ms; /* @kind other */
  --duration-fast:180ms; /* @kind other */
  --duration-base:280ms; /* @kind other */
  --duration-slow:480ms; /* @kind other */
  --duration-reveal:720ms; /* @kind other */
  --ease-soft:cubic-bezier(.22,.61,.36,1); /* @kind other */
  --ease-out:cubic-bezier(.16,1,.3,1); /* @kind other */
  --ease-in-out:cubic-bezier(.4,0,.2,1); /* @kind other */
  --transition-control:color var(--duration-fast) var(--ease-soft),background-color var(--duration-fast) var(--ease-soft),border-color var(--duration-fast) var(--ease-soft);
  --transition-media:transform var(--duration-slow) var(--ease-out),opacity var(--duration-base) var(--ease-soft);
}

/* --- tokens/base.css --- */
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--surface-page);color:var(--text-body);font:var(--type-body);-webkit-font-smoothing:antialiased;text-wrap:pretty}
h1,h2,h3,h4{margin:0;font-weight:var(--weight-light);color:var(--text-body)}
h1{font:var(--type-h1)}h2{font:var(--type-h2)}h3{font:var(--type-h3)}
p{margin:0 0 var(--space-4)}
a{color:var(--text-link);text-decoration:none;border-bottom:1px solid var(--c-burgundy-300);transition:var(--transition-control)}
a:hover{color:var(--text-link-hover);border-bottom-color:var(--c-burgundy-600)}
img{display:block;max-width:100%}
::selection{background:var(--c-blush-300);color:var(--c-burgundy-900)}
:focus-visible{outline:1.5px solid var(--focus-ring);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}

