/* ============================================================
   MINOTERIES GOUBET — Langues : sélecteur, écritures, droite-à-gauche
   (pages générées par i18n/build.py ; voir README, « Traductions »)
   ============================================================ */

/* ---------- Sélecteur de langue (barre de navigation) ---------- */
.lang { position: relative; flex: none; }
.lang__btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .35rem;
  min-width: 44px; min-height: 44px; padding: 0 .7rem;
  font: inherit; font-size: .78rem; font-weight: 700; letter-spacing: .06em; line-height: 1;
  color: var(--ink); background: transparent; cursor: pointer;
  border: 1px solid var(--line); border-radius: 100px;
  transition: border-color .3s, color .3s, background .3s;
}
.lang__btn:hover, .lang.is-open .lang__btn { border-color: var(--wheat); color: var(--wheat-deep); }
.lang__icon { width: 16px; height: 16px; flex: none; }
.lang__btn:focus-visible, .lang__list a:focus-visible {
  outline: 2px solid var(--wheat-deep); outline-offset: 2px;
}
.lang__list {
  position: absolute; top: calc(100% + .55rem); right: 0; z-index: 170;
  display: grid; grid-template-columns: minmax(10rem, 1fr); gap: .15rem;
  padding: .45rem; margin: 0; list-style: none;
  background: #fff; border: 1px solid var(--line); border-radius: 14px;
  box-shadow: 0 24px 48px -24px rgba(36, 16, 25, .35);
}
.lang__list:has(> li:nth-child(6)) { grid-template-columns: repeat(2, minmax(9.5rem, 1fr)); }
.lang__list[hidden] { display: none; }
.nav__links .lang__list a {
  display: flex; align-items: center; min-height: 44px; padding: .3rem .8rem;
  border-radius: 10px; font-size: .92rem; font-weight: 500; line-height: 1.3;
  color: var(--ink); opacity: 1; white-space: nowrap;
}
.nav__links .lang__list a::after { display: none; }
.nav__links .lang__list a:hover { background: var(--cream); color: var(--wheat-deep); }
.nav__links .lang__list a[aria-current="page"] { background: var(--cream); color: var(--wheat-deep); font-weight: 700; }

/* Entre 901 et 1200 px les six liens + le sélecteur doivent tenir sur une ligne */
@media (min-width: 901px) and (max-width: 1200px) {
  .nav__links { gap: 1.45rem; }
}

/* Tiroir mobile : le sélecteur est le dernier élément, la liste s'ouvre sur place */
@media (max-width: 900px) {
  .nav__links { overflow-y: auto; justify-content: safe center; }
  .lang { align-self: center; display: flex; flex-direction: column; align-items: center; }
  .lang__btn { color: var(--flour); border-color: rgba(255, 255, 255, .35); font-size: .9rem; padding: 0 1rem; }
  .lang__btn:hover, .lang.is-open .lang__btn { color: var(--flour); border-color: var(--flour); }
  .lang__btn:focus-visible, .lang__list a:focus-visible { outline-color: var(--flour); }
  .lang__list {
    position: static; margin-top: .8rem;
    background: transparent; border-color: rgba(255, 255, 255, .16); box-shadow: none;
  }
  .lang__list:has(> li:nth-child(6)) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nav__links .lang__list a { color: var(--flour) !important; font-size: .95rem; white-space: normal; }
  .nav__links .lang__list a:hover,
  .nav__links .lang__list a[aria-current="page"] { background: rgba(255, 255, 255, .12); }
}

/* ---------- Polices par écriture (polices système, aucun téléchargement) ----------
   Fraunces et Manrope ne couvrent que l'alphabet latin : elles restent en tête
   pour les mots latins (Minoteries Goubet…), la police système prend le reste. */
