/**
 * KOAEE RESPONSIVE FIX
 * Corrections pour les problèmes d'affichage sur desktop scalé (150% Windows)
 * Date: 2026-02-24
 */

/* ============================================================================
   FIX 1: CHATBOT EN WIDGET SUR DESKTOP SCALÉ
   Viewport ~1280×800 (1920×1200 avec scaling 150%)
   ============================================================================ */

/* Override la media query tablette pour desktop scalé */
@media (min-width: 1024px) and (max-width: 1366px) {
  /* Forcer le chatbot en mode widget flottant, pas plein écran */
  #ubnbee_chatbox {
    width: 420px !important;
    height: 600px !important;
    position: fixed !important;
    bottom: 20px !important;
    right: 20px !important;
    top: auto !important;
    left: auto !important;
    transform: none !important;
    border-radius: 12px !important;
    box-shadow: 0 8px 32px rgba(255, 107, 53, 0.2) !important;
    resize: both !important;
    overflow: auto !important;
  }

  #ubnbee_chatbox.visible {
    display: flex !important;
  }

  /* Réinitialiser les styles du header */
  .ubnbee_chat-header {
    cursor: move !important;
    padding: 10px 15px !important;
  }

  /* Réinitialiser les tailles de police */
  .ubnbee_message {
    font-size: 14px !important;
    max-width: 80% !important;
  }

  #ubnbee_welcome-message {
    font-size: 20px !important;
  }

  .ubnbee_chat-header span {
    font-size: 18px !important;
    font-weight: normal !important;
  }

  /* Input normal size */
  .ubnbee_chat-input {
    height: auto !important;
    padding: 10px 15px !important;
  }

  .ubnbee_chat-input input {
    height: 40px !important;
    font-size: 14px !important;
  }

  .ubnbee_chat-input button {
    height: 40px !important;
    font-size: 13px !important;
    min-width: 80px !important;
  }

  /* Micro button normal size */
  #ubnbee_micro-btn,
  .ubnbee_micro-btn {
    width: 40px !important;
    height: 40px !important;
    min-width: 40px !important;
    max-width: 40px !important;
  }

  #ubnbee_micro-btn svg,
  .ubnbee_micro-btn svg {
    width: 20px !important;
    height: 20px !important;
  }
}

/* ============================================================================
   FIX 2: SCROLL DE LA PAGE NON BLOQUÉ
   ============================================================================ */

/* Override le blocage du scroll pour desktop scalé */
@media (min-width: 1024px) {
  html, body {
    overflow: auto !important;
    overflow-x: hidden !important;
    position: static !important;
    width: auto !important;
    max-width: 100% !important;
    height: auto !important;
  }
}

/* Assurer que le scroll fonctionne même avec le chat ouvert sur desktop */
@media (min-width: 768px) {
  html.chatbot-open,
  body.chatbot-open {
    overflow: auto !important;
    position: static !important;
  }
}

/* ============================================================================
   FIX 3: IMAGES CORRECTEMENT DIMENSIONNÉES
   ============================================================================ */

/* Avatar Koaee - taille cohérente sur tous les écrans */
.ubnbee_welcome-abeille {
  width: 140px !important;
  height: 140px !important;
  max-width: 140px !important;
  max-height: 140px !important;
  object-fit: contain !important;
  border: 2px solid var(--ubnbee_primary) !important;
  border-radius: 0 !important;
  box-sizing: border-box !important;
  overflow: hidden !important;
}

/* Override pour desktop scalé spécifiquement */
@media (min-width: 1024px) and (max-width: 1366px) {
  .ubnbee_welcome-abeille {
    width: 140px !important;
    height: 140px !important;
    border-width: 2px !important;
  }

  .ubnbee_chat-header img.ubnbee_chat-abeille {
    width: 40px !important;
    height: 40px !important;
  }

  #ubnbee_slider-image {
    width: 50px !important;
    height: 50px !important;
  }

  .ubnbee_gpt-icon {
    width: 24px !important;
    height: 24px !important;
    left: -12px !important;
    top: -25px !important;
  }
}

