/*
 * EARONTECH — REPÈRES DE MAINTENANCE
 * Écrans : Socle des fournisseurs : catalogue, carte géographique, fiche et imports IA.
 * Chargement : private/view.php.
 * Les couleurs et tailles paramétrables utilisent les variables --app-* / --product-*.
 * Les blocs @media adaptent la même interface à la largeur de l’écran.
 * Conserver l’ordre des règles : les ajustements spécialisés suivent le socle commun.
 */

/*
 * EARON TECHNO — FOURNISSEURS
 *
 * Fichier modifiable directement : public/css/fournisseurs.css
 * Une propriété par ligne ; noms des classes conservés pour le JavaScript.
 * Les règles situées plus bas précisent les règles précédentes.
 * Les sections @media adaptent les composants aux petits écrans.
 *
 * SOMMAIRE
 * 01 — Fiche fournisseur, contacts et géolocalisation
 * 02 — Cartes compactes, liste et pagination
 * 03 — Carte mondiale et répartition par pays
 * 04 — Recherche IA et résultats
 * 05 — Génération de prompt et import externe
 * 06 — Recherche de nouveaux fournisseurs
 */
/* ==========================================================================
   01 — Fiche fournisseur, contacts et géolocalisation
   ========================================================================== */
/* Présentation des fournisseurs — dimensions et espacements, couleurs et contours. */
.supplier-types  {
  margin: 0px;
  min-width: 0px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 15px;
}

/* Présentation des fournisseurs — lisibilité du texte. */
.supplier-types legend  {
  font-size: calc(14px * var(--app-font-scale, 1));
}

/* Présentation des fournisseurs — dimensions et espacements. */
.supplier-types .field  {
  margin: 5px 0px;
}

/* Présentation des fournisseurs — dimensions et espacements. */
.supplier-editor .table-wrap  {
  margin-top: 18px;
}

/* Présentation des fournisseurs — dimensions et espacements. */
.supplier-editor fieldset  {
  min-width: 0px;
}

/* Présentation des fournisseurs — disposition, lisibilité du texte. */
.supplier-editor .readonly-value  {
  overflow-wrap: anywhere;
}

/* Présentation des fournisseurs — disposition, dimensions et espacements. */
.supplier-products-columns  {
  display: grid;
  grid-template-columns: minmax(0px, 1fr) minmax(0px, 1fr);
  gap: 24px;
}

/* Présentation des fournisseurs — dimensions et espacements. */
.supplier-products-columns > section  {
  min-width: 0px;
}

/* Présentation des fournisseurs — dimensions et espacements, lisibilité du texte. */
.supplier-products-columns h2  {
  font-size: calc(1.05rem * var(--app-font-scale, 1));
  margin: 0px 0px 16px;
}

/* Présentation des fournisseurs — dimensions et espacements, couleurs et contours. */
.supplier-products-pending  {
  border-left: 1px solid var(--line);
  padding-left: 24px;
}

/* Présentation des fournisseurs — disposition, dimensions et espacements, lisibilité du texte. */
.supplier-products-pending .technology-security-list a  {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  overflow-wrap: anywhere;
}

/* Présentation des fournisseurs — couleurs et contours. */
.supplier-products-pending small  {
  color: var(--muted);
}

/* Présentation des fournisseurs — disposition. */
.supplier-products-single  {
  grid-template-columns: minmax(0px, 1fr);
}

/* Adaptation à la largeur de l’écran ou aux préférences d’animation. */
@media (max-width: 850px)  {
  /* Présentation des fournisseurs — disposition. */
  .supplier-products-columns  {
    grid-template-columns: minmax(0px, 1fr);
  }

  /* Présentation des fournisseurs — dimensions et espacements, couleurs et contours. */
  .supplier-products-pending  {
    border-left: 0px;
    border-top: 1px solid var(--line);
    padding: 20px 0px 0px;
  }

}

/* Présentation des fournisseurs — disposition, dimensions et espacements. */
.supplier-map-controls  {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin: 16px 0px;
}

/* Présentation des fournisseurs — dimensions et espacements. */
.supplier-map-controls button  {
  padding: 8px 12px;
}

/* Présentation des fournisseurs — disposition, dimensions et espacements, couleurs et contours. */
.supplier-editor [data-map-svg]  {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1.82 / 1;
  background: #eef7fc;
  border: 1px solid var(--line);
  border-radius: 10px;
}

/* Présentation des fournisseurs — dimensions et espacements, couleurs et contours, lisibilité du texte. */
/* Présentation des fournisseurs — dimensions et espacements, couleurs et contours, lisibilité du texte. */
.supplier-editor [data-map-status]  {
  font-size: calc(13px * var(--app-font-scale, 1));
  color: var(--muted);
  margin: 12px 0px;
}

/* Élément commun de présentation — disposition, dimensions et espacements, couleurs et contours. */
[data-geo-map] iframe  {
  display: block;
  width: 100%;
  height: 470px;
  border: 1px solid var(--line);
  border-radius: 10px;
  margin: 16px 0px;
}

/* Élément commun de présentation — dimensions et espacements, couleurs et contours. */
.geo-result  {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  margin: 12px 0px;
}

/* Élément commun de présentation — dimensions et espacements. */
.geo-result p  {
  margin: 0px 0px 12px;
}

/* Bouton ou lien présenté en bouton — dimensions et espacements. */
.geo-result button  {
  margin: 0px 8px 6px 0px;
}