html:lang(zh) {
  --font-display: "Fraunces", "Microsoft YaHei", "PingFang SC", "Noto Sans SC", sans-serif;
  --font-body: "Manrope", "Microsoft YaHei", "PingFang SC", "Noto Sans SC", sans-serif;
}
html:lang(ja) {
  --font-display: "Fraunces", "Yu Gothic", "YuGothic", "Hiragino Sans", "Noto Sans JP", sans-serif;
  --font-body: "Manrope", "Yu Gothic", "YuGothic", "Hiragino Sans", "Noto Sans JP", sans-serif;
}
html:lang(hi), html:lang(mr) {
  --font-display: "Fraunces", "Nirmala UI", "Noto Sans Devanagari", "Mangal", sans-serif;
  --font-body: "Manrope", "Nirmala UI", "Noto Sans Devanagari", "Mangal", sans-serif;
}
html:lang(bn) {
  --font-display: "Fraunces", "Nirmala UI", "Noto Sans Bengali", "Vrinda", sans-serif;
  --font-body: "Manrope", "Nirmala UI", "Noto Sans Bengali", "Vrinda", sans-serif;
}
html:lang(ar) {
  --font-display: "Fraunces", "Segoe UI", "Noto Naskh Arabic", "Tahoma", sans-serif;
  --font-body: "Manrope", "Segoe UI", "Noto Naskh Arabic", "Tahoma", sans-serif;
}
html:lang(ur) {
  --font-display: "Fraunces", "Noto Nastaliq Urdu", "Segoe UI", "Tahoma", sans-serif;
  --font-body: "Manrope", "Noto Nastaliq Urdu", "Segoe UI", "Tahoma", sans-serif;
}
html:lang(ru) {
  /* nos fichiers Fraunces/Manrope n'ont pas le cyrillique : une seule police système
     pour toute la page, sinon les mots latins (Minoteries Goubet…) détonnent */
  --font-display: Georgia, "Times New Roman", serif;
  --font-body: "Segoe UI", Roboto, "Noto Sans", Arial, sans-serif;
}
html:lang(vi) {
  /* nos fichiers Fraunces/Manrope n'ont pas les lettres vietnamiennes (ạ, ế, ữ…) :
     on évite un mot mi-Manrope mi-repli en partant directement d'une police complète */
  --font-display: "Noto Serif", "Times New Roman", Georgia, serif;
  --font-body: "Segoe UI", Roboto, "Noto Sans", Arial, sans-serif;
}

/* Écritures non latines : pas d'italique synthétique ni d'espacement des lettres
   (l'arabe, l'ourdou et les écritures indiennes se lient ; l'espacement les casse). */
html:is(:lang(zh), :lang(ja), :lang(hi), :lang(mr), :lang(bn), :lang(ar), :lang(ur)) :where(body *):not(svg, svg *) {
  font-style: normal !important;
}
html:is(:lang(hi), :lang(mr), :lang(bn), :lang(ar), :lang(ur)) :where(body *):not(svg, svg *) {
  letter-spacing: 0 !important;
}
html:is(:lang(zh), :lang(ja)) :where(body *):not(svg, svg *, .eyebrow, .petrie__eyebrow, .hero__eyebrow, .hero__scroll, .fcar__count) {
  letter-spacing: 0 !important;
}
html:is(:lang(zh), :lang(ja)) :is(.eyebrow, .petrie__eyebrow, .hero__eyebrow, .hero__scroll, .fcar__count) {
  letter-spacing: .12em;
}
/* Japonais : pas de ー ni de petit kana en début de ligne ; l'adresse ne se coupe pas dans les parenthèses */
html:lang(ja) body { line-break: strict; }
html:lang(ja) :is(.contact__info, .footer__meta) { word-break: keep-all; overflow-wrap: anywhere; }

/* Hauteurs de ligne : le devanagari, le bengali, l'arabe et surtout le nastaliq
   ont des jambages bien plus hauts et plus bas que le latin. */
html:is(:lang(zh), :lang(ja)) body { line-height: 1.8; }
html:is(:lang(hi), :lang(mr), :lang(bn)) body { line-height: 1.85; }
html:lang(ar) body { line-height: 1.9; }
html:lang(ur) body { line-height: 2.2; }
html:is(:lang(zh), :lang(ja), :lang(hi), :lang(mr), :lang(bn), :lang(ar), :lang(ru), :lang(vi))
  :is(h1, h2, h3, h4, .section__title, .fcar__name, .farines__title, .projet__cta p) { line-height: 1.35; }
html:lang(ur) :is(h1, h2, h3, h4, .section__title, .fcar__name, .farines__title, .projet__cta p) { line-height: 1.8; }
html:is(:lang(hi), :lang(mr), :lang(bn), :lang(ar), :lang(ur)) .moulin__badge-text { line-height: 1.6; }
html:lang(ur) .marquee { padding: .6rem 0 1.1rem; }