/* ============================================================================
   FIX 4: DÉTECTION DEVICE TYPE AMÉLIORÉE
   Détecte mieux desktop avec écran tactile vs tablette réelle
   ============================================================================ */

/* Si l'écran est large ET haute résolution, traiter comme desktop */
@media (min-width: 1024px) and (min-device-width: 1920px) {
  /* Forcer le mode desktop même si touch est détecté */
  #ubnbee_chatbox {
    width: 400px !important;
    height: 550px !important;
  }

  html, body {
    overflow: auto !important;
  }
}

/* ============================================================================
   FIX 5: QUICK ACTIONS - TAILLE NORMALE SUR DESKTOP SCALÉ
   ============================================================================ */

@media (min-width: 1024px) and (max-width: 1366px) {
  #ubnbee_quick-actions {
    padding: 10px 15px !important;
  }

  .ubnbee_quick-action {
    font-size: 14px !important;
    padding: 8px 15px !important;
    min-height: auto !important;
  }
}

/* ============================================================================
   FIX 6: VIGNETTES - TAILLE CORRECTE
   ============================================================================ */

@media (min-width: 1024px) and (max-width: 1366px) {
  .ubnbee_link-thumbnail {
    max-width: 280px !important;
    width: auto !important;
    height: auto !important;
  }

  .ubnbee_thumbnail-title {
    font-size: 11px !important;
    max-width: 280px !important;
  }
}

/* ============================================================================
   SÉCURITÉ: S'assurer que mobile (<768px) reste intact
   ============================================================================ */

@media (max-width: 767px) {
  /* Ne rien changer pour mobile réel */
  #ubnbee_chatbox {
    width: 100vw !important;
    height: 95vh !important;
  }

  html, body {
    overflow-x: hidden !important;
  }
}

/* ============================================================================
   CUSTOM SCROLLBAR STYLING - MODERN & ELEGANT
   ============================================================================ */

/* Scrollbar styling pour webkit browsers (Chrome, Safari, Edge) */
::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

::-webkit-scrollbar-track {
  background: #f4f4f6;
  border-radius: 10px;
}

