/**
 * Bourse Fondation Desperados — CSS public
 *
 * Maquette de référence : Bourse de soutien/design-anthropic/project/Bourse Fondation Desperados.html
 * Hypothèses :
 *   - Nimbus Sans L + Nimbus Sans L Condensed sont chargées par le thème (assets/css/style.css).
 *   - Le markup nav + footer est géré par get_header()/get_footer() du thème, on ne dupplique pas leur CSS.
 *   - Préfixes BEM en .fd-bourse-* pour ne pas entrer en collision avec le thème.
 *
 * @package Fondation_Desperados
 * @subpackage Bourse
 * @since 1.6.0
 */

/* ============================================================
   VARIABLES CSS — palette pilotée depuis le builder (post_meta).
   Les vars sont injectées en inline style sur body.fd-bourse-page
   par page-bourse-active.php quand un color picker est rempli.
   Si vide → ces valeurs par défaut s'appliquent.
   ============================================================ */
.fd-bourse-page{
    /* Hero + Sidebar — couleur d'accent (jaune Desperados) */
    --fd-bourse-color-accent:#f4c73c;
    --fd-bourse-color-sidebar-bg:#f4c73c;
    --fd-bourse-color-text:#000;
    --fd-bourse-color-rule:#000;

    /* CTA primary (Postuler) — fond noir, texte = accent */
    --fd-bourse-color-cta-bg:#000;
    --fd-bourse-color-cta-text:#fff;

    /* Section .fd-bourse-meta (Critères + Calendrier) */
    --fd-bourse-meta-bg:#f4f1eb;
    --fd-bourse-meta-text:#1a1a1a;

    /* Section .fd-bourse-jury (bandeau membres du jury) */
    --fd-bourse-jury-bg:#000;
    --fd-bourse-jury-text:#fff;

    /* Section .fd-bourse-tiles — 4 teintes indépendantes */
    --fd-bourse-tile-1-bg:#dc5a3c;
    --fd-bourse-tile-1-text:#000;
    --fd-bourse-tile-2-bg:#f4d5c0;
    --fd-bourse-tile-2-text:#000;
    --fd-bourse-tile-3-bg:#b68590;
    --fd-bourse-tile-3-text:#000;
    --fd-bourse-tile-4-bg:#f4c73c;
    --fd-bourse-tile-4-text:#000;
}

/* ---------- FIX STICKY ---------- */
/*
 * Le thème pose `html{overflow-x:hidden}` et `body{overflow-x:hidden}` pour
 * éviter le débordement horizontal des heros pleine largeur. Effet de bord :
 * `position:sticky` est cassé sur la <aside> du formulaire, car le containing
 * block sticky remonte jusqu'au premier ancêtre avec overflow != visible,
 * qui est ici <html> — et celui-ci a sa hauteur = viewport, donc le sticky
 * n'a pas où coller.
 *
 * Réparation : on désactive `overflow-x:hidden` uniquement sur la page WP
 * fixe de la bourse (classe body.fd-bourse-page injectée via le filter
 * body_class). On vise <html> via :has() (CSS Selectors L4, supporté Chrome
 * 105+ / Firefox 121+ / Safari 15.4+ — largement OK fin 2026).
 *
 * Côté hero pleine largeur du module, on garde overflow:hidden localement
 * pour éviter toute fuite horizontale.
 *
 * Références :
 *   - https://developer.mozilla.org/en-US/docs/Web/CSS/position#sticky
 *   - https://stackoverflow.com/questions/43909940/css-position-sticky-not-working
 */
html:has(body.fd-bourse-page),
body.fd-bourse-page{
    overflow-x:visible;
}

/* ============================================================
   HERO v2 — réutilise les classes .fd-projet-header / .fd-projet-*
   du thème (single-projet) pour garantir la cohérence visuelle.
   Le HTML utilise directement les classes .fd-projet-* avec
   un wrapper .fd-bourse-hero pour contextualiser et définir
   --projet-color en jaune Desperados.
   ============================================================ */
