/* ============================================================
   LexJob — Feuille de style principale
   Reproduit fidèlement le design des captures d'écran fournies.
   Couleur principale : #930022 (bordeaux)
   Police : système (system-ui / sans-serif)
   ============================================================ */

/* ── Variables CSS ─────────────────────────────────────────── */
:root {
  --color-primary:       #930022;
  --color-primary-dark:  #7a001c;
  --color-primary-light: #b5003a;
  --color-green:         #28a745;
  --color-green-dark:    #1e7e34;
  --color-text:          #333333;
  --color-text-light:    #666666;
  --color-text-muted:    #999999;
  --color-bg:            #ffffff;
  --color-bg-light:      #f8f8f8;
  --color-bg-grey:       #f2f2f2;
  --color-border:        #e0e0e0;
  --color-border-dark:   #cccccc;
  --color-success:       #28a745;
  --color-error:         #dc3545;
  --color-warning:       #ffc107;
  --font-family:         'Segoe UI', system-ui, -apple-system, sans-serif;
  --font-size-base:      15px;
  --line-height:         1.6;
  --radius:              6px;
  --radius-lg:           10px;
  --shadow-sm:           0 1px 3px rgba(0,0,0,.08);
  --shadow:              0 2px 8px rgba(0,0,0,.12);
  --shadow-lg:           0 4px 20px rgba(0,0,0,.15);
  --transition:          0.2s ease;
  --container-max:       1160px;
  --container-narrow:    720px;
}

/* ── Reset & Base ───────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html {
  font-size: var(--font-size-base);
  scroll-behavior: smooth;
  overflow-x: hidden;
  background: var(--color-bg);
}
body {
  font-family: var(--font-family);
  color: var(--color-text);
  background: var(--color-bg);
  line-height: var(--line-height);
  -webkit-font-smoothing: antialiased;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  overflow-x: hidden;
}
.site-main { flex: 1; }
a { color: inherit; text-decoration: none; }
a:hover { color: var(--color-primary); }
img { max-width: 100%; height: auto; display: block; }
button { cursor: pointer; font-family: inherit; }
ul { list-style: none; }
svg { flex-shrink: 0; }
input, select, textarea {
  font-family: inherit;
  font-size: inherit;
}

/* ── Utilitaires ────────────────────────────────────────────── */
.container {
  width: 100%;
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 20px;
}
.container--narrow { max-width: var(--container-narrow); }
.hidden { display: none !important; }
.screen-reader-text {
  position: absolute; width: 1px; height: 1px;
  padding: 0; overflow: hidden; clip: rect(0,0,0,0);
  white-space: nowrap; border: 0;
}
.required { color: var(--color-primary); }
.form-help { font-size: 13px; color: var(--color-text-muted); margin-top: 3px; }
.form-link { color: var(--color-primary); text-decoration: underline; }

/* ── Boutons ────────────────────────────────────────────────── */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 6px;
  padding: 10px 20px;
  border-radius: var(--radius);
  font-size: 14px;
  font-weight: 600;
  border: 2px solid transparent;
  transition: background var(--transition), color var(--transition), border-color var(--transition);
  white-space: nowrap;
  cursor: pointer;
}
.btn--primary {
  background: var(--color-primary);
  color: white;
  border-color: var(--color-primary);
}
.btn--primary:hover {
  background: var(--color-primary-dark);
  border-color: var(--color-primary-dark);
  color: white;
}
.btn--outline {
  background: transparent;
  color: var(--color-primary);
  border-color: var(--color-primary);
}
.btn--outline:hover {
  background: var(--color-primary);
  color: white;
}
.btn--ghost {
  background: transparent;
  color: var(--color-text-light);
  border-color: var(--color-border);
}
.btn--ghost:hover { background: var(--color-bg-light); }
.btn--publish {
  background: var(--color-green);
  color: white;
  border-color: var(--color-green);
  padding: 9px 16px;
}
.btn--publish:hover {
  background: var(--color-green-dark);
  border-color: var(--color-green-dark);
  color: white;
}
.btn--apply {
  background: var(--color-primary);
  color: white;
  border-color: var(--color-primary);
  justify-content: center;
  padding: 12px 20px;
  font-size: 15px;
}
.btn--apply:hover { background: var(--color-primary-dark); color: white; }
.btn--danger { background: var(--color-error); color: white; border-color: var(--color-error); }
.btn--danger:hover { background: #bd2130; color: white; }
.btn--sm { padding: 6px 12px; font-size: 13px; }
.btn--full { width: 100%; justify-content: center; }
.btn--lg { padding: 14px 24px; font-size: 16px; }
.btn-link {
  background: none;
  border: none;
  color: var(--color-primary);
  font-size: inherit;
  cursor: pointer;
  padding: 0;
  text-decoration: underline;
}
.btn-link--danger { color: var(--color-error); }
.signal-btn {
  background: none;
  border: none;
  color: var(--color-text-muted);
  font-size: 12px;
  display: flex;
  align-items: center;
  gap: 4px;
  margin-top: 8px;
  cursor: pointer;
}
.signal-btn:hover { color: var(--color-error); }

/* ── Modal signalement ──────────────────────────────────────── */
.signal-modal__box { max-width: 480px; padding: 28px; }
.signal-modal__header {
  display: flex; align-items: flex-start; gap: 14px; margin-bottom: 20px;
}
.signal-modal__icon {
  width: 44px; height: 44px; border-radius: 50%; flex-shrink: 0;
  background: #fff5f5; display: flex; align-items: center; justify-content: center;
  color: var(--color-error);
}
.signal-modal__title { font-size: 17px; font-weight: 700; margin: 0 0 3px; }
.signal-modal__subtitle { font-size: 13px; color: var(--color-text-muted); margin: 0; }
.signal-modal__label { font-size: 13px; font-weight: 600; margin-bottom: 10px; display: block; }
.signal-options { display: flex; flex-direction: column; gap: 7px; }
.signal-option {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 14px;
  border: 1.5px solid var(--color-border); border-radius: var(--radius);
  cursor: pointer; font-size: 13.5px;
  transition: border-color .15s, background .15s;
}
.signal-option:hover { border-color: var(--color-primary); background: #fff8f9; }
.signal-option:has(input:checked) { border-color: var(--color-primary); background: #fff0f3; }
.signal-option input[type="radio"] { accent-color: var(--color-primary); flex-shrink: 0; }
.signal-option__icon { font-size: 16px; flex-shrink: 0; }
.signal-option__label { flex: 1; }
.signal-modal__form { }
.signal-modal__textarea {
  width: 100%; border: 1.5px solid var(--color-border); border-radius: var(--radius);
  padding: 10px 12px; font-size: 13.5px; font-family: var(--font-family);
  resize: vertical; outline: none; transition: border-color var(--transition);
  min-height: 80px;
}
.signal-modal__textarea:focus { border-color: var(--color-primary); }

/* ── Boutons dans la table mes-annonces ─────────────────────── */
.my-listings-table .listing-actions .btn {
  padding: 4px 10px; font-size: 12px; border-width: 1.5px;
}

/* ── Header ─────────────────────────────────────────────────── */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: white;
  border-bottom: 1px solid var(--color-border);
  box-shadow: var(--shadow-sm);
}
/* Décale le header sous la barre d'admin WordPress */
html.admin-bar .site-header { top: 32px; }
@media screen and (max-width: 782px) {
  html.admin-bar .site-header { top: 46px; }
}
.site-header__inner {
  display: flex;
  align-items: center;
  gap: 16px;
  height: 72px;
  min-width: 0;
}
.site-logo {
  display: flex;
  align-items: center;
  text-decoration: none;
  flex-shrink: 0;
}
.site-logo__img {
  height: 54px;
  width: auto;
  display: block;
}
.site-logo__img--tribune {
  height: 64px;
}
.site-logo__img--footer {
  height: 40px;
  filter: brightness(0) invert(1);
}
@media (max-width: 640px) {
  .site-logo__img { height: 38px; }
  .site-logo__img--tribune { height: 46px; }
  .site-logo__img--footer { height: 34px; }
}

/* Navigation */
.site-nav { flex: 1; min-width: 0; overflow: visible; }
.site-nav__list {
  display: flex;
  align-items: center;
  gap: 2px;
  list-style: none;
  margin: 0;
  padding: 0;
  flex-wrap: nowrap;
}
.site-nav__link {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 7px 10px;
  border-radius: var(--radius);
  font-size: 15px;
  font-weight: 500;
  color: var(--color-text);
  transition: color var(--transition), background var(--transition);
  background: none;
  border: none;
  cursor: pointer;
  white-space: nowrap;
}
.site-nav__link:hover,
.site-nav__item--active .site-nav__link { color: var(--color-primary); }
.site-nav__link--login {
  color: var(--color-text-light);
  display: flex;
  align-items: center;
  gap: 6px;
}
.site-nav__link--login:hover { color: var(--color-primary); }

.site-nav__link--exclusive {
  color: var(--color-primary);
  font-weight: 600;
  display: flex;
  align-items: center;
  gap: 4px;
  white-space: nowrap;
}
.site-nav__link--exclusive:hover { opacity: 0.8; }
.site-nav__item--exclusive { border-left: 2px solid var(--color-primary); padding-left: 12px; margin-left: 4px; }

/* Dropdown */
.site-nav__item--dropdown,
.user-menu { position: relative; }
.dropdown-menu {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  background: white;
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
  min-width: 210px;
  z-index: 200;
  padding: 6px 0;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-4px);
  transition: opacity var(--transition), visibility var(--transition), transform var(--transition);
}
.dropdown-menu--right { left: auto; right: 0; }
/* Ouverture au hover (desktop) et via classe .is-open (JS/mobile) */
.site-nav__item--dropdown:hover > .dropdown-menu,
.user-menu:hover > .dropdown-menu,
.site-nav__item--dropdown.is-open > .dropdown-menu,
.user-menu.is-open > .dropdown-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.dropdown-menu__link {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 16px;
  font-size: 14px;
  color: var(--color-text);
  transition: background var(--transition);
  white-space: nowrap;
}
.dropdown-menu__link:hover { background: var(--color-bg-light); color: var(--color-primary); }
.dropdown-menu__link--danger { color: var(--color-error); }
.dropdown-menu__link--danger:hover { background: #fff5f5; color: var(--color-error); }
.dropdown-menu__separator {
  height: 1px;
  background: var(--color-border);
  margin: 4px 0;
}

/* Actions header */
.site-header__actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}
.user-menu__trigger {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  background: none;
  border: none;
  font-size: 15px;
  font-weight: 500;
  color: var(--color-text);
  cursor: pointer;
  border-radius: var(--radius);
}
.user-menu__trigger:hover { color: var(--color-primary); }
.user-menu__avatar {
  border-radius: 50%;
  border: 2px solid var(--color-border);
  object-fit: cover;
}
.user-menu__avatar-wrap {
  position: relative;
  flex-shrink: 0;
  width: 28px;
  height: 28px;
}
.user-menu__avatar-wrap .user-menu__avatar {
  width: 28px;
  height: 28px;
  display: block;
}
.user-menu__notif {
  position: absolute;
  top: -5px;
  right: -5px;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  border-radius: 20px;
  background: var(--color-primary);
  color: #fff;
  font-size: 9px;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  border: 1.5px solid #fff;
  pointer-events: none;
}

/* Mobile toggle */
.mobile-menu-toggle {
  display: none;
  flex-direction: column;
  justify-content: space-between;
  width: 28px;
  height: 20px;
  background: none;
  border: none;
  cursor: pointer;
  margin-left: auto;
}
.mobile-menu-toggle__bar {
  display: block;
  height: 2px;
  background: var(--color-text);
  border-radius: 2px;
  transition: transform var(--transition), opacity var(--transition);
}

/* ── Hero ───────────────────────────────────────────────────── */
.hero {
  position: relative;
  min-height: 400px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding-bottom: 48px;
  background: #1a1a1a; /* fond de secours si image pas encore chargée */
  /* pas d'isolation ici : évite de couper le z-index du header sticky */
}
.hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    linear-gradient(
      to bottom,
      rgba(20,10,10,0.45) 0%,
      rgba(20,10,10,0.60) 100%
    ),
    url('https://lexjob.fr/wp-content/uploads/2026/05/cropped-Mener-lentretien-scaled-1-e1759525385202.jpg') center 30% / cover no-repeat;
  z-index: 0;
}
.hero__overlay { display: none; }
.hero__content {
  position: relative;
  z-index: 1;
  text-align: center;
  padding: 60px 20px 32px;
  color: white;
}
.hero__title {
  font-size: clamp(24px, 3.8vw, 42px);
  font-weight: 800;
  text-shadow: 0 2px 12px rgba(0,0,0,.5);
  margin-bottom: 14px;
  line-height: 1.15;
  letter-spacing: -.01em;
}
.hero__subtitle {
  font-size: clamp(15px, 2vw, 18px);
  opacity: 0.88;
  text-shadow: 0 1px 6px rgba(0,0,0,.4);
}

/* ── Barre de recherche (en bas du hero) ───────────────────── */
.hero__search {
  position: relative;
  z-index: 1;
  width: 100%;
  padding: 28px 20px 0;
  display: flex;
  justify-content: center;
}
.hero__search-wrap {
  position: relative;
  width: 100%;
  max-width: 860px;
}
.hero__search-wrap .search-bar {
  width: 100%;
  max-width: 100%;
}
/* Suggestions hero : positionnées sous la barre de recherche entière */
.hero-suggestions {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  width: 46%;
  z-index: 300;
  border-top: 1px solid var(--color-border);
  border-radius: 0 0 var(--radius) var(--radius);
}
.search-bar {
  display: flex;
  align-items: stretch;
  gap: 0;
  background: white;
  border-radius: 14px;
  box-shadow: 0 8px 40px rgba(0,0,0,.22);
  overflow: hidden;
  max-width: 980px;
  width: 100%;
}
.search-bar__field {
  display: flex;
  align-items: center;
  flex: 1;
  border-right: 1px solid var(--color-border);
  padding: 0 18px;
  position: relative;
}
.search-bar__field--location { min-width: 260px; }
.search-bar__field--category { min-width: 230px; }
@media (max-width: 768px) {
  .search-bar__field--location,
  .search-bar__field--category { min-width: 0; width: 100%; }
}
.search-bar__icon {
  color: var(--color-text-muted);
  flex-shrink: 0;
  margin-right: 10px;
}
.search-bar input {
  border: none;
  outline: none;
  width: 100%;
  padding: 18px 0;
  font-size: 15px;
  color: var(--color-text);
}
.search-bar input::placeholder { color: var(--color-text-muted); }
.search-bar select {
  border: none;
  outline: none;
  width: 100%;
  padding: 18px 4px;
  font-size: 15px;
  color: var(--color-text);
  background: transparent;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
}
.search-bar__geolocate {
  background: none;
  border: none;
  color: var(--color-text-muted);
  padding: 4px;
  cursor: pointer;
  flex-shrink: 0;
}
.search-bar__geolocate:hover { color: var(--color-primary); }
.search-bar .btn { border-radius: 0; border: none; padding: 18px 32px; font-size: 15px; }
.search-bar--archive {
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--color-border);
}

/* Barre archive */
.archive-search {
  background: white;
  border-bottom: 1px solid var(--color-border);
  padding: 16px 0;
}

/* ── Sections ────────────────────────────────────────────────── */
.section {
  padding: 60px 0;
}
.section--recent { background: var(--color-bg); }
.section--alert  { background: #fff; padding: 36px 0; }
.section__title {
  text-align: center;
  font-size: 26px;
  font-weight: 700;
  margin-bottom: 12px;
}
.section__divider {
  width: 40px;
  height: 3px;
  background: var(--color-primary);
  margin: 0 auto 32px;
  border-radius: 2px;
}
.section__cta {
  text-align: center;
  margin-top: 36px;
}

/* ── Grille d'annonces ──────────────────────────────────────── */
.listings-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 20px;
}
.listings-grid--archive {
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}

