/* Symetrie des formulaires (06.10.2026) : champs paralleles de meme taille,
   blocs cote a cote de meme hauteur, aucune ligne a moitie vide.
   Charge en dernier sur toutes les pages publiques. */

/* Marche : les puces radio cachees etaient positionnees par rapport a la page
   (largeur 100 %), ce qui elargissait le document a 1980 px. */
.mk-chip-opt, .mk-mini, .mk-choice, .mk-cat-opt { position: relative; }
.mk-chip-opt input, .mk-cat-opt input, .mk-choice input { width: 1px !important; height: 1px !important; min-height: 0 !important; padding: 0 !important; }

/* Marche : « .mk-row » sert a la fois aux lignes du tableau d'annonces (grille 5 colonnes, market.css l.878)
   et aux lignes de formulaire. Dans un formulaire, on retablit la ligne de champs souple. */
form .mk-row, fieldset .mk-row, .mk-panel .mk-row { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 14px 18px; grid-template-columns: none; position: static; padding: 0; border-bottom: 0; }
form .mk-row:hover, fieldset .mk-row:hover, .mk-panel .mk-row:hover { background: none; }
form .mk-row > .mk-field, .mk-panel .mk-row > .mk-field { flex: 1 1 0; }
form .mk-row > .mk-field-s, .mk-panel .mk-row > .mk-field-s { flex: 1 1 0; }