/* Élément commun de présentation — dimensions et espacements, lisibilité du texte. */
[data-geo-status]  {
  margin: 14px 0px;
  line-height: 1.5;
}

/* ==========================================================================
   02 — Cartes compactes, liste et pagination
   ========================================================================== */
/* Présentation des fournisseurs — disposition, dimensions et espacements. */
.supplier-gallery  {
  display: grid;
  grid-template-columns: repeat(3, minmax(0px, 1fr));
  gap: 12px;
}

/* Présentation des fournisseurs — disposition, dimensions et espacements, couleurs et contours. */
.supplier-card  {
  background: white;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 12px;
  display: flex;
  flex-direction: column;
  min-width: 0px;
}

/* Présentation des fournisseurs — couleurs et contours. */
.supplier-card:hover  {
  border-color: #a6cae5;
}

/* Présentation des fournisseurs — disposition, dimensions et espacements, lisibilité du texte. */
.supplier-card h2  {
  font-size: calc(15px * var(--app-font-scale, 1));
  line-height: 1.3;
  overflow-wrap: anywhere;
  margin: 0px 0px 9px;
}

/* Présentation des fournisseurs — couleurs et contours, lisibilité du texte. */
.supplier-card h2 a  {
  text-decoration: none;
  color:var(--app-primary-color, #1c75bc);
}

/* Présentation des fournisseurs — couleurs et contours, lisibilité du texte. */
.supplier-card h2 a:hover  {
  color:var(--app-primary-color, #1c75bc);
  text-decoration: underline;
}

/* Présentation des fournisseurs — disposition, dimensions et espacements. */
.supplier-card dl  {
  display: grid;
  grid-template-columns: minmax(0px, 1.1fr) minmax(0px, 1fr);
  grid-template-rows: auto 1fr;
  gap: 7px 12px;
  margin: 0px 0px 10px;
  flex: 1 1 0%;
}

/* Présentation des fournisseurs — dimensions et espacements. */
.supplier-card dl > div  {
  min-width: 0px;
}

/* Présentation des fournisseurs — disposition. */
.supplier-card dl > div:nth-child(1)  {
  grid-area: 1 / 1;
}

/* Présentation des fournisseurs — disposition. */
.supplier-card dl > div:nth-child(1) dt, .supplier-card dl > div:nth-child(1) dd  {
  display: inline;
}

/* Présentation des fournisseurs — comportement visuel. */
.supplier-card dl > div:nth-child(1) dt::after  {
  content: ": ";
}

/* Présentation des fournisseurs — disposition, dimensions et espacements, couleurs et contours. */
.supplier-card dl > div:nth-child(2)  {
  grid-area: 1 / 2 / 3;
  border-left: 1px solid var(--line);
  padding-left: 10px;
}

/* Présentation des fournisseurs — disposition. */
.supplier-card dl > div:nth-child(3)  {
  grid-area: 2 / 1;
}

/* Présentation des fournisseurs — dimensions et espacements, couleurs et contours, lisibilité du texte. */
.supplier-card dt  {
  font-size: calc(9px * var(--app-font-scale, 1));
  text-transform: uppercase;
  letter-spacing: 0.3px;
  color:var(--app-primary-color, #1c75bc);
  margin-bottom: 3px;
}

/* Présentation des fournisseurs — disposition, dimensions et espacements, lisibilité du texte. */
.supplier-card dd  {
  margin: 0px;
  font-size: calc(12px * var(--app-font-scale, 1));
  line-height: 1.35;
  overflow-wrap: anywhere;
}

/* Présentation des fournisseurs — disposition. */
.supplier-activity  {
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Présentation des fournisseurs — disposition, dimensions et espacements. */
.supplier-type-tags  {
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  gap: 3px;
}

/* Présentation des fournisseurs — dimensions et espacements, lisibilité du texte. */
.supplier-type-tags .tag  {
  white-space: normal;
  font-size: calc(10px * var(--app-font-scale, 1));
  line-height: 1.3;
  padding: 2px 5px;
}

/* Présentation des fournisseurs — disposition, dimensions et espacements, couleurs et contours. */
.supplier-card-actions  {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: auto;
  padding-top: 8px;
  border-top: 1px solid var(--line);
}

/* Présentation des fournisseurs — dimensions et espacements, lisibilité du texte. */
.supplier-card-actions .button  {
  font-size: calc(11px * var(--app-font-scale, 1));
  line-height: 1.3;
  padding: 6px 9px;
}

/* Présentation des fournisseurs — lisibilité du texte. */
.supplier-card-actions .muted  {
  font-size: calc(10px * var(--app-font-scale, 1));
}

/* Présentation des fournisseurs — couleurs et contours. */
.supplier-web  {
  background: var(--app-primary-soft, #edf5fb);
}

/* Présentation des fournisseurs — dimensions et espacements, couleurs et contours, lisibilité du texte. */
.supplier-result-count  {
  color: var(--muted);
  font-size: calc(13px * var(--app-font-scale, 1));
  margin-bottom: 12px;
}

/* Présentation des fournisseurs — disposition, dimensions et espacements. */
.supplier-pagination  {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-top: 26px;
}

/* Présentation des fournisseurs — couleurs et contours. */
.supplier-pagination [aria-current="page"]  {
  background: var(--app-primary-color, #1c75bc);
  color:var(--app-button-text, #fff);
  border-color: var(--app-primary-color, #1c75bc);
}

/* Adaptation à la largeur de l’écran ou aux préférences d’animation. */
@media (max-width: 1150px)  {
  /* Présentation des fournisseurs — disposition. */
  .supplier-gallery  {
    grid-template-columns: repeat(2, minmax(0px, 1fr));
  }

}

/* Adaptation à la largeur de l’écran ou aux préférences d’animation. */
@media (max-width: 600px)  {
  /* Présentation des fournisseurs — disposition. */
  .supplier-gallery  {
    grid-template-columns: 1fr;
  }

  /* Présentation des fournisseurs — dimensions et espacements, lisibilité du texte. */
  .supplier-pagination .button  {
    font-size: calc(13px * var(--app-font-scale, 1));
    padding: 8px 10px;
  }

}

/* Présentation des fournisseurs — disposition, dimensions et espacements. */
.supplier-card .supplier-country-flag  {
  display: inline-block;
  height: 1em;
  width: auto;
  aspect-ratio: 4 / 3;
  object-fit: contain;
  vertical-align: -0.12em;
  margin-right: 4px;
}

/* Présentation des fournisseurs — disposition. */
.supplier-table-wrap  {
  overflow-x: auto;
}

/* Présentation des fournisseurs — dimensions et espacements. */
.supplier-table  {
  min-width: 760px;
  table-layout: fixed;
}

/* Présentation des fournisseurs — disposition, dimensions et espacements, lisibilité du texte. */
.supplier-table th, .supplier-table td  {
  padding: 12px 14px;
  vertical-align: top;
  overflow-wrap: anywhere;
}

/* Présentation des fournisseurs — dimensions et espacements. */
.supplier-table th:nth-child(1)  {
  width: 20%;
}

/* Présentation des fournisseurs — dimensions et espacements. */
.supplier-table th:nth-child(2)  {
  width: 17%;
}

/* Présentation des fournisseurs — dimensions et espacements. */
.supplier-table th:nth-child(3)  {
  width: 27%;
}

/* Présentation des fournisseurs — dimensions et espacements. */
.supplier-table th:nth-child(4)  {
  width: 20%;
}

/* Présentation des fournisseurs — dimensions et espacements. */
.supplier-table th:nth-child(5)  {
  width: 16%;
}

/* Présentation des fournisseurs — lisibilité du texte. */
.supplier-table td  {
  font-size: calc(12px * var(--app-font-scale, 1));
  line-height: 1.5;
}

/* Présentation des fournisseurs — couleurs et contours, lisibilité du texte. */
.supplier-name  {
  font-weight: 600;
  text-decoration: none;
  color: var(--navy);
}

/* Présentation des fournisseurs — couleurs et contours, lisibilité du texte. */
.supplier-name:hover  {
  text-decoration: underline;
  color: var(--app-primary-color, #1c75bc);
}

/* Présentation des fournisseurs — dimensions et espacements. */
.supplier-table .supplier-country-flag  {
  height: 1em;
  width: auto;
  vertical-align: -0.12em;
  margin-right: 4px;
}

/* Présentation des fournisseurs — disposition, dimensions et espacements. */
/* Présentation des fournisseurs — dimensions et espacements, lisibilité du texte. */
/* Présentation des fournisseurs — lisibilité du texte. */
/* Présentation des fournisseurs — disposition. */
.supplier-view-switch  {
  flex-wrap: wrap;
}

/* Présentation des fournisseurs — disposition, dimensions et espacements, lisibilité du texte. */
.supplier-product-summary  {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
  width: 100%;
  font-size: calc(11px * var(--app-font-scale, 1));
}

/* Présentation des fournisseurs — couleurs et contours, lisibilité du texte. */
.supplier-no-products  {
  color: #bd6500;
  font-weight: 600;
}

/* Présentation des fournisseurs — couleurs et contours, lisibilité du texte. */
.supplier-ai-pending  {
  color: #f9b233;
  font-weight: 700;
}

/* Présentation des fournisseurs — disposition, dimensions et espacements. */
.supplier-product-summary .supplier-ai-pending  {
  display: block;
  width: 100%;
}

/* ==========================================================================
   03 — Carte mondiale et répartition par pays
   ========================================================================== */
/* Présentation des fournisseurs — disposition, dimensions et espacements. */
.supplier-view-switch  {
  display: flex;
  gap: 8px;
  margin: 0px 0px 20px;
}

/* Présentation des fournisseurs — couleurs et contours. */
.supplier-view-switch [aria-current="page"]  {
  background: var(--app-primary-color, #1c75bc);
  color:var(--app-button-text, #fff);
  border-color: var(--app-primary-color, #1c75bc);
}

/* Élément commun de présentation — disposition, dimensions et espacements. */
.world-summary  {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 20px;
}

/* Élément commun de présentation — dimensions et espacements, couleurs et contours, lisibilité du texte. */
.world-summary > span, .world-summary > a  {
  padding: 12px 16px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: white;
  font-size: calc(13px * var(--app-font-scale, 1));
}

/* Élément commun de présentation — dimensions et espacements, lisibilité du texte. */
.world-summary strong  {
  font-size: calc(20px * var(--app-font-scale, 1));
  margin-right: 6px;
}

/* Élément commun de présentation — disposition, dimensions et espacements. */
.world-layout  {
  display: grid;
  grid-template-columns: minmax(0px, 1fr) 250px;
  gap: 18px;
}

/* Élément commun de présentation — disposition, dimensions et espacements, couleurs et contours. */
.world-panel, .world-country-panel  {
  min-width: 0px;
  background: white;
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
}

/* Élément commun de présentation — disposition, dimensions et espacements. */
.world-controls  {
  display: flex;
  gap: 8px;
  padding: 14px 14px 0px;
}

/* Élément commun de présentation — dimensions et espacements, couleurs et contours, lisibilité du texte. */
.world-status, .world-help, .world-credit  {
  padding: 10px 14px;
  color: var(--muted);
  font-size: calc(12px * var(--app-font-scale, 1));
  line-height: 1.5;
}

/* Présentation des fournisseurs — disposition, dimensions et espacements, couleurs et contours. */
#supplier-world  {
  width: 100%;
  display: block;
  background: #eaf4fb;
  touch-action: none;
  cursor: grab;
  overflow: hidden;
}

/* Présentation des fournisseurs — comportement visuel. */
#supplier-world:active  {
  cursor: grabbing;
}

/* Élément commun de présentation — couleurs et contours. */
.world-land path  {
  fill: #d0dde8;
  stroke: white;
  stroke-width: 0.6;
  vector-effect: non-scaling-stroke;
}

/* Élément commun de présentation — couleurs et contours. */
.world-leaders line  {
  stroke: var(--app-primary-color, #1c75bc);
  stroke-width: 1;
  opacity: 0.6;
}

/* Élément commun de présentation — comportement visuel. */
.world-pins a  {
  cursor: pointer;
  outline: none;
}

/* Élément commun de présentation — couleurs et contours. */
.world-pins circle  {
  fill: var(--app-primary-color, #1c75bc);
  stroke: white;
  stroke-width: 2;
}

/* Élément commun de présentation — couleurs et contours. */
.world-pins a:hover circle, .world-pins a:focus circle  {
  fill: #142035;
  stroke: #f4b942;
  stroke-width: 3;
}

/* Élément commun de présentation — couleurs et contours, lisibilité du texte. */
.world-pins text  {
  fill: white;
  font-size: calc(11px * var(--app-font-scale, 1));
  font-weight: 700;
  pointer-events: none;
}

/* Élément commun de présentation — dimensions et espacements. */
.world-country-panel  {
  padding: 16px;
}

/* Élément commun de présentation — dimensions et espacements, lisibilité du texte. */
.world-country-panel h2  {
  font-size: calc(17px * var(--app-font-scale, 1));
  margin-bottom: 12px;
}

/* Élément commun de présentation — disposition, dimensions et espacements. */
.world-country-list  {
  list-style: none;
  padding: 0px;
  margin: 0px;
  max-height: 550px;
  overflow: auto;
}

/* Élément commun de présentation — disposition, dimensions et espacements, couleurs et contours, lisibilité du texte. */
.world-country-list a  {
  display: flex;
  gap: 10px;
  align-items: center;
  justify-content: space-between;
  padding: 10px 0px;
  text-decoration: none;
  border-bottom: 1px solid var(--line);
  font-size: calc(13px * var(--app-font-scale, 1));
}

/* Élément commun de présentation — lisibilité du texte. */
.world-country-list a:hover  {
  text-decoration: underline;
}

/* Élément commun de présentation — dimensions et espacements, couleurs et contours. */
.world-country-list strong  {
  background: var(--app-primary-soft, #edf5fb);
  border-radius: 12px;
  padding: 3px 8px;
}

/* Élément commun de présentation — dimensions et espacements. */
.world-country-list img  {
  height: 1em;
  width: auto;
  vertical-align: -0.1em;
  margin-right: 6px;
}

/* Élément commun de présentation — lisibilité du texte. */
.world-credit  {
  font-size: calc(10px * var(--app-font-scale, 1));
}

/* Adaptation à la largeur de l’écran ou aux préférences d’animation. */
@media (max-width: 1100px)  {
  /* Élément commun de présentation — disposition. */
  .world-layout  {
    grid-template-columns: 1fr;
  }

  /* Élément commun de présentation — dimensions et espacements. */
  .world-country-list  {
    max-height: 300px;
  }

  /* Élément commun de présentation — dimensions et espacements. */
  .world-country-list a  {
    padding: 12px 0px;
  }

}

/* Présentation des fournisseurs — disposition. */
.supplier-view-switch  {
  align-items: center;
  flex-wrap: wrap;
}

/* Présentation des fournisseurs — dimensions et espacements, couleurs et contours, lisibilité du texte. */
.supplier-view-switch .supplier-discovery-inbox  {
  margin-left: auto;
  background: #f9b233;
  color: #382400;
  border-color: #f9b233;
  text-align: center;
  white-space: normal;
}

/* Présentation des fournisseurs — couleurs et contours. */
.supplier-view-switch .supplier-discovery-inbox:hover  {
  background: #efa01b;
  border-color: #efa01b;
}

/* Adaptation à la largeur de l’écran ou aux préférences d’animation. */
@media (max-width: 700px)  {
  /* Présentation des fournisseurs — dimensions et espacements. */
  .supplier-view-switch .supplier-discovery-inbox  {
    margin-left: 0px;
    width: 100%;
  }

}

/* ==========================================================================
   04 — Recherche IA et résultats
   ========================================================================== */
/* Recherche IA — disposition, dimensions et espacements, lisibilité du texte. */
.research-panel  {
  padding: 22px;
  margin: 20px 0px;
  overflow-wrap: anywhere;
}

/* Recherche IA — disposition, dimensions et espacements. */
.research-columns  {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
}

/* Recherche IA — dimensions et espacements. */
.research-columns > *  {
  min-width: 0px;
}

/* Recherche IA — dimensions et espacements. */
.research-panel .field  {
  margin-bottom: 14px;
}

/* Recherche IA — dimensions et espacements. */
.research-panel input[type="checkbox"]  {
  width: auto;
  margin-right: 8px;
}

/* Recherche IA — dimensions et espacements, couleurs et contours, lisibilité du texte. */
.research-panel blockquote  {
  border-left: 3px solid var(--app-primary-color, #1c75bc);
  padding: 12px;
  background: var(--app-primary-soft, #edf5fb);
  margin: 16px 0px;
  white-space: pre-wrap;
}

/* Recherche IA — dimensions et espacements, couleurs et contours. */
.research-panel fieldset  {
  border: 0px;
  padding: 0px;
  min-width: 0px;
}

/* Recherche IA — comportement visuel. */
.research-panel fieldset:disabled  {
  opacity: 0.65;
}

/* Recherche IA — dimensions et espacements. */
.research-panel details  {
  margin: 16px 0px;
}

/* Recherche IA — dimensions et espacements. */
.research-panel select[multiple]  {
  min-height: 140px;
}

/* Recherche IA — dimensions et espacements, couleurs et contours, lisibilité du texte. */
.research-panel legend  {
  font-size: calc(1rem * var(--app-font-scale, 1));
  color: var(--app-primary-color, #1c75bc);
  margin-bottom: 12px;
}

/* Recherche IA — lisibilité du texte. */
.research-panel h2  {
  font-size: calc(1.2rem * var(--app-font-scale, 1));
}

/* Adaptation à la largeur de l’écran ou aux préférences d’animation. */
@media (max-width: 850px)  {
  /* Recherche IA — disposition. */
  .research-columns  {
    grid-template-columns: 1fr;
  }

  /* Recherche IA — dimensions et espacements. */
  .research-panel  {
    padding: 15px;
  }

}

/* Recherche IA — disposition, dimensions et espacements. */
/* Recherche IA — disposition, dimensions et espacements, couleurs et contours. */
/* Recherche IA — disposition. */
/* Animation ou condition d’affichage. */
@keyframes research-spin  {
  /* Élément commun de présentation — comportement visuel. */
  100%  {
    transform: rotate(360deg);
  }

}

/* Adaptation à la largeur de l’écran ou aux préférences d’animation. */
@media (prefers-reduced-motion: reduce)  {
  /* Recherche IA — couleurs et contours, lisibilité du texte. */
  /* Recherche IA — comportement visuel. */
}

/* ==========================================================================
   05 — Génération de prompt et import externe
   ========================================================================== */
/* Recherche IA — disposition, dimensions et espacements, couleurs et contours. */
#external-research-dialog  {
  width: min(900px, 94vw);
  max-height: 90vh;
  overflow: auto;
  padding: 24px;
  border: 1px solid var(--line);
  border-radius: 14px;
}

/* Recherche IA — couleurs et contours. */
#external-research-dialog::backdrop  {
  background: rgba(20, 37, 61, 0.5);
}

/* Recherche IA — dimensions et espacements, lisibilité du texte. */
#external-research-dialog textarea  {
  font-family: ui-monospace, monospace;
  font-size: calc(12px * var(--app-font-scale, 1));
  min-height: 200px;
}

/* Recherche IA — dimensions et espacements, lisibilité du texte. */
#external-research-dialog p  {
  margin: 12px 0px;
  line-height: 1.5;
}

/* Recherche IA — dimensions et espacements, couleurs et contours. */
#external-research-dialog form  {
  margin-top: 24px;
  padding-top: 16px;
  border-top: 1px solid var(--line);
}

/* Recherche IA — dimensions et espacements. */
#external-research-dialog  {
  max-width: 94vw;
}

/* ==========================================================================
   06 — Recherche de nouveaux fournisseurs
   ========================================================================== */
/* Résultats de recherche de fournisseurs — disposition, dimensions et espacements. */
.discovery-actions  {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 18px;
}

/* Résultats de recherche de fournisseurs — disposition, dimensions et espacements. */
.discovery-results  {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 330px), 1fr));
  gap: 16px;
  margin: 20px 0px;
}

/* Résultats de recherche de fournisseurs — disposition, dimensions et espacements, lisibilité du texte. */
.discovery-results article  {
  min-width: 0px;
  overflow-wrap: anywhere;
}

/* Résultats de recherche de fournisseurs — lisibilité du texte. */
.discovery-results h2  {
  font-size: calc(1.15rem * var(--app-font-scale, 1));
}

/* Résultats de recherche de fournisseurs — dimensions et espacements, couleurs et contours. */
.discovery-results blockquote  {
  margin: 12px 0px;
  padding: 10px;
  border-left: 3px solid var(--app-primary-color, #1c75bc);
  background: var(--app-primary-soft, #edf5fb);
}

/* Résultats de recherche de fournisseurs — dimensions et espacements, couleurs et contours. */
/* Résultats de recherche de fournisseurs — dimensions et espacements. */
.discovery-panel  {
  padding: 20px;
  margin: 18px 0px;
}

/* Résultats de recherche de fournisseurs — dimensions et espacements, lisibilité du texte. */
.discovery-panel p  {
  margin: 10px 0px;
  line-height: 1.5;
}

/* Résultats de recherche de fournisseurs — dimensions et espacements. */
.discovery-results .discovery-panel  {
  margin: 0px;
}

/* Résultats de recherche de fournisseurs — dimensions et espacements. */
.discovery-panel h2  {
  margin-bottom: 12px;
}

/* Résultats de recherche de fournisseurs — dimensions et espacements, couleurs et contours. */
.discovery-duplicate  {
  color: #b42318;
  border: 1px solid #f1a8a2;
  background: #fff1f0;
  border-radius: 8px;
  padding: 12px;
  margin: 12px 0px;
}

/* Résultats de recherche de fournisseurs — couleurs et contours. */
.discovery-duplicate a  {
  color: #b42318;
}

/* Résultats de recherche de fournisseurs — dimensions et espacements, couleurs et contours. */
.discovery-delete  {
  color: #b42318;
  border-color: #f1a8a2;
  margin-top: 14px;
}

/* Résultats de recherche de fournisseurs — dimensions et espacements. */
.discovery-results select  {
  max-width: 100%;
}

/* Résultats de recherche de fournisseurs — disposition, dimensions et espacements. */
.discovery-hub  {
  display: grid;
  grid-template-columns: minmax(230px, 3fr) minmax(0px, 9fr);
  gap: 24px;
  margin-top: 20px;
}

/* Résultats de recherche de fournisseurs — dimensions et espacements. */
.discovery-hub > *  {
  min-width: 0px;
}

/* Résultats de recherche de fournisseurs — disposition, dimensions et espacements, couleurs et contours. */
.discovery-hub-searches  {
  align-self: start;
  max-height: 75vh;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: white;
  padding: 14px;
}

/* Résultats de recherche de fournisseurs — dimensions et espacements, lisibilité du texte. */
.discovery-hub-searches h2  {
  font-size: calc(1rem * var(--app-font-scale, 1));
  margin: 0px 0px 12px;
}

/* Résultats de recherche de fournisseurs — disposition, dimensions et espacements, couleurs et contours, lisibilité du texte. */
.discovery-hub-search  {
  display: flex;
  flex-direction: column;
  gap: 7px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  margin-bottom: 10px;
  text-decoration: none;
  overflow-wrap: anywhere;
}

/* Résultats de recherche de fournisseurs — couleurs et contours. */
.discovery-hub-search[aria-current="page"]  {
  background: var(--app-primary-soft, #edf5fb);
  border-color: var(--app-primary-color, #1c75bc);
}

/* Résultats de recherche de fournisseurs — couleurs et contours. */
.discovery-hub-search small  {
  color: var(--muted);
}

/* Résultats de recherche de fournisseurs — dimensions et espacements. */
.discovery-hub-results > .panel:first-of-type  {
  margin-top: 0px;
}

/* Adaptation à la largeur de l’écran ou aux préférences d’animation. */
@media (max-width: 850px)  {
  /* Résultats de recherche de fournisseurs — disposition. */
  .discovery-hub  {
    grid-template-columns: minmax(0px, 1fr);
  }

  /* Résultats de recherche de fournisseurs — dimensions et espacements. */
  .discovery-hub-searches  {
    max-height: 300px;
  }

}

/* Recherche IA des informations du fournisseur : bouton compact et vérification. */
.supplier-enrichment-button  {
  font-size:calc(12px * var(--app-font-scale, 1));
  padding:6px 10px;
  color:var(--app-primary-color, #1c75bc);
}

.supplier-enrichment-button span  {
  font-size:calc(17px * var(--app-font-scale, 1));
}

#supplier-enrichment-dialog  {
  width:min(860px,94vw);
  max-height:90vh;
  overflow:auto;
  border:1px solid #d9e2ee;
  border-radius:12px;
  padding:24px;
}

#supplier-enrichment-dialog::backdrop  {
  background:rgba(15,30,50,.5);
}

.enrichment-result  {
  padding:20px;
  margin:16px 0;
  overflow-wrap:anywhere;
}

.enrichment-result input[type=checkbox]  {
  width:auto;
}

.enrichment-result h3  {
  font-size:calc(14px * var(--app-font-scale, 1));
  margin:12px 0 6px;
}

/* Produits associés : trois colonnes, trois lignes au maximum, hauteur compacte.
   Les textes longs restent disponibles au survol et dans la fiche produit. */
.supplier-associated-icon :is(svg, img)  {
  width: 22px;
  height: 22px;
}

/* Cartes : identité et activité. */
.supplier-card-columns  {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: 8px;
  flex: 1;
  margin-bottom: 10px;
}

.supplier-card-columns > section  {
  min-width: 0;
}

.supplier-card-identity h2  {
  font-size: calc(13px * var(--app-font-scale, 1));
  margin-bottom: 6px;
}

.supplier-card-country  {
  font-size: calc(11px * var(--app-font-scale, 1));
  margin: 0 0 7px;
  overflow-wrap: anywhere;
}

.supplier-card-label  {
  display: block;
  font-size: calc(9px * var(--app-font-scale, 1));
  text-transform: uppercase;
  color:var(--app-primary-color, #1c75bc);
  margin-bottom: 4px;
}

.supplier-card-description  {
  border-left: 1px solid var(--line);
  padding-left: 8px;
}

.supplier-card-description .supplier-activity  {
  font-size: calc(11px * var(--app-font-scale, 1));
  line-height: 1.4;
  margin: 0;
  overflow-wrap: anywhere;
  -webkit-line-clamp: 7;
}

.supplier-card-identity .supplier-type-tags .tag  {
  font-size: calc(9px * var(--app-font-scale, 1));
  padding: 2px 4px;
}

.supplier-card-identity .muted  {
  font-size: calc(10px * var(--app-font-scale, 1));
}

/* Pied de carte : trois actions sur une ligne, attente IA sur la ligne suivante. */
.supplier-card-actions  {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 6px;
}

.supplier-card-actions .supplier-product-summary  {
  display: contents;
}

.supplier-card-actions .button  {
  padding: 6px;
  font-size: calc(10px * var(--app-font-scale, 1));
  white-space: nowrap;
  text-align: center;
}

.supplier-card-actions .supplier-open  {
  grid-column: 1;
  grid-row: 1;
}

.supplier-card-actions .supplier-products, .supplier-card-actions .supplier-no-products  {
  grid-column: 2;
  grid-row: 1;
  justify-self: center;
  font-size: calc(10px * var(--app-font-scale, 1));
}

.supplier-card-actions .supplier-web, .supplier-card-actions .supplier-web-unavailable  {
  grid-column: 3;
  grid-row: 1;
}

.supplier-card-actions .supplier-ai-pending  {
  grid-column: 1 / -1;
  grid-row: 2;
}

/* Cinq colonnes : identité, pays, activité, type et actions. */
.supplier-table  {
  min-width: 980px;
}

.supplier-table th:nth-child(1)  {
  width: 18%;
}

.supplier-table th:nth-child(2)  {
  width: 12%;
}

.supplier-table th:nth-child(3)  {
  width: 34%;
}

.supplier-table th:nth-child(4)  {
  width: 16%;
}

.supplier-table th:nth-child(5)  {
  width: 20%;
}

/* ==========================================================================
   PERSONNALISATIONS
   Ajoutez vos ajustements ici si vous préférez conserver les règles ci-dessus.
   Une règle identique placée plus bas est prioritaire à spécificité égale.
   Pensez aux règles @media pour vérifier le résultat sur téléphone.
   ========================================================================== */
/* FICHE FOURNISSEUR — champs compacts et colonnes adaptatives.
   Ces règles restent limitées à la fiche : les cartes du catalogue sont inchangées. */
.supplier-editor .form-body  {
  padding: 16px;
}

.supplier-editor .field  {
  margin: 0 0 9px;
  gap: 4px;
  min-width: 0;
}

.supplier-editor .field > span, .supplier-editor .field > label  {
  font-size: calc(12px * var(--app-font-scale, 1));
}

.supplier-editor input:not([type=range]):not([type=checkbox]):not([type=hidden]), .supplier-editor select:not([multiple]), .supplier-editor .choice-dropdown > summary  {
  min-height: 34px;
  padding: 7px 9px;
  font-size: calc(13px * var(--app-font-scale, 1));
  line-height: calc(18px * var(--app-font-scale, 1));
}

.supplier-editor textarea  {
  padding: 7px 9px;
  font-size: calc(13px * var(--app-font-scale, 1));
  line-height: calc(18px * var(--app-font-scale, 1));
  min-height: 70px;
}

.supplier-information-columns  {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 20px;
}

.supplier-information-columns > div  {
  min-width: 0;
}

.supplier-field-pair  {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 10px;
}

.supplier-website .address-field  {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: center;
}

.supplier-website .address-field > label  {
  grid-column: 1/-1;
}

.supplier-website [data-address-action]  {
  margin: 0;
}

.supplier-website .button  {
  padding: 7px 12px;
}

.supplier-field-pair [data-address-action]  {
  display: none;
}

/* Contacts et produits : petites cartes, descriptions limitées à quatre lignes. */
.supplier-contact-grid, .supplier-product-grid  {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 12px;
  margin-top: 12px;
}

.supplier-contact-card  {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 12px;
  overflow-wrap: anywhere;
}

.supplier-contact-card h2  {
  font-size: calc(15px * var(--app-font-scale, 1));
  margin: 0 0 6px;
}

.supplier-contact-card p  {
  font-size: calc(12px * var(--app-font-scale, 1));
  margin: 5px 0;
}

.supplier-contact-dialog  {
  width: min(760px,calc(100vw - 32px));
}

.supplier-editor .supplier-products-columns  {
  grid-template-columns: minmax(0,10fr) minmax(0,2fr);
  gap: 16px;
}

.supplier-editor .supplier-products-single  {
  grid-template-columns: 1fr;
}

.supplier-products-pending h2  {
  font-size: calc(14px * var(--app-font-scale, 1));
}

.supplier-products-pending p, .supplier-products-pending li  {
  font-size: calc(12px * var(--app-font-scale, 1));
}

/* Documents : actions groupées, ajout en fenêtre modale, aperçu conservé. */
.supplier-editor .document-list > li  {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 8px;
}

#supplier-document-add  {
  width: min(520px,calc(100vw - 32px));
}

/* Localisation : recherche à gauche, carte à droite. */
.supplier-editor [data-geolocation]  {
  display: grid;
  grid-template-columns: minmax(0,4fr) minmax(0,8fr);
  gap: 20px;
}

.supplier-geo-map-column  {
  min-width: 0;
}

@media (max-width: 1100px)  {
  .supplier-information-columns  {
    grid-template-columns: repeat(2,minmax(0,1fr));
  }

  .supplier-editor .supplier-products-columns  {
    grid-template-columns: minmax(0,3fr) minmax(0,1fr);
  }

  .supplier-product-grid  {
    grid-template-columns: 1fr;
  }

}

@media (max-width: 700px)  {
  .supplier-information-columns, .supplier-contact-grid,  .supplier-editor .supplier-products-columns, .supplier-editor [data-geolocation]  {
    grid-template-columns: 1fr;
  }

  .supplier-editor .form-body  {
    padding: 10px;
  }

}

.supplier-editor .supplier-products-pending  {
  padding-left: 12px;
}

.supplier-editor .supplier-products-pending h2  {
  font-size: calc(14px * var(--app-font-scale, 1));
}

.supplier-editor [data-geolocation] [data-geo-map] iframe  {
  margin-top: 0;
}

/* Ajustements fiche fournisseur : en-tête, attribution et cartes de contacts. */
.supplier-pagehead  {
  flex-wrap: wrap;
  gap: 10px;
}

.supplier-pagehead h1  {
  margin-right: auto;
}

.supplier-pagehead > button  {
  font-size: calc(12px * var(--app-font-scale, 1));
  padding: 8px 12px;
  line-height: calc(18px * var(--app-font-scale, 1));
}

.supplier-information-first > [data-city-attribution]  {
  display: block;
  margin-top: 12px;
  color: var(--muted);
  font-size: calc(11px * var(--app-font-scale, 1));
}

.supplier-editor .supplier-contact-grid  {
  grid-template-columns: repeat(auto-fill,230px);
  justify-content: start;
}

.supplier-contact-card button  {
  font-size: calc(12px * var(--app-font-scale, 1));
  padding: 6px 8px;
  margin-top: 6px;
}

.supplier-editor .document-list > li  {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: center;
  gap: 8px;
}

.supplier-editor .document-list .attachment-name  {
  min-width: 0;
  font-size: calc(12px * var(--app-font-scale, 1));
}

@media (max-width:700px)  {
  .supplier-editor .document-list > li  {
    grid-template-columns: 1fr;
  }

  .supplier-editor .supplier-contact-grid  {
    grid-template-columns: repeat(auto-fill,minmax(min(230px,100%),230px));
  }

}

/* Participations aux salons enregistrées depuis les exposants. */
.supplier-event-grid  {
  display: grid;
  grid-template-columns: repeat(auto-fill,minmax(min(260px,100%),1fr));
  gap: 12px;
}

.supplier-event-card  {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff7e7;
}

.supplier-event-card h2  {
  font-size: calc(16px * var(--app-font-scale, 1));
  margin: 0 0 8px;
}

/* Pagination alphabétique du catalogue fournisseurs, cumulée aux filtres. */
.supplier-alphabet  {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin: 12px 0;
}

.supplier-alphabet a.button  {
  min-width: 30px;
  padding: 5px 8px;
  font-size: calc(12px * var(--app-font-scale, 1));
  text-align: center;
}

.supplier-alphabet a[aria-current="page"]  {
  background: var(--app-primary-color, #1c75bc);
  color:var(--app-button-text, #fff);
  border-color: var(--app-primary-color, #1c75bc);
}

/* Filtres métier ; case Archives alignée à gauche. */
.supplier-catalog-filters  {
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 100%;
}

.supplier-catalog-filters .field  {
  margin: 0;
}

.supplier-catalog-filters small  {
  font-size: calc(.75rem * var(--app-font-scale, 1));
}

form.toolbar .supplier-archive-filter  {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  align-self: flex-start;
  gap: 6px;
  text-align: left;
  width: auto;
}

form.toolbar .supplier-archive-filter input  {
  width: auto;
  margin: 0;
  flex: none;
}

/* Actions secondaires du dossier fournisseur. */
.supplier-secondary-actions  {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin: 12px 0;
}

.supplier-secondary-actions form  {
  margin: 0;
}

/* Bouton produits commun aux cartes et à la liste des fournisseurs. */
.supplier-card-actions .supplier-products, .supplier-list-actions .supplier-products  {
  display: block;
  white-space: normal;
  line-height: 1.35;
}

/* Garder les actions lisibles dans les cartes sans la colonne des indices. */
body.platform-appearance .supplier-card-actions  {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
}

body.platform-appearance .supplier-card-actions .supplier-product-summary  {
  display:contents;
}

body.platform-appearance .supplier-card-actions .supplier-products  {
  max-width:100%;
  min-width:0;
  white-space:normal;
  flex-wrap:wrap;
  height:auto!important;
  max-height:none!important;
  padding-block:4px!important;
}

body.platform-appearance .supplier-card-actions body.platform-appearance .supplier-card-actions .supplier-ai-pending  {
  flex-basis:100%;
}

/* Fournisseurs — état du travail restant, sans décompte supplémentaire.
   Les couleurs de statut restent visibles malgré le thème des boutons secondaires. */
.supplier-products[data-product-review-state="pending"] {
  --supplier-review-background: #8fd2a6;
  --supplier-review-border: #589e70;
}
.supplier-products[data-product-review-state="draft"] {
  --supplier-review-background: #f3b66b;
  --supplier-review-border: #bd812f;
}
.supplier-products[data-product-review-state="mixed"] {
  --supplier-review-background: linear-gradient(100deg, #8fd2a6 0%, #f3b66b 100%);
  --supplier-review-border: #92985c;
}
body.platform-appearance a.button.supplier-products[data-product-review-state] {
  background: var(--supplier-review-background) !important;
  border-color: var(--supplier-review-border) !important;
  color: #183122 !important;
}
body.platform-appearance a.button.supplier-products[data-product-review-state]:hover {
  filter: brightness(.96);
}
