/*
 * Onglets de la page campagne
 * ============================================================================
 * Deux familles ici :
 *
 *   .hr-onglets-*  la barre et les panneaux
 *   .hr-cpo-*      le contenu propre aux onglets Contreparties et News
 *
 * Le préfixe hr-cpo- n'est pas une coquetterie. Trois scripts déjà en place
 * (contreparties-ordre, contrepartie-stock-front, campagne-date-debut-gate)
 * balaient la page entière sur les noms du cœur — .hr-contrepartie-card,
 * .hr-contreparties-grid, .hr-cp-une-zone. Nos cartes doivent leur être
 * invisibles, donc elles ne portent aucun de ces noms, et les règles de mise en
 * forme correspondantes sont reprises ici explicitement.
 *
 * ----------------------------------------------------------------------------
 * ACCORD AVEC LA PAGE
 * ----------------------------------------------------------------------------
 * Tout ce qui suit puise dans les variables déclarées par haeros-core
 * (single-campagnes.css) : --hr-primary, --hr-dark, --hr-grey, --hr-light-grey,
 * --hr-white et l'échelle --hr-gap-*. Les valeurs en repli ne servent que si la
 * feuille du cœur n'a pas été chargée. Le jour où la charte bouge là-bas, les
 * onglets suivent sans qu'on y touche.
 *
 * La page a une grammaire simple, qu'on reprend telle quelle : des titres
 * centrés, beaucoup de blanc, de l'air entre les blocs, et l'or comme unique
 * accent — jamais décoratif, toujours porteur de sens.
 *
 * La barre d'onglets n'est donc pas une barre : c'est une ligne de mots posée
 * sur le blanc. Pas de fond, pas de cadre, pas de bouton dessiné, pas de filet
 * de séparation. Le seul trait de toute la rangée est celui, or, sous le
 * libellé ouvert — exactement comme « Biographie / Extrait 1 » plus bas.
 */

/* ==================================================
   La barre d'onglets
   ==================================================
   Reprise mot pour mot de la navigation des extraits (« Biographie / Extrait 1
   / … »), déclarée dans haeros-core/campagne/single-campagnes.css aux lignes
   396-422 : rangée centrée, écart de --hr-gap-xxl, libellés de 16 px en 500,
   gris au repos, et l'onglet actif en or souligné d'un filet or de 2 px.

   Ce motif existe déjà sur la page et les lecteurs l'ont appris là-bas. En
   introduire un second, si voisin soit-il, aurait obligé chacun à vérifier que
   les deux se manipulent pareil. Les valeurs viennent des mêmes variables : si
   la charte bouge dans le cœur, les deux rangées bougent ensemble.

   Seul ajout : le libellé s'épaissit au survol. Le cœur se contente d'assombrir
   la couleur ; le gras a été demandé, et il se superpose sans rien contredire.
   ================================================== */

/* Fond blanc, et rien d'autre : ni bordure, ni cadre, ni bouton dessiné. Le
   seul trait de toute la rangée est le filet or sous le libellé ouvert.

   Le blanc est posé explicitement, il n'est pas hérité : sans lui, c'est le
   crème de la page qui remontait et dessinait une bande colorée en travers,
   juste sous la bannière.

   La hauteur se calcule au plus juste — 16 px au-dessus du texte, 14 en
   dessous du filet. Elle valait près de 140 px pour deux mots : une bande vide
   qui séparait la bannière du contenu sans rien dire. L'air entre les onglets
   et ce qu'ils ouvrent est donné par le panneau lui-même, plus bas. */