::-webkit-scrollbar-thumb {
  background: var(--ubnbee_primary, #888888);
  border-radius: 10px;
  border: 2px solid #f4f4f6;
}

::-webkit-scrollbar-thumb:hover {
  background: var(--ubnbee_primary, #888888);
}

/* Scrollbar pour le chatbox spécifiquement */
.ubnbee_chat-body::-webkit-scrollbar {
  width: 8px;
}

.ubnbee_chat-body::-webkit-scrollbar-track {
  background: rgba(255, 107, 53, 0.05);
  border-radius: 10px;
}

.ubnbee_chat-body::-webkit-scrollbar-thumb {
  background: var(--ubnbee_primary, #888888);
  border-radius: 10px;
}

.ubnbee_chat-body::-webkit-scrollbar-thumb:hover {
  background: rgba(255, 107, 53, 0.5);
}

/* Firefox scrollbar styling */
* {
  scrollbar-width: thin;
  scrollbar-color: var(--ubnbee_primary, #888888) #f4f4f6;
}

.ubnbee_chat-body {
  scrollbar-width: thin;
  scrollbar-color: var(--ubnbee_primary, #888888) #f4f4f6;
}

/* ============================================================================
   TRANSITIONS SMOOTH
   ============================================================================ */

#ubnbee_chatbox {
  transition: width 0.3s ease, height 0.3s ease, transform 0.3s ease;
}

.ubnbee_message,
.ubnbee_welcome-abeille,
.ubnbee_quick-action {
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
/* ── HÉROS DES 12 PAGES SECTEUR — porté du canari agriculture (2026-08-05, GO Erwan) ──
   L'image héros est un carré 1024² posé en `contain` dans une colonne que le TEXTE étire :
   elle se retrouve en letterbox, d'où la « bande » qu'Erwan voit, et, passé ~1900 px, elle
   remonte SOUS le menu fixe. On réserve la hauteur du menu par `padding-top` +
   `background-origin:content-box` — et NON par un `background-position` décalé : la zone de
   fond se recalcule, donc `contain` s'y adapte seul. Un décalage fixe, lui, casse au-delà de
   ~2000 px (la colonne devient plus large que haute, l'espace libre tombe à 0) : il rognerait
   le bas en recréant une bande en haut. Cette forme-ci est auto-limitante — ne pas la « simplifier ».
   Deux paliers car le menu passe sur 2 lignes (111 px) tant qu'il ne tient pas sur une (70 px).
   BASCULE À 1366, ET C'EST UNE MESURE, PAS UN ARRONDI : le point de wrap dépend de la LANGUE,
   donc de la longueur du menu. Mesuré le 2026-08-05 sur les 15 langues, page b2b, 10 largeurs :
       fr · en · it · hi · ja · ko · ar · he : jamais 111 au-delà de 1200
       nl · pl : 111 jusqu'à 1200      pt : jusqu'à 1280      de · es · ru · tr : jusqu'à 1300
   Toutes à 70 px dès 1366. Un palier calé sur le FRANÇAIS (1200) faisait passer l'image SOUS le
   menu de −41 px en de/es/nl/pl/pt/ru/tr — exactement ce qu'Erwan a interdit. On SUR-RÉSERVE donc
   jusqu'à 1366 : le prix est une bande de 41 px entre 1200 et 1365 dans les langues à menu court,
   ce qui est le mauvais choix le moins grave. Ne pas « optimiser » ce seuil sans re-mesurer les
   15 langues : le menu change de longueur à chaque retouche de libellé.
   PORTÉE : la classe `koaee-page-secteur` est posée sur le <body> des 12 pages secteur
   UNIQUEMENT. Sans elle, cette feuille — chargée par 18 pages — aurait aussi déplacé le héros
   de redaction/formation/index2/home-trioffre, qui ne sont pas des pages secteur.
   Retour arrière : /var/lib/koaee/backups/recette_finale_c6_hero_20260805_164959/ */
@media (min-width: 992px) and (max-width: 1365.98px) {
  body.koaee-page-secteur #overview .g-bg-img-hero {
    --koaee-hero-reserve: 111px;
    padding-top: var(--koaee-hero-reserve) !important;
    background-origin: content-box !important;
    background-position: center top !important;
  }
}
@media (min-width: 1366px) {
  body.koaee-page-secteur #overview .g-bg-img-hero {
    --koaee-hero-reserve: 70px;
    padding-top: var(--koaee-hero-reserve) !important;
    background-origin: content-box !important;
    background-position: center top !important;
  }
}
/* ── BANDE NOIRE SOUS LE HÉROS — canari `koaee-hero-fill`, agriculture seule (2026-08-05) ──
   CE QUE LA MESURE ÉTABLIT, et qui n'est pas une opinion : la colonne image est étirée par le
   TEXTE de la colonne voisine (colH == txtH au pixel, mesuré aux 5 largeurs), alors que l'image
   est un CARRÉ en `contain` — elle ne peut donc jamais être plus haute que la colonne n'est
   large. Tout l'écart est du vide, et ce vide est noir (`g-bg-black-opacity-0_9` de la section).
   Agriculture, FR : 1024→660 px · 1200→477 · 1280→383 · 1440→276 · 1920→0.
   La réservation du menu (ci-dessus) n'a pas créé ce vide, elle l'a DÉPLACÉ en bas d'un bloc :
   avant, il était réparti moitié haut / moitié bas ; l'exigence « jamais sous le menu » impose
   de tout pousser vers le bas. Les deux défauts ont la même cause unique — le carré dans une
   colonne haute — et un seul des deux peut disparaître par positionnement.
   POURQUOI CETTE FORME plutôt que les deux autres candidates :
     · `background-size: cover` supprimerait la bande en une ligne, mais rogne 33 % de la largeur
       à 1440 px et 60 % à 1024 px — le sujet du héros serait coupé. Écarté.
     · raccourcir le texte réduit la colonne d'environ 200 px (7 puces qui passent de 2 lignes à
       1) : utile, mais très loin des 660 px de 1024 px. Ne suffit pas seul.
   On remplit donc le vide par l'image ELLE-MÊME, floutée et recadrée en `cover` (::before), et on
   repose l'image nette par-dessus (::after). Aucun rognage du sujet, bande nulle à toute largeur.
   `background-image: inherit` : les pseudo-éléments reprennent l'URL posée en style inline par
   CHAQUE page — aucune URL de secteur n'est écrite ici, le portage aux 11 autres ne sera qu'une
   classe sur le <body> (R36 : pas de fait dupliqué).
   `--koaee-hero-reserve` : la hauteur du menu est déclarée UNE fois par palier ci-dessus et
   relue ici par ::after. Ne pas ré-écrire 111/70 en dur — ils divergeraient au prochain recal.
   Sous 992 px les colonnes s'empilent et le héros n'a plus de bande : le canari s'arrête là.
   Retour arrière : /var/lib/koaee/backups/hero_bande_basse_20260805_171629/ */
@media (min-width: 992px) {
  body.koaee-hero-fill #overview .g-bg-img-hero {
    position: relative;
    overflow: hidden;
  }
  /* `top` = LA MÊME RÉSERVE que l'image nette, et c'est un correctif, pas une symétrie gratuite.
     Posé à `top:0` (1re version, 05/08 17:19), ce remplissage remontait SOUS le menu — défaut
     signalé par Erwan dans la minute. La cause n'est pas évidente à la lecture : `header.u-header`
     a `background-color: rgba(0,0,0,0)`, il est ENTIÈREMENT TRANSPARENT (mesuré aux 3 largeurs).
     La barre sombre qu'on croit être le menu est en fait le fond noir de la section qu'on voit à
     travers lui. Tout ce qu'on peint sous le menu se voit donc — la réserve `padding-top` protège
     le fond de l'ÉLÉMENT, elle ne protège pas un pseudo-élément qu'on positionne soi-même.
     Règle à retenir pour le portage : sur ces pages, RIEN ne doit être peint au-dessus de
     `--koaee-hero-reserve`.
     DEUX FAUSSES PISTES ÉCARTÉES PAR LA MESURE, à ne pas retenter :
       · `clip-path: inset(reserve 0 0 0)` — NE MARCHE PAS avec un `filter`. La valeur calculée est
         bien `inset(70px 0px 0px)`, et pourtant le pixel derrière le menu restait à luminance 45
         contre 7 pour une page témoin : Chromium clippe la SOURCE, puis le flou la réétale
         par-dessus la ligne de coupe. Preuve différentielle (`::before` neutralisé en direct) :
         45 avec, 7 sans. Un clip ne contient pas un flou.
       · déplacer simplement `top` à la ligne de réserve — insuffisant deux fois : `scale(1.2)`
         agrandit AUTOUR DU CENTRE (le haut remonte de ~10 % de la hauteur), et un flou de 36 px
         déborde de sa boîte d'environ 3σ ≈ 110 px vers le haut.
     CE QUI MARCHE, et pourquoi c'est sans risque : le remplissage n'est utile qu'AU-DESSOUS de
     l'image nette, laquelle fait au minimum ~500 px de haut sur tout le domaine desktop. On peut
     donc démarrer la boîte 120 px SOUS la ligne de réserve : le halo du flou remonte alors au plus
     jusqu'à la réserve — jamais sous le menu — et toute cette zone est de toute façon masquée par
     l'image nette. `transform-origin: top` empêche l'agrandissement de reprendre ces 120 px. */
  body.koaee-hero-fill #overview .g-bg-img-hero::before {
    content: "";
    position: absolute;
    top: calc(var(--koaee-hero-reserve, 0px) + 120px);
    right: 0; bottom: 0; left: 0;
    background-image: inherit;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    transform: scale(1.2);
    transform-origin: top center;
    filter: blur(36px) brightness(0.8) saturate(0.85);
    z-index: 0;
  }
  /* La boîte de l'image nette s'arrête EXACTEMENT au bas de l'image, pas au bas de la colonne :
     `aspect-ratio:1` (l'image est un carré 1024²) donne hauteur = largeur, et `max-height` la
     ramène à la place disponible quand la colonne est plus large que haute (cas 1920 px, où
     `contain` est limité par la hauteur). C'est ce qui permet au masque de dégrader pile sur le
     bord bas de l'image — sans cette boîte ajustée, le fondu tomberait au bas de la COLONNE,
     c'est-à-dire dans le flou, et ne masquerait rien.
     Le fondu sur 90 px supprime la couture franche relevée à l'inspection R31 du 2026-08-05 :
     la mesure de couleur ne la voyait pas (elle disait « bande remplie, luminance 95 »), l'œil
     oui — les deux contrôles sont nécessaires, aucun ne remplace l'autre. */
  body.koaee-hero-fill #overview .g-bg-img-hero::after {
    content: "";
    position: absolute;
    top: var(--koaee-hero-reserve, 0px);
    right: 0; left: 0;
    aspect-ratio: 1 / 1;
    max-height: calc(100% - var(--koaee-hero-reserve, 0px));
    background-image: inherit;
    background-size: contain;
    background-position: center top;
    background-repeat: no-repeat;
    -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 90px), transparent 100%);
    mask-image: linear-gradient(to bottom, #000 calc(100% - 90px), transparent 100%);
    z-index: 1;
  }
}