/* Marche, ligne garantie + cases : meme hauteur que la liste deroulante, colonnes egales. */
form .mk-row:has(> .mk-check), .mk-panel .mk-row:has(> .mk-check) { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); align-items: end; }
form .mk-row:has(> .mk-check) > .mk-field-s { flex: none; }
.mk-row > .mk-check { min-height: 46px; padding: 0 14px; border-radius: 10px; box-shadow: inset 0 0 0 1px var(--mk-line-2, #d9cfbf); background: #fff; }
.mk-row .mk-field select, .mk-row .mk-field input, .mk-row .mk-euro { min-height: 46px; }

/* Jobs, inscription : lien de retour et etape sur deux lignes distinctes. */
.jb-auth-main > .jb-back { display: inline-block; margin-bottom: 14px; }
.jb-auth-main > .jb-back + .jb-kicker { display: block; }

/* Jobs, telephone : le bouton prenom deborde de l'ecran (la carte membre le remplace dans l'espace). */
@media (max-width: 520px) {
    .jx-top-actions { gap: 6px; }
    .jx-top-actions > a.jx-btn-line:not(.jx-nav-msg) { display: none; }
}
/* Marche, telephone : champs d'une meme ligne empiles en pleine largeur, cases en deux colonnes egales. */
@media (max-width: 600px) {
    form .mk-row:not(:has(> .mk-check)) > .mk-field, form .mk-row:not(:has(> .mk-check)) > .mk-field-s, .mk-panel .mk-row:not(:has(> .mk-check)) > * { flex: 1 1 100%; }
    form .mk-row:has(> .mk-check), .mk-panel .mk-row:has(> .mk-check) { grid-template-columns: 1fr 1fr; }
    form .mk-row:has(> .mk-check) > .mk-field-s { grid-column: 1 / -1; }
}

/* Site principal : un champ « full » occupe toute la ligne (sinon « Commune » restait seule a cote d'un trou). */
.form-grid > .field.full, .auth-panel .form-grid > .field.full, .form-page .form-grid > .field.full { grid-column: 1 / -1; margin-top: 0; }
/* Pages d'authentification : l'introduction accompagne le formulaire au defilement au lieu de laisser un vide. */
@media (min-width: 900px) {
    .auth-shell > header { position: sticky; top: 110px; align-self: start; }
}
@media (min-width: 900px) {
    .form-layout > .form-intro { position: sticky; top: 110px; align-self: start; }
    .form-layout > .form-intro .contact-details { margin-top: 22px !important; }
}

/* Contact : les canaux etaient ecrits dans les couleurs de l'ancien theme sombre (invisibles sur fond clair). */
html body:not(.page-home) main .contact-channels { grid-auto-rows: 1fr; }
html body:not(.page-home) main .contact-channels h2 { color: #075985 !important; font-size: .95rem !important; text-transform: none !important; }
html body:not(.page-home) main .contact-channels p { color: #475b6b !important; font-size: .85rem; }
html body:not(.page-home) main .contact-channels a { color: #0e2233 !important; }

/* Lettre d'information : sujets en grille reguliere (4 en ligne, 2 x 2 en colonne etroite), jamais 3 + 1. */
.nl-form-topics { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.nl-form-topics .nl-topic { justify-content: center; }
main .nl-form-topics, .nl-page .nl-form-topics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 520px) { .nl-form-topics { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Marche, aide : 5 formules = 3 + 2 elargies, sans trou en bout de ligne. */
@media (min-width: 760px) {
    .mk-promo-table:has(> :nth-child(5):last-child) { grid-template-columns: repeat(6, minmax(0, 1fr)); }
    .mk-promo-table:has(> :nth-child(5):last-child) > * { grid-column: span 2; }
    .mk-promo-table:has(> :nth-child(5):last-child) > :nth-child(n+4) { grid-column: span 3; }
}
@media (max-width: 600px) {
    form .mk-field-s, .mk-ship-extra .mk-field-s { flex: 1 1 100%; max-width: 100%; min-width: 0; }
    form .mk-row:has(> .mk-check) > * { min-width: 0; }
}

/* Jobs, connexion : les champs occupent toute la colonne du texte (plus de vide a droite). */
.jb-auth-main form, .jb-auth-main .jb-field, .jb-auth-main .jb-password-wrap { width: 100%; max-width: none; }
.jb-auth-main .jb-field input, .jb-auth-main .jb-password-wrap input { width: 100%; }
/* Jobs, identite : code postal, commune et province en trois colonnes egales. */
.jx-id-row-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 700px) {
    .jx-id-row-3 { grid-template-columns: 1fr 1fr; }
}

/* Jobs, telephone : boutons d'enregistrement du profil empiles en pleine largeur. */
@media (max-width: 720px) {
    .jb-form-actions > *, .jb-form-actions .button { flex: 1 1 100%; width: 100%; justify-content: center; margin: 0 !important; }
}
.ai-assist-head .ai-assist-mark { min-height: 42px; }

/* Pages d'authentification : la hauteur suit le contenu (min-height 72vh laissait un grand vide sous /login). */
html body:not(.page-home) main .auth-page { min-height: 0 !important; }

/* Jobs, profil candidat : import du CV (texte a gauche, depot a droite, meme hauteur). */
.jb-cv-import { display: grid; grid-template-columns: minmax(0, 1fr) minmax(260px, 340px); gap: 18px; align-items: stretch; margin: 0 0 22px; padding: 20px; border: 1px solid var(--jx-line, #e1e9e4); border-radius: 16px; background: linear-gradient(135deg, #f1faf4, #fff 70%); }
.jb-cv-import-copy { display: flex; flex-direction: column; justify-content: center; gap: 8px; }
.jb-cv-import-copy h2 { margin: 0; font-size: 19px; line-height: 1.25; letter-spacing: -.01em; color: var(--jx-ink, #10231b); }
.jb-cv-import-copy p { margin: 0; font-size: 14px; line-height: 1.55; color: #4f6259; }
.jb-cv-drop { position: relative; display: grid; justify-items: center; align-content: center; gap: 4px; min-height: 150px; padding: 16px; border: 1.5px dashed #9cc9ae; border-radius: 14px; background: #fff; text-align: center; color: #4f6259; cursor: pointer; transition: border-color .15s, background .15s; }
.jb-cv-drop svg { color: var(--jx-green-700, #0d7a43); margin-bottom: 4px; }
.jb-cv-drop b { color: var(--jx-ink, #10231b); font-size: 15px; }
.jb-cv-drop span { font-size: 13.5px; } .jb-cv-drop u { color: var(--jx-green-700, #0d7a43); font-weight: 600; }
.jb-cv-drop small { font-size: 12px; color: #6b7d74; }
.jb-cv-drop input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.jb-cv-drop:hover, .jb-cv-drop.is-over { border-color: var(--jx-green-700, #0d7a43); background: #f1faf4; }
.jb-cv-drop:focus-within { outline: 3px solid #9ad7b4; outline-offset: 2px; }
.jb-cv-drop[hidden] { display: none; }
.jb-cv-status { grid-column: 2; display: grid; justify-items: center; align-content: center; gap: 10px; min-height: 150px; padding: 16px; border-radius: 14px; background: #fff; border: 1px solid var(--jx-line, #e1e9e4); text-align: center; }
.jb-cv-status[hidden] { display: none; }
.jb-cv-status p { margin: 0; font-size: 14px; line-height: 1.5; color: var(--jx-ink, #10231b); }
.jb-cv-status[data-state="error"] p { color: #a13a1d; }
.jb-cv-spinner { width: 26px; height: 26px; border: 3px solid #d7ebdf; border-top-color: var(--jx-green-700, #0d7a43); border-radius: 50%; animation: jb-cv-spin .9s linear infinite; }
.jb-cv-status:not([data-state="busy"]) .jb-cv-spinner { display: none; }
@keyframes jb-cv-spin { to { transform: rotate(360deg); } }
@media (max-width: 760px) {
    .jb-cv-import { grid-template-columns: 1fr; }
    .jb-cv-status { grid-column: 1; }
}

/* Connexion avec Google (charte Google : fond blanc, bordure grise, logo multicolore). */
.jb-google { margin: 0 0 18px; }
.jb-google-btn { display: flex; align-items: center; justify-content: center; gap: 12px; width: 100%; min-height: 48px; padding: 0 16px; border: 1px solid #747775; border-radius: 10px; background: #fff; color: #1f1f1f !important; font: 500 15px/1 Roboto, "Figtree", system-ui, sans-serif; text-decoration: none !important; transition: background .15s, box-shadow .15s; }
.jb-google-btn:hover { background: #f8faff; box-shadow: 0 1px 3px rgba(60, 64, 67, .3); }
.jb-google-btn:focus-visible { outline: 3px solid #a8c7fa; outline-offset: 2px; }
.jb-google-btn svg { flex: none; }
.jb-google-account .jb-google-btn { width: auto; display: inline-flex; }
.jb-google-or { display: flex; align-items: center; gap: 12px; margin: 16px 0 0; color: #6b7d74; font-size: 13px; }
.jb-google-or::before, .jb-google-or::after { content: ""; flex: 1; height: 1px; background: var(--jx-line, #e1e9e4); }
.jb-google-email { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 16px; padding: 12px 14px; border: 1px solid var(--jx-line, #e1e9e4); border-radius: 10px; background: #f6faf7; font-size: 14px; }
.jb-google-email span { color: #6b7d74; }
.jb-google-names { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.jb-google-names[hidden] { display: none; }
.jb-google-roles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 6px 0 18px; }
.jb-google-role { position: relative; cursor: pointer; }
.jb-google-role input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.jb-google-role span { display: flex; flex-direction: column; gap: 4px; height: 100%; padding: 14px 16px; border: 1.5px solid var(--jx-line, #e1e9e4); border-radius: 12px; background: #fff; }
.jb-google-role b { font-size: 15px; }
.jb-google-role small { font-size: 13px; color: #6b7d74; line-height: 1.45; }
.jb-google-role input:checked + span { border-color: var(--jx-green-700, #0d7a43); box-shadow: inset 0 0 0 1px var(--jx-green-700, #0d7a43); background: #f1faf4; }
.jb-google-role input:focus-visible + span { outline: 3px solid #9ad7b4; outline-offset: 2px; }
.jb-consents label[hidden] { display: none; }
@media (max-width: 600px) {
    .jb-google-roles, .jb-google-names { grid-template-columns: 1fr; }
}
.jb-google-aside-list { margin: 14px 0 0; padding: 0; list-style: none; display: grid; gap: 8px; font-size: 13.5px; line-height: 1.45; color: #4f6259; }
.jb-google-aside-list li { display: flex; gap: 10px; }
.jb-google-aside-list li::before { content: ""; flex: none; width: 7px; height: 7px; margin-top: 6px; border-radius: 2px; background: var(--jx-green-700, #0d7a43); }

/* Faire un don : entree mise en avant dans le menu principal (aussi dans le menu mobile) et bouton du pied de page. */
html body .site-header .nav-donate { display: inline-flex !important; align-self: center; align-items: center; gap: 6px; height: auto !important; min-height: 0 !important; line-height: 1.2 !important; padding: 8px 13px !important; border-radius: 999px; background: #fff1ef; color: #b42318 !important; font-weight: 700 !important; white-space: nowrap; background-image: none !important; }
html body .site-header .nav-donate:hover, html body .site-header .nav-donate.is-active { background: #ffe1dc; color: #8f1d14 !important; }
html body .site-header .nav-donate svg { flex: none; }
html body .site-footer a.footer-donate { display: inline-flex !important; align-items: center; gap: 9px; width: auto; margin: 16px 0 4px; padding: 11px 18px !important; border-radius: 10px; background: #f5a524 !important; color: #0e2233 !important; font-weight: 700 !important; font-size: 14.5px; text-decoration: none !important; background-image: none !important; }
html body .site-footer a.footer-donate:hover { background: #ffb63d !important; }
html body .site-footer a.footer-donate svg { flex: none; color: #b42318; }
.home-job-latest[hidden] { display: none !important; }
@media (max-width: 1560px) and (min-width: 1000px) { html body .site-header .brand span { display: none !important; } }
html body .site-footer a.footer-donate svg { margin-right: 2px; }
html body .site-footer a.footer-donate b { margin-left: 4px; }
@media (max-width: 1099px) {
    html body .site-header .nav-donate { display: flex !important; width: 100%; justify-content: center; min-height: 48px !important; margin-top: 12px !important; padding: 0 16px !important; border-radius: 10px; border: 1.5px solid #f2c4bf; color: #b42318 !important; -webkit-text-fill-color: #b42318; }
}
html body .site-header .nav-donate svg { color: #b42318 !important; }

/* En-tete : une seule hauteur (44 px) et un seul intervalle (10 px) pour le groupe de droite. */
@media (min-width: 1100px) {
    html body .site-header .nav-donate { min-height: 44px !important; padding: 0 16px !important; border-radius: 10px; }
    html body .site-header .header-inner { column-gap: 32px !important; }
    html body .site-header .header-tools { gap: 10px !important; margin-left: -22px !important; padding-left: 0 !important; }
    html body .site-header .header-tools > * { margin: 0 !important; }
    html body .site-header .header-tools .lang-toggle,
    html body .site-header .header-tools .header-account { min-height: 44px; display: inline-flex; align-items: center; }
    html body .site-header .header-tools .button-support { min-height: 44px !important; height: 44px; padding-top: 0 !important; padding-bottom: 0 !important; }
}

/* Accueil, carte « Ouverture » : lien « Deja inscrit ? Se connecter » avec les memes marges que les tuiles. */
.page-home .home-job-live > a:last-child { display: flex !important; align-items: center; justify-content: space-between; gap: 12px; min-height: 48px; padding: 0 16px !important; font-weight: 600; }

/* Bandeau cookies : trois boutons de meme taille ; refuser aussi visible qu'accepter (recommandations CNIL / APD). */
.cmp-actions { align-items: stretch; }
html body .cmp-actions .cmp-button { min-height: 48px; width: 100%; padding: 0 14px !important; border-radius: 10px !important; font-weight: 700 !important; justify-content: center; }
html body .cmp-actions .cmp-button[data-cmp-reject], html body .cmp-actions .cmp-button[data-cmp-accept] { background: #0e2233 !important; border: 1.5px solid #0e2233 !important; color: #fff !important; }
html body .cmp-actions .cmp-button[data-cmp-settings] { background: #fff !important; border: 1.5px solid #9fb0bd !important; color: #0e2233 !important; }
html body .cmp-actions .cmp-button[data-cmp-settings]:hover { border-color: #0e2233 !important; }
html body .cmp-actions .cmp-button[data-cmp-reject]:hover, html body .cmp-actions .cmp-button[data-cmp-accept]:hover { background: #1b3a52 !important; }