.fd-bourse-hero{
    --projet-color:var(--fd-bourse-color-accent,#f4c73c); /* bandeau hero pilotable depuis le builder, sync avec la sidebar */
    background-color:#1a1a1a; /* fallback bg si image absente */
}
/* Le min-height, l'overlay ::before et le contenu sont déjà gérés par .fd-projet-header / .fd-projet-header-content */

/* Bandeau hero Bourse : on calque le pattern single-projet (URBAN ART FAIR).
   - 1ère ligne (.fd-projet-first, width 55%) : statut à gauche + date
     d'ouverture à droite (float).
   - 2e ligne (.fd-projet-two) : positionnement géré par le CSS single-projet
     d'origine (style.css). */
.fd-bourse-hero .fd-projet-date-start{
    float:right;
}

/* ---------- SECTION GENERIC ---------- */
.fd-bourse__container{
    max-width:1440px;
    padding:0 1.5rem;
    margin:0 auto;
    width:100%;
}
.fd-bourse__section-title{
    font-size:2.5rem;
    font-weight:700;
    text-transform:uppercase;
    margin-bottom:2rem;
    line-height:1.1;
}
.fd-bourse__section-eyebrow{
    font-family:"Nimbus Sans L Condensed",sans-serif;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.18em;
    font-size:.85rem;
    color:#666;
    margin-bottom:.8rem;
    display:flex;
    align-items:center;
    gap:.7rem;
}
.fd-bourse__section-eyebrow::before{
    content:"";
    width:2rem;
    height:1px;
    background:currentColor;
}

/* ---------- INTRO 2-COLS (v2 : illustration + texte / sidebar sticky "Infos pratiques") ----------
 *
 * Layout : calque exact de single-projet (.fd-projet-content-wrapper, grid 2fr 1fr,
 * gap 1.5rem hérité de style.css). On REPREND les classes .fd-projet-* déjà stylées
 * (.fd-projet-subtitle-h2, .fd-projet-chapeau_projet, .fd-projet-description) pour
 * profiter automatiquement des marges/typos exactes du single-projet, sans dupliquer.
 *
 * Spécifique Bourse :
 *   - sidebar sticky en CSS pur (le JS #sidebarSticky n'est enqueué que sur single-projet),
 *   - bloc jaune "Infos pratiques" + 3 CTAs (v2 maquette).
 */
.fd-bourse-intro-container{
    margin:6rem auto 5rem; /* espace large autour de la section, comme dans .fd-projet-container */
    overflow:visible; /* permet à la sidebar sticky de scroller jusqu'au bord du conteneur (.fd-projet-container hérité de style.css pose `overflow-x:hidden` qui casserait le sticky) */
}

/* Le grid wrapper doit aligner ses items "en haut" sinon ils prennent tous
 * la hauteur de la plus grande cellule, et la sidebar n'a aucune marge pour
 * scroller (sticky ne peut alors pas se déclencher). */
.fd-bourse-intro-container > .fd-projet-content-wrapper{
    align-items:start;
}

/* Illustration en tête de colonne gauche — bord franc, sans ratio forcé. */
.fd-bourse-illu{
    margin:0 0 2rem;
}
.fd-bourse-illu__img{
    width:100%;
    height:auto;
    display:block;
}

/* Petit eyebrow au-dessus du H2 (sous l'image). */
.fd-bourse-intro-main .fd-bourse__section-eyebrow{
    margin-top:.5rem;
}

/* Respiration verticale alignée sur la page projet (single-projet) :
 * titre H2 → espace → chapeau gras → espace → corps. On REMONTE les marges
 * naturelles de .fd-projet-chapeau_projet (margin-top:3rem / margin-bottom:1rem,
 * line-height:1.4) au lieu de les écraser à 0, ce qui collait tout le bloc
 * (retour client 25-05-26 : « ça manque d'espace entre les lignes »). */
.fd-bourse-intro-main .fd-bourse-intro__title{
    margin:0 0 1.5rem;
}
.fd-bourse-intro-main .fd-bourse-intro__chapeau{
    margin:0 0 2rem;
    line-height:1.5;
}
/* Espace entre les paragraphes du corps + interligne lisible (calque projet). */
.fd-bourse-intro-main .fd-bourse-intro__body p{
    margin-bottom:1.1rem;
    line-height:1.65;
}
.fd-bourse-intro-main .fd-bourse-intro__body p:last-child{
    margin-bottom:0;
}

/* ---------- SIDEBAR v2 — bloc jaune "Infos pratiques" + 3 CTAs ----------
 *
 * Position sticky pure CSS (le JS #sidebarSticky n'est enqueué que sur
 * single-projet où la classe .fd-projet-sidebar-outer reçoit volontairement
 * `position:relative` pour laisser le JS gérer le scroll.
 *
 * Sur la page Bourse, on N'A PAS le JS sticky. Il faut donc forcer
 * `position:sticky` par-dessus la règle `.fd-projet-sidebar-outer{position:relative}`
 * de style.css. Spécificité bumpée via le sélecteur composé `.fd-bourse-page
 * .fd-bourse-sidebar-outer` (3 classes vs 1), avec `!important` en filet
 * de sécurité contre les overrides à venir.
 */
.fd-bourse-page .fd-bourse-sidebar-outer{
    position:-webkit-sticky;
    position:sticky !important;
    top:8rem; /* distance depuis le haut du viewport quand la sidebar se colle au scroll */
    align-self:start;
    height:auto !important; /* annule le `height:auto !important` théorique sans rien casser */
    z-index:5;
}
.fd-bourse-sidebar{
    background:var(--fd-bourse-color-sidebar-bg,#f4c73c);
    color:var(--fd-bourse-color-text,#000);
    padding:2rem 1.6rem 2.2rem;
}
.fd-bourse-sidebar__title{
    font-size:1.4rem;
    font-weight:700;
    text-transform:uppercase;
    line-height:1;
    margin:0 0 1.5rem;
    letter-spacing:-.005em;
    padding-bottom:.9rem;
    border-bottom:2px solid var(--fd-bourse-color-rule,#000);
}
.fd-bourse-sidebar__group{margin-bottom:1.5rem}
.fd-bourse-sidebar__group:last-child{margin-bottom:0}
/* Hiérarchie : le LABEL (DATE, FAQ…) doit être plus gros / affirmé que la
 * valeur qu'il introduit (calque page projet, retour client 25-05-26 :
 * « le DATE et F.A.Q devraient être écrits un peu plus gros que ce qu'ils
 * introduisent »). On inverse donc le rapport de tailles précédent. */
.fd-bourse-sidebar__label{
    font-weight:700;
    text-transform:uppercase;
    font-size:1.15rem;
    letter-spacing:.02em;
    line-height:1.1;
    margin-bottom:.4rem;
}
.fd-bourse-sidebar__value{
    font-size:.95rem;
    font-weight:400;
    line-height:1.4;
}
.fd-bourse-sidebar__value strong{font-weight:700}

/* 3 CTAs empilés. Le primary (Postuler) est sur fond noir avec texte jaune.
 * margin-top conséquent car le séparateur (.fd-bourse-sidebar__rule) a été
 * retiré (retour client 25-05-26 : « effacer la deuxième ligne »). */
.fd-bourse-sidebar__ctas{
    display:flex;
    flex-direction:column;
    gap:.6rem;
    margin-top:1.8rem;
}
.fd-bourse-sidebar__cta{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:.8rem;
    background:var(--fd-bourse-color-cta-bg,#000);
    color:var(--fd-bourse-color-cta-text,#fff);
    padding:.95rem 1rem;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.04em;
    font-size:.88rem;
    border:2px solid var(--fd-bourse-color-cta-bg,#000);
    transition:background .2s,color .2s;
    line-height:1.1;
}
.fd-bourse-sidebar__cta svg{
    flex:0 0 auto;
    transition:transform .25s;
}
.fd-bourse-sidebar__cta:hover{
    background:transparent;
    color:var(--fd-bourse-color-cta-bg,#000);
}
.fd-bourse-sidebar__cta:hover svg{transform:translateX(4px)}
.fd-bourse-sidebar__cta--primary{
    background:var(--fd-bourse-color-cta-bg,#000);
    color:var(--fd-bourse-color-accent,#f4c73c);
    border-color:var(--fd-bourse-color-cta-bg,#000);
}
.fd-bourse-sidebar__cta--primary:hover{
    background:var(--fd-bourse-color-cta-bg,#000);
    color:var(--fd-bourse-color-cta-text,#fff);
}
.fd-bourse-sidebar__cta small{
    display:block;
    font-size:.7rem;
    font-weight:400;
    letter-spacing:.12em;
    color:#fff;
    margin-top:.2rem;
    text-transform:uppercase;
}
.fd-bourse-sidebar__cta:hover small{
    color:inherit;
}

/* ============================================================
   GRILLE 4 TUILES — POUR ? / QUI ? / LE SOUTIEN / POSTULER (v2)
   ============================================================ */
.fd-bourse-tiles{
    padding:5rem 0 6rem;
    background:#fff;
    border-top:1px solid #000;
}
.fd-bourse-tiles__header{
    margin-bottom:2.5rem;
    max-width:60ch;
}
.fd-bourse-tiles__heading{
    font-size:.78rem;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.22em;
    color:#666;
    margin-bottom:.7rem;
}
.fd-bourse-tiles__heading::before{
    content:"";
    display:inline-block;
    width:2rem;
    height:1px;
    background:currentColor;
    vertical-align:middle;
    margin-right:.7rem;
    margin-bottom:.2rem;
}
.fd-bourse-tiles__grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:1.2rem;
}
.fd-tile{
    aspect-ratio:3/4;
    padding:2rem 1.8rem;
    display:flex;
    flex-direction:column;
    gap:1.4rem;
    color:#000;
    position:relative;
}
/* Les 4 tuiles : ordre DOM = orange / peach / mauve / yellow. */
/* Couleurs pilotables individuellement (--fd-bourse-tile-N-bg/text). */
.fd-tile--orange{background:var(--fd-bourse-tile-1-bg,#dc5a3c);color:var(--fd-bourse-tile-1-text,#000)}
.fd-tile--peach{background:var(--fd-bourse-tile-2-bg,#f4d5c0);color:var(--fd-bourse-tile-2-text,#000)}
.fd-tile--mauve{background:var(--fd-bourse-tile-3-bg,#b68590);color:var(--fd-bourse-tile-3-text,#000)}
.fd-tile--yellow{background:var(--fd-bourse-tile-4-bg,#f4c73c);color:var(--fd-bourse-tile-4-text,#000)}
.fd-tile__title{
    font-size:clamp(1.5rem,2.4vw,2.1rem);
    font-weight:700;
    text-transform:uppercase;
    line-height:.95;
    letter-spacing:-.005em;
    padding-bottom:.9rem;
    margin:0;
    border-bottom:1.5px solid #000;
}
.fd-tile__list{
    display:flex;
    flex-direction:column;
    gap:.7rem;
    flex:1;
    list-style:none;
    margin:0;
    padding:0;
}
.fd-tile__list li{
    font-size:1.02rem;
    font-weight:700;
    line-height:1.25;
}
.fd-tile__rule{
    height:1px;
    background:#000;
    opacity:.55;
    margin:.4rem 0;
    align-self:stretch;
}
.fd-tile__quote{
    font-size:.98rem;
    font-weight:700;
    line-height:1.3;
    font-style:italic;
    padding-top:.9rem;
    border-top:1.5px solid #000;
}
.fd-tile__footer{
    font-size:.95rem;
    font-weight:700;
    line-height:1.3;
    padding-top:.4rem;
}
.fd-tile__cta{
    margin-top:auto;
    display:inline-flex;
    align-items:center;
    gap:.6rem;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.1em;
    font-size:.85rem;
    padding-top:1rem;
    border-top:1.5px solid #000;
    color:#000;
}
.fd-tile__cta svg{transition:transform .25s}
.fd-tile:hover .fd-tile__cta svg{transform:translateX(5px)}

/* ============================================================
   CRITÈRES + CALENDRIER — 2 colonnes brutes, fond crème (v2)
   ============================================================ */
.fd-bourse-meta{
    background:var(--fd-bourse-meta-bg,#f4f1eb);
    color:var(--fd-bourse-meta-text,#1a1a1a);
    padding:6rem 0;
    border-top:1px solid #000;
    border-bottom:1px solid #000;
}
.fd-bourse-meta__grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:4rem;
    align-items:start;
}
.fd-bourse-meta__col h3{
    font-size:1.9rem;
    font-weight:700;
    text-transform:uppercase;
    line-height:1;
    padding-bottom:.9rem;
    border-bottom:2px solid #000;
    margin-bottom:1.5rem;
    letter-spacing:-.01em;
    margin-top:0;
}
.fd-bourse-meta__col p{
    font-size:1.05rem;
    line-height:1.5;
    margin-bottom:1rem;
    color:var(--fd-bourse-meta-text,#1a1a1a);
}
.fd-bourse-meta__col ul{
    list-style:none;
    margin:0;
    padding:0;
}
.fd-bourse-meta__col li{
    padding:.85rem 0;
    border-bottom:1px solid rgba(0,0,0,.35);
    font-size:1.02rem;
    line-height:1.4;
}
.fd-bourse-meta__col li:last-child{border-bottom:none}
.fd-bourse-meta__col--criteres li{
    padding:.55rem 0 .55rem 1.6rem;
    position:relative;
    border-bottom:1px solid rgba(0,0,0,.25);
}
/* Alignement vertical des deux listes (retour client 25-05-26) : la colonne
 * Critères a un paragraphe d'intro qui décale sa liste vers le bas ; la colonne
 * Calendrier n'en a pas. On réserve un espace équivalent en tête de la liste
 * Calendrier pour que les deux listes démarrent à la même hauteur. */
.fd-bourse-meta__col--calendrier .fd-bourse-meta__calendar{
    margin-top:2.55rem;
}
.fd-bourse-meta__col--criteres li::before{
    content:"→";
    position:absolute;
    left:0;
    top:.55rem;
    font-weight:700;
    line-height:1.4;
    color:var(--fd-bourse-meta-text,#000);
}
.fd-bourse-meta__calendar li{
    display:flex;
    gap:1rem;
    align-items:baseline;
}
.fd-bourse-meta__calendar li strong{
    flex:0 0 9rem;
    font-weight:700;
    text-transform:uppercase;
    font-size:.82rem;
    letter-spacing:.12em;
    color:#000;
}

/* ============================================================
   JURY — section simplifiée (refonte retour client 25-05-26)
   Principe « LA BOURSE » : titre en haut puis liste verticale, pleine
   largeur, SANS layout titre-gauche/contenu-droite, SANS traits ni tableau.
   Plus resserré pour réduire fortement la place prise par cette section.
   ============================================================ */
.fd-bourse-jury{
    background:var(--fd-bourse-jury-bg,#000);
    color:var(--fd-bourse-jury-text,#fff);
    padding:3.5rem 0;
}
.fd-bourse-jury__title{
    font-size:clamp(1.8rem,3vw,2.6rem);
    font-weight:700;
    text-transform:uppercase;
    line-height:1;
    letter-spacing:-.015em;
    margin:0 0 1.5rem;
}
.fd-bourse-jury__intro{
    font-size:1.05rem;
    line-height:1.5;
    margin:0 0 2rem;
    opacity:.85;
    max-width:760px;
}
/* Liste compacte : 2 colonnes sans aucun trait/bordure, items resserrés. */
.fd-bourse-jury__list{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:1rem 4rem;
    list-style:none;
    margin:0;
    padding:0;
}
.fd-bourse-jury__list li{
    display:flex;
    flex-direction:column;
    gap:.1rem;
}
.fd-bourse-jury__name{
    font-size:1.05rem;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:-.005em;
}
.fd-bourse-jury__role{
    font-size:.8rem;
    letter-spacing:.08em;
    opacity:.65;
    text-transform:uppercase;
}

/* ---------- FORMULAIRE ---------- */
.fd-bourse-form-section{
    padding:6rem 0;
    border-top:1px solid #000;
}
.fd-bourse-form-section__intro{
    max-width:760px;
    margin-bottom:3rem;
}
.fd-bourse-form-section__intro p{
    font-size:1.1rem;
    line-height:1.55;
    color:#222;
}
.fd-bourse-form-section__credit{
    margin-top:3rem;
    padding-top:1.5rem;
    border-top:1px solid color-mix(in srgb, currentColor 15%, transparent);
    font-size:.85rem;
    line-height:1.5;
    color:color-mix(in srgb, currentColor 60%, transparent);
    font-style:italic;
}

/* Encart « à venir » / « récemment clos » : remplace le bloc formulaire
   quand la phase courante n'est pas « ouvert ». Layout simple et lisible,
   centré dans la section postuler. */
.fd-bourse-encart{
    max-width:760px;
    margin:0 auto;
    padding:3rem 0;
    text-align:left;
}
.fd-bourse-encart .fd-bourse__section-title{
    margin-top:.5rem;
    margin-bottom:1.5rem;
}
.fd-bourse-encart__corps{
    font-size:1.1rem;
    line-height:1.6;
    color:#222;
}
.fd-bourse-encart__corps p{
    margin:0 0 1rem;
}
.fd-bourse-encart__corps p:last-child{
    margin-bottom:0;
}
.fd-bourse-encart__corps a{
    text-decoration:underline;
    font-weight:700;
}
.fd-bourse-form{
    display:grid;
    grid-template-columns:200px minmax(0,1fr);
    gap:2.5rem;
    align-items:start;
}
.fd-bourse-form__aside{
    position:sticky;
    top:8rem;
}
.fd-bourse-form__stepper{
    list-style:none;
    border-left:1px solid #000;
    padding-left:1.5rem;
    margin:0;
}
.fd-bourse-form__stepper li{
    padding:.7rem 0;
    font-family:"Nimbus Sans L Condensed",sans-serif;
    text-transform:uppercase;
    font-size:.95rem;
    letter-spacing:.05em;
    font-weight:700;
    color:#666;
    position:relative;
    cursor:pointer;
}
.fd-bourse-form__stepper li::before{
    content:"";
    position:absolute;
    left:-1.85rem;
    top:1.05rem;
    width:.6rem;
    height:.6rem;
    background:#fff;
    border:1px solid #000;
    border-radius:50%;
}
.fd-bourse-form__stepper li.is-active{color:#000}
.fd-bourse-form__stepper li.is-active::before{background:#000}
.fd-bourse-form__stepper li small{
    display:block;
    font-family:"Nimbus Sans L",sans-serif;
    font-weight:400;
    font-size:.78rem;
    color:#888;
    letter-spacing:0;
    margin-top:.15rem;
    text-transform:none;
}

.fd-bourse-form__main{
    background:#fff;
    padding:3rem 3rem 2.5rem;
    border:1px solid #000;
}
.fd-bourse-fieldset{
    border:none;
    margin-bottom:3rem;
    padding:0;
}
.fd-bourse-fieldset:last-of-type{margin-bottom:1.5rem}
.fd-bourse-fieldset__legend{
    font-family:"Nimbus Sans L",sans-serif;
    font-weight:700;
    text-transform:uppercase;
    font-size:1.15rem;
    letter-spacing:.02em;
    margin-bottom:1.5rem;
    padding-bottom:.6rem;
    border-bottom:2px solid #000;
    width:100%;
    display:flex;
    justify-content:space-between;
    align-items:baseline;
}
.fd-bourse-fieldset__legend small{
    font-family:"Nimbus Sans L Condensed",sans-serif;
    font-size:.8rem;
    color:#888;
    letter-spacing:.15em;
    font-weight:400;
}

.fd-bourse-form__row{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:1.2rem;
    margin-bottom:1.2rem;
}
.fd-bourse-form__row--full{grid-template-columns:1fr}
.fd-bourse-form__row--3{grid-template-columns:1fr 1fr 1fr}

.fd-field{
    display:flex;
    flex-direction:column;
    position:relative;
}
.fd-field__label{
    font-size:.78rem;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.1em;
    margin-bottom:.45rem;
    color:#000;
}
.fd-field__opt{
    color:#888;
    font-weight:400;
    text-transform:none;
    letter-spacing:0;
}
.fd-field__label .req{color:#d32f2f;margin-left:.15rem}
.fd-field__hint{
    font-size:.78rem;
    color:#666;
    margin-top:.35rem;
    line-height:1.3;
}
.fd-field__input,
.fd-field__select{
    width:100%;
    padding:.85rem .9rem;
    border:1px solid #999;
    border-radius:0;
    background:#fff;
    font-family:"Nimbus Sans L",sans-serif;
    font-size:1rem;
    transition:border-color .2s,box-shadow .2s;
}
.fd-field__input:focus,
.fd-field__select:focus{
    outline:none;
    border-color:#000;
    box-shadow:inset 0 -3px 0 #000;
}
.fd-field__input::placeholder{color:#aaa}
.fd-field__input[aria-invalid="true"]{
    border-color:#d32f2f;
    box-shadow:inset 0 -3px 0 #d32f2f;
}
.fd-field__error{
    color:#d32f2f;
    font-size:.78rem;
    margin-top:.35rem;
    display:none;
}
.fd-field__error.show{display:block}

/* ---------- UPLOAD ZONES ---------- */
.fd-uploads{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:1rem;
}
.fd-upload{
    position:relative;
    border:1.5px dashed #999;
    background:#fafaf7;
    padding:1.3rem 1.2rem;
    display:flex;
    flex-direction:column;
    gap:.6rem;
    transition:border-color .2s,background-color .2s;
}
.fd-upload:hover,
.fd-upload.is-dragover{
    border-color:#000;
    background:#fff;
}
.fd-upload.is-filled{
    border-style:solid;
    border-color:#000;
    background:#fff;
}
.fd-upload__head{
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    gap:1rem;
}
.fd-upload__title{
    font-size:.85rem;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.08em;
}
.fd-upload__title .req{color:#d32f2f}
.fd-upload__limit{
    font-family:"Nimbus Sans L Condensed",sans-serif;
    font-size:.72rem;
    color:#777;
    letter-spacing:.05em;
    text-transform:uppercase;
}
.fd-upload__hint{
    font-size:.82rem;
    color:#666;
    line-height:1.35;
}
.fd-upload__row{
    display:flex;
    align-items:center;
    gap:.8rem;
    margin-top:.3rem;
}
.fd-upload__btn{
    padding:.55rem 1rem;
    border:1.5px solid #000;
    background:#fff;
    font-family:"Nimbus Sans L Condensed",sans-serif;
    font-size:.78rem;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.1em;
    cursor:pointer;
    transition:all .2s;
    flex-shrink:0;
}
.fd-upload__btn:hover{background:#000;color:#fff}
.fd-upload__file{
    font-size:.85rem;
    color:#222;
    font-weight:700;
    display:none;
    flex:1 1 0;
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.fd-upload.is-filled .fd-upload__file{display:block}
.fd-upload.is-filled .fd-upload__btn-label{display:none}
.fd-upload.is-filled .fd-upload__btn::before{content:"Remplacer"}
.fd-upload__remove{
    font-size:.75rem;
    color:#d32f2f;
    font-weight:700;
    text-decoration:underline;
    cursor:pointer;
    display:none;
    flex-shrink:0;
}
.fd-upload.is-filled .fd-upload__remove{display:inline}
.fd-upload input[type="file"]{
    position:absolute;
    width:1px;
    height:1px;
    opacity:0;
    overflow:hidden;
}

/* ---------- CONSENT + SUBMIT ---------- */
.fd-bourse-consent{
    margin-top:2rem;
    padding:1.5rem;
    background:#f7f5ee;
}
.fd-bourse-consent label{
    display:flex;
    gap:.8rem;
    align-items:flex-start;
    font-size:.93rem;
    line-height:1.45;
    cursor:pointer;
}
.fd-bourse-consent input[type="checkbox"]{
    flex:0 0 auto;
    width:18px;
    height:18px;
    margin-top:.2rem;
    accent-color:#000;
}
.fd-bourse-consent a{text-decoration:underline}
.fd-bourse-consent__required{
    font-weight:700;
    color:#1a1a1a;
    margin-left:.15rem;
    white-space:nowrap;
}

.fd-bourse-submit-row{
    margin-top:2rem;
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:1.5rem;
    flex-wrap:wrap;
}
.fd-bourse-submit-row p{
    font-size:.85rem;
    color:#666;
    max-width:380px;
}
.fd-btn-primary{
    display:inline-flex;
    align-items:center;
    gap:.8rem;
    padding:1.1rem 2.4rem;
    background:#000;
    color:#fff;
    border:2px solid #000;
    font-family:"Nimbus Sans L",sans-serif;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.05em;
    font-size:1rem;
    cursor:pointer;
    transition:all .25s;
}
.fd-btn-primary:hover{
    background:transparent;
    color:#000;
}
.fd-btn-primary svg{transition:transform .3s}
.fd-btn-primary:hover svg{transform:translateX(5px)}

/* honeypot anti-spam */
.fd-bourse-hp{
    position:absolute;
    left:-9999px;
    width:1px;
    height:1px;
    overflow:hidden;
}

/* ---------- ACCESSIBILITÉ (RGAA) ---------- */
/* Note "champs obligatoires" en haut du formulaire */
.fd-bourse-form__required-note{
    max-width:760px;
    margin-bottom:2rem;
    font-size:.85rem;
    color:#444;
    display:flex;
    align-items:center;
    gap:.5rem;
}
.fd-bourse-form__required-note span[aria-hidden]{
    color:#d32f2f;
    font-weight:700;
    font-size:1.1rem;
}

/* Bloc récap d'erreurs accessible (focus visible, role=alert) */
.fd-bourse-form-errors{
    max-width:760px;
    margin:0 0 2rem;
    padding:1.2rem 1.4rem;
    background:#fdecec;
    border-left:4px solid #d32f2f;
    color:#700;
}
.fd-bourse-form-errors:focus{
    outline:3px solid #d32f2f;
    outline-offset:2px;
}
.fd-bourse-form-errors strong{
    display:block;
    margin-bottom:.6rem;
    font-size:1rem;
    text-transform:uppercase;
    letter-spacing:.05em;
}
.fd-bourse-form-errors ul{
    margin:0;
    padding-left:1.2rem;
    list-style:disc;
}
.fd-bourse-form-errors li{margin-bottom:.3rem}
.fd-bourse-form-errors a{
    color:#700;
    text-decoration:underline;
}
.fd-bourse-form-errors a:hover,
.fd-bourse-form-errors a:focus{text-decoration:none}

/* Focus visible RGAA-conforme sur tous les contrôles du formulaire */
.fd-bourse-form input:focus-visible,
.fd-bourse-form select:focus-visible,
.fd-bourse-form button:focus-visible,
.fd-bourse-form a:focus-visible,
.fd-bourse-form label:focus-within{
    outline:3px solid #0066cc;
    outline-offset:2px;
}

/* Upload en erreur — visible et compréhensible sans la couleur seule */
.fd-upload input[aria-invalid="true"] + .fd-field__error,
.fd-upload .fd-field__error.show{
    color:#d32f2f;
    font-size:.78rem;
    margin-top:.5rem;
    font-weight:700;
}
.fd-upload:has(input[aria-invalid="true"]){
    border-color:#d32f2f;
    border-style:solid;
}

/* Consent en erreur */
.fd-bourse-consent.has-error{
    background:#fdecec;
}
.fd-bourse-consent.has-error .fd-field__error{
    margin-top:.6rem;
    margin-left:2rem;
}

/* Page de confirmation */
.fd-bourse-success{
    max-width:760px;
    padding:3rem 0;
}
.fd-bourse-success__ref{
    font-size:1.15rem;
    line-height:1.5;
    margin-bottom:1rem;
}
.fd-bourse-success p{
    margin-bottom:1.2rem;
}
.fd-bourse-success a.fd-btn-primary{
    text-decoration:none;
}

/* ---------- PAGE CLOSED (hors période) ---------- */
.fd-bourse--closed .fd-bourse__container{
    padding-top:6rem;
    padding-bottom:6rem;
}
.fd-bourse--closed .fd-bourse__header{
    margin-bottom:2rem;
}
.fd-bourse--closed .fd-bourse__title{
    font-size:3.5rem;
    font-weight:700;
    text-transform:uppercase;
    line-height:.95;
    letter-spacing:-.01em;
}
.fd-bourse--closed .fd-bourse__cloture{
    max-width:760px;
    font-size:1.1rem;
    line-height:1.55;
    color:#222;
}

/* ---------- RESPONSIVE ---------- */
@media (max-width:991px){
    .fd-bourse-hero__title{font-size:5.5rem}
    /* Section 2-cols : la sidebar passe sous le contenu, sticky désactivé. */
    .fd-bourse-sidebar-outer{position:static;margin-top:2rem}
    /* 4 tuiles : passent en grille 2×2 */
    .fd-bourse-tiles__grid{grid-template-columns:repeat(2,1fr)}
    .fd-tile{aspect-ratio:1/1}
    /* Critères + Calendrier : 1 colonne */
    .fd-bourse-meta__grid{
        grid-template-columns:1fr;
        gap:2rem;
    }
    /* En 1 colonne, plus besoin de réserver l'espace d'alignement en tête du
     * calendrier (les colonnes sont empilées, pas côte à côte). */
    .fd-bourse-meta__col--calendrier .fd-bourse-meta__calendar{
        margin-top:0;
    }
    /* Liste jury : 1 colonne sur petit écran. */
    .fd-bourse-jury__list{grid-template-columns:1fr;gap:1rem}
    .fd-bourse-form{
        grid-template-columns:1fr;
        gap:2rem;
    }
    .fd-bourse-form__aside{position:static}
    .fd-bourse-form__main{padding:2rem 1.5rem}
    .fd-bourse-form__row,
    .fd-bourse-form__row--3{grid-template-columns:1fr}
    .fd-uploads{grid-template-columns:1fr}
}

@media (max-width:768px){
    .fd-bourse-hero{min-height:480px}
    .fd-bourse-hero__title{font-size:3.5rem}
    .fd-bourse-hero__meta{gap:1.5rem}
    .fd-bourse-hero__meta-value strong{font-size:1.5rem}
    .fd-bourse-intro-container{padding:3rem 1.25rem 2.5rem}
    .fd-bourse-form-section{padding:4rem 0}
    .fd-bourse--closed .fd-bourse__title{font-size:2.5rem}
    /* 4 tuiles passent en colonne unique */
    .fd-bourse-tiles__grid{grid-template-columns:1fr}
    .fd-tile{aspect-ratio:auto;min-height:280px}
    /* Calendrier : la date passe au-dessus du libellé */
    .fd-bourse-meta__calendar li{flex-direction:column;gap:.25rem}
    .fd-bourse-meta__calendar li strong{flex:none}
}

/* === Page fermée — bloc message (phase 9a) === */
.fd-bourse-closed-msg {
    padding: 60px 0;
    text-align: center;
}
.fd-bourse-closed-msg__title {
    font-size: 28px;
    margin-bottom: 20px;
}
.fd-bourse-closed-msg__body {
    max-width: 600px;
    margin: 0 auto 30px;
    font-size: 16px;
    line-height: 1.6;
    color: #444;
}
.fd-bourse-closed-msg__ctas {
    display: flex;
    gap: 15px;
    justify-content: center;
    flex-wrap: wrap;
}
.fd-bourse-closed-msg__cta {
    display: inline-block;
    padding: 12px 28px;
    border-radius: 4px;
    text-decoration: none;
    font-weight: 600;
    transition: transform .15s, box-shadow .15s;
}
.fd-bourse-closed-msg__cta--primary {
    background: #1d1d1b;
    color: white;
}
.fd-bourse-closed-msg__cta--secondary {
    background: transparent;
    color: #1d1d1b;
    border: 2px solid #1d1d1b;
}
.fd-bourse-closed-msg__cta:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0,0,0,.1);
}

/* ---------- MASQUAGE EYEBROWS & HEADINGS DE SECTION ---------- */
/* Masque les libellés type "L'appel à candidatures", "Candidature reçue", */
/* "Prochaine session" / "Édition terminée", "Le jury de la Bourse", etc. */
.fd-bourse__section-eyebrow,
.fd-bourse-tiles__heading,
.fd-bourse-jury__heading {
    display: none !important;
}

/* ============================================================
   PAGE FAQ — accordéons par section (HTML5 <details>/<summary>)
   Servi par templates/bourse/page-bourse-faq.php.
   ============================================================ */
.fd-bourse--faq .fd-bourse-hero--faq {
    min-height: auto;
    /* padding-top augmenté pour décoller le titre du logo Fondation en
     * haut (retour client 25-05-26 : « baisser un peu le titre »). */
    padding: 9rem 0 4rem;
    /* Couleur de fond/texte pilotable depuis le builder Bourse (options
     * fd_bourse_faq_color_bg / fd_bourse_faq_color_text injectées en inline
     * style). Fallback : fond noir / texte blanc (retour client 25-05-26 :
     * « pouvoir choisir la couleur derrière, pas forcément noir »). */
    background-color: var(--fd-faq-bg, #000) !important;
    background-image: none !important;
    color: var(--fd-faq-text, #fff);
}
/* Le hero FAQ est un aplat de couleur (pas de photo de fond) : on neutralise
 * l'overlay sombre rgba(0,0,0,.5) hérité de .fd-projet-header::before, sinon
 * la couleur choisie depuis le builder ressort assombrie de 50 %.
 * (Retour client : « retirer le filtre noir pour avoir pleinement la couleur ».) */
.fd-bourse--faq .fd-bourse-hero--faq::before {
    display: none !important;
}
.fd-bourse--faq .fd-bourse-hero--faq .fd-projet-title {
    color: var(--fd-faq-text, #fff);
}
.fd-bourse-faq-container {
    max-width: 920px;
    margin: 0 auto;
    /* padding-top réduit pour que le texte d'intro arrive plus rapidement
     * après le hero (retour client 25-05-26 : « remonter le texte »). */
    padding: 2rem 1.5rem 6rem;
}
.fd-bourse-faq__intro {
    font-size: 1.1rem;
    line-height: 1.6;
    color: #222;
    /* Plus de trait gris sous l'intro (retour client 25-05-26). */
    margin-bottom: 2.5rem;
}
.fd-bourse-faq__section {
    margin-bottom: 3.5rem;
}
.fd-bourse-faq__section-header {
    display: flex;
    align-items: baseline;
    gap: 1rem;
    margin-bottom: 1.5rem;
    padding-bottom: .9rem;
    border-bottom: 2px solid currentColor;
}
.fd-bourse-faq__section-eyebrow {
    font-size: .85rem;
    font-weight: 700;
    letter-spacing: .22em;
    opacity: .55;
    text-transform: uppercase;
}
.fd-bourse-faq__section-title {
    font-size: clamp(1.6rem, 2.6vw, 2.1rem);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: -.01em;
    margin: 0;
    line-height: 1;
}
.fd-bourse-faq__list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.fd-bourse-faq__item {
    border-bottom: 1px solid color-mix(in srgb, currentColor 12%, transparent);
}
.fd-bourse-faq__details {
    padding: 0;
}
.fd-bourse-faq__details > summary {
    list-style: none;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1.5rem;
    padding: 1.25rem 0;
    user-select: none;
    transition: color .2s ease;
}
.fd-bourse-faq__details > summary::-webkit-details-marker {
    display: none;
}
.fd-bourse-faq__details > summary:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 4px;
}
.fd-bourse-faq__question-text {
    font-size: 1.05rem;
    font-weight: 600;
    line-height: 1.4;
    flex: 1;
}
.fd-bourse-faq__chevron {
    flex: 0 0 auto;
    width: 14px;
    height: 14px;
    position: relative;
    transition: transform .25s ease;
}
.fd-bourse-faq__chevron::before,
.fd-bourse-faq__chevron::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 14px;
    height: 2px;
    background: currentColor;
    transform-origin: center;
    transition: transform .25s ease;
}
.fd-bourse-faq__chevron::before {
    transform: translate(-50%, -50%) rotate(0deg);
}
.fd-bourse-faq__chevron::after {
    transform: translate(-50%, -50%) rotate(90deg);
}
.fd-bourse-faq__details[open] .fd-bourse-faq__chevron::after {
    transform: translate(-50%, -50%) rotate(0deg);
}
.fd-bourse-faq__answer {
    padding: 0 0 1.5rem;
    font-size: 1rem;
    line-height: 1.65;
    color: #333;
}
.fd-bourse-faq__answer p {
    margin: 0 0 .8rem;
}
.fd-bourse-faq__answer p:last-child {
    margin-bottom: 0;
}
.fd-bourse-faq__answer ul {
    margin: .5rem 0 0;
    padding-left: 1.3rem;
}
.fd-bourse-faq__answer ul li {
    margin-bottom: .35rem;
    line-height: 1.55;
}
.fd-bourse-faq__back {
    margin-top: 4rem;
    padding-top: 2rem;
    border-top: 1px solid color-mix(in srgb, currentColor 15%, transparent);
}
.fd-bourse-faq__back-link {
    display: inline-block;
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px solid currentColor;
    padding-bottom: 2px;
    transition: opacity .2s ease;
}
.fd-bourse-faq__back-link:hover {
    opacity: .7;
}

@media (max-width: 640px) {
    .fd-bourse-faq-container {
        padding: 2.5rem 1.2rem 4rem;
    }
    .fd-bourse-faq__section-header {
        flex-direction: column;
        gap: .4rem;
    }
    .fd-bourse-faq__details > summary {
        gap: 1rem;
    }
    .fd-bourse-faq__question-text {
        font-size: 1rem;
    }
}