/* ── Carte d'annonce ────────────────────────────────────────── */
.listing-card {
  background: white;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  transition: box-shadow var(--transition), transform var(--transition);
}
.listing-card:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-2px);
}
.listing-card__link { display: flex; flex-direction: column; height: 100%; text-decoration: none; color: inherit; }
.listing-card__image {
  height: 160px;
  overflow: hidden;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
}
.listing-card__image img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 16px;
}
.listing-card__placeholder {
  width: 80px;
  height: 80px;
  border-radius: 50%;
  background: var(--color-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
  font-weight: 700;
  color: white;
}
.listing-card__body {
  padding: 16px;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.listing-card__title {
  font-size: 15px;
  font-weight: 600;
  line-height: 1.3;
  color: var(--color-text);
  margin: 4px 0;
}
.listing-card:hover .listing-card__title { color: var(--color-primary); }
.listing-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 12px;
}
.listing-card__meta-item {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 13px;
  color: var(--color-text-light);
}
.listing-card__meta-item--domain { flex-basis: 100%; }

/* ── Badges styled (nouveau style) ───────────────────────── */
.listing-card__badges {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin: 8px 0 6px;
}
.lc-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: #f4f5f7;
  border: 1px solid #e8eaed;
  border-radius: 20px;
  padding: 3px 10px 3px 7px;
  font-size: 12px;
  font-weight: 500;
  color: #3d3d3d;
  line-height: 1.4;
  white-space: nowrap;
}
.lc-badge svg { color: var(--color-primary); }
.lc-badge--full { flex-shrink: 1; min-width: 0; white-space: normal; }
.lc-badge--full span { white-space: normal; word-break: break-word; }
.lc-badge--date { color: #7a4200; background: #fff8ee; border-color: #ffe0aa; }
.lc-badge--date svg { color: #e07b00; }
.listing-card__location {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 13px;
  color: var(--color-text-muted);
}
.listing-card__footer {
  margin-top: auto;
  padding-top: 8px;
  border-top: 1px solid var(--color-bg-grey);
}
.listing-card__date {
  font-size: 12px;
  color: var(--color-text-muted);
}

/* ── Badges de catégorie ────────────────────────────────────── */
.badge {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.5px;
  text-transform: uppercase;
}
.badge--stages-juridiques  { background: #e8f4f8; color: #1a6a8a; }
.badge--alternances         { background: #eaf4e8; color: #1a6a3a; }
.badge--emplois-juridiques  { background: #f8eee8; color: #8a3a1a; }
.badge--default             { background: var(--color-bg-grey); color: var(--color-text-light); }

/* ── CTA Banner ─────────────────────────────────────────────── */
.cta-banner {
  background: var(--color-primary);
  padding: 18px 0;
}
.cta-banner .container { text-align: center; }
.cta-banner__link {
  color: white;
  font-size: 15px;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  text-decoration: none;
}
.cta-banner__link:hover { opacity: 0.9; color: white; }

/* ── Formulaire d'alerte ────────────────────────────────────── */
.alert-promo {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 15px;
  font-weight: 600;
  color: var(--color-text);
  margin-bottom: 16px;
}
.alert-form {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 14px;
  padding: 20px 24px;
  box-shadow: 0 2px 10px rgba(0,0,0,.05);
}
.alert-form__full { grid-column: 1 / -1; }
.alert-form__types {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: 18px;
  flex-wrap: wrap;
}
.alert-form__types label { display: flex; align-items: center; gap: 6px; font-size: 14px; cursor: pointer; }
.alert-form__submit { grid-column: 1 / -1; }
.alert-form .form-group { margin: 0; }
.alert-form select,
.alert-form input[type="email"] {
  width: 100%;
  padding: 9px 12px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  font-size: 14px;
  background: var(--color-bg-light);
}
.alert-form .lex-type-error { grid-column: 1 / -1; font-size: 13px; color: #c62828; }

/* ── Layout Archive ─────────────────────────────────────────── */
.archive-layout {
  display: grid;
  grid-template-columns: 276px 1fr;
  gap: 28px;
  padding-top: 32px;
  padding-bottom: 48px;
  align-items: start;
}

/* ── Sidebar carte ──────────────────────────────────────────── */
.archive-sidebar {
  position: sticky;
  top: 80px;
  background: #fff;
  border: 1px solid #ebebeb;
  border-radius: 14px;
  box-shadow: 0 2px 20px rgba(0,0,0,.07);
  overflow: hidden;
}

/* ── Groupes de filtres ─────────────────────────────────────── */
.filter-group {
  margin-bottom: 0;
  padding: 15px 18px;
  border-bottom: 1px solid #f0f0f0;
}
.filter-group:last-child {
  border-bottom: none;
}
.filter-group__title {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1.2px;
  color: var(--color-primary);
  margin-bottom: 12px;
  display: flex;
  align-items: center;
  gap: 5px;
}
.filter-group__title svg { color: var(--color-primary); }

/* ── Sous-titres accordion (groupes matières) ───────────────── */
.filter-group__subheading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 11px;
  font-weight: 700;
  color: var(--color-text-light);
  text-transform: uppercase;
  letter-spacing: .6px;
  margin: 0;
  padding: 8px 0;
  border-top: 1px solid #f4f4f4;
  cursor: pointer;
  user-select: none;
  transition: color .15s;
}
.filter-group__subheading:first-child { border-top: none; padding-top: 2px; }
.filter-group__subheading:hover { color: var(--color-primary); }
.filter-group__subheading.has-active { color: var(--color-primary); }
.filter-group__sub-chevron {
  flex-shrink: 0;
  width: 13px;
  height: 13px;
  color: var(--color-text-muted);
  transition: transform .2s ease, color .15s;
}
.filter-group__subheading.is-open .filter-group__sub-chevron { transform: rotate(180deg); color: var(--color-primary); }

/* Conteneur accordéon des items */
.filter-group__sub-group {
  overflow: hidden;
  height: 0;
  transition: height .22s ease;
}

.filter-group__sub-item { padding-left: 0; }

/* ── Actions (submit + reset) ───────────────────────────────── */
.filter-actions {
  padding: 14px 18px 16px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  background: #fafafa;
  border-top: 1px solid #f0f0f0;
}
.filter-actions .btn--primary {
  border-radius: 9px;
  font-size: 13.5px;
  padding: 11px 16px;
  font-weight: 700;
}
.filter-actions .filter-reset {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  font-size: 12.5px;
  color: var(--color-text-muted);
  text-decoration: none;
  padding: 4px;
  border-radius: 6px;
  transition: color .15s, background .15s;
  background: none;
  border: none;
  cursor: pointer;
  width: 100%;
}
.filter-actions .filter-reset:hover { color: var(--color-primary); background: #fff5f7; }

/* ── Custom checkboxes & radios scoped à la sidebar ─────────── */
.archive-sidebar .checkbox-label {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  cursor: pointer;
  user-select: none;
  padding: 4px 0;
  color: var(--color-text);
  transition: color .15s;
  position: relative;
  line-height: 1.4;
}
.archive-sidebar .checkbox-label:hover { color: var(--color-primary); }

/* Cache les inputs natifs */
.archive-sidebar .checkbox-label input[type="checkbox"],
.archive-sidebar .checkbox-label input[type="radio"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
  pointer-events: none;
}

/* Boîte custom commune */
.archive-sidebar .checkbox-label::before {
  content: '';
  flex-shrink: 0;
  width: 17px;
  height: 17px;
  border: 1.5px solid #d0d0d0;
  border-radius: 4px;
  background: #fafafa;
  transition: border-color .15s, background .15s, box-shadow .15s;
  display: block;
}
.archive-sidebar .checkbox-label:has(input[type="radio"])::before { border-radius: 50%; }

/* Hover: contour rouge */
.archive-sidebar .checkbox-label:hover::before { border-color: var(--color-primary); background: #fff; }

/* Checkbox cochée — fond rouge + coche blanche */
.archive-sidebar .checkbox-label:has(input[type="checkbox"]:checked)::before {
  background: var(--color-primary);
  border-color: var(--color-primary);
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3 8.5l3 3 7-7' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E");
  background-size: 11px;
  background-repeat: no-repeat;
  background-position: center;
}

/* Radio cochée — point intérieur */
.archive-sidebar .checkbox-label:has(input[type="radio"]:checked)::before {
  background: #fff;
  border-color: var(--color-primary);
  box-shadow: inset 0 0 0 4px var(--color-primary);
}

/* Label texte quand coché */
.archive-sidebar .checkbox-label:has(input:checked) { color: var(--color-primary); font-weight: 600; }

/* ── Location input sidebar ─────────────────────────────────── */
.archive-sidebar .location-autocomplete input {
  border: 1.5px solid #e0e0e0;
  border-radius: 8px;
  padding: 9px 34px 9px 13px;
  font-size: 13.5px;
  background: #fafafa;
  width: 100%;
  transition: border-color .15s, box-shadow .15s, background .15s;
}
.archive-sidebar .location-autocomplete input:focus {
  border-color: var(--color-primary);
  background: #fff;
  box-shadow: 0 0 0 3px rgba(147,0,34,.08);
  outline: none;
}
.filter-map { margin-top: 20px; }
.archive-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 20px;
  flex-wrap: wrap;
}
.archive-header__title {
  font-size: 20px;
  font-weight: 700;
}
.archive-header__meta { display: flex; align-items: center; gap: 12px; }
.archive-count { font-size: 13px; color: var(--color-text-muted); }
.sort-form select {
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  padding: 6px 10px;
  font-size: 13px;
  background: white;
}

/* Aucun résultat */
.empty-results-wrap { padding: 24px 0 40px; }
.empty-results-hero {
  text-align: center;
  padding: 48px 24px 36px;
  background: var(--color-bg-light);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  margin-bottom: 28px;
}
.empty-results-hero__icon {
  width: 64px; height: 64px;
  background: rgba(147,0,34,.08);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  margin: 0 auto 20px;
  color: var(--color-primary);
}
.empty-results-hero__title {
  font-size: 22px;
  font-weight: 700;
  margin-bottom: 10px;
  color: var(--color-text);
}
.empty-results-hero__desc {
  color: var(--color-text-light);
  font-size: 15px;
  max-width: 480px;
  margin: 0 auto;
}

/* ── Alert card dans empty-results ─────────────────────────── */
.empty-results-wrap .alert-card {
  display: block;
  padding: 24px 28px;
}
.alert-card__header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 20px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--color-border);
  font-size: 15px;
  font-weight: 600;
}
.empty-results-wrap .alert-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
  background: none;
  border: none;
  border-radius: 0;
  padding: 0;
  box-shadow: none;
}
.empty-results-wrap .alert-form .form-row {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 12px;
}
.empty-results-wrap .alert-form .form-row select,
.empty-results-wrap .alert-form .form-row > * {
  width: 100%;
  min-width: 0;
}
/* ── Page Mes alertes ───────────────────────────────────────── */
.alerts-empty {
  background: #f9f9fb;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 48px 32px;
  text-align: center;
  color: #aaa;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.alerts-empty p { margin: 0; font-size: 15px; color: #888; }
.alerts-list { display: flex; flex-direction: column; gap: 12px; }
.alert-card {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  padding: 16px 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  box-shadow: var(--shadow-sm);
  transition: box-shadow .15s;
}
.alert-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,.08); }
.alert-card__body { flex: 1; min-width: 0; }
.alert-card__title { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.alert-card__badge {
  background: #930022;
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  padding: 2px 10px;
  border-radius: 20px;
  letter-spacing: .3px;
}
.alert-card__dept { font-size: 13px; color: #555; font-weight: 500; }
.alert-card__meta { display: flex; gap: 12px; flex-wrap: wrap; font-size: 13px; color: #666; }
.alert-card__date { color: #aaa; margin-left: auto; }
.alert-card__actions { flex-shrink: 0; }
.alert-card__delete {
  display: flex;
  align-items: center;
  gap: 6px;
  background: none;
  border: 1px solid #e5e5e7;
  border-radius: 8px;
  padding: 7px 14px;
  font-size: 13px;
  color: #c62828;
  cursor: pointer;
  transition: background .15s, border-color .15s;
}
.alert-card__delete:hover { background: #fff1f1; border-color: #c62828; }
.no-results { text-align: center; color: var(--color-text-muted); padding: 20px 0; }

/* ── Page single annonce ────────────────────────────────────── */
.breadcrumb {
  background: var(--color-bg-light);
  border-bottom: 1px solid var(--color-border);
  padding: 10px 0;
}
.breadcrumb nav {
  font-size: 13px;
  color: var(--color-text-muted);
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.breadcrumb nav a { color: var(--color-primary); }
.breadcrumb nav a:hover { text-decoration: underline; }
.breadcrumb__sep { color: var(--color-border-dark); }

.single-layout {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: 32px;
  padding-top: 32px;
  padding-bottom: 48px;
  align-items: start;
}
.single-header { margin-bottom: 24px; }
.single-header__title {
  font-size: clamp(20px, 3vw, 28px);
  font-weight: 700;
  margin: 12px 0 10px;
  line-height: 1.3;
}
.single-header__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  margin-bottom: 8px;
}
.single-meta-item {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 14px;
  color: var(--color-text-light);
}
.single-meta-item--primary { color: var(--color-text); font-weight: 500; }
.single-header__location {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 14px;
  color: var(--color-text-muted);
  margin-bottom: 6px;
}
.single-header__added { font-size: 12px; color: var(--color-text-muted); }
.single-header__admin-actions { display: flex; gap: 8px; align-items: center; margin-top: 12px; }
.admin-badge {
  display: inline-block;
  background: var(--color-bg-grey);
  border: 1px solid var(--color-border);
  color: var(--color-text-light);
  font-size: 12px;
  padding: 3px 10px;
  border-radius: 20px;
}

/* Onglets */
.tabs {
  display: flex;
  gap: 0;
  border-bottom: 2px solid var(--color-border);
  margin-bottom: 24px;
}
.tab {
  padding: 10px 20px;
  font-size: 14px;
  font-weight: 600;
  color: var(--color-text-light);
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  cursor: pointer;
  transition: color var(--transition), border-color var(--transition);
  white-space: nowrap;
}
.tab:hover { color: var(--color-primary); }
.tab--active { color: var(--color-primary); border-bottom-color: var(--color-primary); }

.tab-content { display: none; }
.tab-content--active { display: block; }

.date-limite-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: #fff8e1;
  border: 1px solid #ffe082;
  color: #7a5c00;
  padding: 8px 14px;
  border-radius: var(--radius);
  font-size: 14px;
  font-weight: 600;
  margin-bottom: 20px;
}
.single-section { margin-bottom: 24px; overflow-wrap: break-word; word-break: break-word; }
.single-section__title {
  font-size: 20px;
  font-weight: 700;
  color: var(--color-primary);
  margin-bottom: 16px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--color-primary);
}
.single-section__subtitle {
  font-size: 15px;
  font-weight: 600;
  color: var(--color-primary);
  margin-bottom: 8px;
}
.single-section__content { font-size: 14px; line-height: 1.7; color: var(--color-text); }
.conditions-grid { display: flex; flex-direction: column; gap: 10px; }
.condition-item { display: flex; gap: 12px; font-size: 14px; }
.condition-item__label { font-weight: 600; min-width: 140px; color: var(--color-text-light); }
.condition-item__value { color: var(--color-text); }

/* Sidebar single */
.single-sidebar { position: sticky; top: 80px; }
.single-sidebar__apply { background: white; border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 16px; margin-bottom: 16px; }
.single-sidebar__signal { text-align: center; margin-bottom: 8px; }
.applied-notice {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--color-success);
  font-weight: 600;
  font-size: 14px;
  padding: 12px;
  background: #f0fff4;
  border: 1px solid #b2dfdb;
  border-radius: var(--radius);
}
/* Carte de la fiche d'offre (Leaflet, assets/vendor/leaflet) : même cadre que
   l'encart recruteur juste au-dessus. z-index 0 : les calques de Leaflet
   restent sous l'en-tête fixe du site. */
.single-sidebar__map {
  height: 220px;
  margin-bottom: 16px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  position: relative;
  z-index: 0;
}
.single-sidebar__map .leaflet-popup-content { font-size: 13px; line-height: 1.4; margin: 10px 12px; }
/* Téléphone : message « Utilisez deux doigts pour déplacer la carte » (main.js, initSingleMap) */
.lexjob-map-hint {
  position: absolute;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 24px;
  text-align: center;
  background: rgba(0, 0, 0, .5);
  color: #fff;
  font-size: 15px;
  font-weight: 600;
  opacity: 0;
  transition: opacity .2s;
  pointer-events: none;
}
.lexjob-map-hint.is-visible { opacity: 1; }
.employer-card {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  display: flex; flex-direction: column; gap: 0;
}
/* Identité : avatar + nom — lien cliquable sur toute la zone */
.employer-card__identity-link {
  display: flex; align-items: center; gap: 14px;
  padding: 18px 18px 14px;
  border-bottom: 1px solid var(--color-bg-grey);
  text-decoration: none; color: inherit;
  transition: background var(--transition);
}
.employer-card__identity-link:hover { background: var(--color-bg-grey); }
.employer-card__avatar {
  width: 56px; height: 56px; border-radius: 50%; object-fit: contain;
  flex-shrink: 0; border: 2px solid var(--color-bg-grey);
  background: #fff; padding: 4px;
}
.employer-card__identity-info { min-width: 0; flex: 1; }
.employer-card__name {
  font-size: 15px; font-weight: 700;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.employer-card__since-inline {
  display: block; font-size: 11.5px; color: var(--color-text-muted); margin-top: 3px;
}
.employer-card__identity-arrow {
  flex-shrink: 0; color: var(--color-text-muted); opacity: .5;
  transition: opacity var(--transition), transform var(--transition);
}
.employer-card__identity-link:hover .employer-card__identity-arrow {
  opacity: 1; transform: translateX(2px);
}
/* Bio */
.employer-card__bio {
  padding: 12px 18px 0; font-size: 13px; color: var(--color-text-light);
  line-height: 1.5;
}
/* Stats */
.employer-card__stats {
  display: flex; flex-direction: column; gap: 6px;
  padding: 12px 18px;
}
.employer-card__stat {
  display: flex; align-items: center; gap: 7px;
  font-size: 12.5px; color: var(--color-text-muted);
}
.employer-card__stat svg { flex-shrink: 0; color: var(--color-primary); opacity: .7; }
/* Bouton voir la page */
.employer-card__cta {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  margin: 0 18px 12px;
  padding: 10px 16px;
  background: var(--color-primary); color: #fff;
  border-radius: var(--radius); font-size: 13.5px; font-weight: 600;
  text-decoration: none;
  transition: background var(--transition), transform .1s;
}
.employer-card__cta:hover { background: var(--color-primary-dark, #7b0024); color: #fff; }
.employer-card__cta:active { transform: scale(.98); }
/* Lien LinkedIn */
.employer-card__linkedin {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  margin: 0 18px 16px;
  padding: 8px 16px;
  border: 1.5px solid #0077b5; color: #0077b5;
  border-radius: var(--radius); font-size: 13px; font-weight: 500;
  text-decoration: none;
  transition: background var(--transition), color var(--transition);
}
.employer-card__linkedin:hover { background: #0077b5; color: #fff; }

/* ── Formulaires globaux ────────────────────────────────────── */
.form-group { display: flex; flex-direction: column; gap: 5px; }
.form-group label {
  font-size: 13px;
  font-weight: 600;
  color: var(--color-text);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.form-group input[type="text"],
.form-group input[type="email"],
.form-group input[type="url"],
.form-group input[type="date"],
.form-group input[type="password"],
.form-group input[type="tel"],
.form-group textarea,
.form-group select {
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  padding: 10px 12px;
  font-size: 14px;
  transition: border-color var(--transition);
  background: white;
  color: var(--color-text);
}
.form-group input:focus,
.form-group textarea:focus,
.form-group select:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(147,0,34,.08);
}
.form-group textarea { resize: vertical; min-height: 80px; }
.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.checkbox-group { display: flex; flex-direction: column; gap: 6px; }
.checkbox-group--horizontal { flex-direction: row; gap: 16px; flex-wrap: wrap; }
.checkbox-label {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  cursor: pointer;
  user-select: none;
}
.checkbox-label input { margin: 0; accent-color: var(--color-primary); }
.input-password { position: relative; }

/* ── Fenêtre "Supprimer mon compte" (/mon-compte/ sur lexjob.fr et profil
   auteur sur la Tribune) ──────────────────────────────────────────────────
   Rien ne doit dépasser du cadre ni pouvoir être déplacé latéralement :
   .btn est en white-space:nowrap, donc "Supprimer définitivement" débordait
   à droite d'une fenêtre étroite. Sur mobile les deux boutons s'empilent en
   pleine largeur. Le contenu défile UNIQUEMENT à la verticale, dans le cadre
   (le formulaire de la Tribune est plus haut qu'un écran de téléphone), sans
   entraîner la page derrière — qui est en plus verrouillée tant que la
   fenêtre est ouverte (classe posée sur <html> par le JS des deux pages). */
html.account-modal-open,
html.account-modal-open body { overflow: hidden; }
.account-modal__overlay { touch-action: none; }
.account-modal__box {
  position: relative;
  box-sizing: border-box;
  background: #fff;
  border-radius: 14px;
  padding: 36px 32px;
  width: calc(100% - 32px);
  max-height: calc(100vh - 32px);
  max-height: calc(100dvh - 32px);
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  box-shadow: 0 20px 60px rgba(0,0,0,.2);
}
.account-modal__box fieldset { min-width: 0; box-sizing: border-box; }
.account-modal__box * { max-width: 100%; }
.account-modal__actions { display: flex; gap: 10px; }
.account-modal__actions .btn {
  flex: 1 1 0;
  min-width: 0;
  box-sizing: border-box;
  white-space: normal;
  line-height: 1.25;
  padding: 12px 10px;
}
/* Mobile : version compacte pour que la fenêtre tienne d'un seul tenant sur
   un écran de téléphone (sans avoir à la faire défiler) — pastille corbeille
   masquée, textes et espacements resserrés (!important : le contenu des deux
   pages est stylé en ligne). Les boutons restent côte à côte, leur libellé
   passe à la ligne au lieu de déborder. Sur un très petit écran, le défilement
   vertical interne reste le filet de sécurité. */
@media (max-width: 560px) {
  .account-modal__box { padding: 18px 16px; }
  .account-modal__box > div:first-child > div:first-child { display: none !important; }
  .account-modal__box h3 { font-size: 17px !important; margin-bottom: 6px !important; }
  .account-modal__box p { font-size: 12.5px !important; line-height: 1.4 !important; }
  .account-modal__box p + p { margin-top: 8px !important; }
  .account-modal__box > div:first-child { margin-bottom: 12px !important; }
  .account-modal__box fieldset { padding: 10px 12px !important; margin-bottom: 14px !important; }
  .account-modal__box fieldset label { font-size: 13px !important; margin-bottom: 8px !important; }
  .account-modal__box fieldset label span span { font-size: 12px !important; }
  .account-modal__box .form-group { margin-bottom: 14px !important; }
  .account-modal__actions .btn { padding: 10px 8px; font-size: 13.5px; }
}

.input-password input { padding-right: 42px; width: 100%; }
.toggle-password {
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: none;
  color: var(--color-text-muted);
  cursor: pointer;
}
.toggle-password:hover { color: var(--color-text); }
/* ── Indicateurs de robustesse du mot de passe ── */
.pwd-strength { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 3px; }
.pwd-rule {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 4px 11px 4px 8px; border-radius: 99px;
  font-size: 11.5px; font-weight: 500; line-height: 1.3;
  background: #f3f4f6; color: #9ca3af; border: 1.5px solid #e5e7eb;
  transition: background .2s, color .2s, border-color .2s;
  user-select: none;
}
.pwd-rule .r-dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: currentColor; flex-shrink: 0;
  transition: background .2s;
}
.pwd-rule.ok   { background: #f0fdf4; color: #16a34a; border-color: #bbf7d0; }
.pwd-rule.fail { background: #fff1f2; color: #e11d48; border-color: #fecdd3; }
@media (max-width: 480px) {
  .pwd-strength { flex-wrap: nowrap; gap: 4px; }
  .pwd-rule { font-size: 10px; padding: 3px 7px 3px 6px; gap: 3px; }
  .pwd-rule .r-dot { width: 6px; height: 6px; }
}

/* Location autocomplete */
.location-input-wrap { position: relative; }
.location-suggestions {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  background: white;
  border: 1px solid var(--color-border);
  border-top: none;
  border-radius: 0 0 var(--radius) var(--radius);
  box-shadow: var(--shadow);
  z-index: 200;
  max-height: 240px;
  overflow-y: auto;
  display: none;
}
.location-suggestions.is-visible { display: block; }
.location-suggestions:not(:empty) { display: block; }
.location-suggestion-item {
  padding: 10px 12px;
  font-size: 13px;
  cursor: pointer;
  border-bottom: 1px solid var(--color-bg-grey);
}
.location-suggestion-item:hover { background: var(--color-bg-light); color: var(--color-primary); }
.location-suggestion-item:last-child { border-bottom: none; }

/* ── Formulaire de dépôt d'offre ─────────────────────────────── */
.submit-page { padding: 32px 0 60px; }
.submit-page__title { font-size: 24px; font-weight: 700; margin-bottom: 28px; }
.form-card {
  background: white;
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  padding: 20px;
  margin-bottom: 16px;
}
.form-card--highlight { border: 2px solid var(--color-primary); }
.form-card__label {
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--color-text-light);
  margin-bottom: 10px;
  display: block;
}
.form-card input, .form-card select, .form-card textarea {
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  padding: 10px 12px;
  font-size: 14px;
  width: 100%;
  background: white;
}
.form-card input[type="radio"],
.form-card input[type="checkbox"] {
  width: auto;
  padding: 0;
  border: none;
  flex-shrink: 0;
}
.form-card input:focus, .form-card select:focus, .form-card textarea:focus {
  outline: none;
  border-color: var(--color-primary);
}
.form-card textarea { min-height: 120px; resize: vertical; }
.file-upload-label {
  display: inline-block;
  cursor: pointer;
}
.file-upload-label input[type="file"] { display: none; }
.file-upload-label__text {
  display: inline-block;
  padding: 8px 16px;
  border: 1px solid var(--color-border-dark);
  border-radius: var(--radius);
  font-size: 14px;
  background: var(--color-bg-light);
  color: var(--color-text);
}
.file-upload-label:hover .file-upload-label__text { border-color: var(--color-primary); }

/* ── Zone upload CV ─────────────────────────────────────────────────────── */
.cv-current {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  background: #f0fdf4;
  border: 1px solid #86efac;
  border-radius: var(--radius);
  margin-bottom: 10px;
  font-size: 13px;
}
.cv-upload-zone {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 18px;
  border: 2px dashed var(--color-border-dark);
  border-radius: var(--radius);
  cursor: pointer;
  background: var(--color-bg-light);
  transition: border-color .18s, background .18s;
}
.cv-upload-zone:hover {
  border-color: var(--color-primary);
  background: #fff5f7;
}
.cv-upload-zone--selected {
  border-color: #16a34a !important;
  background: #f0fdf4 !important;
}
.cv-upload-zone--dragover {
  border-color: #16a34a;
  background: #dcfce7;
  transform: scale(1.01);
}
.cv-upload-zone__icon {
  width: 40px;
  height: 40px;
  border-radius: 8px;
  background: #fff;
  border: 1px solid var(--color-border);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: var(--color-primary);
}
.cv-upload-zone--selected .cv-upload-zone__icon {
  background: #dcfce7;
  border-color: #86efac;
  color: #16a34a;
}
.cv-upload-zone__text {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.cv-upload-zone__main {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-text);
}
.cv-upload-zone--selected .cv-upload-zone__main {
  color: #16a34a;
}
.cv-upload-zone__sub {
  font-size: 12px;
  color: var(--color-text-muted);
}
.diffusion-info {
  font-size: 13px;
  color: var(--color-text-light);
  background: var(--color-bg-light);
  border-radius: var(--radius);
  padding: 10px 14px;
  margin-bottom: 12px;
  line-height: 1.6;
}

/* ── Authentification ───────────────────────────────────────── */
.auth-page { padding: 48px 0 60px; }
.auth-tabs {
  display: flex;
  border-bottom: 2px solid var(--color-border);
  margin-bottom: 28px;
}
.auth-tab {
  padding: 10px 24px;
  font-size: 15px;
  font-weight: 600;
  background: none;
  border: none;
  color: var(--color-text-light);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  transition: color var(--transition), border-color var(--transition);
}
.auth-tab--active { color: var(--color-primary); border-bottom-color: var(--color-primary); }
.auth-form-wrap { display: block; margin-top: 32px; }
.auth-form-wrap.hidden { display: none !important; }
.auth-form { display: flex; flex-direction: column; gap: 16px; }
.auth-switch { text-align: center; margin-top: 20px; font-size: 14px; color: var(--color-text-light); }
.account-type-selector { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.account-type-selector--3col { grid-template-columns: repeat(3, 1fr); }
/* Trois cartes côte à côte : la description passe sous le titre (carte plus étroite) */
.account-type-selector--3col .account-type-option__desc { display: block; margin-top: 2px; }
.account-type-option {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 20px 16px;
  border: 2px solid var(--color-border);
  border-radius: var(--radius-lg);
  cursor: pointer;
  text-align: center;
  transition: border-color var(--transition), background var(--transition);
  font-weight: 600;
}
.account-type-option input { display: none; }
.account-type-option:hover,
.account-type-option--active { border-color: var(--color-primary); background: #fff5f7; }
.account-type-option__desc { font-size: 12px; font-weight: 400; color: var(--color-text-muted); }

/* ── Espace compte ──────────────────────────────────────────── */
.account-layout {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 32px;
  padding: 32px 20px 60px;
}
.account-sidebar {
  background: white;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  height: fit-content;
  position: sticky;
  top: 80px;
}
.account-sidebar__list { list-style: none; padding: 8px 0; }
.account-sidebar__link {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  font-size: 14px;
  color: var(--color-text);
  transition: background var(--transition), color var(--transition);
}
.account-sidebar__link:hover { background: var(--color-bg-light); color: var(--color-primary); }
.account-sidebar__link--active { color: var(--color-primary); font-weight: 600; background: #fff0f3; }
.account-sidebar__link--active::before { content:''; width:3px; background:var(--color-primary); position:absolute; left:0; top:0; bottom:0; }
.account-sidebar li { position: relative; }
.account-sidebar__link--logout { color: var(--color-error); }
.account-sidebar__link--logout:hover { background: #fff5f5; }
@keyframes accountFadeIn {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.account-main {
  animation: accountFadeIn .22s ease both;
}
.account-main--leaving {
  opacity: 0;
  transform: translateY(4px);
  transition: opacity .15s ease, transform .15s ease;
  pointer-events: none;
}
.account-main__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 24px;
}
.account-main__title { font-size: 22px; font-weight: 700; }

/* Settings form */
.settings-form { display: flex; flex-direction: column; gap: 20px; }
.settings-label { font-size: 13px; font-weight: 700; color: var(--color-text-light); margin-bottom: 6px; display: block; }
.settings-avatar { flex-direction: row; gap: 16px; align-items: flex-start; }

/* ── Avatar upload ─────────────────────────────────────────── */
.avatar-upload { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; }
.avatar-upload__preview {
  position: relative;
  flex-shrink: 0;
  width: 88px;
  height: 88px;
  border-radius: 14px;
  overflow: visible;
  border: 2px solid var(--color-border);
  background: #f0f0f0;
}
.avatar-upload__preview img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 12px;
}
.avatar-upload__remove {
  position: absolute;
  top: -8px;
  right: -8px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #374151;
  color: #fff;
  border: 2px solid #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  padding: 0;
  transition: background .15s;
  z-index: 2;
}
.avatar-upload__remove svg { display: block; }
.avatar-upload__remove:hover { background: #c0392b; }
.avatar-upload__controls { display: flex; flex-direction: column; gap: 6px; }
.avatar-upload__btn {
  display: inline-flex;
  align-items: center;
  font-size: 13px;
  font-weight: 600;
  color: var(--color-primary);
  cursor: pointer;
  padding: 8px 16px;
  border: 1.5px solid var(--color-primary);
  border-radius: 8px;
  transition: background .15s;
  white-space: nowrap;
}
.avatar-upload__btn:hover { background: #f0f4ff; }
.settings-divider { border: none; border-top: 1px solid var(--color-border); margin: 8px 0; }
.settings-section-title { font-size: 17px; font-weight: 700; }
.settings-form__footer { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.cv-preview {
  display: flex;
  align-items: center;
  gap: 10px;
  background: #f0fff4;
  border: 1px solid #b2dfdb;
  border-radius: var(--radius);
  padding: 8px 12px;
  margin-bottom: 8px;
  font-size: 13px;
}

/* Table annonces */
.my-listings-table { overflow-x: auto; }
.my-listings-table table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.my-listings-table th {
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  color: var(--color-text-muted);
  text-align: left;
  padding: 10px 12px;
  border-bottom: 2px solid var(--color-border);
  white-space: nowrap;
}
/* Répartition explicite des colonnes */
.my-listings-table th:nth-child(1) { width: 30% !important; }
.my-listings-table th:nth-child(2) { width: 11% !important; }
.my-listings-table th:nth-child(3) { width: 13% !important; }
.my-listings-table th:nth-child(4) { width: 13% !important; }
.my-listings-table th:nth-child(5) { width: 33% !important; }
.my-listings-table td { padding: 12px; border-bottom: 1px solid var(--color-bg-grey); vertical-align: middle; }
/* Tronquer le titre + localisation si trop long */
.my-listings-table td:nth-child(1) small {
  display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.my-listing-row:hover td { background: var(--color-bg-light); }
.listing-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.new-badge {
  display: inline-block;
  background: var(--color-primary);
  color: white;
  font-size: 11px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 20px;
  margin-left: 4px;
}
.status-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 600;
}
.status-badge--publish { background: #e8f5e9; color: #2e7d32; }
.status-badge--draft   { background: #e3f2fd; color: #1565c0; }
.status-badge--pending { background: #fff8e1; color: #f57f17; }
.status-badge--envoyee { background: #e3f2fd; color: #1565c0; }
.status-badge--vue     { background: #fff8e1; color: #f57f17; }
.status-badge--retenue { background: #e8f5e9; color: #2e7d32; }
.status-badge--refusee { background: #fce4ec; color: #c62828; }
.status-badge--recrutement_clos,
.status-badge--offre_cloturee { background: #f0f0f0; color: #616161; }

/* Badge candidature compact (mes-annonces) */
.cand-count {
  display: flex; align-items: baseline; gap: 5px;
  font-size: 14px; font-weight: 600; color: #1a1a1a; white-space: nowrap;
}
.cand-count__new {
  font-size: 11.5px; font-weight: 500; color: var(--color-primary);
  white-space: nowrap;
}

/* Candidatures */
.candidatures-row td { padding: 0; }
.candidatures-list { padding: 16px 20px; background: var(--color-bg-light); }
.candidatures-list__title { font-size: 14px; font-weight: 700; margin-bottom: 12px; }
.candidature-item {
  background: white;
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  padding: 12px 16px;
  margin-bottom: 8px;
}
.candidature-item__info { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.candidature-item__email { font-size: 13px; color: var(--color-text-muted); }
.candidature-item__date { font-size: 12px; color: var(--color-text-muted); }
.candidature-item__message { font-size: 13px; color: var(--color-text-light); margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--color-bg-grey); }

/* Applications candidat */
.application-card {
  background: white;
  border: 1px solid var(--color-border);
  border-left: 4px solid var(--color-border);
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 12px;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
}
.application-card--envoyee { border-left-color: #1565c0; }
.application-card--vue     { border-left-color: #f57f17; }
.application-card--retenue { border-left-color: #2e7d32; }
.application-card--refusee { border-left-color: #c62828; }
.application-card--recrutement_clos,
.application-card--offre_cloturee { border-left-color: #9e9e9e; }
.application-card--deleted { border-left-color: #bbb; background: #fafafa; opacity: .85; }
.status-badge--deleted { background: #f0f0f0; color: #888; }
.badge--deleted { background: #eee; color: #888; font-size: 10px; }
.application-card__title--deleted { font-size: 15px; font-weight: 600; color: #999; }
.application-card__title { font-size: 15px; font-weight: 600; }
.application-card__title:hover { color: var(--color-primary); }
.application-card__title-wrap { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.application-card__meta { display: flex; gap: 16px; flex-wrap: wrap; font-size: 13px; color: var(--color-text-muted); }
.application-card__meta span { display: flex; align-items: center; gap: 4px; }

/* Empty state */
.empty-state { text-align: center; padding: 48px 20px; }
.empty-state p { color: var(--color-text-muted); margin: 16px 0; }

/* ── Modal ──────────────────────────────────────────────────── */
.modal { position: fixed; inset: 0; z-index: 500; display: flex; align-items: center; justify-content: center; }
.modal[hidden] { display: none; }
.modal__overlay { position: absolute; inset: 0; background: rgba(0,0,0,.5); }
.modal__box {
  position: relative;
  background: white;
  border-radius: var(--radius-lg);
  padding: 28px;
  max-width: 540px;
  width: 90%;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: var(--shadow-lg);
}
.modal__close {
  position: absolute;
  top: 14px;
  right: 16px;
  background: none;
  border: none;
  font-size: 22px;
  color: var(--color-text-muted);
  cursor: pointer;
}
.modal__close:hover { color: var(--color-text); }
.modal__title { font-size: 20px; font-weight: 700; margin-bottom: 20px; }
.apply-form { display: flex; flex-direction: column; gap: 16px; }

/* ── Auth modal (alerte) ────────────────────────────────────── */
.auth-modal__intro { font-size: 14px; color: var(--color-text-muted); text-align: center; margin: -8px 0 18px; line-height: 1.5; }
.modal .auth-tabs { display: flex; border-bottom: 2px solid #e5e7eb; margin-bottom: 20px; gap: 0; }
.modal .auth-tab {
  flex: 1;
  background: none;
  border: none;
  padding: 10px 0;
  font-size: 15px;
  font-weight: 600;
  color: var(--color-text-muted);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  transition: color .15s, border-color .15s;
}
.modal .auth-tab.is-active { color: var(--color-primary); border-bottom-color: var(--color-primary); }
.auth-panel { display: flex; flex-direction: column; gap: 10px; }
.auth-panel[hidden] { display: none; }
.auth-panel .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.auth-panel input[type="text"],
.auth-panel input[type="email"],
.auth-panel input[type="password"],
.auth-panel select {
  width: 100%; padding: 13px 16px; border: 1.5px solid #e5e7eb;
  border-radius: 10px; font-size: 14px; background: #f8f9fb;
  transition: border-color .15s, box-shadow .15s;
  box-sizing: border-box;
  display: block;
}
.auth-panel input:focus, .auth-panel select:focus { outline: none; border-color: var(--color-primary); background: #fff; box-shadow: 0 0 0 3px rgba(147,0,34,.09); }
.auth-panel .btn { margin-top: 6px; padding: 14px; font-size: 15px; font-weight: 700; }
.auth-panel form { display: flex; flex-direction: column; gap: 10px; }
.auth-panel__error { font-size: 13px; color: #c62828; background: #fef2f2; border: 1px solid #fecaca; border-radius: 6px; padding: 8px 12px; }
/* Card-selector étudiant / diplômé dans le modal */
.auth-type-radios { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.auth-type-radios--three { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 480px) {
  .auth-type-radios--three { grid-template-columns: 1fr; }
}
.auth-type-radios--three label { padding: 10px 8px; font-size: 12px; gap: 4px; }
.auth-type-radios--three .auth-type-icon { font-size: 18px; }
.auth-type-radios label {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 14px 10px;
  border: 2px solid #e5e7eb;
  border-radius: 10px;
  cursor: pointer;
  font-size: 14px;
  font-weight: 600;
  color: #555;
  transition: border-color .15s, background .15s, color .15s;
  text-align: center;
  line-height: 1.2;
}
.auth-type-radios label:hover { border-color: #930022; color: #930022; background: #fff8f9; }
.auth-type-radios input[type="radio"] { display: none; }
.auth-type-radios input[type="radio"]:checked + span,
.auth-type-radios label:has(input:checked) {
  border-color: #930022;
  background: #fff0f2;
  color: #930022;
}
.auth-type-radios label .auth-type-icon { font-size: 22px; line-height: 1; }
.auth-univ-row { display: none; }
.auth-univ-row.is-visible { display: block; }
.auth-panel__switch { font-size: 13px; color: var(--color-text-muted); text-align: center; margin-top: 4px; }
.auth-panel__switch a { color: var(--color-primary); cursor: pointer; text-decoration: underline; }

/* ── Alertes flash ──────────────────────────────────────────── */
.alert {
  padding: 12px 16px;
  border-radius: var(--radius);
  font-size: 14px;
  font-weight: 500;
  margin-bottom: 16px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.alert--success { background: #e8f5e9; border: 1px solid #a5d6a7; color: #2e7d32; }
.alert--error   { background: #fce4ec; border: 1px solid #f48fb1; color: #c62828; }

/* ── Pagination ─────────────────────────────────────────────── */
.pagination { margin-top: 32px; }
.pagination .page-numbers {
  display: flex;
  list-style: none;
  gap: 6px;
  flex-wrap: wrap;
}
.pagination .page-numbers li a,
.pagination .page-numbers li span {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  font-size: 14px;
  color: var(--color-text);
  transition: background var(--transition), color var(--transition);
}
.pagination .page-numbers li a:hover { background: var(--color-bg-light); color: var(--color-primary); border-color: var(--color-primary); }
.pagination .page-numbers li .current { background: var(--color-primary); color: white; border-color: var(--color-primary); }

/* ── Page de contenu ────────────────────────────────────────── */
.page-content { padding: 40px 0 60px; max-width: 760px; }
.page-article__title { font-size: 28px; font-weight: 700; margin-bottom: 24px; }
.page-article__body {
  font-size: 15px;
  line-height: 1.8;
  color: var(--color-text);
}
.page-article__body h2 { font-size: 20px; margin: 24px 0 12px; }
.page-article__body h3 { font-size: 17px; margin: 20px 0 8px; }
.page-article__body p { margin-bottom: 14px; }
.page-article__body ul, .page-article__body ol { padding-left: 20px; margin-bottom: 14px; }
/* Puces des listes saisies dans l'éditeur (mentions légales, politique de
   confidentialité, CGU, charte…) : la règle « ul { list-style: none; } » de
   tout le site les faisait disparaître. Comme dans les articles (blog.css). */
.page-article__body ul { list-style: disc; }
.page-article__body ol { list-style: decimal; }
.page-article__body li { margin-bottom: 6px; }
.page-article__body li > ul,
.page-article__body li > ol { margin: 6px 0 0; }
.page-article__body li > ul { list-style: circle; }
.page-article__body a { color: var(--color-primary); text-decoration: underline; }

/* Page "À propos" de la Tribune du Droit : reste sur page.php (Modèle par
   défaut, contenu géré depuis l'admin), mais avec une mise en page plus
   éditoriale — scopé via la classe de body générée automatiquement par
   WordPress à partir du slug de LA page précise (page-a-propos-tribune-du-
   droit), pour ne jamais affecter les autres pages qui partagent page.php
   (Mentions légales, Politique de confidentialité...). */
.page-a-propos-tribune-du-droit .page-article__body {
  font-size: 17px;
  line-height: 1.75;
}
.page-a-propos-tribune-du-droit .page-article__body > p:first-child {
  font-family: Georgia, 'Times New Roman', serif;
  font-style: italic;
  font-size: 19px;
  color: #1a1a1a;
}
.page-a-propos-tribune-du-droit .page-article__body h2 {
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 24px;
  margin: 44px 0 14px;
  padding-top: 28px;
  border-top: 1px solid var(--color-border);
}
.page-a-propos-tribune-du-droit .page-article__body h2:first-of-type {
  margin-top: 0;
  padding-top: 0;
  border-top: none;
}
.page-a-propos-tribune-du-droit .page-article__body h3 {
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 17px;
}
/* Liste à tirets : le "—" est positionné en absolu et décalé vers la droite
   (left: .5em), le texte lui-même démarre encore plus loin (padding-left) —
   c'est ce qui donne l'effet "tiret décalé" plutôt qu'un tiret collé au bord. */
.page-a-propos-tribune-du-droit .page-article__body ul {
  list-style: none;
  padding-left: 0;
  margin: 18px 0 20px;
}
.page-a-propos-tribune-du-droit .page-article__body ul li {
  position: relative;
  padding-left: 1.8em;
  margin-bottom: 14px;
}
.page-a-propos-tribune-du-droit .page-article__body ul li::before {
  content: "—";
  position: absolute;
  left: 0.6em;
  color: var(--color-primary);
  font-weight: 700;
}

/* ── Contact ────────────────────────────────────────────────── */
.contact-page { padding: 40px 0 60px; }
.contact-page__title { font-size: 26px; font-weight: 700; margin-bottom: 20px; }
.contact-info { margin-bottom: 28px; color: var(--color-text-light); }
.contact-info a { color: var(--color-primary); }
.contact-form { display: flex; flex-direction: column; gap: 16px; }

/* ── Footer ─────────────────────────────────────────────────── */
.site-footer { background: #f4f4f5; color: #444; border-top: 1px solid #e5e5e7; }
.site-footer__inner {
  display: grid;
  grid-template-columns: 1.5fr 1fr 1fr 1fr;
  gap: 40px;
  padding: 48px 20px 32px;
}
.site-footer__brand { grid-column: 1; }
.site-footer__tagline {
  font-size: 14px;
  color: #777;
  margin-top: 12px;
  line-height: 1.6;
}
.site-footer__title {
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: #222;
  margin-bottom: 16px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--color-primary);
  display: inline-block;
}
.site-footer__links { list-style: none; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.site-footer__links a {
  font-size: 14px;
  color: #555;
  display: flex;
  align-items: center;
  gap: 6px;
  transition: color var(--transition);
}
.site-footer__links a:hover { color: #111; }
.site-footer__links a::before { content:'›'; opacity: .5; }
.site-footer__links--social a::before { content: none; }
.site-footer__bottom {
  border-top: 1px solid #e0e0e2;
  padding: 16px 0;
}
.site-footer__bottom-inner {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  padding: 0 20px;
}
.site-footer__copy { font-size: 13px; color: #888; }
.site-footer__legal { display: flex; gap: 16px; flex-wrap: wrap; }
.site-footer__legal a { font-size: 12px; color: #888; }
.site-footer__legal a:hover { color: #222; }
/* Logo footer en noir */
.site-logo__img--footer { filter: brightness(0); }

/* ── Responsive ─────────────────────────────────────────────── */
@media (max-width: 900px) {
  .archive-layout { display: block; }
  .archive-sidebar { position: static; display: none; margin-bottom: 16px; border-radius: 10px; }
  .archive-sidebar.is-open { display: block; }
  .archive-filter-toggle { display: flex; }
  .single-layout { grid-template-columns: 1fr; }
  .single-sidebar { position: static; }
  .site-footer__inner { grid-template-columns: 1fr 1fr; }
  .account-layout { grid-template-columns: 1fr; }
  .account-sidebar { position: static; }
}

@media (max-width: 768px) {
  .site-nav,
  .site-header__actions { display: none; }
  .site-nav.is-open,
  .site-header__actions.is-open { display: flex; }
  .mobile-menu-toggle { display: flex; }
  .site-header__inner { flex-wrap: wrap; }

  /* Menu mobile plein écran */
  .site-nav.is-open {
    position: fixed;
    top: 64px;
    left: 0;
    right: 0;
    bottom: 0;
    background: white;
    flex-direction: column;
    align-items: flex-start;
    padding: 20px;
    overflow-y: auto;
    z-index: 99;
    border-top: 1px solid var(--color-border);
  }
  .site-nav.is-open .site-nav__list { flex-direction: column; width: 100%; }
  .site-nav.is-open .site-nav__link { padding: 12px 4px; font-size: 16px; border-bottom: 1px solid var(--color-bg-grey); }
  .site-nav.is-open .dropdown-menu { position: static; visibility: visible; opacity: 1; transform: none; box-shadow: none; border: none; padding-left: 20px; }

  .search-bar { flex-direction: column; border-radius: var(--radius-lg); }
  .search-bar__field { border-right: none; border-bottom: 1px solid var(--color-border); }
  .search-bar .btn { border-radius: 0 0 var(--radius-lg) var(--radius-lg); }

  .form-row { grid-template-columns: 1fr; }
  .account-type-selector { grid-template-columns: 1fr; }
  .site-footer__inner { grid-template-columns: 1fr; gap: 24px; }
  .site-footer__bottom-inner { flex-direction: column; align-items: flex-start; }
  .listings-grid { grid-template-columns: 1fr; }
  .my-listings-table td, .my-listings-table th { font-size: 12px; padding: 8px; }
  .tabs { flex-wrap: wrap; }
  .tab { padding: 8px 14px; font-size: 13px; }
}

@media (max-width: 480px) {
  .hero__title { font-size: 22px; }
  .container { padding: 0 14px; }
  .modal__box { padding: 20px; }
  .archive-header { flex-direction: column; align-items: flex-start; }
  .hero { min-height: 280px; padding-bottom: 24px; }
  .hero__search { padding: 16px 12px 0; }
}

/* ── Messagerie ─────────────────────────────────────────────── */
.messaging-layout {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: 0;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  min-height: 520px;
}
.conversations-list {
  border-right: 1px solid var(--color-border);
  background: var(--color-bg-light);
  overflow-y: auto;
}
.conversations-list__title {
  padding: 16px;
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--color-text-muted);
  border-bottom: 1px solid var(--color-border);
}
.conversation-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--color-border);
  cursor: pointer;
  transition: background var(--transition);
  text-decoration: none;
  color: inherit;
}
.conversation-item:hover { background: #fff; }
.conversation-item--active { background: #fff; border-left: 3px solid var(--color-primary); }
.conversation-item__avatar { position: relative; flex-shrink: 0; }
.conversation-item__avatar img { border-radius: 50%; width: 36px; height: 36px; }
.conversation-item__badge {
  position: absolute; top: -4px; right: -4px;
  background: var(--color-primary); color: #fff;
  font-size: 10px; font-weight: 700;
  width: 16px; height: 16px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
}
.conversation-item__info { flex: 1; min-width: 0; }
.conversation-item__name { display: block; font-weight: 600; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.conversation-item__preview { display: block; font-size: 12px; color: var(--color-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.conversation-item__date { font-size: 11px; color: var(--color-text-muted); flex-shrink: 0; }

.messages-pane { display: flex; flex-direction: column; }
.messages-pane__header {
  padding: 14px 20px;
  border-bottom: 1px solid var(--color-border);
  display: flex; align-items: center; gap: 10px;
  font-size: 15px;
}
.messages-list {
  flex: 1;
  overflow-y: auto;
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  max-height: 380px;
}
.messages-empty { color: var(--color-text-muted); font-size: 14px; text-align: center; margin: auto; }
.message-bubble {
  max-width: 70%;
  padding: 10px 14px;
  border-radius: 12px;
  font-size: 14px;
  line-height: 1.5;
}
.message-bubble--mine {
  align-self: flex-end;
  background: var(--color-primary);
  color: #fff;
  border-bottom-right-radius: 4px;
}
.message-bubble--theirs {
  align-self: flex-start;
  background: var(--color-bg-grey);
  color: var(--color-text);
  border-bottom-left-radius: 4px;
}
.message-bubble__meta { font-size: 11px; opacity: .7; margin-top: 4px; text-align: right; }
.message-bubble--theirs .message-bubble__meta { text-align: left; }

.message-form {
  padding: 14px 20px;
  border-top: 1px solid var(--color-border);
  background: var(--color-bg-light);
}
.message-form__input-wrap { display: flex; gap: 10px; align-items: flex-end; }
.message-form textarea {
  flex: 1;
  padding: 10px 14px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  resize: none;
  font-size: 14px;
  line-height: 1.5;
}
.message-form textarea:focus { outline: none; border-color: var(--color-primary); }

@media (max-width: 768px) {
  .messaging-layout { grid-template-columns: 1fr; }
  .conversations-list { max-height: 200px; }
}

/* ── Page fade-in ────────────────────────────────────────────── */
body {
  animation: lexjob-fadein 0.3s ease;
}
@keyframes lexjob-fadein {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* ── Loading overlay ────────────────────────────────────────── */
#lexjob-loading-overlay {
  position: fixed;
  inset: 0;
  background: rgba(255,255,255,.9);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 99999;
  opacity: 0;
  pointer-events: none;
  transition: opacity .3s ease;
}
#lexjob-loading-overlay.is-visible {
  opacity: 1;
  pointer-events: auto;
}
.lexjob-loader__logo {
  width: 140px;
  animation: lexjob-bounce .8s ease infinite alternate;
}
@keyframes lexjob-bounce {
  from { transform: translateY(0); }
  to   { transform: translateY(-12px); }
}

/* ── Message verrou utilisateur ─────────────────────────────── */
.lexjob-user-lock-msg {
  background: #fdf9f6;
  border: 1px solid #e0d8d0;
  border-left: 4px solid #930022;
  border-radius: 10px;
  padding: 14px 18px;
  margin-bottom: 16px;
  font-size: 13px;
  color: #666;
  text-align: center;
}

/* ── Bouton LinkedIn profil recruteur ───────────────────────── */
.lexjob-linkedin-btn {
  display: inline-block;
  background: #0077B5;
  color: #fff !important;
  padding: 10px 20px;
  border-radius: 6px;
  font-weight: 600;
  text-decoration: none !important;
  transition: background .3s ease;
  font-size: 15px;
  margin-bottom: 16px;
}
.lexjob-linkedin-btn:hover { background: #005f91; color: #fff !important; }

/* ── Formulaire alerte — encadrement ────────────────────────── */
.lexjob-alert-container {
  background: #fff;
  border-radius: 12px;
  box-shadow: 0 0 0 3px #930022;
  padding: 40px 50px;
  margin: 60px auto;
  max-width: 720px;
  text-align: center;
  transition: box-shadow .3s ease, transform .2s ease;
  box-sizing: border-box;
}
.lexjob-alert-container:hover {
  box-shadow: 0 10px 28px rgba(0,0,0,.08);
  transform: translateY(-2px);
}
.lexjob-alert-container h2 {
  color: #930022;
  font-size: 1.8rem;
  font-weight: 700;
  margin-bottom: 15px;
}
.lexjob-alert-container p {
  color: #444;
  font-size: 1.05rem;
  margin-bottom: 20px;
}
@media (max-width: 768px) {
  .lexjob-alert-container {
    margin: 40px 15px;
    padding: 30px 18px;
    max-width: 100%;
  }
  .lexjob-alert-container h2 { font-size: 1.5rem; }
}

/* Masquer le formulaire alerte sur les pages compte/annonces */
.page-mon-compte .lexjob-alert-container,
.page-mes-annonces .lexjob-alert-container,
.page-mes-candidatures .lexjob-alert-container { display: none !important; }

/* ── Modal de chat ─────────────────────────────────────────── */
.chat-modal {
  position: fixed; inset: 0; z-index: 9999;
  display: flex; align-items: flex-end; justify-content: flex-end;
  padding: 0 24px 24px;
  pointer-events: none;
}
.chat-modal:not([hidden]) { pointer-events: all; }
.chat-modal__overlay {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.45);
  opacity: 0; transition: opacity var(--transition);
}
.chat-modal:not([hidden]) .chat-modal__overlay { opacity: 1; }
.chat-modal__window {
  position: relative;
  width: 480px; max-width: calc(100vw - 48px);
  height: 560px; max-height: calc(100vh - 90px);
  background: #fff;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  display: flex; flex-direction: column; overflow: hidden;
  transform: translateY(24px); opacity: 0;
  transition: transform var(--transition), opacity var(--transition);
}
.chat-modal:not([hidden]) .chat-modal__window {
  transform: translateY(0); opacity: 1;
}
.chat-modal__header {
  padding: 12px 16px;
  background: var(--color-primary); color: #fff;
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  flex-shrink: 0;
}
.chat-modal__header-identity { display: flex; align-items: center; gap: 10px; min-width: 0; }
.chat-modal__header-avatar {
  width: 38px; height: 38px; border-radius: 50%; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: 15px; font-weight: 700; color: #fff;
  background: rgba(255,255,255,.25);
}
.chat-modal__header-info { min-width: 0; }
.chat-modal__title-link {
  display: block; font-size: 1rem; font-weight: 700;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  color: #fff; text-decoration: none;
}
.chat-modal__title-link:hover { color: #fff; text-decoration: underline; text-decoration-color: rgba(255,255,255,.6); }
.chat-modal__subtitle {
  font-size: .72rem; opacity: .75; display: block;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 260px;
}
.chat-modal__close {
  background: none; border: none; color: #fff;
  font-size: 1.6rem; line-height: 1; cursor: pointer;
  padding: 0 2px; flex-shrink: 0; opacity: .8;
  transition: opacity var(--transition);
}
.chat-modal__close:hover { opacity: 1; }
.chat-modal__messages {
  flex: 1; overflow-y: auto; padding: 14px 16px;
  display: flex; flex-direction: column; gap: 8px;
  scroll-behavior: smooth;
}
.chat-modal__loading,
.chat-modal__empty {
  text-align: center; color: var(--color-text-muted);
  font-size: .85rem; padding: 28px 0; align-self: center;
}
.chat-msg { max-width: 82%; }
.chat-msg--mine  { align-self: flex-end; }
.chat-msg--theirs { align-self: flex-start; }
.chat-msg__bubble {
  padding: 8px 13px; border-radius: 14px; font-size: .87rem; line-height: 1.5;
  word-break: break-word;
}
.chat-msg--mine .chat-msg__bubble {
  background: var(--color-primary); color: #fff;
  border-bottom-right-radius: 3px;
}
.chat-msg--theirs .chat-msg__bubble {
  background: var(--color-bg-grey); color: var(--color-text);
  border-bottom-left-radius: 3px;
}
.chat-msg__meta {
  font-size: .72rem; color: var(--color-text-muted); margin-top: 3px;
}
.chat-msg--mine .chat-msg__meta  { text-align: right; }
.chat-msg--theirs .chat-msg__meta { text-align: left; }
.chat-modal__form {
  border-top: 1px solid var(--color-border);
  display: flex; flex-direction: column; flex-shrink: 0; background: #fff;
  padding: 8px 12px 10px;
  gap: 0;
}

/* Prévisualisation du fichier sélectionné */
.chat-modal__file-preview[hidden] { display: none !important; }
.chat-modal__file-preview {
  display: flex; align-items: center; gap: 6px;
  background: #f0f2ff; border: 1px solid #dde3ff; border-radius: 8px;
  padding: 5px 10px; margin-bottom: 6px;
  font-size: .76rem; color: var(--color-primary);
}
.chat-modal__file-name {
  flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.chat-modal__file-remove {
  background: none; border: none; cursor: pointer;
  color: var(--color-text-muted); font-size: 1.1rem; line-height: 1;
  padding: 0; flex-shrink: 0; transition: color var(--transition);
}
.chat-modal__file-remove:hover { color: #dc2626; }

/* Rangée principale : [📎] [textarea] [→] */
.chat-modal__input-row {
  display: flex; align-items: center; gap: 2px;
  background: var(--color-bg-grey);
  border: 1.5px solid var(--color-border);
  border-radius: 24px;
  padding: 3px 3px 3px 4px;
  transition: border-color var(--transition);
}
.chat-modal__input-row:focus-within {
  border-color: var(--color-primary);
  background: #fff;
}

/* Bouton pièce jointe */
.chat-modal__attach-label {
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; border-radius: 50%; flex-shrink: 0;
  color: var(--color-text-muted);
  transition: color var(--transition), background var(--transition);
}
.chat-modal__attach-label:hover { color: var(--color-primary); background: rgba(0,0,0,.06); }

/* Textarea sans bordure (intégrée dans la pill) */
.chat-modal__form textarea {
  flex: 1; resize: none; border: none; outline: none; background: transparent;
  padding: 8px 6px; font-size: .87rem; font-family: var(--font-family);
  line-height: 1.4; min-height: 20px; max-height: 110px;
  overflow-y: auto;
}

/* Bouton envoyer — cercle coloré */
.chat-modal__send-btn {
  width: 36px; height: 36px; flex-shrink: 0; border-radius: 50%;
  border: none; cursor: pointer;
  background: var(--color-primary); color: #fff;
  display: flex; align-items: center; justify-content: center;
  transition: background var(--transition), transform .1s;
}
.chat-modal__send-btn:hover  { background: var(--color-primary-dark, #7b0024); }
.chat-modal__send-btn:active { transform: scale(.92); }

/* Pièces jointes dans les bulles */
.chat-msg__attach { display: block; margin-top: 6px; text-decoration: none; }
.chat-msg__attach--img { display: inline-block; }
.chat-msg__attach-img {
  display: block; max-width: 220px; max-height: 180px; border-radius: 8px;
  object-fit: cover; border: 2px solid rgba(255,255,255,.3);
}
.chat-msg--theirs .chat-msg__attach-img { border-color: var(--color-border); }
.chat-msg__attach--doc {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 10px; border-radius: 8px; font-size: .82rem;
  background: rgba(255,255,255,.2); color: inherit;
  transition: background var(--transition);
}
.chat-msg--theirs .chat-msg__attach--doc {
  background: rgba(0,0,0,.07); color: var(--color-text);
}
.chat-msg__attach--doc:hover { background: rgba(255,255,255,.35); }
.chat-msg--theirs .chat-msg__attach--doc:hover { background: rgba(0,0,0,.13); }

/* ── Bloc pièces jointes candidature (haut du modal) ───────── */
.chat-modal__attachments {
  margin: 10px 12px 4px;
  background: #fff;
  border: 1px solid #e8eaed;
  border-radius: 10px;
  padding: 10px 12px 10px;
  flex-shrink: 0;
}
.chat-modal__attachments-title {
  font-size: 10.5px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .07em; color: #aaa; margin-bottom: 8px;
}
.chat-modal__attachments-list { display: flex; gap: 8px; flex-wrap: wrap; }
.chat-modal__attach-btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 14px; border-radius: 8px;
  background: #f8f9fb; border: 1px solid #e0e2e6;
  color: #222; font-size: 13px; font-weight: 500;
  text-decoration: none; transition: background .15s, border-color .15s;
  min-width: 0;
}
.chat-modal__attach-btn:hover { background: #f0f1f4; border-color: #c8cad0; color: #222; }
.chat-modal__attach-btn__icon {
  display: flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; border-radius: 6px;
  background: #fff0f0; color: var(--color-primary);
  flex-shrink: 0;
}
.chat-modal__attach-btn__body { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.chat-modal__attach-btn__label { font-size: 13px; font-weight: 600; color: #222; }
.chat-modal__attach-btn__sub { font-size: 11px; color: #999; }

/* ── Messages page inline styles ───────────────────────────── */
.messages-pane__offre {
  display: block; font-size: .78rem;
  color: rgba(255,255,255,.75); margin-top: 1px;
}
.conversation-item__offre {
  display: block; font-size: .72rem;
  color: var(--color-primary); font-weight: 500;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

@media (max-width: 640px) {
  .chat-modal {
    padding: 0; align-items: stretch; justify-content: stretch;
  }
  .chat-modal__window {
    width: 100%; max-width: 100%;
    height: 100%; max-height: 100%;
    border-radius: 0;
  }
}

/* ── Profil public ─────────────────────────────────────────────────────────── */
.profil-card {
  background: #fff;
  border-radius: 14px;
  border: 1px solid #e8e8e8;
  overflow: hidden;
  margin-bottom: 32px;
  box-shadow: 0 2px 12px rgba(0,0,0,.06);
}
.profil-card__header {
  display: flex;
  gap: 24px;
  align-items: flex-start;
  padding: 32px 32px 24px;
}
.profil-card__avatar-wrap { flex-shrink: 0; }
.profil-avatar {
  width: 96px !important; height: 96px !important;
  border-radius: 50% !important; object-fit: cover;
  border: 3px solid #e8e8e8;
  box-shadow: 0 2px 8px rgba(0,0,0,.1);
}
.profil-card__identity { flex: 1; min-width: 0; }
.profil-card__name {
  font-size: 24px; font-weight: 700;
  margin: 0 0 12px; color: var(--color-text); line-height: 1.2;
}
.profil-card__badges {
  display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 10px;
}
.badge--verified {
  background: #e8f5e9;
  color: #2e7d32;
  border: 1px solid #a5d6a7;
  font-size: 12px;
  padding: 3px 10px;
  border-radius: 20px;
  font-weight: 600;
}
.badge--spontanee {
  background: #f3e8fd;
  color: #7c3aed;
  border: 1px solid #d8b4fe;
  font-size: 11px;
  padding: 2px 9px;
  border-radius: 20px;
  font-weight: 700;
  letter-spacing: .03em;
}
.badge--univ {
  background: #f3f4f6;
  color: #555;
  border: 1px solid #ddd;
  font-size: 12px;
  padding: 3px 10px;
  border-radius: 20px;
}
/* ── Formation label — élément identitaire principal ── */
.profil-card__formation {
  display: flex;
  align-items: center;
  font-size: 18px;
  font-weight: 700;
  color: #312e81;
  margin: 4px 0 14px;
  line-height: 1.3;
  letter-spacing: -.01em;
}
.profil-card__formation svg { color: #6366f1; flex-shrink: 0; }

/* ── Distinctions Paris 1 (Collège de Droit / Magistère) — pills compactes ── */
.profil-card__distinctions-section {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 8px !important;
  padding: 10px 28px 14px !important;
  border-top: 1px solid #f0f0f0;
  /* reset any gradient/shadow from previous styles */
  background: none !important;
  box-shadow: none !important;
}
.distinction-card {
  display: inline-flex !important;
  align-items: center !important;
  gap: 12px !important;
  padding: 10px 22px 10px 12px !important;
  border-radius: 28px !important;
  /* override old gradient */
  background: #eef2ff !important;
  border: 1px solid #c7d2fe !important;
  box-shadow: none !important;
  transform: none !important;
  transition: background .15s !important;
}
.distinction-card:hover {
  background: #e0e7ff !important;
  transform: none !important;
  box-shadow: none !important;
}
.distinction-card--college  { background: #eff6ff !important; border-color: #bfdbfe !important; }
.distinction-card--magistere { background: #f5f3ff !important; border-color: #ddd6fe !important; }
.distinction-card--college:hover  { background: #dbeafe !important; }
.distinction-card--magistere:hover { background: #ede9fe !important; }

.distinction-card__logo-wrap {
  width: 42px !important; height: 42px !important;
  flex-shrink: 0;
  border-radius: 50% !important; overflow: hidden;
  background: rgba(55,48,163,.1) !important;
  display: flex; align-items: center; justify-content: center;
}
.distinction-card__logo {
  width: 42px !important; height: 42px !important;
  max-width: 42px !important; max-height: 42px !important;
  object-fit: cover !important; border-radius: 50% !important; display: block;
}
.distinction-card__text {
  display: flex; flex-direction: column; gap: 2px;
}
.distinction-card__title {
  font-size: 14px !important; font-weight: 700 !important;
  color: #3730a3 !important; line-height: 1.2 !important;
}
.distinction-card--college .distinction-card__title  { color: #1d4ed8 !important; }
.distinction-card--magistere .distinction-card__title { color: #5b21b6 !important; }
.distinction-card__sub {
  font-size: 12px !important; color: #6b7280 !important; line-height: 1.3 !important;
  display: block !important;
}

/* ── Modal bienvenue — compléter le profil ── */
.lex-welcome-modal {
  position: fixed; inset: 0; z-index: 99999;
  display: flex; align-items: center; justify-content: center;
  opacity: 0; pointer-events: none;
  transition: opacity .25s;
}
.lex-welcome-modal--visible {
  opacity: 1; pointer-events: auto;
}
.lex-welcome-modal__backdrop {
  position: absolute; inset: 0;
  background: rgba(15,15,30,.55);
  backdrop-filter: blur(3px);
}
.lex-welcome-modal__box {
  position: relative; z-index: 1;
  background: #fff; border-radius: 20px;
  padding: 44px 40px 36px;
  max-width: 500px; width: 92%;
  text-align: center;
  box-shadow: 0 24px 80px rgba(0,0,0,.2);
  animation: lex-modal-in .3s ease;
}
@keyframes lex-modal-in {
  from { transform: translateY(24px) scale(.97); opacity: 0; }
  to   { transform: translateY(0) scale(1);      opacity: 1; }
}
.lex-welcome-modal__icon { margin-bottom: 20px; }
.lex-welcome-modal__title {
  font-size: 22px; font-weight: 800; color: #111;
  margin: 0 0 14px; line-height: 1.2;
}
.lex-welcome-modal__text {
  font-size: 15px; color: #555; line-height: 1.65; margin: 0 0 6px;
}
.lex-welcome-modal__actions {
  display: flex; flex-direction: column; align-items: center; gap: 10px; margin-top: 28px;
}
.btn--ghost {
  background: none; border: none; cursor: pointer;
  padding: 8px 16px; border-radius: 8px;
  transition: color .15s;
}
.btn--ghost:hover { color: #555 !important; }

.profil-card__since {
  font-size: 12px; color: #aaa; margin: 0 0 16px; letter-spacing: .02em;
}
.profil-card__actions { display: flex; flex-wrap: wrap; gap: 8px; }
.profil-btn-linkedin { color: #0077b5 !important; border-color: #0077b5 !important; }
.profil-btn-linkedin:hover { background: #0077b5 !important; color: #fff !important; }
.profil-card__section {
  border-top: 1px solid #f0f0f0;
  padding: 24px 32px 28px;
}
.profil-card__section-title {
  font-size: 16px;
  font-weight: 600;
  margin: 0 0 12px;
  color: var(--color-text);
}
.profil-card__bio {
  color: #555;
  line-height: 1.7;
  margin: 0;
}
.profil-offres { margin-top: 16px; }
.profil-offres__title {
  font-size: 20px;
  font-weight: 700;
  margin: 0 0 20px;
  color: var(--color-text);
}
@media (max-width: 600px) {
  .profil-card__header { flex-direction: column; align-items: center; text-align: center; }
  .profil-card__badges { justify-content: center; }
  .profil-card__actions { justify-content: center; }
}

/* ── Profil public — En-tête annonces ──────────────────────── */
.profil-offres__head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 18px;
}
.profil-offres__title {
  font-size: 20px;
  font-weight: 700;
  margin: 0;
  color: var(--color-text);
}
.profil-offres__count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--color-primary);
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  border-radius: 20px;
  padding: 1px 8px;
  min-width: 22px;
}

/* ── Profil public — Grille annonces ───────────────────────── */
.profil-offres__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 14px;
}
.profil-offres__empty {
  text-align: center;
  padding: 40px 20px;
  color: #bbb;
  font-size: 14px;
}
.profil-offres__empty p { margin: 10px 0 0; }

/* ── Carte offre profil ─────────────────────────────────────── */
.profil-offre-card {
  display: flex;
  align-items: center;
  gap: 0;
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 10px;
  overflow: hidden;
  text-decoration: none;
  color: var(--color-text);
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
  position: relative;
}
.profil-offre-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 24px rgba(0,0,0,.10);
  border-color: transparent;
  color: var(--color-text);
}
/* Barre d'accent gauche */
.profil-offre-card__accent {
  width: 5px;
  align-self: stretch;
  flex-shrink: 0;
  background: #ccc;
}
.profil-offre-card__accent--stage,
.profil-offre-card__accent--stages { background: #10b981; }
.profil-offre-card__accent--alternance,
.profil-offre-card__accent--alternances { background: #3b82f6; }
.profil-offre-card__accent--emploi,
.profil-offre-card__accent--emplois { background: var(--color-primary); }

.profil-offre-card__body {
  flex: 1;
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 12px 14px 16px;
  min-width: 0;
}
.profil-offre-card__logo {
  flex-shrink: 0;
}
.profil-offre-card__logo img {
  width: 40px;
  height: 40px;
  object-fit: cover;
  border-radius: 6px;
  border: 1px solid #eee;
}
.profil-offre-card__content { min-width: 0; flex: 1; }
.profil-offre-card__badge {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .05em;
  padding: 2px 7px;
  border-radius: 4px;
  margin-bottom: 5px;
  background: #f0fdf4;
  color: #059669;
}
.profil-offre-card__badge--alternance,
.profil-offre-card__badge--alternances {
  background: #eff6ff;
  color: #2563eb;
}
.profil-offre-card__badge--emploi,
.profil-offre-card__badge--emplois {
  background: #fff1f2;
  color: var(--color-primary);
}
.profil-offre-card__title {
  font-size: 14px;
  font-weight: 600;
  margin: 0 0 6px;
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.profil-offre-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.profil-offre-card__meta-item {
  display: flex;
  align-items: center;
  gap: 3px;
  font-size: 12px;
  color: var(--color-text-muted);
}
.profil-offre-card__arrow {
  padding: 0 14px;
  color: #ccc;
  flex-shrink: 0;
  transition: color .18s, transform .18s;
}
.profil-offre-card:hover .profil-offre-card__arrow {
  color: var(--color-primary);
  transform: translateX(3px);
}

/* ── Modal de contact ───────────────────────────────────────── */
.contact-modal {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  pointer-events: none;
  opacity: 0;
  transition: opacity .2s ease;
}
.contact-modal--open {
  pointer-events: auto;
  opacity: 1;
}
.contact-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.5);
  backdrop-filter: blur(2px);
}
.contact-modal__box {
  position: relative;
  background: #fff;
  border-radius: 14px;
  width: 100%;
  max-width: 480px;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  box-shadow: 0 20px 60px rgba(0,0,0,.2);
  overflow: hidden;
  transform: translateY(16px) scale(.97);
  transition: transform .22s ease;
}
.contact-modal--open .contact-modal__box {
  transform: translateY(0) scale(1);
}
.contact-modal__close {
  position: absolute;
  top: 14px;
  right: 14px;
  background: none;
  border: none;
  cursor: pointer;
  color: #999;
  padding: 4px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  transition: background .15s, color .15s;
}
.contact-modal__close:hover { background: #f5f5f5; color: #333; }
.contact-modal__header {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 22px 24px 16px;
  border-bottom: 1px solid #f0f0f0;
  flex-shrink: 0;
}
.contact-modal__header img,
.contact-modal__avatar img { border-radius: 50%; }
.contact-modal__title {
  font-size: 17px;
  font-weight: 700;
  margin: 0 0 5px;
  color: var(--color-text);
}
.contact-modal__tag {
  display: inline-flex;
  align-items: center;
  font-size: 11px;
  font-weight: 600;
  color: #7c3aed;
  background: #f5f3ff;
  border-radius: 20px;
  padding: 3px 10px;
}
.contact-modal__body { padding: 18px 24px; overflow-y: auto; flex: 1; }
.contact-modal__hint {
  font-size: 13px;
  color: #888;
  margin: 0 0 14px;
  line-height: 1.5;
}
.contact-modal__textarea {
  width: 100%;
  box-sizing: border-box;
  border: 1.5px solid var(--color-border);
  border-radius: 8px;
  padding: 12px;
  font-size: 14px;
  font-family: inherit;
  resize: vertical;
  transition: border-color .15s;
  color: var(--color-text);
}
.contact-modal__textarea:focus {
  outline: none;
  border-color: var(--color-primary);
}
.contact-modal__footer {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding: 14px 24px 20px;
  border-top: 1px solid #f0f0f0;
  flex-shrink: 0;
}
.contact-modal__status {
  margin-top: 12px;
  padding: 10px 14px;
  border-radius: 8px;
  font-size: 13px;
}
.contact-modal__status--success {
  background: #f0fdf4;
  color: #166534;
  border: 1px solid #bbf7d0;
}
.contact-modal__status--error {
  background: #fef2f2;
  color: #991b1b;
  border: 1px solid #fecaca;
}

/* ── Champs extra candidature spontanée ─────────────────────── */
.cmo-field {
  margin-bottom: 12px;
}
.cmo-label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--color-text);
  margin-bottom: 6px;
}
.cmo-input {
  width: 100%;
  box-sizing: border-box;
  border: 1.5px solid var(--color-border);
  border-radius: 8px;
  padding: 12px;
  font-size: 14px;
  font-family: inherit;
  color: var(--color-text);
  background: #fff;
  transition: border-color .15s;
  appearance: auto;
}
.cmo-input:focus {
  outline: none;
  border-color: var(--color-primary);
}
.cmo-textarea {
  resize: vertical;
  min-height: 60px;
}
.cmo-divider {
  border: none;
  border-top: 1.5px solid var(--color-border);
  margin: 16px 0;
}

/* ── Badge Invitation dans la liste des conversations ───────── */
.conv-tag {
  display: inline-flex;
  align-items: center;
  font-size: 10px;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 20px;
  letter-spacing: .02em;
}
.conv-tag--invitation {
  background: #f5f3ff;
  color: #7c3aed;
}

/* ── Badge dans le header du panneau messages ───────────────── */
.messages-pane__offre--invitation {
  background: #f5f3ff !important;
  color: #7c3aed !important;
  border-radius: 20px;
  padding: 2px 10px;
  font-size: 11px;
  font-weight: 600;
}

@media (max-width: 600px) {
  .profil-offres__grid { grid-template-columns: 1fr; }
}

/* ═══════════════════════════════════════════════════════════════════
   CAREERS PAGE (profil public recruteur)
   ═══════════════════════════════════════════════════════════════════ */

.careers-page { background: #f8f9fb; min-height: 80vh; }

.careers-page__edit-bar {
  background: #fff;
  border-bottom: 1px solid var(--color-border);
  padding: 10px 20px;
  text-align: right;
}

/* ── Hero ───────────────────────────────────────────────────── */
.careers-hero {
  background: linear-gradient(135deg, #1a1a2e 0%, #16213e 60%, #0f3460 100%);
  color: #fff;
  padding-bottom: 0;
}
.careers-hero__inner {
  display: flex;
  align-items: flex-start;
  gap: 24px;
  padding: 40px 20px 32px;
  flex-wrap: wrap;
}
.careers-hero__logo { flex-shrink: 0; width: 90px; height: 90px; overflow: hidden; border-radius: 16px; background: #fff; }
.careers-hero__avatar {
  border-radius: 0;
  border: none;
  width: 90px !important;
  height: 90px !important;
  object-fit: contain;
  padding: 8px;
  display: block;
}
.careers-hero__identity { flex: 1 1 260px; }
.careers-hero__name {
  font-size: 26px;
  font-weight: 800;
  margin: 0 0 10px;
  color: #fff;
  line-height: 1.2;
}
.careers-hero__meta {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 12px;
}
.careers-hero__since { font-size: 13px; color: rgba(255,255,255,.55); }
.careers-badge {
  display: inline-flex;
  align-items: center;
  font-size: 11px;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 20px;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.careers-badge--recruiter {
  background: rgba(255,255,255,.12);
  color: rgba(255,255,255,.85);
  border: 1px solid rgba(255,255,255,.2);
}
.careers-hero__tagline {
  font-size: 14px;
  color: rgba(255,255,255,.7);
  margin: 0;
  line-height: 1.6;
  max-width: 480px;
}
.careers-hero__actions {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-items: flex-start;
  padding-top: 4px;
}
.careers-hero__btn {
  display: inline-flex;
  align-items: center;
  font-size: 13px;
  font-weight: 600;
  padding: 9px 18px;
  border-radius: 8px;
  border: none;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: opacity .15s, transform .15s;
}
.careers-hero__btn:hover { opacity: .88; transform: translateY(-1px); }
.careers-hero__btn--primary { background: var(--color-primary); color: #fff; }
.careers-hero__btn--outline {
  background: rgba(255,255,255,.1);
  color: rgba(255,255,255,.9);
  border: 1px solid rgba(255,255,255,.25);
}
.careers-hero__btn--outline:hover { background: rgba(255,255,255,.18); }

/* Stats bar */
.careers-hero__stats {
  background: rgba(0,0,0,.25);
  border-top: 1px solid rgba(255,255,255,.08);
}
.careers-hero__stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 14px 28px;
  border-right: 1px solid rgba(255,255,255,.08);
  gap: 2px;
}
.careers-hero__stat:last-child { border-right: none; }
.careers-hero__stat strong { font-size: 20px; font-weight: 800; color: #fff; line-height: 1; }
.careers-hero__stat span { font-size: 11px; color: rgba(255,255,255,.5); text-transform: uppercase; letter-spacing: .04em; }
.careers-hero__stat--text { flex-direction: row; align-items: center; flex: 1; padding: 14px 24px; }
.careers-hero__stat--text span { font-size: 13px; color: rgba(255,255,255,.55); text-transform: none; letter-spacing: 0; }

/* ── Tabs nav ────────────────────────────────────────────────── */
/* Sous l'en-tête du site (z-index 100) : ses menus déroulants ("Mon profil",
   "Catégories") passent devant la barre d'onglets. */
.careers-nav {
  background: #fff;
  border-bottom: 2px solid var(--color-border);
  position: sticky;
  top: 0;
  z-index: 90;
  box-shadow: 0 2px 8px rgba(0,0,0,.04);
}
.careers-nav > div { display: flex; gap: 0; }
.careers-nav__tab {
  display: inline-flex;
  align-items: center;
  padding: 16px 22px;
  font-size: 14px;
  font-weight: 600;
  color: #666;
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  cursor: pointer;
  transition: color .15s, border-color .15s;
}
.careers-nav__tab:hover { color: var(--color-primary); }
.careers-nav__tab--active { color: var(--color-primary); border-bottom-color: var(--color-primary); }
.careers-nav__count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  font-weight: 700;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 20px;
  background: var(--color-primary);
  color: #fff;
  margin-left: 6px;
}

/* ── Tab panes ───────────────────────────────────────────────── */
.careers-tab-pane { display: none; }
.careers-tab-pane--active { display: block; }

/* ── Job cards ───────────────────────────────────────────────── */
.careers-jobs-list { display: flex; flex-direction: column; gap: 16px; }

.careers-job {
  display: block;
  text-decoration: none;
  color: inherit;
  background: #fff;
  border-radius: 14px;
  overflow: hidden;
  border: 1px solid var(--color-border);
  box-shadow: 0 2px 8px rgba(0,0,0,.04);
  transition: box-shadow .18s, transform .18s;
}
.careers-job:hover { box-shadow: 0 8px 28px rgba(0,0,0,.10); transform: translateY(-2px); }

.careers-job__cat {
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .06em;
  color: #fff;
  display: flex;
  align-items: center;
  padding: 0 18px;
  height: 28px;
}
.careers-job__cat--stage,
.careers-job__cat--stages    { background: #1e7b4b; }
.careers-job__cat--alternance { background: #1a5ba8; }
.careers-job__cat--emploi,
.careers-job__cat--cdi,
.careers-job__cat--cdd       { background: #8b1a3e; }
.careers-job__cat--freelance  { background: #7c3aed; }
.careers-job__cat--autre      { background: #555; }

.careers-job__body {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 22px;
}
.careers-job__left { display: flex; align-items: flex-start; gap: 14px; flex: 1; min-width: 0; }
.careers-job__thumb {
  width: 52px;
  height: 52px;
  border-radius: 10px;
  object-fit: contain;
  flex-shrink: 0;
  border: 1px solid var(--color-border);
  background: #fff;
  padding: 4px;
}
.careers-job__title { font-size: 16px; font-weight: 700; color: var(--color-text); margin: 0 0 8px; line-height: 1.3; }
.careers-job__meta { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin-bottom: 8px; }
.careers-job__meta-item { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; color: #666; }
.careers-job__meta-item--remun { font-weight: 600; color: #1e7b4b; background: #f0fdf4; padding: 2px 8px; border-radius: 20px; }
.careers-job__excerpt { font-size: 13px; color: #777; margin: 0; line-height: 1.5; }
.careers-job__cta {
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
  font-size: 13px;
  font-weight: 700;
  color: var(--color-primary);
  white-space: nowrap;
  padding: 10px 16px;
  border: 1.5px solid var(--color-primary);
  border-radius: 8px;
  transition: background .15s, color .15s;
}
.careers-job:hover .careers-job__cta { background: var(--color-primary); color: #fff; }

/* ── Empty state ──────────────────────────────────────────────── */
.careers-empty { text-align: center; padding: 40px 20px 24px; color: #aaa; }
.careers-empty p { margin-top: 16px; font-size: 15px; }

/* ── Candidature spontanée banner ─────────────────────────────── */
.careers-spontaneous {
  display: flex;
  align-items: center;
  gap: 20px;
  margin-top: 40px;
  padding: 28px 32px;
  background: linear-gradient(135deg, #f5f3ff, #ede9fe);
  border: 1.5px solid #c4b5fd;
  border-radius: 16px;
  flex-wrap: wrap;
}
.careers-spontaneous__icon {
  width: 56px;
  height: 56px;
  background: #fff;
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: #7c3aed;
  box-shadow: 0 4px 14px rgba(124,58,237,.15);
}
.careers-spontaneous__text { flex: 1 1 240px; }
.careers-spontaneous__text h3 { font-size: 16px; font-weight: 700; color: #4c1d95; margin: 0 0 6px; }
.careers-spontaneous__text p { font-size: 13px; color: #6d28d9; margin: 0; line-height: 1.5; }
.careers-spontaneous__btn {
  display: inline-flex;
  align-items: center;
  padding: 12px 22px;
  background: #7c3aed;
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  border-radius: 10px;
  border: none;
  cursor: pointer;
  text-decoration: none;
  flex-shrink: 0;
  transition: background .15s, transform .15s;
}
.careers-spontaneous__btn:hover { background: #6d28d9; transform: translateY(-1px); }

/* ── À propos tab ─────────────────────────────────────────────── */
.careers-about {
  background: #fff;
  border-radius: 14px;
  border: 1px solid var(--color-border);
  padding: 32px 36px;
  max-width: 760px;
}
.careers-about__title { font-size: 20px; font-weight: 700; margin: 0 0 18px; color: var(--color-text); }
/* Sauts de ligne rendus par nl2br() dans le gabarit : pas de white-space:pre-wrap
   en plus (il doublait chaque saut et conservait l'indentation du code). */
.careers-about__body { font-size: 15px; line-height: 1.75; color: #444; margin-bottom: 0; }
/* Grille de méta-infos (site, LinkedIn, employés) */
.careers-about__meta {
  display: flex; flex-wrap: wrap; gap: 10px;
  margin-top: 24px; padding-top: 20px;
  border-top: 1px solid var(--color-border);
}
.careers-about__meta-item {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 14px;
  background: var(--color-bg-grey);
  border: 1px solid var(--color-border);
  border-radius: 999px;
  font-size: 13.5px; font-weight: 500; color: var(--color-text);
  text-decoration: none;
  transition: background var(--transition), border-color var(--transition);
}
.careers-about__meta-item--link:hover {
  background: #fff; border-color: var(--color-primary); color: var(--color-primary);
}
.careers-about__meta-item--linkedin { color: #0a66c2; }
.careers-about__meta-item--linkedin:hover { border-color: #0a66c2; color: #0a66c2; background: #f0f6ff; }
.careers-about__meta-icon { display: flex; align-items: center; flex-shrink: 0; opacity: .65; }
.careers-about__meta-item--link:hover .careers-about__meta-icon { opacity: 1; }
.careers-about__meta-ext { flex-shrink: 0; opacity: .4; margin-left: 2px; }

/* ── Apply modal header (sender identity) ─────────────────────── */
.apply-modal__header { position: relative; }
.apply-modal__sender {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 40px 10px 12px; border-radius: 10px;
  background: #f8f9fb; border: 1px solid #eee;
  text-decoration: none; color: inherit;
  transition: background .15s;
}
.apply-modal__sender:hover { background: #f0f4ff; }
.apply-modal__sender-avatar { border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.apply-modal__sender-info { display: flex; flex-direction: column; min-width: 0; }
.apply-modal__sender-name { font-size: 13px; font-weight: 700; color: #1d2327; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.apply-modal__sender-label { font-size: 11px; color: var(--color-primary); }

/* ── Apply / contact modal — validation error ─────────────────── */
.apply-validation-error[hidden] { display: none !important; }
.apply-validation-error {
  background: #fff5f5; border: 1px solid #fed7d7; border-radius: 8px;
  padding: 10px 14px; margin-bottom: 12px; color: #c53030;
  font-size: 13px; display: flex; flex-direction: column; gap: 4px;
}
.apply-validation-error__item { display: flex; align-items: flex-start; gap: 5px; }

/* ── Contact modal — file attachment ──────────────────────────── */
.apply-modal__files { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
.contact-modal__file-wrap { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.contact-modal__file-label {
  display: inline-flex;
  align-items: center;
  font-size: 13px;
  font-weight: 600;
  color: var(--color-primary);
  cursor: pointer;
  padding: 7px 12px;
  border: 1.5px dashed var(--color-primary);
  border-radius: 8px;
  transition: background .15s;
}
.contact-modal__file-label:hover { background: #f0f4ff; }

/* ── Color picker bannière (page Réglages) ────────────────────── */
.banner-color-wrap { display: flex; flex-direction: column; gap: 10px; }
.banner-color-toggle {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  cursor: pointer;
  user-select: none;
}
.banner-color-field { display: flex; flex-direction: column; gap: 10px; }
.banner-color-picker {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
}
.banner-color-picker input[type="color"] {
  width: 46px;
  height: 46px;
  border: 2px solid var(--color-border);
  border-radius: 10px;
  padding: 2px;
  cursor: pointer;
  background: none;
  flex-shrink: 0;
}
.banner-color-preview {
  flex: 1;
  min-width: 200px;
  height: 56px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  padding: 0 18px;
  transition: background .2s;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.15);
}
.banner-color-preview span {
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  text-shadow: 0 1px 3px rgba(0,0,0,.4);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ── Offres réservées (profil recruteur) ─────────────────────── */
.careers-reserved-block { margin-top: 36px; }
.careers-reserved-block__header {
  display: flex;
  align-items: center;
  font-size: 13px;
  font-weight: 700;
  color: #7c3aed;
  background: #f5f3ff;
  border: 1.5px solid #c4b5fd;
  border-radius: 10px 10px 0 0;
  padding: 10px 16px;
  margin-bottom: 0;
}
.careers-reserved-block .careers-jobs-list { margin-top: 0; }
.careers-reserved-block .careers-job {
  border-radius: 0;
  border-top: none;
}
.careers-reserved-block .careers-job:last-child { border-radius: 0 0 10px 10px; }
.careers-job--reserved { border-left: 3px solid #7c3aed !important; }

/* ── Responsive careers ───────────────────────────────────────── */
@media (max-width: 760px) {
  .careers-hero__inner { padding: 24px 16px 20px; gap: 16px; }
  .careers-hero__actions { flex-direction: row; flex-wrap: wrap; }
  .careers-hero__stat { padding: 12px 16px; }
  .careers-hero__name { font-size: 20px; }
  .careers-job__body { flex-direction: column; align-items: flex-start; }
  .careers-job__cta { align-self: flex-end; }
  .careers-spontaneous { padding: 20px; }
  .careers-about { padding: 22px 18px; }
}

/* ── Candidatures spontanées (mes-annonces) ─────────────────── */
.spontaneous-section { margin-top: 48px; }
.spontaneous-section__title {
  font-size: 18px;
  font-weight: 700;
  margin: 0 0 16px;
  color: var(--color-text);
  display: flex;
  align-items: center;
  gap: 10px;
}
.spontaneous-section__badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  padding: 0 6px;
  border-radius: 20px;
  background: #7c3aed;
  color: #fff;
  font-size: 11px;
  font-weight: 700;
}
.spontaneous-list { display: flex; flex-direction: column; gap: 10px; }
.spontaneous-item {
  display: flex;
  align-items: center;
  gap: 14px;
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  padding: 14px 18px;
  transition: box-shadow .15s;
}
.spontaneous-item:hover { box-shadow: 0 4px 14px rgba(0,0,0,.06); }
.spontaneous-item__avatar img { border-radius: 50%; width: 42px; height: 42px; display: block; }
.spontaneous-item__info { flex: 1; min-width: 0; }
.spontaneous-item__name { font-size: 14px; font-weight: 700; color: var(--color-text); margin: 0 0 4px; }
.spontaneous-item__preview { font-size: 13px; color: #777; margin: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.spontaneous-item__date { font-size: 11px; color: #aaa; white-space: nowrap; }
.spontaneous-item__actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

/* ── "En savoir plus" accordion (page d'accueil) ─────────────── */
.seo-accordion {
  background: transparent;
  color: #fff;
  padding: 40px 16px;
  display: flex;
  justify-content: center;
}
.seo-accordion details {
  width: 100%;
  max-width: 860px;
  background: #fff;
  border-radius: 16px;
  overflow: hidden;
  border: 1px solid #e0e0e0;
  box-shadow: 0 2px 12px rgba(0,0,0,.07);
}
.seo-accordion summary {
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 20px 28px;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  user-select: none;
  color: #fff;
  background: #930022;
  transition: background .2s;
}
.seo-accordion summary::-webkit-details-marker { display: none; }
.seo-accordion summary:hover { background: #7a001c; }
.seo-accordion summary .seo-accordion__arrow {
  flex-shrink: 0;
  transition: transform .3s;
}
.seo-accordion details[open] summary .seo-accordion__arrow { transform: rotate(180deg); }
.seo-accordion__body {
  padding: 28px 32px 36px;
  border-top: none;
  background: #fff;
}
.seo-accordion__body h2 {
  font-size: 18px;
  font-weight: 700;
  margin: 28px 0 8px;
  color: #1a1a1a;
  border-bottom: 2px solid #930022;
  padding-bottom: 6px;
}
.seo-accordion__body h2:first-child { margin-top: 0; }
.seo-accordion__body p {
  color: #444;
  font-size: 15px;
  line-height: 1.75;
  margin-bottom: 14px;
}
.seo-accordion__body ul {
  list-style: disc;
  padding-left: 24px;
  margin-bottom: 14px;
}
.seo-accordion__body ul li {
  list-style: disc;
  color: #444;
  font-size: 15px;
  line-height: 1.7;
  margin-bottom: 6px;
}

/* ── Bannière université (offres-reservees + verification) ──── */
.univ-page-hero {
  position: relative;
  width: 100%;
  min-height: 280px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background: #1a1a2e;
}
.univ-page-hero__bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 30%;
}
.univ-page-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(0,0,0,.45) 0%, rgba(0,0,0,.62) 100%);
}
.univ-page-hero__content {
  position: relative;
  z-index: 1;
  text-align: center;
  padding: 48px 20px;
}
.univ-page-hero__eyebrow {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(255,255,255,.7);
  margin-bottom: 10px;
}
.univ-page-hero__title {
  font-size: clamp(22px, 4vw, 38px);
  font-weight: 800;
  color: #fff;
  line-height: 1.15;
  margin: 0;
  text-shadow: 0 2px 12px rgba(0,0,0,.4);
}
.univ-page-hero__sub {
  margin-top: 10px;
  font-size: 15px;
  color: rgba(255,255,255,.8);
}

/* ── Filtre localisation rayon (archive) ─────────────────────── */
.location-autocomplete { position: relative; }
.location-autocomplete input {
  width: 100%;
  padding: 9px 12px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  font-size: 14px;
  background: #fff;
}
.location-autocomplete input:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(147,0,34,.1);
}
.location-suggestions {
  position: absolute;
  top: calc(100% + 4px);
  left: 0; right: 0;
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  list-style: none;
  padding: 4px 0;
  z-index: 200;
  max-height: 220px;
  overflow-y: auto;
}
.location-suggestions li {
  padding: 9px 14px;
  font-size: 13px;
  cursor: pointer;
  color: var(--color-text);
  line-height: 1.4;
}
.location-suggestions li:hover { background: var(--color-bg-light); }
.location-clear {
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: none;
  cursor: pointer;
  color: var(--color-text-muted);
  font-size: 16px;
  line-height: 1;
  padding: 2px;
}
.filter-group__radius-label {
  font-size: 11.5px;
  color: var(--color-text-muted);
  margin-top: 8px;
  display: flex;
  align-items: center;
  gap: 4px;
}

/* ── Sender name link in chat modal ──────────────────────────── */
.chat-msg__sender-link {
  color: var(--color-text-light);
  font-weight: 600;
  transition: color .15s;
}
.chat-msg__sender-link:hover { color: #333; }

/* ── Page récapitulatif candidatures ─────────────────────────── */
/* ── Récapitulatif candidatures — design moderne ─────────────── */
.recap-page-title { font-size: 22px; font-weight: 800; margin-bottom: 4px; }
.recap-page-sub { font-size: 14px; color: var(--color-text-muted); margin-bottom: 24px; }

/* Segmented control tabs */
.recap-switcher {
  display: flex;
  width: 100%;
  background: var(--color-bg-grey);
  border-radius: 10px;
  padding: 4px;
  gap: 2px;
  margin-bottom: 24px;
}
.recap-switcher__btn { flex: 1; justify-content: center; }
.recap-switcher__btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 16px;
  border-radius: 7px;
  border: none;
  background: transparent;
  cursor: pointer;
  font-size: 14px;
  font-weight: 600;
  color: var(--color-text-light);
  transition: background .18s, color .18s, box-shadow .18s;
  white-space: nowrap;
}
.recap-switcher__btn:hover { color: var(--color-text); }
.recap-switcher__btn--active {
  background: #fff;
  color: var(--color-text);
  box-shadow: 0 1px 4px rgba(0,0,0,.10);
}
.recap-switcher__count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 20px; height: 20px;
  border-radius: 10px;
  font-size: 11px; font-weight: 700;
  padding: 0 6px;
  background: var(--color-border);
  color: var(--color-text-muted);
  transition: background .18s, color .18s;
}
.recap-switcher__btn--active .recap-switcher__count {
  background: var(--color-primary);
  color: #fff;
}
.recap-switcher__count--purple {
  background: #ede9fe;
  color: #7c3aed;
}
.recap-switcher__btn--active .recap-switcher__count--purple {
  background: #7c3aed;
  color: #fff;
}

/* Panel */
.recap-panel { display: none; }
.recap-panel--active { display: block; }

/* Conversation list */
.recap-inbox {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
}
.recap-inbox__row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 13px 18px;
  border-bottom: 1px solid var(--color-border);
  cursor: default; /* carte non cliquable : seuls ses boutons le sont */
  transition: background .15s;
  position: relative;
}
.recap-inbox__row:last-child { border-bottom: none; }
/* Carte non cliquable (seuls ses boutons le sont) : pas d'effet au survol. */
.recap-inbox__row--unread { background: #fdfaf9; }
.recap-inbox__row--unread .recap-inbox__name { font-weight: 800; }
.recap-inbox__row--unread .recap-inbox__preview { color: var(--color-text); font-weight: 500; }

.recap-inbox__avatar {
  width: 40px; height: 40px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
  background: var(--color-bg-grey);
}
.recap-inbox__body { flex: 1; min-width: 0; }
.recap-inbox__top {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 3px;
}
.recap-inbox__name {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 200px;
}
.recap-inbox__tag {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 10px; font-weight: 700;
  padding: 2px 7px;
  border-radius: 10px;
  white-space: nowrap;
  flex-shrink: 0;
}
.recap-inbox__tag--offre  { background: rgba(147,0,34,.08);  color: var(--color-primary); }
.recap-inbox__tag--spon   { background: #ede9fe; color: #7c3aed; }
.recap-inbox__preview {
  font-size: 13px;
  color: var(--color-text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.recap-inbox__right {
  display: flex; flex-direction: column;
  align-items: flex-end; gap: 5px;
  flex-shrink: 0;
}
.recap-inbox__date { font-size: 11px; color: var(--color-text-muted); }
.recap-inbox__unread {
  background: var(--color-primary);
  color: #fff;
  font-size: 10px; font-weight: 700;
  min-width: 18px; height: 18px;
  border-radius: 9px;
  display: flex; align-items: center; justify-content: center;
  padding: 0 5px;
}
.recap-inbox__unread--purple { background: #7c3aed; }

/* ── Ligne archivée ─────────────────────────────────── */
.recap-inbox__row--archived { opacity: .85; }
.recap-inbox__row--archived:hover { opacity: 1; }
.recap-inbox__tag--archived {
  background: #f3f4f6; color: #777; border-radius: 20px;
  padding: 2px 7px; font-size: 10.5px; font-weight: 500;
  display: inline-flex; align-items: center; gap: 3px;
}

/* ── Section candidatures archivées (page dédiée) ───── */
.archived-rgpd-notice {
  display: flex; align-items: flex-start; gap: 8px;
  background: #f0f4ff; border: 1px solid #d0d9f0; border-radius: 8px;
  padding: 10px 14px; font-size: 12.5px; color: #444; line-height: 1.55;
  margin: 12px 0 24px;
}
.archived-offer-group { margin-bottom: 28px; }
.archived-offer-group__header {
  display: flex; align-items: center; gap: 8px;
  font-size: 13px; font-weight: 700; color: #333;
  padding: 8px 12px; background: #f6f7f8; border-radius: 8px 8px 0 0;
  border: 1px solid #e4e6ea;
}
.archived-offer-group__count {
  margin-left: auto; font-size: 11.5px; font-weight: 500;
  color: #888; background: #ececec; border-radius: 10px; padding: 1px 8px;
}
.archived-candidates {
  border: 1px solid #e4e6ea; border-top: none; border-radius: 0 0 8px 8px; overflow: hidden;
}
.archived-candidate-card {
  display: flex; align-items: center; gap: 14px;
  padding: 14px 16px; border-bottom: 1px solid #f0f0f0; background: #fff;
  transition: background .12s;
}
.archived-candidate-card:last-child { border-bottom: none; }
.archived-candidate-card:hover { background: #fafafa; }
.archived-candidate-card__initials {
  width: 44px; height: 44px; border-radius: 50%;
  background: linear-gradient(135deg,#7a001a,#b00028);
  color: #fff; font-size: 15px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.archived-candidate-card__info { flex: 1; min-width: 0; }
.archived-candidate-card__name-link {
  display: inline-flex; align-items: center; gap: 2px;
  font-size: 14px; font-weight: 600; color: #1a1a1a; text-decoration: none;
}
.archived-candidate-card__name-link:hover { color: var(--color-primary); }
.archived-candidate-card__email {
  display: block; font-size: 12.5px; color: var(--color-primary);
  text-decoration: none; margin-top: 2px;
}
.archived-candidate-card__email:hover { text-decoration: underline; }
.archived-candidate-card__meta { font-size: 11.5px; color: #aaa; margin-top: 3px; }
.archived-candidate-card__attachments {
  display: flex; gap: 8px; flex-wrap: wrap; flex-shrink: 0;
}
.archived-attach-btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 7px 12px; border-radius: 7px;
  background: #fff0f0; border: 1px solid #f0d0d0; color: #222;
  font-size: 12px; text-decoration: none; transition: background .12s, border-color .12s;
}
.archived-attach-btn:hover { background: #ffe8e8; border-color: var(--color-primary); }
.archived-attach-btn--lm {
  background: #f5f5ff; border-color: #d8d8f0;
}
.archived-attach-btn--lm:hover { background: #ebebff; border-color: #7c3aed; }
.archived-attach-btn__icon {
  display: flex; align-items: center; justify-content: center;
  width: 26px; height: 26px; border-radius: 5px;
  background: rgba(147,0,34,.1); color: var(--color-primary); flex-shrink: 0;
}
.archived-attach-btn--lm .archived-attach-btn__icon { background: rgba(124,58,237,.1); color: #7c3aed; }
.archived-attach-btn--conv { border-color: #d0e4ff; }
.archived-attach-btn--conv:hover { background: #e8f2ff; border-color: #3b82f6; }
.archived-attach-btn--conv .archived-attach-btn__icon { background: rgba(59,130,246,.1); color: #3b82f6; }
.archived-attach-btn__label { font-weight: 600; font-size: 12px; color: #222; }
.archived-attach-btn__sub { font-size: 10.5px; color: #999; }
.archived-no-attach { font-size: 12px; color: #bbb; align-self: center; }

/* ── Lien candidatures archivées (recapitulatif) ────── */
.recap-archived-link { margin-top: 28px; border-top: 1px solid #eee; padding-top: 20px; }
.recap-archived-link__btn {
  display: flex; align-items: center; gap: 10px;
  padding: 13px 16px; border-radius: 10px;
  border: 1px solid #e4e6ea; background: #fafafa;
  color: #333; text-decoration: none; font-size: 14px; font-weight: 600;
  transition: background .12s, border-color .12s;
}
.recap-archived-link__btn:hover { background: #f3f4f6; border-color: #ccc; color: #333; }
.recap-archived-link__count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 22px; height: 22px; border-radius: 11px;
  background: #e8e8e8; color: #555; font-size: 11.5px; font-weight: 700; padding: 0 7px;
}
.recap-archived-link__desc {
  font-size: 12px; color: #aaa; margin: 6px 0 0 2px;
}

.recap-inbox__open {
  opacity: 0;
  transition: opacity .15s;
  pointer-events: none;
}
.recap-inbox__row:hover .recap-inbox__open { opacity: 1; pointer-events: auto; }

.recap-empty {
  text-align: center;
  padding: 56px 20px;
  color: var(--color-text-muted);
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
}
.recap-empty__icon {
  width: 52px; height: 52px;
  background: var(--color-bg-grey);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  margin: 0 auto 16px;
  opacity: .5;
}
.recap-empty p { font-size: 14px; margin-top: 6px; }

/* Spontanées désactivées */
.recap-spontanee-disabled {
  display: flex; gap: 18px; align-items: flex-start;
  padding: 28px 24px;
  background: #fff8f0; border: 1.5px solid #f59e0b;
  border-radius: var(--radius-lg);
}
.recap-spontanee-disabled__icon {
  flex-shrink: 0; width: 52px; height: 52px;
  background: #fef3c7; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  color: #d97706;
}
.recap-spontanee-disabled__body { flex: 1; }
.recap-spontanee-disabled__body strong { font-size: 15px; font-weight: 700; color: var(--color-text); }
.recap-spontanee-disabled__body p { font-size: 13.5px; color: var(--color-text-muted); margin-top: 5px; line-height: 1.55; }

/* Toggle label dans les réglages */
.toggle-label {
  display: flex !important; align-items: flex-start !important;
  justify-content: flex-start !important;
  gap: 10px; cursor: pointer; font-weight: 500 !important;
}
.toggle-label input[type="checkbox"] { margin-top: 2px; flex-shrink: 0; accent-color: var(--color-primary); width: 16px; height: 16px; cursor: pointer; }
.toggle-label__text { font-size: 14px; font-weight: 500; color: var(--color-text); }

@media (max-width: 640px) {
  .recap-switcher { width: 100%; }
  .recap-switcher__btn { flex: 1; justify-content: center; }
  .recap-inbox__name { max-width: 120px; }
}

/* ══════════════════════════════════════════════════════════════
   CVthèque EDS
══════════════════════════════════════════════════════════════ */

/* Hero bannière */
/* Transition fluide sur le filtrage AJAX */
#cvtheque-results {
  transition: opacity 0.18s ease;
}
#cvtheque-results.cvtheque-loading {
  opacity: 0.35;
  pointer-events: none;
}

.cvtheque-hero {
  position: relative;
  background: url('/wp-content/uploads/2026/05/universite-paris-1-pantheon-sorbonne.webp') center/cover no-repeat;
  padding: 64px 0 48px;
  color: #fff;
}
.cvtheque-hero__overlay {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, rgba(147,0,34,.75) 0%, rgba(30,10,10,.6) 100%);
}
.cvtheque-hero__content { position: relative; z-index: 1; }
.cvtheque-hero__badge {
  display: inline-flex; align-items: center; gap: 10px;
  background: rgba(255,255,255,.15); backdrop-filter: blur(6px);
  border: 1px solid rgba(255,255,255,.25);
  border-radius: 30px; padding: 6px 16px 6px 8px;
  font-size: 13px; font-weight: 500; margin-bottom: 16px;
}
.cvtheque-hero__badge-logo {
  display: flex; align-items: center; justify-content: center;
  background: #fff; border-radius: 20px;
  padding: 3px 8px; flex-shrink: 0;
}
.cvtheque-hero__title { font-size: 36px; font-weight: 800; margin: 0 0 8px; line-height: 1.1; }
.cvtheque-hero__sub { font-size: 16px; opacity: .85; margin: 0; }

/* Filtres */
.cvtheque-filters {
  background: #fff; border: 1px solid var(--color-border);
  border-radius: var(--radius-lg); padding: 20px 24px;
  margin-bottom: 24px; display: flex; flex-direction: column; gap: 16px;
}
.cvtheque-filters__group { display: flex; flex-direction: column; gap: 8px; }
.cvtheque-filters__subgroup {
  display: flex; flex-direction: column; gap: 8px;
  padding: 14px 16px; background: #fafafa;
  border: 1px solid var(--color-border); border-radius: 10px;
}
.cvtheque-filters__toggles {
  display: flex; flex-wrap: wrap; gap: 20px; align-items: center;
  padding-top: 4px; border-top: 1px solid var(--color-border);
  padding-top: 16px;
}
.cvtheque-filters__label { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--color-text-muted); }
.cvtheque-filters__chips { display: flex; flex-wrap: wrap; gap: 6px; }
.cvtheque-filters__select { padding: 8px 12px; border: 1.5px solid var(--color-border); border-radius: 8px; font-size: 14px; background: #f8f9fb; min-width: 220px; }
@media (max-width: 640px) {
  .cvtheque-filters__select { min-width: 0; width: 100%; }
}

/* Chips radio */
.cvtheque-chip {
  display: inline-block; padding: 6px 14px;
  border: 1.5px solid var(--color-border); border-radius: 20px;
  font-size: 13px; font-weight: 600; color: #555;
  cursor: pointer; transition: border-color .15s, background .15s, color .15s;
  background: #fafafa;
}
.cvtheque-chip input { display: none; }
.cvtheque-chip:hover { border-color: var(--color-primary); color: var(--color-primary); background: #fff5f7; }
.cvtheque-chip--active { background: var(--color-primary); border-color: var(--color-primary); color: #fff; }

/* Toggle AFJE */
.cvtheque-toggle {
  display: inline-flex; align-items: center; gap: 10px;
  cursor: pointer; font-size: 14px; font-weight: 500;
}
.cvtheque-toggle input { display: none; }
.cvtheque-toggle__track {
  width: 36px; height: 20px; border-radius: 10px;
  background: #d1d5db; transition: background .2s; flex-shrink: 0;
  position: relative;
}
.cvtheque-toggle__track::after {
  content: ''; position: absolute; top: 3px; left: 3px;
  width: 14px; height: 14px; border-radius: 50%;
  background: #fff; transition: transform .2s;
}
.cvtheque-toggle input:checked ~ .cvtheque-toggle__track { background: var(--color-primary); }
.cvtheque-toggle input:checked ~ .cvtheque-toggle__track::after { transform: translateX(16px); }
.cvtheque-toggle__text { color: var(--color-text); }
.cvtheque-toggle:has(input:checked) .cvtheque-toggle__text { color: var(--color-primary); font-weight: 600; }

/* Compteur */
.cvtheque-meta { font-size: 13px; color: var(--color-text-muted); margin-bottom: 20px; }

/* Grille de cartes */
.cvtheque-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
  gap: 20px;
}
.cvtheque-card {
  background: #fff; border: 1px solid var(--color-border);
  border-radius: var(--radius-lg); padding: 28px 16px 20px;
  display: flex; flex-direction: column; align-items: center;
  text-align: center; position: relative;
  box-shadow: 0 2px 8px rgba(0,0,0,.04);
  transition: box-shadow .2s, transform .15s;
}
.cvtheque-card:hover { box-shadow: 0 6px 20px rgba(147,0,34,.12); transform: translateY(-2px); }
.cvtheque-card__overlay { position: absolute; inset: 0; border-radius: var(--radius-lg); z-index: 1; }
.cvtheque-card__avatar {
  width: 78px; height: 78px; border-radius: 50%; object-fit: cover;
  border: 3px solid var(--color-primary); margin-bottom: 12px; position: relative; z-index: 0;
}
.cvtheque-card__name {
  font-size: 15px; font-weight: 700; color: var(--color-primary);
  margin-bottom: 8px; line-height: 1.3; position: relative; z-index: 0;
}
.cvtheque-card__badge {
  display: inline-block; background: var(--color-primary); color: #fff;
  font-size: 11px; font-weight: 700; letter-spacing: .03em;
  border-radius: 20px; padding: 3px 10px; margin-bottom: 8px;
  position: relative; z-index: 0;
}
.cvtheque-card__master {
  font-size: 12px; color: var(--color-text-muted); margin: 0 0 10px;
  line-height: 1.4; position: relative; z-index: 0;
}
.cvtheque-card__tags { display: flex; flex-wrap: wrap; gap: 5px; justify-content: center; margin-bottom: 14px; position: relative; z-index: 0; }
.cvtheque-card__tag {
  font-size: 10px; font-weight: 700; border-radius: 4px;
  padding: 2px 7px; border: 1px solid;
}
.cvtheque-card__tag--magistere { background: #f0f4ff; color: #3730a3; border-color: #c7d2fe; }
.cvtheque-card__tag--college   { background: #fef9ec; color: #92400e; border-color: #fde68a; }
.cvtheque-card__actions { display: flex; align-items: center; gap: 10px; margin-top: auto; position: relative; z-index: 2; }
.cvtheque-card__cv-btn {
  background: var(--color-primary); color: #fff;
  padding: 8px 16px; border-radius: 8px;
  font-size: 13px; font-weight: 600; text-decoration: none;
  transition: background .15s;
}
.cvtheque-card__cv-btn:hover { background: #7a001c; }
.cvtheque-card__linkedin { display: inline-flex; align-items: center; }
.cvtheque-card__no-cv { font-size: 12px; color: #ccc; }

/* Nav "CVthèque EDS" */
.site-nav__link--cvtheque { color: var(--color-primary) !important; font-weight: 700; }
.site-nav__item--cvtheque .site-nav__link--cvtheque { border-bottom: 2px solid var(--color-primary); }

/* Responsive */
@media (max-width: 640px) {
  .cvtheque-hero__title { font-size: 26px; }
  .cvtheque-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .cvtheque-card { padding: 20px 10px 16px; }
  .cvtheque-filters { padding: 16px; }
  .cvtheque-filters__row--toggles { flex-direction: column; gap: 12px; }
}

/* ── Profile completion widget ── */
.profile-completion {
  background: #fff;
  border: 1.5px solid #e8e8e8;
  border-radius: 16px;
  padding: 20px 24px;
  margin-bottom: 28px;
}
.profile-completion__header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
}
.profile-completion__label {
  font-size: 14px;
  font-weight: 600;
  color: #111;
}
.profile-completion__pct {
  font-size: 22px;
  font-weight: 800;
  line-height: 1;
}
.profile-completion__bar-track {
  height: 8px;
  background: #f0f0f0;
  border-radius: 99px;
  overflow: hidden;
  margin-bottom: 16px;
}
.profile-completion__bar-fill {
  height: 100%;
  border-radius: 99px;
  transition: width .6s ease;
}
.profile-completion__steps {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 20px;
}
.profile-completion__step {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: #999;
}
.profile-completion__step--done {
  color: #333;
  font-weight: 500;
}

/* ── Profil public recruteur — domaines + pourquoi rejoindre ── */
.careers-about__domaines {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 20px;
}
.careers-about__domaine-tag {
  background: #f5f0f2;
  color: #930022;
  border: 1px solid #f0d0d8;
  border-radius: 20px;
  padding: 4px 12px;
  font-size: 13px;
  font-weight: 500;
}
.careers-about__pourquoi {
  margin-top: 28px;
  background: #fafafa;
  border-left: 3px solid #930022;
  border-radius: 0 12px 12px 0;
  padding: 20px 22px;
}
.careers-about__pourquoi-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 15px;
  font-weight: 700;
  color: #111;
  margin: 0 0 12px;
}
.careers-about__pourquoi-body {
  font-size: 14px;
  color: #444;
  line-height: 1.7;
}

/* ════════════════════════════════════════
   SYSTÈME D'ENTRETIENS
════════════════════════════════════════ */

.status-badge--entretien_propose { background:#fff7ed;color:#c05621;border:1px solid #fed7aa; }
.status-badge--entretien_confirme { background:#f0fdf4;color:#166534;border:1px solid #bbf7d0; }
.status-badge--entretien_refuse { background:#fef2f2;color:#991b1b;border:1px solid #fecaca; }

.entretien-modal { display:none;position:fixed;inset:0;z-index:11000;align-items:center;justify-content:center; }
.entretien-modal.is-open { display:flex; }
.entretien-modal__backdrop { position:absolute;inset:0;background:rgba(0,0,0,.45);backdrop-filter:blur(2px); }
.entretien-modal__box { position:relative;z-index:1;background:#fff;border-radius:16px;padding:32px;max-width:520px;width:calc(100% - 32px);max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.18); }
.entretien-modal__title { font-size:1.1rem;font-weight:700;color:#111;margin:0 0 20px; }
.entretien-modal__close { position:absolute;top:16px;right:16px;background:none;border:none;cursor:pointer;color:#888;padding:4px;line-height:1; }

.entretien-type-toggle { display:flex;gap:8px;margin-bottom:20px; }
.entretien-type-btn { flex:1;padding:10px;border:2px solid #e5e7eb;border-radius:10px;background:#fff;cursor:pointer;font-size:14px;font-weight:500;color:#555;transition:.15s; }
.entretien-type-btn.active { border-color:var(--color-primary);background:#fff5f7;color:var(--color-primary); }

.entretien-field { margin-bottom:14px; }
.entretien-field label { display:block;font-size:13px;font-weight:600;color:#333;margin-bottom:5px; }
.entretien-field input, .entretien-field select, .entretien-field textarea { width:100%;padding:9px 12px;border:1.5px solid #e5e7eb;border-radius:8px;font-size:14px;color:#111;box-sizing:border-box;transition:.15s; }
.entretien-field input:focus, .entretien-field select:focus, .entretien-field textarea:focus { outline:none;border-color:var(--color-primary); }
.entretien-row { display:grid;grid-template-columns:1fr 1fr;gap:12px; }
@media (max-width: 600px) {
  .entretien-row { grid-template-columns: 1fr; }
}
.entretien-modal__actions { display:flex;gap:10px;margin-top:20px; }
.entretien-modal__error { background:#fef2f2;border:1px solid #fecaca;color:#991b1b;border-radius:8px;padding:10px 14px;font-size:13px;margin-bottom:14px;display:none; }

.btn-proposer-entretien { display:inline-flex;align-items:center;gap:5px;padding:5px 10px;font-size:12px;font-weight:500;color:var(--color-primary);background:#fff5f7;border:1px solid #ffd6e0;border-radius:6px;cursor:pointer;transition:.15s;white-space:nowrap; }
.btn-proposer-entretien:hover { background:#ffe4ec; }

.entretien-card { margin-top:8px;border:1.5px solid #e5e7eb;border-radius:10px;padding:14px 16px;background:#fafafa; }
.entretien-card--propose { border-color:#fed7aa;background:#fffbf5; }
.entretien-card--confirme { border-color:#bbf7d0;background:#f0fdf4; }
.entretien-card--refuse { border-color:#fecaca;background:#fef2f2; }
.entretien-card__header { display:flex;align-items:center;gap:8px;margin-bottom:10px; }
.entretien-card__icon { width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center; }
.entretien-card--propose .entretien-card__icon { background:#fed7aa; }
.entretien-card--confirme .entretien-card__icon { background:#bbf7d0; }
.entretien-card--refuse .entretien-card__icon { background:#fecaca; }
.entretien-card__label { font-size:13px;font-weight:700; }
.entretien-card--propose .entretien-card__label { color:#c05621; }
.entretien-card--confirme .entretien-card__label { color:#166534; }
.entretien-card--refuse .entretien-card__label { color:#991b1b; }
.entretien-card__details { font-size:13px;color:#555;line-height:1.6; }
.entretien-card__detail { display:flex;align-items:flex-start;gap:6px;margin-bottom:4px; }
.entretien-card__actions { display:flex;gap:8px;margin-top:12px; }
.btn-accept-entretien { padding:7px 16px;background:#166534;color:#fff;border:none;border-radius:7px;font-size:13px;font-weight:600;cursor:pointer;transition:.15s; }
.btn-accept-entretien:hover { background:#14532d; }
.btn-refuse-entretien { padding:7px 16px;background:#fff;color:#991b1b;border:1.5px solid #fecaca;border-radius:7px;font-size:13px;font-weight:600;cursor:pointer;transition:.15s; }
.btn-refuse-entretien:hover { background:#fef2f2; }

.entretiens-list { display:flex;flex-direction:column;gap:12px; }
.entretien-row-card { background:#fff;border:1.5px solid #e5e7eb;border-radius:12px;padding:18px 20px;transition:.15s; }
.entretien-row-card:hover { box-shadow:0 2px 12px rgba(0,0,0,.07); }
.entretien-row-card__top { display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap; }
.entretien-row-card__name { font-weight:700;font-size:15px;color:#111; }
.entretien-row-card__offre { font-size:13px;color:#888;margin-top:2px; }
.entretien-row-card__meta { display:flex;gap:14px;margin-top:10px;flex-wrap:wrap;font-size:13px;color:#555; }
.entretien-row-card__meta-item { display:flex;align-items:center;gap:5px; }
/* Badge vert "X à venir" pour les entretiens (sidebar + header dropdown) */
.rdv-badge {
  display: inline-flex; align-items: center;
  padding: 2px 8px; border-radius: 20px;
  font-size: 11px; font-weight: 700; white-space: nowrap;
  background: #dcfce7; color: #166534; border: 1px solid #bbf7d0;
}
.entretien-badge { display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600; }
.entretien-badge--propose { background:#fff7ed;color:#c05621;border:1px solid #fed7aa; }
.entretien-badge--confirme { background:#f0fdf4;color:#166534;border:1px solid #bbf7d0; }
.entretien-badge--refuse { background:#fef2f2;color:#991b1b;border:1px solid #fecaca; }
.entretien-badge--passe  { background:#f3f4f6;color:#6b7280;border:1px solid #e5e7eb; }
.entretien-badge--annule { background:#f3f4f6;color:#6b7280;border:1px solid #e5e7eb; }
.entretien-row-card__actions { margin-top:12px;display:flex;gap:8px;flex-wrap:wrap; }
.entretien-row-card__top-right { display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex-shrink:0; }

/* ── Chat : timeline d'évènements entretien ──────────────────── */
.chat-event {
  display: flex; flex-direction: column; align-items: center;
  gap: 5px; margin: 18px 0; text-align: center;
}
.chat-event__meta { font-size: 11px; color: #9ca3af; margin-bottom: 2px; }

/* Badge seul (sans message) */
.chat-event__badge {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 14px; border-radius: 20px;
  font-size: 12px; font-weight: 600; border: 1px solid transparent;
}
.chat-event__badge--propose  { background:#eff6ff; color:#2563eb; border-color:#bfdbfe; }
.chat-event__badge--confirme { background:#f0fdf4; color:#16a34a; border-color:#bbf7d0; }
.chat-event__badge--refuse   { background:#fef2f2; color:#dc2626; border-color:#fecaca; }
.chat-event__badge--annule   { background:#f3f4f6; color:#6b7280; border-color:#e5e7eb; }
.chat-event__badge--report   { background:#fff7ed; color:#d97706; border-color:#fed7aa; }

/* Carte unifiée badge + message */
.chat-event__card {
  border-radius: 14px; border: 1px solid transparent;
  overflow: hidden; min-width: 200px; max-width: 320px; text-align: left;
}
.chat-event__badge-row {
  display: flex; align-items: center; gap: 6px;
  padding: 8px 14px; font-size: 12px; font-weight: 600;
  border-bottom: 1px solid transparent;
}
.chat-event__message-row {
  padding: 8px 14px 10px; font-size: 13px;
  font-style: italic; line-height: 1.5;
}
.chat-event__card--propose  { background:#eff6ff; border-color:#bfdbfe; }
.chat-event__card--propose  .chat-event__badge-row { color:#2563eb; border-bottom-color:#bfdbfe; }
.chat-event__card--propose  .chat-event__message-row { color:#1e40af; }
.chat-event__card--confirme { background:#f0fdf4; border-color:#bbf7d0; }
.chat-event__card--confirme .chat-event__badge-row { color:#16a34a; border-bottom-color:#bbf7d0; }
.chat-event__card--confirme .chat-event__message-row { color:#166534; }
.chat-event__card--refuse   { background:#fef2f2; border-color:#fecaca; }
.chat-event__card--refuse   .chat-event__badge-row { color:#dc2626; border-bottom-color:#fecaca; }
.chat-event__card--refuse   .chat-event__message-row { color:#991b1b; }
.chat-event__card--annule   { background:#f3f4f6; border-color:#e5e7eb; }
.chat-event__card--annule   .chat-event__badge-row { color:#6b7280; border-bottom-color:#e5e7eb; }
.chat-event__card--annule   .chat-event__message-row { color:#4b5563; }
.chat-event__card--report   { background:#fff7ed; border-color:#fed7aa; }
.chat-event__card--report   .chat-event__badge-row { color:#d97706; border-bottom-color:#fed7aa; }
.chat-event__card--report   .chat-event__message-row { color:#92400e; }

/* ── Chat : bouton proposer entretien ────────────────────────── */
.chat-modal__secondary-actions {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 0 0; border-top: 1px solid var(--color-border);
  margin-top: 6px;
}
.chat-modal__propose-btn {
  display: flex; align-items: center; gap: 6px;
  padding: 0 14px; height: 34px; border-radius: 8px;
  background: #f0fdf4; border: 1.5px solid #bbf7d0;
  color: #166534; font-size: 12px; font-weight: 600;
  cursor: pointer; white-space: nowrap; flex-shrink: 0;
  transition: background .15s, border-color .15s;
}
.chat-modal__propose-btn:hover { background: #dcfce7; border-color: #86efac; }

/* ── Modal gestion rendez-vous ───────────────────────────────── */
.gestion-rdv-modal {
  position: fixed; inset: 0; z-index: 10500;
  display: flex; align-items: center; justify-content: center;
  padding: 16px; pointer-events: none; opacity: 0;
  transition: opacity .2s;
}
.gestion-rdv-modal.is-open { opacity: 1; pointer-events: all; }
.gestion-rdv-modal__backdrop {
  position: absolute; inset: 0;
  background: rgba(0,0,0,.45); cursor: pointer;
}
.gestion-rdv-modal__box {
  position: relative; background: #fff; border-radius: 14px;
  padding: 28px 28px 24px; max-width: 460px; width: 100%;
  box-shadow: 0 8px 40px rgba(0,0,0,.18);
  transform: scale(.96); transition: transform .2s;
}
.gestion-rdv-modal.is-open .gestion-rdv-modal__box { transform: scale(1); }
.gestion-rdv-modal__close {
  position: absolute; top: 14px; right: 14px;
  background: none; border: none; cursor: pointer;
  color: #888; padding: 4px; line-height: 1;
}
.gestion-rdv-modal__close:hover { color: #333; }
.gestion-rdv-modal__title { font-size: 17px; font-weight: 700; margin: 0 0 18px; }
.gestion-rdv-modal__options { display: flex; gap: 10px; margin-bottom: 18px; }
.gestion-rdv-modal__opt-btn {
  flex: 1; padding: 10px 0; border-radius: 8px;
  border: 1.5px solid #e5e7eb; background: #fff;
  font-size: 14px; font-weight: 600; cursor: pointer;
  color: #333; transition: .15s;
}
.gestion-rdv-modal__opt-btn:hover,
.gestion-rdv-modal__opt-btn.active { border-color: #930022; color: #930022; background: #fff8f9; }
.gestion-rdv-modal__opt-btn--annuler.active { border-color: #dc2626; color: #dc2626; background: #fef2f2; }
.gestion-rdv-modal__message-wrap { display: none; }
.gestion-rdv-modal__message-wrap.visible { display: block; }
.gestion-rdv-modal__message-wrap label { font-size: 13px; font-weight: 600; display: block; margin-bottom: 6px; }
.gestion-rdv-modal__message-wrap textarea {
  width: 100%; border: 1.5px solid #e5e7eb; border-radius: 8px;
  padding: 10px 12px; font-size: 13px; resize: vertical; min-height: 80px;
  font-family: inherit; transition: border-color .15s;
}
.gestion-rdv-modal__message-wrap textarea:focus { border-color: #930022; outline: none; }
.gestion-rdv-modal__actions { display: flex; gap: 10px; margin-top: 16px; }
.gestion-rdv-modal__error { color: #dc2626; font-size: 13px; margin-top: 8px; display: none; }

/* ── Bouton gérer rendez-vous sur la page mes entretiens ─────── */
.btn-gerer-rdv {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 6px 14px; border-radius: 8px;
  border: 1.5px solid #e5e7eb; background: #fff;
  font-size: 12px; font-weight: 600; color: #555;
  cursor: pointer; transition: .15s; margin-top: 10px;
}
.btn-gerer-rdv:hover { border-color: #930022; color: #930022; background: #fff8f9; }

/* ── Add to calendar ─────────────────────────────────────────── */
.cal-trigger {
  cursor: pointer; display: inline-flex; align-items: center; gap: 4px;
  color: #555; text-decoration: none;
  border-bottom: 1px dashed #ccc; padding-bottom: 1px;
  transition: color .15s;
}
.cal-trigger:hover { color: #930022; border-color: #930022; }
.cal-dropdown {
  position: absolute; background: #fff; border: 1px solid #e5e7eb;
  border-radius: 8px; box-shadow: 0 4px 20px rgba(0,0,0,.12);
  min-width: 200px; z-index: 9000; overflow: hidden;
  opacity: 0; pointer-events: none; transform: translateY(4px);
  transition: opacity .15s, transform .15s;
}
.cal-dropdown.is-open { opacity: 1; pointer-events: all; transform: translateY(0); }
.cal-dropdown a {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 14px; font-size: 13px; color: #333;
  text-decoration: none; transition: background .1s;
}
.cal-dropdown a:hover { background: #f9f9f9; color: #930022; }
.cal-wrap { position: relative; display: inline-block; }

/* ── Modale de confirmation Lexjob ───────────────────────────── */
.lj-confirm { position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:0;transition:opacity .2s; }
.lj-confirm.is-open { pointer-events:auto;opacity:1; }
.lj-confirm__backdrop { position:absolute;inset:0;background:rgba(0,0,0,.45);backdrop-filter:blur(2px); }
.lj-confirm__box {
  position:relative;background:#fff;border-radius:16px;padding:32px 28px 24px;
  max-width:420px;width:90%;box-shadow:0 20px 60px rgba(0,0,0,.2);
  transform:translateY(12px);transition:transform .2s;text-align:center;
}
.lj-confirm.is-open .lj-confirm__box { transform:translateY(0); }
.lj-confirm__icon { width:52px;height:52px;border-radius:50%;background:#fff5f5;display:flex;align-items:center;justify-content:center;margin:0 auto 14px;color:#930022; }
.lj-confirm__msg { font-size:15px;color:#1a1a2e;line-height:1.5;margin:0 0 24px; }
.lj-confirm__actions { display:flex;gap:10px;justify-content:center;flex-wrap:wrap; }
.lj-confirm__actions .btn { min-width:130px; }

/* ── Recap : sections par offre ──────────────────────────────── */
.recap-offer-section { margin-bottom: 24px; }
.recap-offer-section__header {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 14px;
  background: #f8f8fc;
  border: 1px solid #e5e7eb;
  border-radius: 10px 10px 0 0;
  font-size: 13px; font-weight: 700; color: #1a1a2e;
}
.recap-offer-section__header svg { flex-shrink: 0; color: #930022; }
.recap-offer-section__header span:first-of-type { flex: 1; }
.recap-offer-section__count {
  background: #930022; color: #fff;
  font-size: 10px; font-weight: 700;
  min-width: 18px; height: 18px; line-height: 18px;
  border-radius: 9px; text-align: center; padding: 0 5px;
}
.recap-offer-section .recap-inbox { border-top: none; border-radius: 0 0 10px 10px; overflow: hidden; }
.recap-offer-section .recap-inbox__row:last-child { border-bottom: none; }

/* ── Entretien notification badges ───────────────────────────── */
.entretien-notif-badge {
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 10px; font-weight: 700;
  min-width: 18px; height: 18px; line-height: 1;
  border-radius: 9px; padding: 0 5px;
  margin-left: 6px; flex-shrink: 0;
}
.entretien-notif-badge--orange {
  background: #fed7aa; color: #9a3412; border: 1px solid #fdba74;
}
.entretien-notif-badge--red {
  background: #fee2e2; color: #991b1b; border: 1px solid #fca5a5;
}

/* ── Chips entretien par ligne recap-inbox ───────────────────── */
.entretien-status-chip {
  display: inline-flex; align-items: center;
  font-size: 10px; font-weight: 600; line-height: 1;
  padding: 3px 8px; border-radius: 20px; border: 1px solid;
  margin-top: 5px; white-space: nowrap;
}
.entretien-status-chip--green  { background: #f0fdf4; color: #166534; border-color: #bbf7d0; }
.entretien-status-chip--orange { background: #fff7ed; color: #9a3412; border-color: #fed7aa; }
.entretien-status-chip--red    { background: #fef2f2; color: #991b1b; border-color: #fecaca; }

/* ── Favoris : bouton étoile sur les cartes ─────────────────── */
.listing-card { position: relative; }
.listing-card__fav-btn {
  position: absolute; top: 10px; right: 10px; z-index: 2;
  width: 34px; height: 34px; border-radius: 50%;
  background: rgba(255,255,255,0.92); border: none; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  color: #c8a020; transition: .15s; box-shadow: 0 1px 4px rgba(0,0,0,.12);
}
.listing-card__fav-btn:hover { background: #fff; transform: scale(1.1); }
.listing-card__fav-btn.is-active { color: #d97706; }

/* ── Badge "Archivée" (annonces expirées) ───────────────────── */
.status-badge--archivee {
  background: #f3f4f6; color: #6b7280; border: 1px solid #e5e7eb;
}

/* ── Banners vérification email (page connexion) ─────────────── */
.verify-banner {
  display: flex; align-items: flex-start; gap: 16px;
  padding: 18px 20px; border-radius: 10px; margin-bottom: 24px;
  border: 1px solid; font-size: 14px; line-height: 1.5;
}
.verify-banner__icon { flex-shrink: 0; margin-top: 2px; }
.verify-banner--sent {
  background: #f0fdf4; border-color: #86efac; color: #14532d;
}
.verify-banner--sent .verify-banner__icon { color: #16a34a; }
.verify-banner--warning {
  background: #fffbeb; border-color: #fcd34d; color: #78350f;
}
.verify-banner--warning .verify-banner__icon { color: #d97706; }
.verify-banner--error {
  background: #fef2f2; border-color: #fca5a5; color: #7f1d1d;
}
.verify-banner--error .verify-banner__icon { color: #dc2626; }

/* ── Pagination ─────────────────────────────────────────────── */
.lexjob-pagination {
  display: flex; align-items: center; justify-content: center;
  gap: 4px; margin: 28px 0 8px; flex-wrap: wrap;
}
.lexjob-pagination__btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px; border-radius: 8px;
  border: 1px solid #e5e7eb; background: #fff; color: #374151;
  text-decoration: none; transition: .15s;
}
.lexjob-pagination__btn:hover { background: #f9fafb; border-color: #d1d5db; }
.lexjob-pagination__btn--disabled { opacity: .4; cursor: default; pointer-events: none; }
.lexjob-pagination__page {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 36px; height: 36px; padding: 0 6px; border-radius: 8px;
  border: 1px solid #e5e7eb; background: #fff; color: #374151;
  font-size: 14px; font-weight: 500; text-decoration: none; transition: .15s;
}
.lexjob-pagination__page:hover { background: #f9fafb; border-color: #d1d5db; }
.lexjob-pagination__page--active {
  background: var(--color-primary); border-color: var(--color-primary);
  color: #fff; cursor: default;
}
.lexjob-pagination__ellipsis {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 36px; height: 36px; color: #9ca3af; font-size: 14px;
}

/* ── Entretiens archivés ────────────────────────────────────── */
.entretiens-archived-section { margin-top: 32px; border-top: 1px solid #f3f4f6; padding-top: 8px; }
.entretiens-archived-toggle {
  display: flex; align-items: center; gap: 8px; width: 100%;
  background: none; border: none; padding: 12px 4px; cursor: pointer;
  font-size: 14px; font-weight: 600; color: #6b7280; text-align: left;
}
.entretiens-archived-toggle:hover { color: #374151; }
.entretiens-archived-toggle__count {
  display: inline-flex; align-items: center; justify-content: center;
  background: #f3f4f6; color: #6b7280; font-size: 11px; font-weight: 700;
  border-radius: 20px; padding: 2px 8px; min-width: 22px;
}
.entretiens-archived-toggle__chevron {
  margin-left: auto; transition: transform .2s; flex-shrink: 0;
}
.entretiens-archived-toggle.is-open .entretiens-archived-toggle__chevron {
  transform: rotate(180deg);
}
.entretiens-archived-list { padding-top: 12px; }
.entretien-row-card--archived { opacity: .7; }

/* ── Settings cards (page Réglages / Mon compte) ────────────── */
.settings-card {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  overflow: hidden;
  margin-bottom: 24px;
  padding: 24px;
}
.settings-card__header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: -24px -24px 24px -24px;
  padding: 14px 24px;
  border-bottom: 1px solid #f3f4f6;
  background: #f9fafb;
}
.settings-card__header > svg,
.settings-card__header > img {
  flex-shrink: 0;
  color: var(--color-primary, #930022);
  opacity: .75;
}
.settings-card__title {
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: #374151;
  margin: 0;
}
/* Vertical rhythm — all direct non-header children get spacing between them */
.settings-card > *:not(.settings-card__header) + *:not(.settings-card__header) { margin-top: 20px; }
/* Same inside nested wrappers (paris1-block, etc.) */
.settings-card .form-group + .form-group { margin-top: 20px; }
/* Exception : inside .form-row the two columns sit side-by-side, no top margin */
.form-row .form-group + .form-group { margin-top: 0; }
/* Toggle labels and help text floating inside cards (AFJE, Candidatures) */
.settings-card > .toggle-label {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 10px;
}
.settings-card > p.form-help { margin-top: 4px; margin-bottom: 0; }

/* Accent card — AFJE */
.settings-card--afje { border-color: #bfdbfe; }
.settings-card--afje .settings-card__header {
  background: #dbeafe;
  border-bottom-color: #bfdbfe;
}
.settings-card--afje .settings-card__header > img { opacity: 1; }

/* Sub-title separator inside a card (e.g. "Changer le mot de passe") */
.settings-card__sub-title {
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: #6b7280;
  margin: 24px -24px 20px;
  padding: 18px 24px 0;
  border-top: 1px solid #f3f4f6;
}

/* ── Modal "Modifications non enregistrées" ─────────────────── */
.lexjob-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 9000;
  align-items: center;
  justify-content: center;
}
.lexjob-modal.is-open { display: flex; }
.lexjob-modal__overlay {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.5);
}
.lexjob-modal__box {
  position: relative;
  background: #fff;
  border-radius: 16px;
  padding: 32px 28px 28px;
  max-width: 420px;
  width: 92%;
  box-shadow: 0 20px 60px rgba(0,0,0,.18);
  z-index: 1;
  text-align: center;
}
.unsaved-modal__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 60px;
  height: 60px;
  border-radius: 50%;
  background: #fff7ed;
  color: #ea580c;
  margin-bottom: 16px;
}
.unsaved-modal__title {
  font-size: 17px;
  font-weight: 700;
  color: #111827;
  margin-bottom: 10px;
}
.unsaved-modal__text {
  font-size: 14px;
  color: #6b7280;
  line-height: 1.55;
  margin-bottom: 24px;
}
.unsaved-modal__actions {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.unsaved-modal__actions .btn { width: 100%; justify-content: center; }

/* ═══════════════════════════════════════════════════════════════
   RESPONSIVE MOBILE — Audit complet
   ═══════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {
  /* Hero */
  .hero { min-height: 320px; padding-bottom: 32px; }
  .hero__subtitle { font-size: 14px; padding: 0 16px; }

  /* Archive */
  .archive-header { flex-direction: column; align-items: flex-start; gap: 8px; }
  .archive-header__count { font-size: 13px; }
  .archive-header__meta { flex-wrap: wrap; gap: 8px; }

  /* Single offre — conditions */
  .condition-item { flex-direction: column; gap: 2px; }
  .condition-item__label { min-width: 0; font-size: 12px; }

  /* Profil public */
  .profil-card__name { font-size: 20px; }
  .careers-hero__title { font-size: 22px; }
  .careers-hero__inner { padding: 24px 16px; }
  .careers-job__meta { gap: 8px; }

  /* Compte / settings */
  .account-main__title { font-size: 18px; }
  .settings-card { padding: 16px; }
  .settings-card__header { margin: -16px -16px 16px -16px; padding: 12px 16px; }
  .settings-card__sub-title { margin: 16px -16px 16px; padding: 14px 16px 0; }

  /* Pages statiques */
  .page-article__title { font-size: 22px; }
  .contact-page__title { font-size: 20px; }
  .submit-page__title { font-size: 20px; }

  /* Messagerie : liste au-dessus du chat */
  .messaging-layout { grid-template-columns: 1fr; min-height: auto; }
  .conversations-list { border-right: none; border-bottom: 1px solid var(--color-border); max-height: 240px; }

  /* CVthèque */
  .cvtheque-hero { padding: 32px 0 24px; }
  .cvtheque-filters { flex-direction: column; gap: 8px; }

  /* Footer */
  .site-footer { padding: 32px 0 20px; }
  .site-footer__inner { gap: 20px; }
  .site-footer__legal { gap: 10px; }

  /* Tables */
  .my-listings-table { font-size: 12px; }
  .my-listings-table td, .my-listings-table th { padding: 6px 8px; }

  /* Bouton publier une offre dans le header */
  .site-header__publish { display: none; }

  /* Auth radios 2 col → 1 col */
  .auth-type-radios { grid-template-columns: 1fr; }
}

@media (max-width: 480px) {
  /* Hero */
  .hero { min-height: 260px; padding-bottom: 20px; }
  .hero__title { font-size: 20px; line-height: 1.25; }
  .hero__search { padding: 12px 0 0; }

  /* Listing card */
  .listing-card__image { height: 130px; }

  /* Profil public hero */
  .profil-card__header { padding: 24px 16px; }
  .profil-card__name { font-size: 18px; }
  .profil-card__stats { gap: 16px; }
  .profil-card__stat-value { font-size: 20px; }

  /* Single offre */
  .single-header { padding: 20px 0; }
  .single-header__title { font-size: 20px; }
  .apply-btn-wrapper .btn { width: 100%; justify-content: center; }

  /* Modals */
  .lexjob-modal__box { padding: 20px 16px; border-radius: 12px; }
  .modal__title, .unsaved-modal__title { font-size: 16px; }

  /* Account sidebar : affichage horizontal scrollable */
  .account-sidebar { overflow-x: auto; white-space: nowrap; padding-bottom: 4px; }
  .account-nav { display: flex; flex-direction: row; gap: 4px; }
  .account-nav__item { flex-shrink: 0; }
  .account-nav__link { padding: 8px 12px; font-size: 13px; border-radius: 20px; }
  .account-nav__link.is-active { background: var(--color-primary); color: #fff; }

  /* Badges listing card */
  .lc-badge { font-size: 11px; padding: 3px 7px; }
  .badge { font-size: 10px; padding: 3px 8px; }

  /* Forms */
  .form-group label { font-size: 13px; }
  .form-group input,
  .form-group textarea,
  .form-group select { font-size: 14px; }

  /* Submit page */
  .submit-page__title { font-size: 18px; }
  .submit-section__title { font-size: 15px; }

  /* CVthèque hero */
  .cvtheque-hero__title { font-size: 22px; }

  /* Page contact */
  .contact-page__title { font-size: 18px; }
  .contact-form-wrapper { padding: 20px 16px; }

  /* Footer */
  .site-footer__inner { gap: 16px; }
  .site-footer__logo { margin-bottom: 8px; }
  .site-footer__col-title { font-size: 12px; }

  /* Annonces récentes section */
  .section--recent { padding: 40px 0; }
  .section__title { font-size: 22px; }

  /* Tabs */
  .tabs { gap: 0; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .tab { padding: 10px 8px; font-size: 11px; flex: 1; white-space: nowrap; }
}

/* ── Mobile header right zone ───────────────────────────────── */
.mobile-header-right {
  display: none;
  align-items: center;
  margin-left: auto;
}

.mobile-account-toggle {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  width: 28px;
  height: 20px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
}
/* Force les barres en couleur sombre quel que soit le contexte */
.mobile-account-toggle .mobile-menu-toggle__bar {
  background: #333333;
}

.mobile-account-notif {
  position: absolute;
  top: -6px;
  right: -8px;
  background: var(--color-primary);
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  min-width: 16px;
  height: 16px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 3px;
}

.btn--mobile-login {
  display: inline-flex;
  align-items: center;
  padding: 8px 16px;
  background: var(--color-primary);
  color: #fff;
  border-radius: var(--radius);
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}
.btn--mobile-login:hover { background: var(--color-primary-dark, #1a3fa6); color: #fff; }

/* ── Modal navigation mobile 2 niveaux ───────────────────────── */
.mobile-nav-modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  background: #fff;
  overflow-y: auto;
  overscroll-behavior: contain;
}

.mobile-nav-panel {
  display: flex;
  flex-direction: column;
  min-height: 100%;
}

/* Barre haute : retour / titre / fermer */
.mobile-nav-panel__bar {
  display: flex;
  align-items: center;
  height: 56px;
  padding: 0 16px;
  border-bottom: 1px solid var(--color-border);
  gap: 8px;
  position: sticky;
  top: 0;
  background: #fff;
  z-index: 1;
}

.mobile-nav-panel__back {
  display: flex;
  align-items: center;
  gap: 4px;
  background: none;
  border: none;
  cursor: pointer;
  font-size: 15px;
  font-weight: 500;
  color: var(--color-primary);
  padding: 0;
  white-space: nowrap;
}
.mobile-nav-panel__back svg { flex-shrink: 0; }

.mobile-nav-panel__title {
  flex: 1;
  font-size: 17px;
  font-weight: 700;
  color: var(--color-text);
  text-align: center;
}

/* Quand il y a un bouton retour, le titre doit être centré
   visuellement entre le bouton retour et le bouton fermer.
   On utilise margin-left: auto sur le close pour compenser. */
.mobile-nav-panel__close {
  display: flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  cursor: pointer;
  color: var(--color-text-muted);
  padding: 4px;
  border-radius: 50%;
  width: 36px;
  height: 36px;
  transition: background var(--transition), color var(--transition);
  margin-left: auto;
  flex-shrink: 0;
}
/* quand le bouton back est visible, le close ne bouge pas */
.mobile-nav-panel__close:hover { background: var(--color-bg-grey); color: var(--color-text); }

/* Niveaux */
.mobile-nav-level {
  flex: 1;
  display: flex;
  flex-direction: column;
}
.mobile-nav-level--sub { display: none; }
.mobile-nav-level--sub.is-active { display: flex; }

/* En-tête utilisateur dans le sous-menu profil */
.mobile-nav-user {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 20px 20px 16px;
  border-bottom: 1px solid var(--color-border);
}
.mobile-nav-user__avatar {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--color-border);
  flex-shrink: 0;
}
.mobile-nav-user__name {
  font-weight: 700;
  font-size: 16px;
  color: var(--color-text);
}

/* Items */
.mobile-nav-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 17px 20px;
  font-size: 16px;
  font-weight: 500;
  color: var(--color-text);
  text-decoration: none;
  border-bottom: 1px solid var(--color-border);
  background: none;
  border-left: none;
  border-right: none;
  border-top: none;
  width: 100%;
  text-align: left;
  cursor: pointer;
  transition: background var(--transition);
  gap: 12px;
}
.mobile-nav-item:hover,
.mobile-nav-item:active { background: var(--color-bg-grey, #f7f8fa); }
.mobile-nav-item svg { flex-shrink: 0; opacity: .6; }

.mobile-nav-item__left {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 1;
  min-width: 0;
}
.mobile-nav-item__avatar {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  object-fit: cover;
  border: 1.5px solid var(--color-border);
  flex-shrink: 0;
}
.mobile-nav-item__chevron { opacity: .4; flex-shrink: 0; }

.mobile-nav-item--highlight {
  color: var(--color-primary);
  font-weight: 700;
}
.mobile-nav-item--highlight svg { opacity: 1; color: var(--color-primary); }

.mobile-nav-item--exclusive {
  color: var(--color-primary);
}
.mobile-nav-item--danger { color: #e53e3e; border-top: 1px solid var(--color-border); margin-top: auto; }
.mobile-nav-item--danger svg { opacity: 1; }

/* Bouton d'action (Publier une offre) en bas du niveau 1 */
.mobile-nav-level__action {
  padding: 20px 20px 0;
  margin-top: auto;
}

@media (max-width: 768px) {
  .mobile-header-right { display: flex; }
}

/* ── Archive : toggle filtres mobile ────────────────────────── */
.archive-filter-toggle {
  /* display géré par les media queries */
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 12px 16px;
  margin-bottom: 12px;
  background: #fff;
  border: 1.5px solid var(--color-border);
  border-radius: var(--radius);
  font-size: 15px;
  font-weight: 600;
  color: var(--color-text);
  cursor: pointer;
  text-align: left;
  transition: border-color var(--transition), background var(--transition);
}
.archive-filter-toggle:hover { border-color: var(--color-primary); }
.archive-filter-toggle svg { flex-shrink: 0; color: var(--color-primary); }
.archive-filter-toggle__label { flex: 1; }
.archive-filter-toggle__count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--color-primary);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  min-width: 20px;
  height: 20px;
  border-radius: 10px;
  padding: 0 5px;
}
.archive-filter-toggle__chevron {
  transition: transform 0.2s ease;
  opacity: 0.5;
}
.archive-filter-toggle[aria-expanded="true"] .archive-filter-toggle__chevron {
  transform: rotate(180deg);
}

/* ── Archive : filtres instantanés — état loading ─────────────── */
.archive-main--loading {
  opacity: 0.5;
  pointer-events: none;
  transition: opacity 0.15s;
}

/* ── Overrides prioritaires (résolution conflits cascade) ──── */
/* Barres hamburger : toujours visibles en sombre */
.mobile-account-toggle .mobile-menu-toggle__bar {
  background: #333333 !important;
}

/* Bouton "Filtrer les offres" : caché sur desktop, visible sur mobile */
@media (min-width: 769px) {
  .archive-filter-toggle { display: none !important; }
}
@media (max-width: 768px) {
  .archive-filter-toggle { display: flex !important; }
  .mobile-header-right   { display: flex !important; }
}

/* Garantit que l'attribut HTML hidden fonctionne même si un display est défini */
[hidden] { display: none !important; }

/* Map archive : cachée sur mobile (inutile sans sidebar) */
@media (max-width: 768px) {
  .filter-map { display: none !important; }
}

/* ══════════════════════════════════════════════════════════════
   MOBILE — Mes annonces + Récapitulatif candidatures
══════════════════════════════════════════════════════════════ */
@media (max-width: 640px) {

  /* ── Mes annonces : tableau 5 colonnes → cards ─────────── */
  .my-listings-table table,
  .my-listings-table tbody,
  .my-listings-table tr,
  .my-listings-table td { display: block !important; width: 100% !important; box-sizing: border-box; }
  .my-listings-table thead { display: none !important; }

  .my-listing-row {
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    margin-bottom: 10px;
  }
  .my-listing-row td {
    padding: 4px 12px !important;
    border-bottom: none !important;
    font-size: 13px;
  }
  .my-listing-row td:first-child { padding-top: 12px !important; }
  .my-listing-row td:last-child  { padding-bottom: 12px !important; }

  /* Labels devant chaque cellule */
  .my-listings-table td:nth-child(2)::before,
  .my-listings-table td:nth-child(3)::before,
  .my-listings-table td:nth-child(4)::before {
    font-size: 11px; font-weight: 700; color: #888;
    text-transform: uppercase; letter-spacing: .3px; margin-right: 4px;
  }
  .my-listings-table td:nth-child(2)::before { content: 'Statut · '; }
  .my-listings-table td:nth-child(3)::before { content: 'Date limite · '; }
  .my-listings-table td:nth-child(4)::before { content: 'Candidatures · '; }

  /* Accordéon candidatures (ligne colspan) */
  .candidatures-row td { padding: 0 !important; }

  /* ── Récapitulatif : onglets trop larges → cause racine du débordement ── */
  /* Les boutons "Candidatures reçues" + "Spontanées" dépassent 335px et font
     déborder toute la page. On réduit padding + font pour qu'ils rentrent. */
  .recap-switcher__btn {
    padding: 6px 8px;
    font-size: 12px;
    gap: 5px;
  }
  .recap-switcher__count {
    min-width: 16px; height: 16px;
    font-size: 10px; padding: 0 4px;
  }

  /* ── Titre offre tronqué → bouton export toujours visible ── */
  .recap-offer-section__header span:first-of-type {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex-shrink: 1;
  }
  .recap-export-btn { font-size: 11px; padding: 3px 7px; gap: 4px; }

  /* ── Chips statut (À réexaminer, Intéressante…) ────────── */
  .cand-statut-chip {
    white-space: normal; text-align: right;
    line-height: 1.3; max-width: 76px; font-size: 10px;
  }
  .entretien-status-chip {
    white-space: normal; text-align: right;
    line-height: 1.3; max-width: 76px; font-size: 9px;
  }

  /* ── Barre de tri → wrap si l'écran est trop étroit ──────── */
  .recap-sort-bar { flex-wrap: wrap; gap: 6px; }
}

/* Espacement header/footer et contenu sur mobile */
@media (max-width: 768px) {
  .site-main { padding-top: 20px; }
  .site-footer { margin-top: 32px; }
}

/* ══════════════════════════════════════════════════════════
   SECTION AUDIENCES — "Pour qui ?"
══════════════════════════════════════════════════════════ */
.section--audiences {
  padding: 60px 0 64px;
  background: var(--color-bg);
}

/* Onglets */
.audience-tabs {
  display: flex;
  gap: 0;
  border-bottom: 2px solid var(--color-border);
  margin-bottom: 40px;
  justify-content: center;
}

.audience-tab {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 14px 32px;
  font-size: 15px;
  font-weight: 600;
  color: var(--color-text-light);
  background: none;
  border: none;
  border-bottom: 3px solid transparent;
  margin-bottom: -2px;
  cursor: pointer;
  transition: color .18s, border-color .18s;
  white-space: nowrap;
}
.audience-tab:hover { color: var(--color-primary); }
.audience-tab--active {
  color: var(--color-primary);
  border-bottom-color: var(--color-primary);
}
.audience-tab__icon { display: flex; align-items: center; }

/* Panels */
.audience-panel {
  display: none;
}
.audience-panel--active {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px;
  align-items: center;
}

/* Visuel */
.audience-panel__visual {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}
.audience-panel__illustration {
  width: 100%;
  max-width: 320px;
  height: auto;
  border-radius: 12px;
}
.audience-badge {
  position: absolute;
  top: 12px;
  left: 12px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 20px;
}
.audience-badge--blue  { background: #dbeafe; color: #1d4ed8; }
.audience-badge--green { background: #dcfce7; color: #166534; }
.audience-badge--gold  { background: #fef9c3; color: #854d0e; }

/* Contenu */
.audience-panel__title {
  font-size: 22px;
  font-weight: 700;
  color: var(--color-text);
  margin: 0 0 20px;
  line-height: 1.35;
}

.audience-feature-list {
  list-style: none;
  padding: 0;
  margin: 0 0 28px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.audience-feature-list li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 15px;
  color: var(--color-text);
  line-height: 1.5;
}
.audience-feature-list li svg {
  flex-shrink: 0;
  margin-top: 3px;
  color: var(--color-primary);
}

.audience-panel__cta {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
}
.audience-panel__cta .btn {
  flex: 0 0 auto;
}

/* Responsive */
@media (max-width: 768px) {
  .audience-tab { padding: 11px 16px; font-size: 13px; gap: 6px; }
  .audience-tab__icon svg { width: 17px; height: 17px; }
  .audience-panel--active { grid-template-columns: 1fr; gap: 0; }
  .audience-panel__visual { display: none; }
  .audience-panel__title { font-size: 18px; }
  #audience-modal { display: none !important; }
}

/* ── Mockups UI dans les panels audiences ── */
.aud-mockup {
  background: white;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 4px 24px rgba(0,0,0,.07);
  width: 100%;
}

/* Mockup listings (étudiants) */
.aud-mockup--listings {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.aud-mockup__card {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--color-border);
  position: relative;
}
.aud-mockup__card:last-of-type { border-bottom: none; }
.aud-mockup__logo-wrap {
  flex-shrink: 0;
}
.aud-mockup__logo {
  width: 52px;
  height: 52px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  font-size: 11px;
  line-height: 1.3;
  border: 1px solid var(--color-border);
}
.aud-mockup__logo--initials {
  font-size: 15px;
  font-weight: 700;
  letter-spacing: .03em;
  border: none;
}
.aud-mockup__body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.aud-mockup__tag {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  padding: 2px 7px;
  border-radius: 4px;
  align-self: flex-start;
}
.aud-mockup__tag--stage     { background: #e0f0ff; color: #1558b0; }
.aud-mockup__tag--emploi    { background: #fff0e0; color: #92400e; }
.aud-mockup__tag--alternance { background: #e8f5e9; color: #1a6b3a; }
.aud-mockup__title {
  font-size: 13px;
  font-weight: 600;
  color: var(--color-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.aud-mockup__meta {
  font-size: 11px;
  color: var(--color-text-muted);
  display: flex;
  gap: 2px;
  flex-wrap: wrap;
}
.aud-mockup__check {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #e8f5e9;
  color: #28a745;
  display: flex;
  align-items: center;
  justify-content: center;
}
.aud-mockup__charte {
  padding: 9px 16px;
  font-size: 11px;
  color: var(--color-text-muted);
  background: var(--color-bg-light);
  display: flex;
  align-items: center;
  gap: 6px;
  border-top: 1px solid var(--color-border);
}
.aud-mockup__charte svg { color: var(--color-primary); flex-shrink: 0; }

/* Mockup ATS (recruteurs) */
.aud-mockup--ats {
  display: flex;
  flex-direction: column;
}
.aud-mockup__ats-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  background: var(--color-bg-light);
  border-bottom: 1px solid var(--color-border);
}
.aud-mockup__ats-title { font-size: 13px; font-weight: 700; color: var(--color-text); }
.aud-mockup__ats-count { font-size: 11px; color: var(--color-text-muted); background: var(--color-border); padding: 2px 8px; border-radius: 12px; }
.aud-mockup__ats-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--color-border);
}
.aud-mockup__avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 700;
  flex-shrink: 0;
}
.aud-mockup__ats-info { flex: 1; min-width: 0; }
.aud-mockup__ats-name { font-size: 13px; font-weight: 600; color: var(--color-text); }
.aud-mockup__ats-sub  { font-size: 11px; color: var(--color-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.aud-mockup__status {
  font-size: 10px;
  font-weight: 700;
  padding: 3px 8px;
  border-radius: 12px;
  flex-shrink: 0;
  white-space: nowrap;
}
.aud-mockup__status--green  { background: #dcfce7; color: #166534; }
.aud-mockup__status--orange { background: #fef3c7; color: #92400e; }
.aud-mockup__status--grey   { background: #f3f4f6; color: #6b7280; }
.aud-mockup__ats-actions {
  display: flex;
  gap: 8px;
  padding: 12px 16px;
  background: var(--color-bg-light);
}
.aud-mockup__ats-action-btn {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 11px;
  font-weight: 600;
  color: var(--color-text-light);
  background: white;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  padding: 6px 10px;
}
.aud-mockup__ats-action-btn--primary {
  background: var(--color-primary);
  color: white;
  border-color: var(--color-primary);
}

/* Mockup université */
.aud-mockup--univ {
  display: flex;
  flex-direction: column;
}
.aud-mockup__univ-header {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  background: var(--color-bg-light);
  border-bottom: 1px solid var(--color-border);
}
.aud-mockup__univ-logo {
  width: 40px;
  height: 40px;
  border-radius: 8px;
  background: #1a3a6b;
  color: white;
  font-size: 14px;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.aud-mockup__univ-name { font-size: 12px; font-weight: 700; color: var(--color-text); }
.aud-mockup__univ-sub  { font-size: 10px; color: var(--color-text-muted); }
.aud-mockup__univ-badge {
  margin-left: auto;
  font-size: 10px;
  font-weight: 700;
  background: #fef9c3;
  color: #854d0e;
  padding: 3px 8px;
  border-radius: 12px;
  flex-shrink: 0;
}
.aud-mockup__univ-offers {
  padding: 12px 16px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  border-bottom: 1px solid var(--color-border);
}
.aud-mockup__univ-label {
  font-size: 11px;
  font-weight: 700;
  color: var(--color-text-muted);
  text-transform: uppercase;
  letter-spacing: .05em;
}
.aud-mockup__univ-card {
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--color-bg-light);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 8px 10px;
}
.aud-mockup__univ-card-title {
  font-size: 12px;
  font-weight: 600;
  color: var(--color-text);
  flex: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.aud-mockup__lock { font-size: 10px; color: var(--color-text-muted); white-space: nowrap; }

/* ── Bouton "Comment ça fonctionne ?" (header visiteur) ──────────────── */
.site-nav__link--how {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: none;
  border: 1.5px solid var(--color-border, #d1d5db);
  border-radius: var(--radius-sm, 6px);
  padding: 5px 12px;
  font-size: 13px;
  font-weight: 500;
  color: var(--color-text-muted, #6b7280);
  cursor: pointer;
  white-space: nowrap;
  transition: border-color .18s, color .18s, background .18s;
  font-family: inherit;
  line-height: 1.4;
}
.site-nav__link--how:hover {
  border-color: var(--color-primary, #930022);
  color: var(--color-primary, #930022);
  background: rgba(147, 0, 34, .04);
}
.site-nav__link--how svg { flex-shrink: 0; }
.site-nav__link--how .how-btn-svg { flex-shrink: 0; }

/* Taille intermédiaire : se transforme en cercle "?" */
@media (max-width: 1100px) and (min-width: 769px) {
  .site-nav__link--how {
    width: 30px;
    height: 30px;
    padding: 0;
    border-radius: 50%;
    justify-content: center;
    gap: 0;
  }
  .site-nav__link--how .how-btn-svg { display: none; }
  .site-nav__link--how .how-btn-label { display: none; }
  .site-nav__link--how::after {
    content: '?';
    font-size: 14px;
    font-weight: 700;
    font-family: inherit;
    line-height: 1;
  }
}

/* ── Popup audience : ajustements internes ───────────────────────────── */
#audience-modal .modal__box {
  max-height: 92vh;
  overflow-y: auto;
}
#audience-modal .section__title { margin-top: 0; }
#audience-modal .audience-panels { max-height: 60vh; overflow-y: auto; }

/* ── Bouton "?" nav recruteur ───────────────────────────────────────── */
.site-nav__link--how-icon { display:none; }
.site-nav__link--how-text {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  background: none;
  border: 1.5px solid var(--color-border, #d1d5db);
  border-radius: 50%;
  font-family: inherit;
  font-size: 13px;
  font-weight: 600;
  color: var(--color-text-muted, #6b7280);
  cursor: pointer;
  transition: border-color .18s, color .18s;
  line-height: 1;
}
.site-nav__link--how-text:hover {
  border-color: var(--color-primary, #930022);
  color: var(--color-primary, #930022);
}
/* ── Section "Ils nous font confiance" ─────────────────── */
.section--partners {
  background: #fff;
  padding: 28px 0 24px;
  border-top: 1px solid #eee;
}
.partners-label {
  text-align: center;
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: #777;
  margin: 0 0 20px;
}
.partners-slider {
  overflow: hidden;
  width: 100%;
}
.partners-track {
  display: flex;
  align-items: center;
  will-change: transform;
}
.partners-item {
  /* width set via JS */
  flex-shrink: 0;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 32px;
}
.partners-item a {
  display: flex;
  align-items: center;
  justify-content: center;
}
.partners-item img {
  display: block;
  max-width: 100%;
  max-height: 65px;
  width: auto;
  height: auto;
  object-fit: contain;
  transition: opacity 0.2s;
  opacity: 0.85;
}
.partners-item:hover img { opacity: 1; }

/* ── Photos de profil : cadrage par défaut sur le haut de l'image ─────────
   Une photo en portrait (plus haute que large) découpée en rond ou en carré
   l'était au centre, donc souvent sur le buste plutôt que sur le visage. Le
   visage se trouvant presque toujours dans le tiers supérieur, on cadre plus
   haut. Sans effet sur une photo carrée, ni sur une photo déjà recadrée par
   son auteur (outil de recadrage du profil auteur). */
.author-hero__photo,
.blog-author-card__photo,
.user-menu__avatar,
.mobile-nav-user__avatar,
.mobile-nav-item__avatar,
.avatar-upload__preview img { object-position: 50% 22%; }

/* ── Recadrage de la photo de profil (profil auteur de la Tribune) ──────── */
.avatar-cropper__open { background: none; font-family: inherit; margin-left: 6px; }
.avatar-cropper__open[hidden] { display: none; }
.settings-avatar { flex-wrap: wrap; }
/* Toujours sur sa propre ligne, sous la photo : à côté, il débordait de
   l'écran sur téléphone. */
.avatar-cropper {
  flex: 1 1 100%;
  min-width: 0;
  max-width: 360px;
  box-sizing: border-box;
  padding: 16px;
  border: 1px solid var(--color-border);
  border-radius: 10px;
  background: #fff;
}
.avatar-cropper__title { font-weight: 600; margin: 0 0 4px; }
.avatar-cropper__viewport {
  position: relative;
  width: 240px;
  max-width: 100%;
  aspect-ratio: 1;
  margin: 0 auto;
  border-radius: 50%;
  overflow: hidden;
  background: #f0f0f0;
  cursor: grab;
  touch-action: none;
  user-select: none;
  box-shadow: 0 0 0 3px var(--color-primary);
}
.avatar-cropper__viewport:active { cursor: grabbing; }
.avatar-cropper__img {
  position: absolute;
  top: 0;
  left: 0;
  max-width: none;
  transform-origin: 0 0;
  pointer-events: none;
}
.avatar-cropper__zoom { display: flex; align-items: center; gap: 10px; margin: 14px 0 12px; font-weight: 600; color: var(--color-text-muted); }
.avatar-cropper__zoom input { flex: 1; accent-color: var(--color-primary); }
.avatar-cropper__actions { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; }

/* ── Page d'accueil lexjob.fr : derniers articles de la Tribune du Droit ── */
/* Pas de marge haute : la section "Annonces récentes" juste au-dessus a déjà
   sa marge basse (deux sections blanches à la suite = double espace sinon). */
.section--tribune { background: #fff; padding-top: 0; padding-bottom: 24px; }
.tribune-home__intro { text-align: center; color: var(--color-text-light); margin: -16px auto 28px; max-width: 760px; font-size: 15px; text-wrap: balance; }
.tribune-home__intro a { white-space: nowrap; }
.tribune-home__intro a { color: var(--color-primary); font-weight: 600; }
.tribune-home__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; }
.tribune-home__card { border: 1px solid var(--color-border); border-radius: 10px; overflow: hidden; background: #fff; transition: border-color .15s, box-shadow .15s; }
.tribune-home__card:hover { border-color: #c4c4c4; box-shadow: 0 4px 14px rgba(0,0,0,.06); }
.tribune-home__link { display: flex; flex-direction: column; height: 100%; color: inherit; text-decoration: none; }
.tribune-home__image { aspect-ratio: 1200 / 630; background: #ececec; overflow: hidden; }
.tribune-home__image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tribune-home__body { display: flex; flex-direction: column; flex: 1; padding: 14px 16px 16px; }
.tribune-home__rubric { font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--color-primary); margin: 0 0 6px; }
.tribune-home__title {
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 17px;
  line-height: 1.3;
  margin: 0 0 10px;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
}
.tribune-home__link:hover .tribune-home__title { color: var(--color-primary); }
.tribune-home__meta { font-size: 12.5px; color: var(--color-text-muted); margin: auto 0 0; }
.tribune-home__more { text-align: center; margin: 28px 0 0; }

/* Menu du haut avec le lien "Actualités" (lexjob.fr, visiteur non connecté
   notamment) : le bouton "Comment ça fonctionne ?" passe en simple cercle "?"
   (avec son infobulle) sur ordinateur, pour laisser la place au lien. Le
   haut de page a une largeur fixe (--container-max) : sans cela, le menu
   débordait sur ce bouton quelle que soit la taille de l'écran. */
@media (min-width: 769px) {
  .site-header__inner:has(.site-nav__item--news) .site-nav__link--how {
    width: 30px;
    height: 30px;
    padding: 0;
    border-radius: 50%;
    justify-content: center;
    gap: 0;
  }
  .site-header__inner:has(.site-nav__item--news) .site-nav__link--how .how-btn-svg,
  .site-header__inner:has(.site-nav__item--news) .site-nav__link--how .how-btn-label { display: none; }
  .site-header__inner:has(.site-nav__item--news) .site-nav__link--how::after {
    content: '?';
    font-size: 14px;
    font-weight: 700;
    font-family: inherit;
    line-height: 1;
  }
}

/* "Nouveau" (lien Actualités, lexjob.fr) jusqu'au 3 novembre 2026.
   Menu du haut : étiquette inclinée posée en haut à droite du mot, comme un
   autocollant. Menu "Mon profil" et menu mobile : petite pastille en ligne. */
.site-nav__link--news { position: relative; }
.nav-new-sticker {
  position: absolute;
  top: -6px;
  right: -16px;
  transform: rotate(12deg);
  padding: 2px 6px 2px;
  border-radius: 3px;
  background: #f8e6ea;
  border: 1px solid rgba(147, 0, 34, .28);
  color: var(--color-primary, #930022);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  line-height: 1.3;
  white-space: nowrap;
  box-shadow: 0 1px 3px rgba(147, 0, 34, .15);
  pointer-events: none;
}
.site-nav__item:has(.nav-new-sticker) { margin-right: 14px; }
.nav-new-badge {
  display: inline-block;
  margin-left: 8px;
  padding: 1px 6px;
  border-radius: 3px;
  background: #f8e6ea;
  border: 1px solid rgba(147, 0, 34, .28);
  color: var(--color-primary, #930022);
  font-size: 9.5px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  line-height: 1.4;
  vertical-align: 1px;
}

/* ── Fenêtre "Bouton Nous rejoindre" (recruteurs, lexjob.fr) ─────────── */
.careers-page__edit-bar { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 8px; }
.join-btn-modal { max-width: 560px; }
.join-btn-modal__text { font-size: 14px; color: var(--color-text-light); line-height: 1.6; margin: 0 0 18px; }
.join-btn-modal__label { font-size: 13px; font-weight: 600; color: var(--color-text); margin: 16px 0 8px; }
.join-btn-modal__row { display: flex; gap: 8px; align-items: flex-start; }
.join-btn-modal__field {
  flex: 1;
  min-width: 0;
  padding: 10px 12px;
  border: 1px solid var(--color-border-dark, #d1d5db);
  border-radius: var(--radius, 6px);
  font-size: 13.5px;
  color: var(--color-text);
  background: #f7f7f7;
  font-family: inherit;
}
@media (max-width: 560px) {
  .join-btn-modal__row { flex-direction: column; align-items: stretch; }
}
/* Module « Nos offres » (inc/widget.php) dans la même fenêtre */
.join-btn-modal__option--main { border: 1px solid var(--color-border, #e5e7eb); border-radius: var(--radius-lg, 10px); padding: 16px 16px 14px; margin: 0 0 18px; background: #fcfcfc; }
.join-btn-modal__option-title { font-size: 15px; font-weight: 700; color: var(--color-text); margin: 0 0 6px; }
.join-btn-modal__option-title--alt { margin-top: 4px; }
.join-btn-modal__tag { display: inline-block; vertical-align: 2px; margin-left: 6px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: #fff; background: var(--color-primary); border-radius: 999px; padding: 2px 8px; }
.join-btn-modal__code { display: block; width: 100%; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 12px; line-height: 1.5; resize: vertical; }
.join-btn-modal__actions { display: flex; align-items: center; gap: 8px 16px; flex-wrap: wrap; margin: 10px 0 0; }
.join-btn-modal__link { color: var(--color-primary); font-weight: 600; font-size: 14px; text-decoration: none; }
.join-btn-modal__link:hover { text-decoration: underline; }
.join-btn-modal__details { margin: 14px 0 0; font-size: 13.5px; color: var(--color-text-light); }
.join-btn-modal__details summary { cursor: pointer; font-weight: 600; color: var(--color-text); }
.join-btn-modal__details ul { margin: 10px 0 10px 18px; padding: 0; line-height: 1.6; }
.join-btn-modal__details code { font-size: 12px; background: #f1f1f1; padding: 1px 4px; border-radius: 3px; }
.join-btn-modal__small { font-size: 12.5px; color: var(--color-text-muted); margin: 12px 0 0; line-height: 1.5; }
.join-btn-modal__stats { list-style: none; margin: 14px 0 0; padding: 10px 0 0; border-top: 1px solid var(--color-border, #e5e7eb); font-size: 13.5px; color: var(--color-text-light); }
.join-btn-modal__stats li { margin: 2px 0; }
.join-btn-modal__preview-link { margin: 18px 0 0; padding-top: 14px; border-top: 1px solid var(--color-border, #e5e7eb); font-size: 14px; }
.join-btn-modal__preview-link a { color: var(--color-primary); font-weight: 600; text-decoration: none; }
.join-btn-modal__preview-link a:hover { text-decoration: underline; }

/* Aperçu "comme un candidat" de la page de recrutement (?apercu=1) */
.careers-preview-bar {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px 18px;
  flex-wrap: wrap;
  padding: 10px 20px;
  background: #fff8ee;
  border-bottom: 1px solid #ffe0aa;
  color: #7a4200;
  font-size: 14px;
  text-align: center;
}
.careers-preview-bar a { color: #7a4200; font-weight: 700; text-decoration: underline; }
.careers-preview-toast {
  position: fixed;
  left: 50%;
  bottom: 24px;
  transform: translateX(-50%);
  z-index: 10000;
  padding: 10px 16px;
  border-radius: 8px;
  background: #1f2937;
  color: #fff;
  font-size: 14px;
  box-shadow: 0 6px 20px rgba(0,0,0,.2);
}
.careers-preview-toast[hidden] { display: none; }
.careers-preview-toast { z-index: 100000; }
.careers-preview-form-note {
  margin: 0 0 16px;
  padding: 12px 14px;
  border-radius: 8px;
  background: #fff8ee;
  border: 1px solid #ffe0aa;
  color: #7a4200;
  font-size: 13.5px;
  line-height: 1.5;
}
.contact-modal--preview input:disabled,
.contact-modal--preview textarea:disabled,
.contact-modal--preview select:disabled { cursor: not-allowed; opacity: .75; }
/* Aperçu du formulaire de candidature aux offres (inc/forms.php) : même rendu. */
.apply-modal--preview input:disabled,
.apply-modal--preview textarea:disabled { cursor: not-allowed; opacity: .75; }
.apply-modal--preview .contact-modal__file-label,
.apply-modal--preview button[type="submit"],
.apply-modal--preview .spont-dd__option { cursor: not-allowed; }

/* ── Personnalisation du formulaire de candidature spontanée (recruteur) ── */
.spont-form-open { margin-top: 14px; }
.spont-form-modal .modal__box { max-width: 600px; }
.spont-form__intro { font-size: 14px; color: var(--color-text-light); line-height: 1.6; margin: 0 0 14px; }
.spont-form__warn { font-size: 13px; color: #7a4200; background: #fff8ee; border: 1px solid #ffe0aa; border-radius: 8px; padding: 10px 12px; margin: 0 0 14px; }
.spont-form__note { font-size: 13px; color: #555; background: #f8f9fa; border: 1px solid #e5e7eb; border-radius: 8px; padding: 10px 12px; margin: 0 0 14px; }
.spont-form__label { font-size: 12px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--color-text-muted); margin: 18px 0 10px; }
.spont-form__label span { font-weight: 600; letter-spacing: 0; text-transform: none; }
/* "Champs du formulaire par défaut" : un champ par ligne, avec à droite
   "Toujours demandé", un interrupteur Demandé / Retiré, ou le choix
   Facultative / Obligatoire (lettre de motivation). */
.spont-fields { list-style: none; margin: 0 0 6px; padding: 0; border: 1px solid var(--color-border); border-radius: 8px; }
.spont-field { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 10px 12px; }
.spont-field + .spont-field { border-top: 1px solid var(--color-border); }
.spont-field__name strong { display: block; font-size: 14px; }
.spont-field__name small { display: block; font-size: 12.5px; color: var(--color-text-muted); margin-top: 2px; }
.spont-field__fixed { flex-shrink: 0; font-size: 12.5px; color: var(--color-text-muted); white-space: nowrap; }
.spont-field__switch { position: relative; flex-shrink: 0; display: inline-flex; align-items: center; cursor: pointer; }
.spont-field__switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.spont-field__switch-text { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 600; color: var(--color-text-muted); white-space: nowrap; }
.spont-field__switch-text::before { content: ''; width: 34px; height: 20px; border-radius: 10px; background: radial-gradient(circle at 10px 50%, #fff 7px, transparent 7.5px) #d1d5db; transition: background .15s; }
.spont-field__switch-text::after { content: 'Retiré'; }
.spont-field__switch input:checked + .spont-field__switch-text { color: var(--color-primary); }
.spont-field__switch input:checked + .spont-field__switch-text::before { background: radial-gradient(circle at 24px 50%, #fff 7px, transparent 7.5px) var(--color-primary); }
.spont-field__switch input:checked + .spont-field__switch-text::after { content: 'Demandé'; }
.spont-field__switch input:focus-visible + .spont-field__switch-text::before { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.spont-field__seg { flex-shrink: 0; display: inline-flex; border: 1px solid var(--color-border-dark, #d1d5db); border-radius: 8px; overflow: hidden; }
.spont-field__seg label { cursor: pointer; }
.spont-field__seg input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.spont-field__seg span { display: block; padding: 6px 11px; font-size: 12.5px; font-weight: 600; color: var(--color-text-muted); background: #fff; }
.spont-field__seg label + label span { border-left: 1px solid var(--color-border-dark, #d1d5db); }
.spont-field__seg input:checked + span { background: var(--color-primary); color: #fff; }
.spont-field__seg input:focus-visible + span { outline: 2px solid var(--color-primary); outline-offset: -2px; }
@media (max-width: 520px) {
  .spont-field { flex-wrap: wrap; }
}
.spont-form__check { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border: 1px solid var(--color-border); border-radius: 8px; margin-bottom: 8px; cursor: pointer; }
.spont-form__check input { margin-top: 3px; accent-color: var(--color-primary); }
.spont-form__check strong { display: block; font-size: 14px; }
.spont-form__check small { display: block; font-size: 12.5px; color: var(--color-text-muted); margin-top: 2px; }
.spont-form__hint { font-size: 12.5px; color: var(--color-text-muted); margin: 8px 0 0; }
.spont-form__legal { font-size: 12.5px; color: #7a4200; background: #fff8ee; border-radius: 6px; padding: 8px 10px; margin: 0 0 12px; }
.spont-form__status { font-size: 13.5px; color: #1e7b4b; margin: 14px 0 0; }
.spont-form__status--error { color: #c62828; }
.spont-form__actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--color-border); }
.spont-form__actions > div { display: flex; gap: 8px; }
.spont-form__preview { font-size: 13.5px; font-weight: 600; color: var(--color-primary); text-decoration: none; }
.spont-form__preview:hover { text-decoration: underline; }

/* Questions du recruteur : une carte par question (type, intitulé, réponses) */
.spont-q { border: 1px solid var(--color-border); border-radius: 8px; padding: 10px 12px 12px; margin-bottom: 10px; background: #fafafa; }
.spont-q__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.spont-q__type { font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; padding: 2px 8px; border-radius: 999px; background: #eef2f7; color: #3b5b7a; }
.spont-q__type--single { background: #eaf4e8; color: #1a6a3a; }
.spont-q__type--multiple { background: #f3ecfb; color: #6b3fa0; }
.spont-q input { width: 100%; box-sizing: border-box; padding: 9px 11px; border: 1px solid var(--color-border-dark, #d1d5db); border-radius: 6px; font: inherit; font-size: 14px; background: #fff; }
.spont-q__del, .spont-q__opt-del { flex-shrink: 0; width: 30px; height: 30px; border: 1px solid var(--color-border); border-radius: 6px; background: #fff; color: var(--color-text-muted); font-size: 18px; line-height: 1; cursor: pointer; }
.spont-q__del:hover, .spont-q__opt-del:hover { color: var(--color-primary); border-color: var(--color-primary); }
.spont-q__opts-label { font-size: 12px; color: var(--color-text-muted); margin: 10px 0 6px; }
.spont-q__opt { display: flex; gap: 6px; align-items: center; margin-bottom: 6px; }
.spont-q__opt input { flex: 1; min-width: 0; }
.spont-q__opt-add { background: none; border: none; padding: 2px 0; font: inherit; font-size: 13px; font-weight: 600; color: var(--color-primary); cursor: pointer; }
.spont-q__opt-add:disabled { color: var(--color-text-muted); cursor: default; }
.spont-q__req { display: flex; align-items: center; gap: 6px; width: fit-content; margin-top: 10px; font-size: 13px; font-weight: 600; color: var(--color-text); white-space: nowrap; cursor: pointer; }
.spont-q .spont-q__req input { width: auto; padding: 0; margin: 0; border: none; accent-color: var(--color-primary); }
.spont-q-chooser { border: 1px dashed var(--color-border-dark, #d1d5db); border-radius: 8px; padding: 12px; }
.spont-q-chooser p { margin: 0 0 8px; font-size: 13px; font-weight: 600; }
.spont-q-chooser [data-qtype] { display: block; width: 100%; text-align: left; padding: 9px 12px; margin-bottom: 6px; border: 1px solid var(--color-border); border-radius: 6px; background: #fff; font: inherit; cursor: pointer; }
.spont-q-chooser [data-qtype]:hover { border-color: var(--color-primary); }
.spont-q-chooser strong { display: block; font-size: 14px; }
.spont-q-chooser small { display: block; font-size: 12px; color: var(--color-text-muted); }
.spont-q-chooser__cancel { background: none; border: none; padding: 4px 0 0; font: inherit; font-size: 13px; color: var(--color-text-muted); cursor: pointer; }

/* Questions du recruteur dans le formulaire du candidat */
.spont-cand-q__opt { font-weight: 400; color: #888; }

/* Menu déroulant à cases (questions à choix du recruteur), même aspect que le
   champ "Civilité" ; la liste s'ouvre sous le champ. */
.spont-dd__trigger { display: flex !important; align-items: center; justify-content: space-between; gap: 10px; text-align: left; cursor: pointer; }
.spont-dd__value { color: #999; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.spont-dd--filled .spont-dd__value { color: #333; }
.spont-dd__trigger[aria-expanded="true"] { border-color: var(--color-primary) !important; border-bottom-left-radius: 0 !important; border-bottom-right-radius: 0 !important; }
.spont-dd__trigger[aria-expanded="true"] svg { transform: rotate(180deg); }
.spont-dd__panel { border: 1.5px solid var(--color-primary); border-top: none; border-radius: 0 0 8px 8px; background: #fff; padding: 4px 0; max-height: 240px; overflow-y: auto; }
.spont-dd__option { display: flex; align-items: center; gap: 10px; padding: 9px 12px; font-size: 14px; color: #333; cursor: pointer; }
.spont-dd__option:hover { background: #f7f7f7; }
.spont-dd__option input { accent-color: var(--color-primary); margin: 0; }
/* Même menu dans la fenêtre de candidature à une offre (single-lexjob_offre.php). */
.form-group input.apply-form__readonly { background: #f6f6f7; color: var(--color-text-light); cursor: default; }
.apply-q__label { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 0; font-size: 13px; font-weight: 600; color: var(--color-text); }
.apply-q__label .form-help { font-weight: 400; }
.apply-form .spont-dd__trigger { width: 100%; box-sizing: border-box; border: 1px solid var(--color-border); border-radius: var(--radius); padding: 10px 12px; font: inherit; font-size: 14px; background: #fff; }
.form-group .spont-dd__option { justify-content: flex-start; font-weight: 400; }

/* ── Récap d'une candidature spontanée ──────────────────────────────────── */
/* Même vocabulaire visuel que LexJob : en-tête gris clair, cartes à en-tête
   (icône bordeaux + titre en petites capitales, comme "Mon compte"), pastille
   violette "Spontanée" du récapitulatif des candidatures. */
.spont-recap { z-index: 10050; } /* au-dessus de la fenêtre de conversation */
.spont-recap__box { max-width: 620px; padding: 0; overflow: hidden; }
#spont-recap-content { overflow-y: auto; max-height: 88vh; background: #f3f4f6; padding-bottom: 18px; }
.spont-recap__head { display: flex; gap: 16px; align-items: flex-start; padding: 24px 56px 20px 24px; background: #fff; border-bottom: 1px solid #e5e7eb; }
.spont-recap__avatar { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; flex-shrink: 0; border: 2px solid #fff; box-shadow: 0 0 0 1px #e5e7eb; }
.spont-recap__avatar--initial { display: flex; align-items: center; justify-content: center; background: #7c3aed; color: #fff; font-size: 26px; font-weight: 700; }
.spont-recap__who { min-width: 0; }
.spont-recap__name { margin: 2px 0 6px; font-size: 21px; line-height: 1.25; color: #111827; }
.spont-recap__name a { color: inherit; text-decoration: none; }
.spont-recap__name a:hover { color: var(--color-primary); text-decoration: underline; }
.spont-recap__tag { display: inline-block; margin-bottom: 8px; padding: 3px 9px; border-radius: 10px; background: #ede9fe; color: #7c3aed; font-size: 11.5px; font-weight: 700; }
.spont-recap__tag--offre { background: #fdf2f4; color: #930022; }
.spont-recap__avatar--offre { background: #930022; }
.spont-recap__line { display: flex; align-items: center; gap: 7px; margin: 3px 0 0; font-size: 14px; color: #4b5563; }
.spont-recap__line a { color: var(--color-primary); font-weight: 600; text-decoration: none; }
.spont-recap__line a:hover { text-decoration: underline; }
.spont-recap__line .spont-recap__icon { color: #9ca3af; display: inline-flex; }
.spont-recap__card { margin: 14px 18px 0; background: #fff; border: 1px solid #e5e7eb; border-radius: 12px; overflow: hidden; }
.spont-recap__card-head { display: flex; align-items: center; gap: 9px; margin: 0; padding: 11px 18px; background: #f9fafb; border-bottom: 1px solid #f3f4f6; font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: #374151; }
.spont-recap__card-head .spont-recap__icon { display: inline-flex; color: var(--color-primary); opacity: .8; }
.spont-recap__card-body { padding: 14px 18px 16px; }
.spont-recap__text { margin: 0; font-size: 14.5px; line-height: 1.65; color: #1f2937; }
.spont-recap__answer + .spont-recap__answer { margin-top: 12px; padding-top: 12px; border-top: 1px solid #f3f4f6; }
.spont-recap__q { margin: 0 0 3px; font-size: 13px; font-weight: 600; color: #6b7280; }
.spont-recap__a { margin: 0; font-size: 14.5px; font-weight: 500; color: #111827; }
.spont-recap__docs { display: flex; gap: 10px; flex-wrap: wrap; }
.spont-recap__doc { display: flex; align-items: center; gap: 10px; padding: 10px 14px; border: 1px solid #e5e7eb; border-radius: 10px; text-decoration: none; transition: border-color .15s, background .15s; }
.spont-recap__doc .spont-recap__icon { display: inline-flex; color: var(--color-primary); }
.spont-recap__doc strong { display: block; font-size: 14px; color: #111827; }
.spont-recap__doc small { display: block; font-size: 12px; color: #6b7280; }
.spont-recap__doc:hover { border-color: var(--color-primary); background: rgba(147,0,34,.04); }
@media (max-width: 560px) {
  .spont-recap__head { padding: 20px 48px 18px 16px; gap: 12px; }
  .spont-recap__avatar { width: 52px; height: 52px; }
  .spont-recap__card { margin: 12px 12px 0; }
}

/* Lien sous le nom du candidat (récapitulatif des candidatures) */
.recap-inbox__recap-link { display: inline-flex; align-items: center; gap: 5px; margin-top: 6px; padding: 0; border: none; background: none; font: inherit; font-size: 13px; font-weight: 600; color: #7c3aed; cursor: pointer; }
.recap-inbox__recap-link:hover { text-decoration: underline; }
/* Aperçu du formulaire de candidature aux offres (inc/form-editors.php). */
.offer-preview-page { max-width: 760px; padding-top: 28px; padding-bottom: 60px; }
.offer-preview-page__card { margin-top: 18px; padding: 24px; border: 1px solid var(--color-border); border-radius: 12px; background: #fff; }
.offer-preview-page__card h1 { font-size: 22px; margin: 8px 0 4px; }
.offer-preview-page__card p { color: var(--color-text-light); margin: 0 0 10px; }
.offer-preview-page__tag { display: inline-block; padding: 3px 9px; border-radius: 10px; background: #fdf2f4; color: #930022; font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
.offer-preview-page__text { font-size: 14px; }
/* Bouton "Personnaliser le formulaire…" en tête des onglets du récapitulatif. */
.recap-form-tools { display: flex; justify-content: flex-end; margin: 0 0 14px; }
.recap-form-btn { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border: 1px solid #e9b8c4; border-radius: 8px; background: #fff; font: inherit; font-size: 13px; font-weight: 600; color: #930022; cursor: pointer; }
.recap-form-btn:hover { background: #fdf2f4; }
.recap-form-btn--spont { border-color: #c9b8f3; color: #7c3aed; }
.recap-form-btn--spont:hover { background: #f6f3fe; }

/* Conversation : bandeau du haut et ligne compacte du premier message */
.chat-recap-bar { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 18px; background: #f6f3fe; border-bottom: 1px solid #e7e0fb; font-size: 13px; font-weight: 600; color: #5b2bb5; flex-shrink: 0; }
.chat-recap-bar__btn { border: 1px solid #c9b8f3; background: #fff; color: #5b2bb5; font: inherit; font-size: 12.5px; font-weight: 600; padding: 5px 10px; border-radius: 6px; cursor: pointer; white-space: nowrap; }
.chat-recap-bar__btn:hover { background: #7c3aed; border-color: #7c3aed; color: #fff; }
.chat-recap-item__card { display: inline-block; padding: 6px 12px; border-radius: 999px; background: #f6f3fe; color: #5b2bb5; font-size: 12.5px; font-weight: 600; }
/* Candidature à une offre : même récap, aux couleurs bordeaux des offres. */
.recap-inbox__recap-link--offre { color: #930022; }
.chat-recap-bar--offre { background: #fdf2f4; border-bottom-color: #f3d6dd; color: #930022; }
.chat-recap-bar--offre .chat-recap-bar__btn { border-color: #e9b8c4; color: #930022; }
.chat-recap-bar--offre .chat-recap-bar__btn:hover { background: #930022; border-color: #930022; color: #fff; }
.chat-recap-item__card--offre { background: #fdf2f4; color: #930022; }

/* ── Page d'une offre : partage (flèche) à côté de l'étoile des favoris ──
   Menu déroulant des réseaux, mêmes couleurs que les boutons de partage de
   la Tribune du Droit (assets/css/blog.css). Comportement : initOfferShare()
   dans assets/js/main.js. */
.single-header__actions { position: absolute; top: 0; right: 0; display: flex; gap: 8px; z-index: 5; }
.single-header__actions .listing-card__fav-btn { position: static; }
.offer-share { position: static; } /* menu aligné sur le bord droit du groupe flèche + étoile */
.offer-share__toggle { color: var(--color-primary); }
.offer-share__toggle[aria-expanded="true"] { background: #fbeef1; }
.offer-share__menu {
  position: absolute; top: calc(100% + 8px); right: 0; z-index: 20;
  background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg); padding: 12px 14px; min-width: 268px;
}
.offer-share__title { margin: 0 0 8px; font-size: 11.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--color-text-muted); }
.offer-share__list { display: flex; gap: 4px; }
.offer-share__btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 38px; height: 38px; border-radius: 50%; border: none; background: transparent;
  cursor: pointer; transition: background .15s ease, transform .15s ease;
}
.offer-share__btn:hover { transform: translateY(-1px); }
.offer-share__btn--email, .offer-share__btn--copy { color: var(--color-primary); }
.offer-share__btn--whatsapp { color: #25d366; }
.offer-share__btn--linkedin { color: #0a66c2; }
.offer-share__btn--facebook { color: #1877f2; }
.offer-share__btn--x        { color: #000; }
.offer-share__btn--email:hover, .offer-share__btn--copy:hover { background: #fbeef1; }
.offer-share__btn--whatsapp:hover { background: #e3f8ea; }
.offer-share__btn--linkedin:hover { background: #e3f1fc; }
.offer-share__btn--facebook:hover { background: #e6eefd; }
.offer-share__btn--x:hover        { background: #eee; }
.offer-share__feedback { margin: 8px 0 0; font-size: 12.5px; font-weight: 600; color: #1e7b4b; }
/* Le titre de l'offre ne passe jamais sous les deux boutons */
.single-header .single-header__title { padding-right: 84px; }

/* ── Rémunération d'un emploi ───────────────────────────────────────
   Pastille de l'annonce (single-lexjob_offre.php) et curseur à deux
   poignées du formulaire (templates/page-soumettre-offre.php). */
.lc-badge--salary { color: #1f2937; font-weight: 600; }
.lc-badge--salary svg { color: #1f2937; }

.salary-range__value { margin: 6px 0 14px; font-size: 20px; font-weight: 700; color: var(--color-primary); font-variant-numeric: tabular-nums; }
.salary-range__track { position: relative; height: 28px; }
.salary-range__track::before {
  content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 6px; margin-top: -3px;
  border-radius: 3px; background: #e5e7eb;
}
.salary-range__fill { position: absolute; top: 50%; height: 6px; margin-top: -3px; border-radius: 3px; background: var(--color-primary); }
.form-card .salary-range__input {
  position: absolute; left: 0; top: 0; width: 100%; height: 28px; margin: 0; padding: 0;
  border: none; border-radius: 0; box-shadow: none; background: none;
  pointer-events: none; -webkit-appearance: none; appearance: none; z-index: 2;
}
.form-card .salary-range__input:focus { outline: none; border: none; box-shadow: none; }
.salary-range__input::-webkit-slider-runnable-track { background: none; border: none; }
.salary-range__input::-moz-range-track { background: none; border: none; }
.salary-range__input::-webkit-slider-thumb {
  -webkit-appearance: none; appearance: none; pointer-events: auto; cursor: grab;
  width: 24px; height: 24px; border-radius: 50%; background: #fff;
  border: 3px solid var(--color-primary); box-shadow: 0 2px 6px rgba(0,0,0,.18);
}
.salary-range__input::-moz-range-thumb {
  pointer-events: auto; cursor: grab;
  width: 18px; height: 18px; border-radius: 50%; background: #fff;
  border: 3px solid var(--color-primary); box-shadow: 0 2px 6px rgba(0,0,0,.18);
}
.salary-range__input:focus-visible::-webkit-slider-thumb { box-shadow: 0 0 0 5px rgba(147,0,34,.18); }
.salary-range__input:focus-visible::-moz-range-thumb { box-shadow: 0 0 0 5px rgba(147,0,34,.18); }
.salary-range__bounds { display: flex; justify-content: space-between; margin-top: 6px; font-size: 12px; color: var(--color-text-muted); }
.salary-range--error .salary-range__value { color: var(--color-error); }
.salary-range--error .salary-range__track::before { background: #fecaca; }

/* ── Équipes de recruteurs (inc/team.php) : pages « Créer une équipe »,
   « Gérer l'équipe », invitation, et fiche d'un membre dans « Mon compte » ── */
.team-page .form-card { margin-bottom: 18px; }
.team-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
.team-member-row { display: flex; gap: 10px; align-items: center; margin-top: 10px; }
.team-member-row__num { flex: none; width: 26px; height: 26px; border-radius: 50%; background: #fbeef1; color: var(--color-primary); font-weight: 700; font-size: 13px; display: flex; align-items: center; justify-content: center; }
.team-member-row .team-row { flex: 1; }
.team-warning { border-color: #fecaca !important; background: #fef2f2; }
.team-warning p { margin: 0 0 10px; color: #7f1d1d; font-size: 14px; line-height: 1.55; }
.team-table-wrap { overflow-x: auto; margin: 4px 0 10px; }
.team-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.team-table th { text-align: left; font-size: 12px; font-weight: 700; color: var(--color-text-light); padding: 8px 10px; border-bottom: 2px solid var(--color-border); vertical-align: bottom; }
.team-table td { padding: 10px; border-bottom: 1px solid var(--color-border); vertical-align: middle; }
.team-table td input[type="text"] { min-width: 140px; }
.team-table__perm { text-align: center !important; width: 110px; }
.team-table__perm input { width: 18px !important; height: 18px; }
.team-table__email { font-size: 12.5px; color: var(--color-text-muted); }
.team-badge { display: inline-block; font-size: 11px; font-weight: 700; color: var(--color-primary); background: #fbeef1; border-radius: 10px; padding: 2px 8px; margin-left: 4px; }
.team-invite { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--color-border); font-size: 14px; }
.team-invite:last-child { border-bottom: none; }
.team-perms { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; font-size: 14px; }
.team-perms .is-on { color: #1e7e34; }
.team-perms .is-off { color: #9ca3af; }

/* Mention d'information sous « Créer mon compte » (lexjob_signup_legal_notice_html, inc/user-roles.php) */
.auth-legal { margin: 10px 0 0; text-align: center; line-height: 1.45; font-size: 12px; }
.auth-legal a { color: inherit; text-decoration: underline; }
/* Inscription : champs bloqués tant qu'aucun profil n'est choisi (lexjob_signup_forms_script) */
.auth-type-hint { margin: 8px 0 0; color: var(--color-primary); font-weight: 500; }
form.is-type-pending input:disabled,
form.is-type-pending select:disabled { background: #f3f3f4; cursor: not-allowed; opacity: .65; }


/* ── Fenêtre de connexion / inscription (header.php, #lexjob-global-auth-modal) ──
   480 px de large (connexion). Onglet « Inscription » sur ordinateur : 760 px,
   champs deux par deux (Université ou Nom de la structure | E-mail ; Mot de
   passe | Confirmation ; anti-robot | bouton), pour que tout le formulaire
   tienne sans défilement interne sur un écran d'ordinateur portable. Réservé
   aux navigateurs qui comprennent :has() ; les autres gardent l'affichage
   d'origine, sur une colonne. */
#lexjob-global-auth-modal .modal__box { max-width: 480px; }
@supports selector(:has(*)) {
  @media (min-width: 820px) {
    #lexjob-global-auth-modal .modal__box:has(#gam-panel-register:not([hidden])) { max-width: 760px; padding-top: 22px; padding-bottom: 20px; }
    #gam-panel-register form { display: grid; grid-template-columns: 1fr 1fr; column-gap: 12px; align-items: start; }
    #gam-panel-register form > * { grid-column: 1 / -1; min-width: 0; }
    #gam-panel-register form > #gam-nom-structure,
    #gam-panel-register form > #gam-universite,
    #gam-panel-register form > #gam-universite-custom { grid-column: 1; }
    #gam-panel-register form > input[name="email"] { grid-column: 2; }
    /* Diplômé (ou aucun choix encore) : pas de champ à côté, l'e-mail prend toute la largeur */
    #gam-panel-register form:not(:has(.js-gam-type[value="etudiant"]:checked)):not(:has(.js-gam-type[value="recruteur"]:checked)) > input[name="email"] { grid-column: 1 / -1; }
    #gam-panel-register form > .input-password { grid-column: auto; }
    /* Ordre d'affichage : les règles du mot de passe sous les DEUX champs */
    #gam-panel-register form > #gam-pwd-rules { order: 2; }
    #gam-panel-register form > .cf-turnstile,
    #gam-panel-register form > button[type="submit"],
    #gam-panel-register form > .auth-legal,
    #gam-panel-register form > noscript { order: 3; }
    #gam-panel-register form > .cf-turnstile { grid-column: 1; margin-bottom: 0 !important; }
    #gam-panel-register form > button[type="submit"] { grid-column: 2; align-self: center; }
  }
}

/* Fenêtre de retrait d'une annonce : candidatures sans réponse (inc/offre-cloture.php) */
.cloture-block { text-align: left; background: #f9f1f3; border: 1px solid #f0d6dc; border-radius: 10px; padding: 14px 16px; margin: 0 0 20px; font-size: 13px; line-height: 1.5; color: var(--color-text); }
.cloture-block[hidden] { display: none; }
.cloture-block__lead { margin: 0 0 12px; }
.cloture-block__check { display: flex; gap: 8px; align-items: flex-start; font-weight: 600; cursor: pointer; }
.cloture-block__check input { margin-top: 3px; flex-shrink: 0; accent-color: var(--color-primary); }
.cloture-block__toggle { background: none; border: 0; padding: 0; margin: 6px 0 0 24px; color: var(--color-primary); text-decoration: underline; font-size: 13px; cursor: pointer; }
.cloture-block__toggle[hidden] { display: none; }
.cloture-block__message { display: block; width: 100%; box-sizing: border-box; margin-top: 10px; padding: 10px 12px; border: 1px solid #ddd; border-radius: 8px; font: inherit; resize: vertical; background: #fff; }
.cloture-block__message[hidden] { display: none; }
.cloture-block__off { margin: 8px 0 0 24px; color: var(--color-text-light); font-style: italic; }
.cloture-block__off[hidden] { display: none; }

/* Conversation côté candidat : repère « Candidature envoyée le … » (footer.php) */
.chat-modal__sent-note { align-self: center; margin: 4px auto 14px; padding: 5px 12px; border-radius: 999px; background: #f3f4f6; color: #6b7280; font-size: 12px; font-weight: 500; text-align: center; width: fit-content; }

/* Récapitulatif des candidatures : bouton « Conversation » (comme côté candidat) */
.recap-inbox__chat-btn { display: inline-flex; align-items: center; gap: 5px; margin-top: 2px; white-space: nowrap; }

/* Ouverture en douceur : conversation (glisse depuis le bas) et récap de la
   candidature (fondu). Animations et non transitions : elles jouent aussi à la
   sortie de [hidden] (display: none). */
@keyframes lexjob-overlay-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes lexjob-chat-in { from { transform: translateY(24px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
.chat-modal:not([hidden]) .chat-modal__overlay { animation: lexjob-overlay-in .2s ease both; }
.chat-modal:not([hidden]) .chat-modal__window { animation: lexjob-chat-in .28s ease both; }
/* Ouverte derrière le récap : elle arrive juste après lui. */
.chat-modal--behind:not([hidden]) .chat-modal__window { animation-delay: .18s; }
.spont-recap:not([hidden]) .modal__overlay { animation: lexjob-overlay-in .2s ease both; }
.spont-recap:not([hidden]) .spont-recap__box { animation: lex-modal-in .25s ease both; }
/* Récap au-dessus de la conversation : voile plus léger, qui s'ajoute à celui
   de la conversation (le site et la conversation restent assombris derrière le
   récap, sans fond trop noir). */
.spont-recap--over-chat .modal__overlay { background: rgba(0,0,0,.3); }