/* ── BULLE DU CHATBOT vs LIENS LÉGAUX DU FOOTER (2026-08-11, GO Erwan) ────────────────────
   Mesuré en mobile, tout en bas de page : la bulle `#ubnbee_slider-container` est en
   `position: fixed` (90vw, 50 px de haut, ~49 px du bas) et recouvrait CINQ liens cliquables
   du footer — Terms & Conditions, Terms of Sale, Subprocessors, Legal notice, Privacy.
   Ce n'est pas une gêne passagère : en bas de page il n'y a plus rien à faire défiler, ces
   liens étaient donc DÉFINITIVEMENT inatteignables au doigt. Enjeu de conformité, pas de style.
   On réserve la hauteur de la bulle DANS le footer : son fond sombre s'étend, aucune bande
   parasite n'apparaît, et la bulle flotte désormais au-dessus du vide.
   49 (position) + 50 (hauteur) + 21 (marge de confort) = 120 px, plus l'encoche des téléphones.
   Ne pas remplacer par un padding sur `body` : le fond du body y est différent, la bande se voit.

   Sélecteur `footer[class]` et non `footer` : le thème pose `.g-py-20{padding-bottom:20px}` AVEC
   `!important`. Entre deux `!important`, c'est la spécificité qui tranche — une classe (0,1,0) bat
   un nom d'élément (0,0,1), donc `footer{…!important}` restait ignoré (mesuré : padding à 20px).
   Le sélecteur d'attribut compte comme une classe et passe devant, sans dépendre d'un nom de
   classe du thème qui pourrait changer.

   Deux paliers, et non un seul : la bulle existe AUSSI en desktop (300 px, en bas à droite), où
   elle masquait encore « Privacy » — mesuré à 1440 px. Elle y est plus basse, la réserve y est
   donc plus courte.
   Valeurs volontairement GÉNÉREUSES sous 992 px : un téléphone réel ajoute ce qu'aucun simulateur
   ne montre — barre de navigation système, encoche, barre d'URL rétractable. Erwan a constaté la
   coupure sur son appareil alors que la mesure à 390 px était verte. En cas de doute, ajouter des
   pixels ne coûte qu'un peu de fond sombre en bas de page ; en retirer coupe des liens légaux. */
@media (max-width: 991.98px) {
  footer[class] {
    padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 190px) !important;
  }
}
@media (min-width: 992px) {
  footer[class] {
    padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 110px) !important;
  }
}
