/* ════════════════════════════════════════════════════════════════════
   GARDE ANTI-CONFLIT THEME / ELEMENTOR
   ════════════════════════════════════════════════════════════════════
   Contexte : sur le site de production, le thème hello-elementor charge
   assets/css/reset.css APRES nos feuilles (nos styles sont en position 4-8,
   le thème en 21+ et Elementor en 24+). Ce reset style TOUS les boutons :

       [type="button"], [type="submit"], button {
           background-color: transparent;
           border: 1px solid #cc3366;   -> bordure rose
           border-radius: 3px;
           color: #cc3366;              -> texte rose
       }
       button:hover, button:focus { background-color: #cc3366; color: #fff; }

   Consequence observee : texte rose dans les tuiles de choix de profil,
   bordure rose + rayon 3px sur les boutons de langue, et fond cramoisi au
   survol/focus sur tout bouton dont nous ne declarons pas explicitement le
   fond. Aucune de ces regles n'est en !important : il suffit d'une
   specificite superieure, ce que garantit le prefixe de racine.

   Principe : dans nos racines, tout element de formulaire qui n'est PAS un
   composant Weavy (pas de classe weavy-*) repart d'une base neutre. Nos
   composants (.weavy-btn, .weavy-tile, ...) sont volontairement EXCLUS :
   ils definissent deja leur apparence et doivent garder la main.

   A charger en dernier sur les trois surfaces (auth, dashboard, abonnement).
   ════════════════════════════════════════════════════════════════════ */

/* ─── white-space : le reset du theme impose nowrap a tous les boutons ───
   Consequence la plus visible : nos tuiles de choix de profil sont des
   <button>, leur texte ne pouvait donc pas s'enrouler. Leur largeur
   min-content valait la phrase entiere, et une colonne "1fr" (equivalente a
   minmax(auto, 1fr)) ne peut pas descendre sous cette largeur : la grille
   debordait de sa carte (mesure : tuile a 1115px pour une carte finissant a
   970px). Le sélecteur du theme est [type="button"] (0,2,0) : il faut donc au
   moins (0,2,1) ici, d'ou "button[type]" en plus de la racine.
   Les grilles concernees sont par ailleurs passees en minmax(0, 1fr). */
.weavy-auth-root button[type],
#dashboard-app button[type],
#subscription-app button[type] {
    white-space: normal;
}

/* ─── Boutons rendus en LIEN : garder leur couleur au survol ───
   Deux regles tierces colorent nos <a> au survol :
     - le reset du theme : "a:hover { color:#336 }"            -> (0,1,1)
     - le kit Elementor  : ".elementor-kit-88 a:hover"          -> (0,2,1)
   Le texte d'un bouton rendu en lien virait donc au bleu sur fond violet.
   ATTENTION : viser (0,2,1) ne suffit PAS, ce serait une egalite avec
   Elementor, et c'est alors l'ordre de chargement qui tranche - or Elementor
   charge apres nous. On double donc la classe pour atteindre (0,3,1). */