/* ---------- Droite à gauche (arabe, ourdou) ----------
   La vidéo et les photos ne sont jamais retournées ; seuls la mise en page et
   les éléments orientés (flèches, frises, tiroir, champs) passent en miroir. */
[dir="rtl"] .scroll-progress { left: auto; right: 0; background: linear-gradient(270deg, var(--wheat-deep), var(--wheat-soft)); }
[dir="rtl"] .nav__links a:not(.nav__cta)::after { left: auto; right: 0; }
[dir="rtl"] .lang__list { right: auto; left: 0; }

[dir="rtl"] .eyebrow, [dir="rtl"] .petrie__eyebrow { padding-left: 0; padding-right: 2.6rem; }
[dir="rtl"] .eyebrow::before, [dir="rtl"] .petrie__eyebrow::before { left: auto; right: 0; }
[dir="rtl"] .eyebrow--center { padding-right: 0; }

[dir="rtl"] .marquee__track { padding-right: 0; padding-left: 2.5rem; animation-name: marquee-rtl; }
@keyframes marquee-rtl { to { transform: translateX(50%); } }

[dir="rtl"] .moulin__badge { left: auto; right: -1.5rem; }
[dir="rtl"] .moulin__note { border-left: 0; border-right: 3px solid var(--wheat); border-radius: 10px 0 0 10px; }
[dir="rtl"] .moulin__features li { padding-left: 0; padding-right: 1.8rem; }
[dir="rtl"] .moulin__features li::before { left: auto; right: 0; }
[dir="rtl"] .evolution__prose { border-left: 0; padding-left: 0; border-right: 2px solid var(--cream-2); padding-right: 1.8rem; }
[dir="rtl"] .timeline__line span { background: linear-gradient(270deg, var(--wheat-deep), var(--wheat-soft)); }
[dir="rtl"] .step::before { left: auto; right: 0; }

/* Carrousel : « précédent » à droite, flèches retournées (main.js inverse le défilement) */
[dir="rtl"] .fcar__arrow svg { transform: scaleX(-1); }
[dir="rtl"] .fcar__arrow--prev { left: auto; right: -14px; }
[dir="rtl"] .fcar__arrow--next { right: auto; left: -14px; }
[dir="rtl"] .fcar__arrow--prev:hover { transform: translateY(-50%) translateX(3px); }
[dir="rtl"] .fcar__arrow--next:hover { transform: translateY(-50%) translateX(-3px); }

/* Formulaire */
[dir="rtl"] .field label { left: auto; right: 1rem; transform-origin: right top; }
[dir="rtl"] .field select { background-position: left 1rem center; }
[dir="rtl"] .field input[type="email"], [dir="rtl"] .field input[type="tel"] { direction: ltr; text-align: right; }

/* Le champ anti-spam est rejeté à gauche (left:-9999px) : en RTL ce côté défile, on le passe à droite */
[dir="rtl"] input[name="_gotcha"] { left: auto !important; right: -9999px; }

/* Numéros et adresses e-mail : gardés de gauche à droite (sinon « 02 54 82 » s'inverse) */
[dir="rtl"] a[href^="tel:"], [dir="rtl"] a[href^="mailto:"] { direction: ltr; unicode-bidi: isolate; }
[dir="rtl"] .footer__meta p:last-child { direction: ltr; text-align: right; }
[dir="rtl"] .stat__num { direction: ltr; unicode-bidi: isolate; }  /* « 6 M€ », pas « €M 6 » */
/* Sacs de farine : l'emballage est dessiné en français, il se lit de gauche à droite (« 41160 Saint-Jean… ») */
[dir="rtl"] .fcar svg[data-i18n="skip"] { direction: ltr; unicode-bidi: isolate; }

@media (max-width: 900px) {
  [dir="rtl"] .nav__links { inset: 0 auto 0 0; transform: translateX(-100%); }
  [dir="rtl"] .nav__links.is-open { transform: none; }
  [dir="rtl"] .timeline__line { left: auto; right: 7px; }
  [dir="rtl"] .tl-item { padding: 1.4rem 2.4rem 1.4rem 0; text-align: right; }
  [dir="rtl"] .tl-item__dot { left: auto; right: 7px; transform: translateX(50%); }
  [dir="rtl"] .tl-item.is-active .tl-item__dot { transform: translateX(50%) scale(1.25); }
}
