/* ==========================================================================
   Typographie Corcoran St Barth
   Titres : Libre Caslon Text (hébergée sur le site)
   Textes : Avenir si installée sur l'appareil (Mac, iPhone, iPad),
            sinon Libre Franklin (hébergée sur le site)
   Licences : Libre Caslon Text et Libre Franklin sous SIL Open Font
   License 1.1 (voir les fichiers OFL dans /fonts/). Avenir n'est PAS fournie ni
   hébergée : elle n'est utilisée que si elle est déjà présente sur
   l'appareil du visiteur.
   ==========================================================================

   Styles partagés du site public, chargés après les feuilles des composants.
   ========================================================================== */

/* ---------- 1. Libre Caslon Text (titres) ---------- */

/* Latin : couvre tout le français (accents, œ, €, guillemets) */
@font-face {
  font-family: "Libre Caslon Text";
  src: url("/fonts/libre-caslon-text-latin-400-normal.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  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: "Libre Caslon Text";
  src: url("/fonts/libre-caslon-text-latin-400-italic.woff2") format("woff2");
  font-weight: 400;
  font-style: italic;
  font-display: swap;
  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: "Libre Caslon Text";
  src: url("/fonts/libre-caslon-text-latin-700-normal.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  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;
}

/* Latin étendu : téléchargé seulement si la page contient ces caractères */
@font-face {
  font-family: "Libre Caslon Text";
  src: url("/fonts/libre-caslon-text-latin-ext-400-normal.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Libre Caslon Text";
  src: url("/fonts/libre-caslon-text-latin-ext-400-italic.woff2") format("woff2");
  font-weight: 400;
  font-style: italic;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Libre Caslon Text";
  src: url("/fonts/libre-caslon-text-latin-ext-700-normal.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}


/* ---------- 2. Libre Franklin (textes, si Avenir absente) ---------- */
/* Police variable : un seul fichier couvre toutes les graisses 100 à 900 */

@font-face {
  font-family: "Libre Franklin";
  src: url("/fonts/libre-franklin-latin-wght-normal.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  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: "Libre Franklin";
  src: url("/fonts/libre-franklin-latin-wght-italic.woff2") format("woff2");
  font-weight: 100 900;
  font-style: italic;
  font-display: swap;
  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: "Libre Franklin";
  src: url("/fonts/libre-franklin-latin-ext-wght-normal.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Libre Franklin";
  src: url("/fonts/libre-franklin-latin-ext-wght-italic.woff2") format("woff2");
  font-weight: 100 900;
  font-style: italic;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}


/* ---------- 3. Variables ---------- */

:root {
  /* Titres */
  --font-display: "Libre Caslon Text", Georgia, "Times New Roman", serif;
  /* Textes : Avenir (installée sur l'appareil) puis Libre Franklin (hébergée) */
  --font-text: "Avenir", "Libre Franklin", Arial, sans-serif;

  --color-title: #1C2B33;
  --color-text: #2E3A41;
  --color-muted: #4F5A61;

  /* Tailles fluides : mobile (375 px) -> desktop (1280 px) */
  --fs-h1: clamp(38px, 30.5px + 1.99vw, 56px);
  --fs-h2: clamp(27px, 24.1px + 0.77vw, 34px);
  --fs-h3: clamp(19px, 18.2px + 0.22vw, 21px);
  --fs-price: clamp(30px, 28.3px + 0.44vw, 34px);
  --fs-nav: 19px;
  --fs-body: 16px;
  --fs-small: 14px;
  --fs-label: 11px;
  --fs-button: 12px;

  /* Compatibility with existing components: one shared scale for the public site. */
  --font1: var(--font-display);
  --font2: var(--font-text);
  --fs-display-xl: var(--fs-h1);
  --fs-display-l: var(--fs-h2);
  --fs-display-m: var(--fs-h3);
  --fs-lead: var(--fs-body);
  --fs-input: var(--fs-body);
  --fs-date: var(--fs-body);
  --fs-num-total: var(--fs-price);
  --fs-num-display: var(--fs-h2);
  --fw-thin: 400;
  --fw-light: 400;
  --fw-regular: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --lh-display: 1.3;
  --lh-text: 1.75;
  --lh-tight: 1.4;
  --ls-display: 0;
  --ls-label: 0.18em;
  --ls-eyebrow: 0.2em;
  --ls-button: 0.18em;
  --ls-num: 0;
  --bs-font-sans-serif: var(--font-text);
  --bs-body-font-family: var(--font-text);
  --bs-body-font-size: var(--fs-body);
  --bs-body-line-height: var(--lh-text);
  --bs-body-color: var(--color-text);
  --bs-heading-color: var(--color-title);
}


/* ---------- 4. Base : tout le site hérite de la police texte ---------- */

html {
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

body {
  font-family: var(--font-text);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: 1.75;
  color: var(--color-text);
}

/* Les champs de formulaire n'héritent pas de la police par défaut */
button,
input,
select,
textarea,
optgroup {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}


/* ---------- 5. Titres (Libre Caslon Text) ---------- */

h1, .t-h1, .t-display-xl,
.front-site h1, .front-site .t-h1, .front-site .t-display-xl {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-h1);
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: var(--color-title);
}

h2, .t-h2, .t-display-l,
.front-site h2, .front-site .t-h2, .front-site .t-display-l {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-h2);
  line-height: 1.2;
  letter-spacing: 0;
  color: var(--color-title);
}

h3, .t-h3, .t-display-m,
.front-site h3, .front-site .t-h3, .front-site .t-display-m {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-h3);
  line-height: 1.3;
  letter-spacing: 0;
  color: var(--color-title);
}

.t-nav, .front-site .t-nav {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-nav);
  line-height: 1.2;
  letter-spacing: 0;
  color: var(--color-title);
}

.t-price, .front-site .t-price {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-price);
  line-height: 1;
  letter-spacing: 0;
  color: var(--color-title);
}


/* ---------- 6. Textes (Avenir / Libre Franklin) ---------- */

.t-body, .front-site .t-body {
  font-family: var(--font-text);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: 1.75;
  color: var(--color-text);
}

.t-small, .front-site .t-small {
  font-family: var(--font-text);
  font-weight: 400;
  font-size: var(--fs-small);
  line-height: 1.65;
  color: var(--color-muted);
}

/* Sur-titre (COLOMBIER · VUE MER), fil d'Ariane, caractéristiques, labels.
   Volontairement non appliqué à toutes les balises <label> et <button>
   pour ne pas mettre en capitales les cases à cocher ou boutons icônes. */
.t-eyebrow, .t-label,
.front-site .t-eyebrow, .front-site .t-label {
  font-family: var(--font-text);
  font-weight: 500;
  font-size: var(--fs-label);
  line-height: 1.4;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--color-muted);
}

.t-label, .front-site .t-label {
  letter-spacing: 0.18em;
}

/* Boutons et liens d'action */
.t-button, .front-site .t-button {
  font-family: var(--font-text);
  font-weight: 500;
  font-size: var(--fs-button);
  line-height: 1;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}


/* ---------- 7. Mobile ---------- */

@media (max-width: 767px) {
  .t-nav, .front-site .t-nav {
    font-size: 24px; /* menu mobile plein écran */
  }
}


/* ---------- 8. Existing public components and third-party widgets ---------- */

h4, h5, h6, .font1 {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-h3);
  line-height: 1.3;
  letter-spacing: 0;
  color: var(--color-title);
}

/* Keep Bootstrap weight utilities from changing the display styles. */
.front-site :is(h1, h2, h3, h4, h5, h6, .font1, .t-h1, .t-h2, .t-h3, .t-display-xl, .t-display-l, .t-display-m) {
  font-weight: 400 !important;
}

.front-site :is(h1, h2, h3, h4, h5, h6, .font1) :is(strong, b) {
  font-weight: inherit;
}

.front-site .t-lead, .front-site .lead {
  font-size: var(--fs-body);
  line-height: 1.75;
}

small, .small, .xsmall {
  font-size: var(--fs-small);
  line-height: 1.65;
}

.front-site .text-muted {
  color: var(--color-muted) !important;
}

.front-site :is(.form-control, .form-select, input, textarea, select) {
  font-family: var(--font-text);
}

.front-site :is(.form-control, .form-select) {
  font-size: var(--fs-input);
  line-height: 1.75;
}

/* Field labels only: checkbox and radio descriptions keep normal casing. */
.front-site :is(.form-label, .booking-date-field label, .contact-field > label, .request-field > label) {
  font-family: var(--font-text);
  font-size: var(--fs-label);
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--color-muted);
}