a.weavy-btn.weavy-btn--primary,
a.weavy-btn.weavy-btn--primary:hover,
a.weavy-btn.weavy-btn--primary:focus,
a.weavy-banner__btn.weavy-banner__btn--primary,
a.weavy-banner__btn.weavy-banner__btn--primary:hover,
a.weavy-banner__btn.weavy-banner__btn--primary:focus {
    color: var(--weavy-primary-contrast, #fff);
}
a.weavy-btn.weavy-btn--outline,
a.weavy-btn.weavy-btn--outline:hover,
a.weavy-btn.weavy-btn--outline:focus,
a.weavy-banner__btn.weavy-banner__btn--ghost,
a.weavy-banner__btn.weavy-banner__btn--ghost:hover,
a.weavy-banner__btn.weavy-banner__btn--ghost:focus {
    color: var(--weavy-ink, #1c244b);
}
a.weavy-banner__btn.weavy-banner__btn--link,
a.weavy-banner__btn.weavy-banner__btn--link:hover,
a.weavy-banner__btn.weavy-banner__btn--link:focus {
    color: var(--weavy-primary, #7935bc);
}

/* ─── Boutons non-Weavy : base neutre ─── */
.weavy-auth-root button:not([class*="weavy-"]),
#dashboard-app button:not([class*="weavy-"]),
#subscription-app button:not([class*="weavy-"]) {
    background-color: transparent;
    border: none;
    border-radius: 0;
    color: inherit;
    text-transform: none;
    letter-spacing: normal;
    font-family: inherit;
}

/* ─── Etats survol / focus : neutralises (le cramoisi du thème) ─── */
.weavy-auth-root button:not([class*="weavy-"]):hover,
.weavy-auth-root button:not([class*="weavy-"]):focus,
#dashboard-app button:not([class*="weavy-"]):hover,
#dashboard-app button:not([class*="weavy-"]):focus,
#subscription-app button:not([class*="weavy-"]):hover,
#subscription-app button:not([class*="weavy-"]):focus {
    background-color: transparent;
    color: inherit;
    text-decoration: none;
}

/* ─── Composants Weavy : neutraliser le survol/focus impose par le theme ───
   ATTENTION SPECIFICITE. Nos boutons sont des <button type="button">, donc le
   theme les atteint AUSSI via [type="button"]:hover, dont la specificite est
   (0,2,0) : exactement celle de nos regles de composant (.weavy-auth-root
   .weavy-tile). A egalite, c'est l'ordre de chargement qui tranche, et le
   theme charge en position 22 contre 5 pour nous -> il gagnait, d'ou le fond
   cramoisi au survol des tuiles.
   On neutralise donc avec [type] en plus (0,3,1), ce qui passe devant, puis on
   re-declare juste apres le fond propre aux composants qui en ont un. */
.weavy-auth-root button[type]:hover,
.weavy-auth-root button[type]:focus,
#dashboard-app button[type]:hover,
#dashboard-app button[type]:focus,
#subscription-app button[type]:hover,
#subscription-app button[type]:focus {
    background-color: transparent;
    color: inherit;
    text-decoration: none;
}

/* Composants a fond propre : on le retablit au survol et au focus, avec une
   specificite au moins egale a la neutralisation ci-dessus. */
