/* ════════════════════════════════════════════════════════════════════
   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;
}

/* 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. */
