/* 55 · agency — polices auto-hebergees (kh.55.agency).
   Inter et Manrope (SIL OFL 1.1) pour le latin, Kantumruy Pro (SIL OFL 1.1)
   pour le khmer. Auto-heberger supprime deux connexions tierces bloquantes
   (fonts.googleapis.com puis fonts.gstatic.com) sur le chemin critique.

   NOTE — les chemins ci-dessous sont relatifs a ce fichier (assets/css/), donc
   ../fonts/self/. La copie racine du site porte encore url('inter-400-latin.woff2'),
   qui pointe dans assets/css/ ou aucune police n'existe : les @font-face y sont
   sans effet et le rendu retombe sur la pile systeme. */

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/self/inter-400-latin-ext.woff2') format('woff2');
  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: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/self/inter-400-latin.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: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/self/inter-500-latin-ext.woff2') format('woff2');
  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: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/self/inter-500-latin.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: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('../fonts/self/inter-600-latin-ext.woff2') format('woff2');
  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: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('../fonts/self/inter-600-latin.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: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/self/inter-700-latin-ext.woff2') format('woff2');
  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: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/self/inter-700-latin.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: 'Manrope';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/self/manrope-500-latin-ext.woff2') format('woff2');
  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: 'Manrope';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/self/manrope-500-latin.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: 'Manrope';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/self/manrope-700-latin-ext.woff2') format('woff2');
  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: 'Manrope';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/self/manrope-700-latin.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: 'Manrope';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url('../fonts/self/manrope-800-latin-ext.woff2') format('woff2');
  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: 'Manrope';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url('../fonts/self/manrope-800-latin.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;
}

/* ---------------------------------------------------------------
   Khmer — Kantumruy Pro, fonte variable 100-700, sous-ensemble khmer.
   Un seul fichier couvre toute la plage de graisses : l'amont sert la
   meme ressource pour chaque poids (verifie par empreinte).
   Rafraichir avec : node _tools/kh-fonts-fetch.mjs
   --------------------------------------------------------------- */
@font-face {
  font-family: 'Kantumruy Pro';
  font-style: normal;
  font-weight: 100 700;
  font-display: swap;
  /* format('woff2'), PAS 'woff2-variations' : ce mot-cle experimental n'est plus
     reconnu par les navigateurs actuels, qui rejettent alors la @font-face en
     entier. La fonte ne se chargeait pas, le khmer retombait sur une police
     systeme et le moteur de rendu inserait des cercles pointilles (U+25CC) a
     la place des signes diacritiques orphelins. Google Fonts declare lui-meme
     cette fonte variable avec format('woff2'). */
  src: url('../fonts/self/kantumruy-khmer-var.woff2') format('woff2');
  unicode-range: U+1780-17FF, U+19E0-19FF, U+200C-200D, U+25CC;
}

/* Les pages khmeres declarent <html lang="km"> : on place Kantumruy Pro en
   tete de pile. Inter/Manrope restent derriere pour les chiffres, les sigles
   et les mots latins qui parsement le texte khmer — l'unicode-range ci-dessus
   fait le tri glyphe par glyphe, sans second telechargement. */
html[lang="km"] body,
html[lang="km"] .lead,
html[lang="km"] p,
html[lang="km"] li,
html[lang="km"] a,
html[lang="km"] button,
html[lang="km"] input,
html[lang="km"] textarea,
html[lang="km"] select {
  font-family: 'Kantumruy Pro', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
}

html[lang="km"] h1,
html[lang="km"] h2,
html[lang="km"] h3,
html[lang="km"] h4,
html[lang="km"] h5,
html[lang="km"] .h-display,
html[lang="km"] .hero-title {
  font-family: 'Kantumruy Pro', 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
}

/* Interligne khmer.

   Le khmer empile ses signes de part et d'autre de la ligne de base : consonne
   souscrite (COENG) en dessous, voyelle dependante au-dessus. L'interligne des
   titres latins de ce site — h1/h2/h3 a 1.05 — les ferait se toucher.

   Les valeurs ci-dessous sont calees sur les metriques de Kantumruy Pro :
   ascendante 920 / descendante -260 sur 1000 unites par em, soit une boite
   d'encre de 1.18 em. 1.3 laisse 0.12 em de garde, ce qui tient sans paraitre
   aere. En dessous de ~1.25 les souscrites d'une ligne touchent les voyelles
   de la suivante.

   On couvre h1 a h5 explicitement : sans cela h3 heritait du 1.05 latin (trop
   serre) et h4/h5 du 1.8 du corps de texte (trop lache pour un titre). */
html[lang="km"] { line-height: 1.8; }

html[lang="km"] h1,
html[lang="km"] h2,
html[lang="km"] h3,
html[lang="km"] h4,
html[lang="km"] h5,
html[lang="km"] .h-display,
html[lang="km"] .hero-title,
html[lang="km"] .h-1,
html[lang="km"] .h-2,
html[lang="km"] .h-3 { line-height: 1.3; }

/* Blanc optique au-dessus des titres.

   Kantumruy Pro reserve une ascendante de 1.02 em (metriques win) pour loger
   les voyelles empilees, alors que le sommet d'une consonne ordinaire est bien
   plus bas. Sur un titre de ~50 px cela ajoute un vide en haut que le latin
   n'a pas, et qui s'additionne au margin-top du gabarit. On en reprend une
   partie — uniquement en khmer, le latin garde ses valeurs. */
html[lang="km"] .hero-title { margin-top: 4px; }
html[lang="km"] .eyebrow { line-height: 1.4; }

/* Le khmer ne separe pas les mots par des espaces : la coupure doit etre
   confiee au moteur de rendu, sinon les longues chaines debordent. */
html[lang="km"] p,
html[lang="km"] li,
html[lang="km"] .lead,
html[lang="km"] .hero-sub { word-break: break-word; line-break: normal; }

/* ===========================================================================
   Ajustements de mise en page propres a kh.55.agency

   Malgre son nom, ce fichier porte TOUS les ecarts du site cambodgien : c'est
   la seule feuille qui lui soit propre, et agency-2026.css est une copie de la
   version principale qu'une resynchronisation ecraserait. Mettre les overrides
   ici les protege de cela.

   ATTENTION a la specificite : fonts.css est chargee AVANT agency-2026.css,
   donc une regle `.hero` y perdrait a egalite. D'ou le `html` en prefixe.
   =========================================================================== */

/* Le hero du site principal ouvre sur clamp(140px, 18vw, 200px) de blanc.
   Sur le site cambodgien ce vide au-dessus de l'eyebrow est juge trop grand :
   on le ramene d'environ 60 px en grand ecran, 44 px en mobile. Volontairement
   applique aux DEUX langues — l'anglais et le khmer partagent la meme mise en
   page, les desynchroniser serait pire. */
html .hero { padding-top: clamp(96px, 12vw, 140px); }