.weavy-auth-root button[type].weavy-tile:hover,
.weavy-auth-root button[type].weavy-tile:focus {
    background-color: #fff;
    color: var(--weavy-ink, #1c244b);
}
.weavy-auth-root button[type].weavy-tile--sel:hover,
.weavy-auth-root button[type].weavy-tile--sel:focus {
    background-color: #fbf8fe;
    color: var(--weavy-ink, #1c244b);
}
.weavy-auth-root button[type].weavy-btn--primary:hover,
.weavy-auth-root button[type].weavy-btn--primary:focus,
.weavy-auth-root button[type].weavy-prod__continue:hover,
.weavy-auth-root button[type].weavy-prod__continue:focus,
#subscription-app button[type].weavy-plan-unified__cta:hover,
#subscription-app button[type].weavy-plan-unified__cta:focus {
    background-color: var(--weavy-primary-hover, #5f2799);
    color: #fff;
}
.weavy-auth-root button[type].weavy-btn--primary:disabled:hover,
.weavy-auth-root button[type].weavy-btn--primary[disabled]:hover {
    background-color: #c9b3de;
}
#subscription-app button[type].weavy-plan-toggle__btn.is-active:hover,
#subscription-app button[type].weavy-plan-toggle__btn.is-active:focus {
    background-color: var(--weavy-primary, #7935bc);
    color: #fff;
}

/* ─── Actions de banniere rendues en <button> : le fond AU REPOS ───
   Retour recette du 01/09 (capture client, reproduit en navigation privee) :
   sur « Mes documents », le bouton « Ajouter un document » etait introuvable.
   Il etait pourtant bien dans le DOM, a sa place, cliquable - mais peint en
   BLANC SUR TRANSPARENT, donc invisible sur la carte blanche.

   Mesure faite sur la page publique /auth, qui charge les memes feuilles :
       <button type="button" class="weavy-banner__btn--primary">  -> transparent
       <button          class="weavy-banner__btn--primary">       -> violet
       <div             class="weavy-banner__btn--primary">       -> violet
   L'attribut type est donc le seul discriminant : c'est le reset du theme
   decrit en tete de ce fichier, « [type="button"] { background-color:
   transparent } ». Sa specificite (0,1,0) EGALE celle de notre classe
   « .weavy-banner__btn--primary » ; a egalite l'ordre de chargement tranche,
   et le theme charge en 21+ contre 4-8 pour nous. Notre « color: #fff »
   passait, lui (aucune regle tierce ne le contredit au repos) : d'ou le blanc
   sur blanc.

   Les gardes ci-dessus ne couvraient que le SURVOL des composants a fond
   propre, et la variante rendue en <a> (banniere construite avec 'href'). Une
   action de banniere declaree avec 'click' est rendue en <button> : aucune
   garde ne la couvrait, ni au repos ni au survol. Etaient concernes tous les
   boutons d'action de bannieres (documents, temoignages, licences).

   Specificite : ID + [type] + classe + element = (1,2,1) sous #dashboard-app,
   (0,3,1) sous .weavy-auth-root - au-dessus du reset (0,1,0) et de son survol
   (0,2,0), et au-dessus de la neutralisation de survol posee plus haut. */
.weavy-auth-root button[type].weavy-banner__btn--primary,
.weavy-auth-root button[type].weavy-banner__btn--primary:focus,
#dashboard-app button[type].weavy-banner__btn--primary,
#dashboard-app button[type].weavy-banner__btn--primary:focus,
#subscription-app button[type].weavy-banner__btn--primary,
#subscription-app button[type].weavy-banner__btn--primary:focus {
    background-color: var(--weavy-primary, #7935bc);
    color: var(--weavy-primary-contrast, #fff);
}
.weavy-auth-root button[type].weavy-banner__btn--primary:hover,
#dashboard-app button[type].weavy-banner__btn--primary:hover,
#subscription-app button[type].weavy-banner__btn--primary:hover {
    background-color: var(--weavy-primary-hover, #5f2799);
    color: var(--weavy-primary-contrast, #fff);
}
.weavy-auth-root button[type].weavy-banner__btn--ghost,
.weavy-auth-root button[type].weavy-banner__btn--ghost:hover,
.weavy-auth-root button[type].weavy-banner__btn--ghost:focus,
#dashboard-app button[type].weavy-banner__btn--ghost,
#dashboard-app button[type].weavy-banner__btn--ghost:hover,
#dashboard-app button[type].weavy-banner__btn--ghost:focus,
#subscription-app button[type].weavy-banner__btn--ghost,
#subscription-app button[type].weavy-banner__btn--ghost:hover,
#subscription-app button[type].weavy-banner__btn--ghost:focus {
    background-color: #fff;
    color: var(--weavy-ink, #1c244b);
}
.weavy-auth-root button[type].weavy-banner__btn--link,
.weavy-auth-root button[type].weavy-banner__btn--link:hover,
.weavy-auth-root button[type].weavy-banner__btn--link:focus,
#dashboard-app button[type].weavy-banner__btn--link,
#dashboard-app button[type].weavy-banner__btn--link:hover,
#dashboard-app button[type].weavy-banner__btn--link:focus,
#subscription-app button[type].weavy-banner__btn--link,
#subscription-app button[type].weavy-banner__btn--link:hover,
#subscription-app button[type].weavy-banner__btn--link:focus {
    background-color: transparent;
    color: var(--weavy-primary, #7935bc);
}

/* Le thème colore le texte de tout <button> : nos tuiles et bascules
   heritent sinon du rose. On rattache explicitement a l'encre de la marque. */
.weavy-auth-root .weavy-tile,
.weavy-auth-root .weavy-pwd__toggle,
#dashboard-app .weavy-tile,
#subscription-app .weavy-plan-toggle__btn {
    color: var(--weavy-ink, #1c244b);
}

/* NOTE : volontairement limite aux boutons, seul conflit constate en
   production (audit du 28/07/2026 sur weavy.norisix.com). Pas de regle
   preventive sur les titres : un selecteur de type "#dashboard-app h2"
   porte un ID (specificite 1,0,1) et ecraserait les polices deliberees de
   nos composants (.weavy-payment-result__title, etc.). Si un conflit
   typographique apparait, le traiter au niveau du composant concerne. */