.front-site :is(.t-num, .t-date, .t-num-display) {
  font-family: var(--font-text);
  font-weight: 400;
  font-variant-numeric: tabular-nums lining-nums;
}

.front-site .t-date { font-size: var(--fs-date); }
.front-site .t-num-display { font-size: var(--fs-num-display); }

.front-site :is(.t-num-total, .request-total dd) {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-price);
  line-height: 1;
  letter-spacing: 0;
  color: var(--color-title);
}

.front-site :is(.t-price, .t-num-total) .t-num,
.front-site :is(.vr-card-price, .villa-card-price) .t-num {
  font-family: var(--font-display);
  font-weight: 400;
}

.front-site :is(.litepicker, .leaflet-container, .gm-style) {
  font-family: var(--font-text);
}

.front-site .litepicker :is(.month-item-name, .month-item-year, .day-item) {
  font-family: inherit;
  font-weight: 400;
  font-variant-numeric: tabular-nums lining-nums;
}

/* The HubSpot HTML embed injects its own type rules after page load. */
.front-site .hs-form-html {
  --hsf-global__font-family: var(--font-text);
  --hsf-heading__font-family: var(--font-display);
  --hsf-button__font-family: var(--font-text);
}

.front-site .hs-form-html :is(form, label, input, select, textarea, button, p, span) {
  font-family: var(--font-text) !important;
}

.front-site .hs-form-html :is(button[type="submit"], input[type="submit"]) {
  font-size: var(--fs-button) !important;
  font-weight: 500 !important;
  line-height: 1 !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase;
  height: auto;
}