.hr-onglets {
    background-color: var(--hr-white, #ffffff);
    border: none;
    padding: 16px 0 14px;
}

.hr-onglets__liste {
    display: flex;
    justify-content: center;
    gap: var(--hr-gap-xxl, 64px);
    flex-wrap: wrap;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 16px;
}

/* ⚠️ Les !important ne sont pas de la paresse.
   Le thème du site habille largement les éléments cliquables — fond plein,
   coins arrondis, ombre — et l'a fait avec assez de poids pour écraser une
   règle ordinaire. Nos onglets sont ressortis en pastilles dorées. Passer des
   <button> aux <a> a réglé l'essentiel ; ces déclarations tiennent le reste,
   quoi qu'une feuille tierce vienne à déclarer plus tard.
   Elles ne portent que sur ce qui dessine une boîte — fond, bordure, arrondi,
   ombre, marges — jamais sur la typographie, qui doit rester libre de suivre
   la charte. */
.hr-onglets__onglet {
    appearance: none !important;
    -webkit-appearance: none !important;
    display: inline-block;
    background: none !important;
    background-color: transparent !important;
    border: 0 !important;
    border-bottom: 2px solid transparent !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    margin: 0 !important;
    padding: 0 0 8px !important;
    min-width: 0 !important;
    min-height: 0 !important;
    width: auto !important;
    font: inherit;
    font-size: 16px;
    font-weight: 500;
    line-height: 1.2;
    letter-spacing: normal !important;
    text-transform: none !important;
    color: var(--hr-grey, #666);
    text-decoration: none !important;
    cursor: pointer;
    transition: all .3s;
}

.hr-onglets__libelle {
    display: block;
}

/* Réserve, en gras, la place que le mot occupera au survol.
   Le libellé passe de 500 à 700 quand la souris arrive ; sans cette copie
   invisible pour fixer la largeur, chaque survol élargirait le bouton et ferait
   tressauter toute la rangée — le genre de détail qu'on ne sait pas nommer mais
   qui donne l'impression que l'interface est mal tenue. */
.hr-onglets__libelle::before {
    content: attr(data-libelle);
    display: block;
    height: 0;
    overflow: hidden;
    visibility: hidden;
    font-weight: 700;
    pointer-events: none;
}

.hr-onglets__onglet:hover,
.hr-onglets__onglet:focus,
.hr-onglets__onglet:active {
    background: none !important;
    background-color: transparent !important;
    box-shadow: none !important;
    text-decoration: none !important;
}

.hr-onglets__onglet:hover {
    color: var(--hr-dark, #1c1c1c);
    font-weight: 700;
}

.hr-onglets__onglet[aria-selected="true"] {
    color: var(--hr-primary, #dca54a);
    border-bottom-color: var(--hr-primary, #dca54a) !important;
}

/* Le focus clavier doit rester franchement visible : c'est le seul repère d'un
   lecteur qui navigue sans souris. Le cœur n'en prévoit pas — ses onglets sont
   des <a href="#">, que le navigateur entoure d'office. Les nôtres sont de
   vrais boutons, on leur pose donc le contour nous-mêmes. */
.hr-onglets__onglet:focus-visible {
    outline: 2px solid var(--hr-primary, #dca54a);
    outline-offset: 4px;
    border-radius: 3px;
}

.hr-onglets__panneau {
    outline: none;
}

.hr-onglets__panneau[hidden] {
    display: none !important;
}

/* Le panneau des contreparties n'impose RIEN : il reçoit la copie conforme de
   la section d'origine, qui apporte déjà son fond, son conteneur, ses marges et
   sa grille. Toute valeur ajoutée ici créerait justement l'écart qu'on cherche
   à supprimer. */
#hr-panneau-contreparties {
    padding: 0;
}

/* Le panneau News, lui, n'a pas de section d'origine à reprendre : il pose ses
   propres marges verticales, sur le modèle d'une section du gabarit. */
#hr-panneau-news {
    padding: var(--hr-section-pad-y-lg, 60px) 0;
}


/* ==================================================
   Les cartes de la page principale deviennent cliquables
   ==================================================
   Elles sont rendues par haeros-core et on ne touche pas à leur mise en forme :
   juste le curseur, et un contour net au focus clavier.

   ⚠️ Sauf qu'en leur posant role="button" — nécessaire pour que les lecteurs
   d'écran les annoncent comme des boutons — on les fait entrer dans la portée
   des feuilles qui habillent « tout ce qui se clique ». Un thème qui cible
   [role="button"] les repeindrait comme il repeint les vrais boutons : fond
   plein, coins ronds, majuscules. Le rôle est une information, pas une
   demande de décoration.

   On réaffirme donc ici les valeurs du cœur (single-campagnes.css, l. 532-538),
   à l'identique. Ces cartes gardent l'apparence qu'elles avaient avant qu'on
   les rende cliquables, quoi qu'une feuille tierce vienne à déclarer.
   ================================================== */

.hr-cpo-cliquable {
    cursor: pointer;
    background-color: var(--hr-white, #ffffff) !important;
    border: 0 !important;
    border-radius: 8px !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1) !important;
    padding: 0 !important;
    min-height: 0 !important;
    text-transform: none !important;
    letter-spacing: normal !important;
    color: inherit !important;
}

.hr-cpo-cliquable:focus-visible {
    outline: 2px solid var(--hr-primary, #dca54a);
    outline-offset: 3px;
}


/* ==================================================
   Confirmation du choix
   ==================================================
   Un clic sur une contrepartie fait défiler la page jusqu'au bloc Contribuer.
   Le sélecteur affiche bien le bon intitulé, mais c'est une ligne de texte
   parmi d'autres : rien ne relie l'arrivée en bas de page au geste fait plus
   haut. Le halo dure le temps d'être vu, puis s'efface — il signale, il ne
   décore pas.
   ================================================== */

@keyframes hr-cpo-halo {
    0%   { box-shadow: 0 0 0 0 rgba(220, 165, 74, .55); }
    35%  { box-shadow: 0 0 0 8px rgba(220, 165, 74, .22); }
    100% { box-shadow: 0 0 0 0 rgba(220, 165, 74, 0); }
}

.hr-cpo-signal {
    border-radius: 8px;
    animation: hr-cpo-halo 1.6s ease-out;
}


/* ==================================================
   Onglet News
   ==================================================
   Une colonne de brèves, vignette à gauche. On reste sur une seule colonne même
   en grand écran : ces textes se lisent à la suite, chronologiquement, et une
   grille en ferait perdre le fil.
   ================================================== */

.hr-cpo-news {
    display: flex;
    flex-direction: column;
    gap: var(--hr-gap-lg, 32px);
    max-width: 860px;
}

.hr-cpo-news__item {
    display: flex;
    gap: var(--hr-gap-md, 28px);
    padding-bottom: var(--hr-gap-lg, 32px);
    border-bottom: 1px solid rgba(28, 28, 28, .12);
}

.hr-cpo-news__item:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.hr-cpo-news__visuel {
    flex: 0 0 200px;
    display: block;
    border-radius: 8px;
    overflow: hidden;
}

.hr-cpo-news__visuel img {
    width: 100%;
    height: 100%;
    max-height: 150px;
    object-fit: cover;
    display: block;
}

.hr-cpo-news__corps {
    flex: 1 1 auto;
    min-width: 0;
}

.hr-cpo-news__date {
    margin: 0 0 6px;
    font-size: 13px;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--hr-grey, #666);
}

.hr-cpo-news__titre {
    margin: 0 0 10px;
    font-size: 22px;
    font-weight: 700;
    line-height: 1.3;
    color: var(--hr-dark, #1c1c1c);
}

.hr-cpo-news__titre a {
    color: inherit;
    text-decoration: none;
}

.hr-cpo-news__titre a:hover {
    font-weight: 700;
}

.hr-cpo-news__extrait {
    margin: 0 0 12px;
    font-size: 16px;
    line-height: 1.6;
    color: var(--hr-dark, #1c1c1c);
}

.hr-cpo-news__lire {
    margin: 0;
}

.hr-cpo-news__lire a {
    font-size: 15px;
    font-weight: 600;
    color: var(--hr-primary, #dca54a);
    text-decoration: none;
}

.hr-cpo-news__lire a:hover {
    font-weight: 700;
}


/* ==================================================
   Petits écrans
   ================================================== */

@media (max-width: 782px) {

    /* Le cœur resserre l'écart de sa propre rangée à 16 px sous 767 px
       (single-campagnes.css, ligne 786). On fait de même, et on autorise le
       débordement latéral plutôt qu'une rupture sur deux lignes si les
       libellés venaient à s'allonger. */
    .hr-onglets {
        padding: 14px 0 12px;
    }

    .hr-onglets__liste {
        gap: 16px;
        flex-wrap: nowrap;
        overflow-x: auto;
        scrollbar-width: none;
        margin-bottom: 0;
    }

    .hr-onglets__liste::-webkit-scrollbar { display: none; }

    .hr-onglets__onglet {
        flex: 0 0 auto;
    }

    #hr-panneau-news {
        padding: var(--hr-section-pad-y-md, 40px) 0;
    }

    /* La vignette passe au-dessus du texte : à cette largeur, une colonne de
       200 px ne laisserait plus rien au titre. */
    .hr-cpo-news__item {
        flex-direction: column;
        gap: 14px;
    }

    .hr-cpo-news__visuel { flex: 0 0 auto; }
    .hr-cpo-news__visuel img { max-height: 200px; }
    .hr-cpo-news__titre { font-size: 20px; }
}

@media (prefers-reduced-motion: reduce) {
    .hr-onglets__onglet {
        transition: none;
    }
    .hr-cpo-signal {
        animation: none;
        box-shadow: 0 0 0 3px rgba(220, 165, 74, .5);
    }
}
