/* ==========================================================================
   assets/css/components.css
   Navbar + composants réutilisés sur plusieurs pages publiques.
   ========================================================================== */

/* ---- Navbar ---------------------------------------------------------------- */
.site-header {
  border-bottom: 1px solid var(--color-border);
  position: sticky; top: 0; z-index: 50;
  background: rgba(255,255,255,0.9);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}
.navbar {
  max-width: var(--container); margin: 0 auto;
  display: flex; align-items: center; justify-content: space-between;
  padding: 0.85rem 1.5rem;
}
.navbar__brand {
  display: inline-flex; align-items: center; gap: 0.7rem;
  color: var(--navy); letter-spacing: -0.005em; flex-shrink: 0;
}
.navbar__brand:hover { color: var(--navy); }
.navbar__brand-mark {
  width: 42px; height: 42px;
  display: inline-flex; align-items: center; justify-content: center;
  overflow: hidden; flex-shrink: 0;
  transition: transform var(--transition);
}
.navbar__brand:hover .navbar__brand-mark { transform: rotate(8deg); }
.navbar__brand-mark img { width: 100%; height: 100%; object-fit: cover; }
.navbar__brand-copy { display: grid; gap: 0.05rem; line-height: 1.1; }
.navbar__brand-copy strong { font-family: var(--font-display); font-size: 1.1rem; }
.navbar__brand-copy small { font-family: var(--font-body); font-size: 0.63rem; font-weight: 500; white-space: nowrap; }

.navbar__menu { margin: 0 auto; }
.navbar__menu-header { display: none; }
.navbar__menu-list { list-style: none; display: flex; align-items: center; gap: 0.1rem; margin: 0; padding: 0; }
.navbar__link {
  position: relative;
  display: inline-flex; align-items: center; gap: 0;
  padding: 0.5rem 0.85rem;
  color: var(--color-text); font-weight: 500; font-size: 0.93rem;
  border-radius: var(--radius-sm);
}
.navbar__link:hover { color: var(--navy); background: var(--steel-100); }
.navbar__link--active { color: var(--gold-dark); font-weight: 700; }
.navbar__link--active::after {
  content: ""; position: absolute; left: 0.85rem; right: 0.85rem; bottom: 0.25rem;
  height: 2px; background: var(--gold);
}
/* Icônes de lien : masquées sur la navigation horizontale desktop, elles
   n'apparaissent que dans le panneau latéral mobile/tablette ci-dessous. */
.navbar__link-icon { display: none; }
.navbar__controls { display: flex; align-items: center; gap: 0.45rem; position: relative; z-index: 102; }

.navbar__toggle {
  display: none; position: relative;
  width: 40px; height: 40px;
  align-items: center; justify-content: center;
  background: none; border: none; border-radius: 50%; cursor: pointer;
  transition: background var(--transition);
}
.navbar__toggle:hover { background: var(--steel-100); }
.navbar__toggle-icon-img { width: 24px; height: 24px; object-fit: contain; pointer-events: none; }
/* Le bouton burger porte 2 jeux d'icônes (ouvrir / fermer) ; seul le jeu
   correspondant à l'état courant (aria-expanded) est affiché. Chaque jeu
   gère lui-même sa variante claire/sombre via .theme-icon-light/dark. */
.navbar__toggle-icon-set { display: inline-flex; }
.navbar__toggle-icon-set--close { display: none; }
.navbar__toggle[aria-expanded="true"] .navbar__toggle-icon-set--open { display: none; }
.navbar__toggle[aria-expanded="true"] .navbar__toggle-icon-set--close { display: inline-flex; }
.navbar__backdrop { display: none; }

/* ==========================================================================
   Panneau latéral (drawer) — navigation mobile & tablette
   Actif dès que la largeur d'écran est <= 900px, quelle que soit
   l'orientation (portrait/paysage) ou la hauteur de l'écran.
   ========================================================================== */
@media (max-width: 900px) {
  body.nav-drawer-open { overflow: hidden; }
  /* <body> est figé en position:fixed avec un décalage négatif pendant que
     le panneau est ouvert (voir global.js, lockScroll). Ce décalage casse
     le contexte de "position: sticky" du header, qui redevient un élément
     de flux normal et se retrouve poussé hors écran, vers le haut, au lieu
     de rester visible en haut de l'écran. On le force donc en position:fixed
     tant que le panneau est ouvert. */
  body.nav-drawer-open .site-header { position: fixed; top: 0; left: 0; right: 0; width: 100%; }
  .navbar { padding: 0.7rem 1rem; }

  .navbar__menu {
    position: fixed; z-index: 101; top: 0; left: 0;
    width: min(82vw, 320px);
    max-width: 320px;
    height: 100dvh; max-height: 100dvh;
    display: flex; flex-direction: column; align-items: stretch; gap: 0;
    margin: 0; padding: 0;
    background: var(--color-bg-elevated);
    border-right: var(--border);
    box-shadow: 24px 0 60px rgba(10, 15, 35, 0.28);
    transform: translateX(-105%); visibility: hidden;
    transition: transform var(--transition), visibility var(--transition);
    overscroll-behavior: contain;
  }
  .navbar__menu--open { transform: translateX(0); visibility: visible; }

  /* En-tête du drawer : logo + slogan (bouton fermer retiré, la fermeture
     se fait désormais via le bouton burger de la navbar, qui échange son
     icône ouvrir/fermer — voir .navbar__toggle-icon-set plus haut). */
  .navbar__menu-header {
    display: flex; align-items: center; justify-content: flex-start; gap: 0.6rem;
    flex: 0 0 auto;
    padding: 1.1rem 1.1rem 0.9rem;
    border-bottom: 1px solid var(--color-border);
  }
  .navbar__menu-brand { display: inline-flex; align-items: center; gap: 0.65rem; width: 100%; min-width: 0; color: var(--navy); }
  .navbar__menu-brand-mark {
    flex-shrink: 0; width: 40px; height: 40px; border-radius: 10px;
    display: flex; align-items: center; justify-content: center; overflow: hidden;
    background: var(--steel-100);
  }
  .navbar__menu-brand-mark img { width: 100%; height: 100%; object-fit: cover; }
  .navbar__menu-brand-copy { display: grid; gap: 0.15rem; line-height: 1.15; min-width: 0; flex: 1 1 auto; }
  .navbar__menu-brand-copy strong { font-family: var(--font-display); font-size: 1.05rem; }
  .navbar__menu-brand-copy small {
    font-family: var(--font-body); font-size: 0.68rem; font-weight: 500; color: var(--color-text-muted);
    display: block; white-space: normal; overflow-wrap: break-word; line-height: 1.35;
  }

  /* Liste des liens : verticale (override du flex row desktop), défile si
     le contenu dépasse la hauteur (paysage / petits écrans) */
  .navbar__menu-list {
    display: block;
    list-style: none; margin: 0; padding: 0.5rem 0.7rem 1rem;
    flex: 1 1 auto; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch;
  }
  .navbar__menu li { border-bottom: none; }
  .navbar__link {
    display: flex; align-items: center; gap: 0.85rem;
    width: 100%; padding: 0.8rem 0.75rem; margin: 0.1rem 0;
    border-radius: var(--radius-sm); font-size: 0.97rem;
  }
  .navbar__link--active { background: rgba(216, 163, 75, 0.12); }
  [data-theme="dark"] .navbar__link--active { background: rgba(247, 185, 52, 0.14); }
  .navbar__link--active::after { content: none; }
  .navbar__link-icon {
    display: inline-flex; flex-shrink: 0; align-items: center; justify-content: center;
    width: 22px; height: 22px;
  }
  .navbar__link-icon img { width: 22px; height: 22px; object-fit: contain; }
  .navbar__toggle { display: flex; }
  .navbar__backdrop {
    display: block; position: fixed; z-index: 100; inset: 0; width: 100%; height: 100dvh;
    border: 0; padding: 0; opacity: 0; visibility: hidden; background: rgba(6, 10, 22, 0.55);
    -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
    transition: opacity var(--transition), visibility var(--transition); cursor: default;
  }
  .navbar__backdrop--visible { opacity: 1; visibility: visible; }
}

/* Écrans très bas (mobile en mode paysage) : resserre l'entête et les liens
   pour que la liste complète reste accessible sans déborder de l'écran. */
@media (max-width: 900px) and (max-height: 420px) {
  .navbar__menu-header { padding: 0.7rem 1rem 0.6rem; }
  .navbar__menu-brand-mark { width: 32px; height: 32px; }
  .navbar__menu-list { padding: 0.25rem 0.6rem 0.75rem; }
  .navbar__link { padding: 0.5rem 0.7rem; font-size: 0.9rem; gap: 0.7rem; }
  .navbar__link-icon, .navbar__link-icon img { width: 19px; height: 19px; }
}

@media (max-width: 420px) {
  .navbar__brand-mark { width: 36px; height: 36px; }
  .navbar__brand-copy small { font-size: 0.56rem; }
  .navbar__theme-toggle { margin-left: 0; }
}

/* ===================== Filtres (page Projets) ===================== */
.filters { display: flex; flex-wrap: wrap; gap: 0.6rem; margin: 1.75rem 0 2.75rem; }
.filter-pill {
  padding: 0.45rem 1rem; border-radius: 999px; border: 1.5px solid var(--color-border);
  color: var(--color-text); font-size: 0.87rem; font-weight: 600;
  transition: border-color var(--transition), color var(--transition), background var(--transition);
}
.filter-pill:hover { border-color: var(--gold-dark); color: var(--gold-dark); }
.filter-pill--active,
.filter-pill--active:hover { background: var(--navy); color: #fff; border-color: var(--navy); }

/* ===================== Tags (technologies / compétences) ===================== */
.tag-list { list-style: none; display: flex; flex-wrap: wrap; gap: 0.55rem; padding: 0; margin: 0.9rem 0; }
.tag {
  --tag-color: var(--navy);
  background: var(--color-bg-elevated);
  color: var(--tag-color);
  border: 1.3px solid var(--tag-color);
  padding: 0.32rem 0.8rem; border-radius: var(--radius-sm);
  font-size: 0.82rem; font-weight: 600;
  display: inline-flex; align-items: center; gap: 0.35em;
  transition: background var(--transition), color var(--transition);
}
.tag:hover { background: var(--tag-color); color: #fff; }
.tag--outline { --tag-color: var(--steel); background: transparent; }
.tag__level { font-weight: 400; opacity: 0.8; }

/* ===================== Fonctionnalités (liste à puces) ===================== */
.feature-list { list-style: none; padding: 0; margin: 0.5rem 0 0; display: grid; gap: 0.6rem; }
.feature-list li {
  position: relative; padding-left: 1.6rem;
  color: var(--color-text);
}
.feature-list li::before {
  content: ""; position: absolute; left: 0; top: 0.5em;
  width: 8px; height: 8px; background: var(--gold); border-radius: 2px;
  transform: rotate(45deg);
}

/* ===================== Barres de maîtrise ===================== */
.skill-bar {
  background: var(--steel-100);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm); height: 10px; overflow: hidden;
  margin: 0.9rem 0 0.5rem;
}
.skill-bar__fill {
  background: linear-gradient(90deg, var(--navy), var(--gold));
  height: 100%; border-radius: var(--radius-sm);
  width: 0;
  transition: width 1s cubic-bezier(.16,1,.3,1);
}
.skill-bar__fill.is-visible { width: var(--fill, 0%); }
.skill-meta {
  font-family: var(--font-body); font-size: 0.8rem; color: var(--color-text-muted); margin: 0;
}
.skills-category { margin-top: 3.5rem; }
.skills-category:first-of-type { margin-top: 2rem; }
.skills-category h2 { border-bottom: var(--border); padding-bottom: 0.75rem; }
.skills-category__description { color: var(--color-text-muted); margin-top: -0.5rem; }

/* ===================== Timeline (Parcours) ===================== */
.timeline { list-style: none; margin: 2.5rem 0; padding: 0; border-left: 2px dashed var(--color-border); }
.timeline__item { position: relative; padding: 0 0 2.5rem 2.25rem; }
.timeline__item:last-child { padding-bottom: 0; }
.timeline__item::before {
  content: ""; position: absolute; left: -7px; top: 3px;
  width: 12px; height: 12px; background: var(--paper);
  border: 2px solid var(--gold); border-radius: 3px; transform: rotate(45deg);
}
.timeline__item--formation::before { border-color: var(--navy); }
.timeline__badge {
  display: inline-block; font-family: var(--font-body); font-size: 0.72rem;
  text-transform: uppercase; letter-spacing: 0.06em;
  color: var(--gold-dark); font-weight: 700; margin-bottom: 0.4rem;
}
.timeline__item--formation .timeline__badge { color: var(--navy); }
.timeline__organisme { color: var(--color-text-muted); margin: 0.2rem 0; font-weight: 500; }
.timeline__periode { font-family: var(--font-body); font-size: 0.82rem; color: var(--color-text-muted); }

.timeline-preview { list-style: none; padding: 0; margin: 1.5rem 0; }
.timeline-preview li {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: 0.85rem 0; border-bottom: 1px solid var(--color-border);
}
.badge {
  background: var(--gold); color: var(--navy-deep); font-family: var(--font-body);
  font-size: 0.68rem; font-weight: 700; text-transform: uppercase;
  padding: 0.2rem 0.6rem; border-radius: 999px; margin-left: 0.5rem;
}

/* ===================== Fiche projet détaillée ===================== */
.project-detail__header { margin-bottom: 2.5rem; padding-bottom: 2rem; border-bottom: var(--border); }
.project-detail__resume { font-size: 1.2rem; color: var(--color-text-muted); }
.project-detail__meta { font-family: var(--font-body); font-size: 0.82rem; color: var(--color-text-muted); }
.project-detail__block { margin-bottom: 2.5rem; }
.project-detail__block h2 {
  font-family: var(--font-body); font-size: 0.85rem; text-transform: uppercase;
  letter-spacing: 0.08em; color: var(--gold-dark); font-weight: 700;
}
.project-detail__back { margin-top: 3.5rem; padding-top: 2rem; border-top: var(--border); }

/* ===================== Page À propos ===================== */
.about-hero { display: grid; grid-template-columns: 1fr auto; gap: 3rem; align-items: center; }
.about-hero__lead { font-size: 1.2rem; color: var(--color-text-muted); }
.about-objective {
  font-family: var(--font-display); font-style: italic; font-size: clamp(1.5rem, 2.6vw, 1.9rem);
  font-weight: 700; color: var(--navy); position: relative; padding-left: 1.25rem;
}
.about-objective::before { content: ""; position: absolute; left: 0; top: 0.1em; bottom: 0.1em; width: 3px; background: var(--gold); }
.about-cta { text-align: center; background: var(--navy); color: var(--lavender-2); border-radius: var(--radius-lg); padding: 3rem 1.5rem; }
.about-cta h2 { color: #fff; }
.about-cta .btn--secondary { border-color: rgba(215,217,234,0.5); color: var(--lavender-2); }
.about-cta .btn--secondary:hover { background: var(--lavender-2); color: var(--navy); border-color: var(--lavender-2); }
.about-portrait { justify-self: end; width: 180px; }
@media (max-width: 700px) {
  .about-hero { grid-template-columns: 1fr; text-align: left; }
  .about-portrait { justify-self: start; }
}

/* ===================== CV ===================== */
.cv-preview { border: var(--border); border-radius: var(--radius); overflow: hidden; margin-top: 1.5rem; }
.cv-preview iframe { width: 100%; height: 80vh; border: none; }

/* ===================== Formulaire de contact ===================== */
.contact-form {
  display: flex; flex-direction: column; gap: 1.4rem; max-width: 680px; margin-top: 2rem;
  background: var(--color-bg-elevated); border: var(--border); border-radius: var(--radius-lg);
  padding: 2rem;
}
.contact-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
.contact-form label {
  display: flex; flex-direction: column; gap: 0.45rem;
  font-weight: 600; font-size: 0.9rem; color: var(--navy);
}
.contact-form input,
.contact-form select,
.contact-form textarea {
  padding: 0.75rem 0.9rem; border: 1.5px solid var(--color-border); border-radius: var(--radius-sm);
  font: inherit; font-size: 0.95rem; color: var(--color-text);
  background: var(--paper-alt); transition: border-color var(--transition), background var(--transition);
}
.contact-form input:focus,
.contact-form select:focus,
.contact-form textarea:focus { border-color: var(--gold-dark); background: #fff; outline: none; }
.contact-form textarea { resize: vertical; }
.honeypot { position: absolute; left: -9999px; }
.contact-alt { margin-top: 2.5rem; color: var(--color-text-muted); }
.contact-alt a { color: var(--navy); font-weight: 600; }

/* Coordonnées directes — reprend la liste de la carte de visite (verso) */
.contact-details { list-style: none; padding: 0; margin: 1.5rem 0 0; display: grid; gap: 0.9rem; max-width: 420px; }
.contact-details li { display: flex; align-items: center; gap: 0.85rem; }
.contact-details__icon {
  width: 34px; height: 34px; flex-shrink: 0; border-radius: 50%;
  background: var(--navy-deep); color: var(--gold);
  display: flex; align-items: center; justify-content: center;
}
.contact-details__icon svg { width: 16px; height: 16px; }
.contact-details a { font-weight: 600; color: var(--navy); }

.navbar__theme-toggle {
  width: 38px; height: 38px; margin-left: 0.75rem; border: var(--border); border-radius: 50%;
  color: var(--navy); background: var(--color-bg-elevated); cursor: pointer; font-size: 1rem;
}
.navbar__theme-toggle:hover { color: var(--gold-dark); border-color: var(--gold); }

[data-theme="dark"] .site-header { background: rgba(5,11,18,0.9); }
[data-theme="dark"] .navbar__brand { color: var(--lavender-2); }
[data-theme="dark"] .navbar__brand:hover, [data-theme="dark"] .navbar__link:hover { color: var(--gold); }
[data-theme="dark"] .navbar__theme-toggle { color: var(--gold); background: var(--navy-panel); }
[data-theme="dark"] .navbar__menu-header { border-bottom-color: var(--steel-200); }
[data-theme="dark"] .navbar__menu-brand { color: var(--lavender-2); }
[data-theme="dark"] .navbar__menu-brand-mark { background: var(--steel-100); }

/* ---- Icônes à double état thème (clair/sombre) --------------------------
   Chaque bouton/lien du menu embarque deux images (theme-icon-light /
   theme-icon-dark) : celle qui correspond au thème actif est affichée,
   l'autre est masquée. Aucun JS requis — tout est piloté par
   [data-theme] sur <html>. */
.theme-icon-light { display: inline-block; }
.theme-icon-dark { display: none; }
[data-theme="dark"] .theme-icon-light { display: none; }
[data-theme="dark"] .theme-icon-dark { display: inline-block; }

/* Lien actif du menu latéral : l'icône jaune remplace systématiquement
   l'icône claire/sombre, quel que soit le thème courant. */
.navbar__link-icon-active { display: none; }
.navbar__link--active .navbar__link-icon .theme-icon-light,
.navbar__link--active .navbar__link-icon .theme-icon-dark { display: none; }
.navbar__link--active .navbar__link-icon .navbar__link-icon-active { display: inline-block; }
[data-theme="dark"] .filter-pill--active:hover { background: var(--navy-panel); color: var(--gold-light); border-color: var(--gold); }
[data-theme="dark"] .tag { --tag-color: var(--gold); }
[data-theme="dark"] .skill-bar__fill { background: linear-gradient(90deg, var(--gold-dark), var(--gold-light)); }
[data-theme="dark"] .timeline__item--formation::before { border-color: var(--azure); }
[data-theme="dark"] .timeline__badge { color: var(--gold-light); }
[data-theme="dark"] .timeline__item--formation .timeline__badge { color: var(--azure); }
[data-theme="dark"] .about-objective, [data-theme="dark"] .contact-form label { color: var(--lavender-2); }
[data-theme="dark"] .contact-form textarea:focus { border-color: var(--gold); background: var(--navy); }
[data-theme="dark"] .contact-alt a, [data-theme="dark"] .contact-details a { color: var(--gold); }
.contact-details a:hover { color: var(--gold-dark); }

/* ===================== Page À propos — version portfolio ===================== */
.about-legacy { display: none; }
.about-page { max-width: var(--container); margin: 0 auto; padding: 1.4rem 1.5rem 0; }
.about-page__topbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.about-breadcrumb, .about-breadcrumb a, .about-back { display: inline-flex; align-items: center; gap: 0.45rem; }
.about-breadcrumb { color: var(--color-text-muted); font-size: 0.8rem; }
.about-breadcrumb a, .about-back { color: var(--navy); font-weight: 700; }
.about-breadcrumb [aria-current="page"] { color: var(--gold-dark); font-weight: 800; }
.about-breadcrumb img, .about-back img { width: 15px; height: 15px; object-fit: contain; }
.about-breadcrumb a img { transform: rotate(180deg); }
.about-back { padding: 0.45rem 0.7rem; border: 1px solid var(--color-border); border-radius: 6px; font-size: 0.76rem; }
.about-back:hover { border-color: var(--gold); color: var(--gold-dark); }
.about-intro { display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, .85fr) minmax(210px, .55fr); gap: clamp(1.5rem, 4vw, 3.5rem); min-height: 370px; align-items: center; padding: 1rem 0 2rem; }
.about-intro h1 { margin: 0 0 .8rem; font-size: clamp(2.25rem, 4vw, 4rem); line-height: 1.05; }
.about-intro h1 span, .about-intro__lead strong { color: var(--gold-dark); }
.about-intro__lead { max-width: 27ch; margin: 0 0 1rem; color: var(--navy); font-size: clamp(1.1rem, 2vw, 1.5rem); font-weight: 700; line-height: 1.38; }
.about-intro__content > p:not(.eyebrow):not(.about-intro__lead) { max-width: 56ch; margin: .65rem 0; color: var(--color-text-muted); font-size: .87rem; line-height: 1.6; }
.about-intro__signature { display: grid; justify-items: start; gap: .15rem; margin-top: .8rem; color: var(--navy); font-size: .79rem; font-weight: 700; }
.about-intro__signature img { width: 148px; height: auto; }
.about-intro__portrait { position: relative; align-self: stretch; min-height: 350px; overflow: hidden; }
.about-intro__portrait::before { content:""; position:absolute; z-index:0; inset:4% 0 2%; border-radius:50%; border:1px solid rgba(216,163,75,.42); background:repeating-radial-gradient(circle at 50% 50%, transparent 0 27px, rgba(216,163,75,.13) 28px 29px, transparent 30px 47px); }
.about-intro__halo { position:absolute; z-index:0; top:17%; left:50%; width:75%; aspect-ratio:1; transform:translateX(-50%); border-radius:50%; background:radial-gradient(circle, var(--gold-light), var(--gold) 45%, transparent 70%); opacity:.6; }
.about-intro__portrait > img { position:absolute; z-index:1; bottom:0; left:50%; width:min(100%, 345px); height:96%; object-fit:cover; object-position:center top; transform:translateX(-50%); -webkit-mask-image:linear-gradient(#000 0 87%, transparent); mask-image:linear-gradient(#000 0 87%, transparent); }
.about-intro__logo { position:absolute; z-index:0; top:29%; left:15%; color:rgba(216,163,75,.55); font-size:8rem; font-weight:900; line-height:1; text-shadow:0 0 20px rgba(216,163,75,.25); }
.about-intro__pillars { display:grid; gap:1rem; margin:0; }
.about-intro__pillars div { padding:0 0 .8rem 1rem; border-left:2px solid var(--gold); }
.about-intro__pillars dt { display:flex; align-items:center; gap:.55rem; margin-bottom:.2rem; color:var(--navy); font-size:.82rem; font-weight:800; }
.about-intro__pillars dt img { width:28px; height:28px; object-fit:contain; }
.about-intro__pillars dd { margin:0; color:var(--color-text-muted); font-size:.77rem; line-height:1.45; }
.about-brand { display:grid; grid-template-columns:190px minmax(0,1.35fr) minmax(240px,.8fr); overflow:hidden; border:var(--border); border-radius:var(--radius); background:var(--color-bg-elevated); }
.about-brand__mark { display:grid; place-items:center; align-content:center; gap:.35rem; min-height:260px; padding:1rem; color:#fff; text-align:center; background:linear-gradient(145deg,#142437,#07111d); }
.about-brand__mark img { width:95px; height:95px; object-fit:contain; }.about-brand__mark strong { font-size:1.6rem; letter-spacing:.12em; }.about-brand__mark span { color:var(--lavender-2); font-size:.78rem; line-height:1.45; }
.about-brand__story { padding:1.5rem; }.about-brand h2 { margin:0 0 .8rem; color:var(--navy); font-size:1.35rem; }.about-brand h2 span { color:var(--gold-dark); }.about-brand__story > p { margin:.45rem 0; color:var(--color-text-muted); font-size:.82rem; line-height:1.55; }
.about-brand__story ul { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.6rem; margin:1rem 0 0; padding:0; list-style:none; }.about-brand__story li { display:grid; gap:.18rem; color:var(--gold-dark); font-size:.7rem; }.about-brand__story li::before { content:"◆"; }.about-brand__story li span { color:var(--color-text-muted); font-size:.61rem; line-height:1.35; }
.about-brand blockquote { display:grid; align-content:center; margin:0; padding:1.8rem; color:#fff; background:linear-gradient(145deg,#12263a,#07131e); font-size:1.03rem; line-height:1.7; text-align:center; }.about-brand blockquote::before,.about-brand blockquote::after { color:var(--gold); font-size:2.6rem; line-height:.5; }.about-brand blockquote::before { content:"“"; justify-self:start; }.about-brand blockquote::after { content:"”"; justify-self:end; }
.about-values,.about-vision,.about-work,.about-career-card,.about-stats { margin-top:1rem; padding:1.15rem; border:var(--border); border-radius:var(--radius); background:var(--color-bg-elevated); }
.about-section-heading { margin-bottom:1rem; }.about-section-heading .eyebrow { margin-bottom:.25rem; }.about-section-heading h2 { margin:0; font-size:1.28rem; }.about-section-heading h2 span { color:var(--gold-dark); }
.about-values__grid { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); }.about-values__grid article { min-width:0; padding:.4rem 1rem; text-align:center; border-left:1px solid var(--color-border); }.about-values__grid article:first-child { border-left:0; }.about-values__grid img { width:35px; height:35px; object-fit:contain; }.about-values__grid h3 { margin:.5rem 0 .35rem; color:var(--navy); font-size:.79rem; }.about-values__grid p { margin:0; color:var(--color-text-muted); font-size:.68rem; line-height:1.45; }
.about-page__two-columns { display:grid; grid-template-columns: minmax(0,.92fr) minmax(0,1.08fr); gap:1rem; }.about-page__two-columns--bottom { margin-top:0; }.about-vision__quote { display:grid; grid-template-columns:100px minmax(0,1fr); gap:.8rem; align-items:center; margin:.8rem 0; }.about-vision__quote img { width:78px; height:78px; object-fit:contain; }.about-vision__quote blockquote { margin:0; color:var(--color-text); font-size:.83rem; font-style:italic; line-height:1.65; }.about-vision > p,.about-career-card > p { margin:.75rem 0; color:var(--color-text-muted); font-size:.8rem; line-height:1.55; }
.about-work__grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.65rem; }.about-work__grid article { min-height:145px; padding:.85rem; border:var(--border); border-radius:8px; }.about-work__grid .domain-icon { width:42px; height:42px; margin-bottom:.65rem; padding:7px; }.about-work__grid h3 { margin:0 0 .45rem; color:var(--navy); font-size:.78rem; }.about-work__grid p { margin:0; color:var(--color-text-muted); font-size:.65rem; line-height:1.45; }
.about-career-card__link { display:grid; grid-template-columns:35px minmax(0,1fr) auto; gap:.7rem; align-items:center; margin:.5rem 0; padding:.65rem; border:var(--border); border-radius:8px; color:var(--color-text); }.about-career-card__link:hover { border-color:var(--gold); }.about-career-card__link img { width:28px; height:28px; object-fit:contain; }.about-career-card__link span { display:grid; color:var(--color-text-muted); font-size:.67rem; line-height:1.35; }.about-career-card__link strong { color:var(--navy); font-size:.75rem; }.about-career-card__link b { color:var(--gold-dark); font-size:1.2rem; }.about-career-card__button { display:table; margin:.85rem auto 0; padding:.38rem .7rem; border:1px solid var(--gold); border-radius:5px; color:var(--gold-dark); font-size:.72rem; font-weight:700; }
.about-stats__grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.65rem; }.about-stats__grid article { display:grid; justify-items:center; gap:.4rem; min-height:133px; padding:.8rem .4rem; border:var(--border); border-radius:8px; text-align:center; }.about-stats__grid img { width:35px; height:35px; object-fit:contain; }.about-stats__grid strong { color:var(--navy); font-size:1.2rem; }.about-stats__grid span { color:var(--color-text-muted); font-size:.65rem; line-height:1.35; }
.about-page__contact { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:1.3rem; margin:1rem 0 0; padding:1.1rem 1.4rem; overflow:hidden; border:1px solid rgba(216,163,75,.52); border-radius:var(--radius); background:radial-gradient(circle at 78% 130%,rgba(247,185,52,.22),transparent 26%),linear-gradient(115deg,#102438,#07131e); color:#fff; }.about-page__contact > span { display:grid; place-items:center; width:60px; height:60px; border:1px solid var(--gold); border-radius:50%; }.about-page__contact > span img { width:30px; height:30px; object-fit:contain; }.about-page__contact p,.about-page__contact h2,.about-page__contact small { margin:0; }.about-page__contact p { color:var(--lavender-2); font-size:.72rem; }.about-page__contact h2 { color:#fff; font-size:1.32rem; }.about-page__contact h2 em { color:var(--gold); }.about-page__contact small { display:block; margin-top:.25rem; color:var(--lavender); font-size:.73rem; }.about-page__contact .btn { white-space:nowrap; }
[data-theme="dark"] .about-page { color:var(--lavender-2); }.about-page__topbar,.about-brand,.about-values,.about-vision,.about-work,.about-career-card,.about-stats { transition:background var(--transition),border-color var(--transition); }[data-theme="dark"] .about-breadcrumb a,[data-theme="dark"] .about-back,[data-theme="dark"] .about-intro__lead,[data-theme="dark"] .about-intro__signature,[data-theme="dark"] .about-brand h2,[data-theme="dark"] .about-values__grid h3,[data-theme="dark"] .about-work__grid h3,[data-theme="dark"] .about-career-card__link strong,[data-theme="dark"] .about-stats__grid strong { color:#fff; }[data-theme="dark"] .about-intro__content > p:not(.eyebrow):not(.about-intro__lead),[data-theme="dark"] .about-intro__pillars dd,[data-theme="dark"] .about-brand__story > p,[data-theme="dark"] .about-brand__story li span,[data-theme="dark"] .about-values__grid p,[data-theme="dark"] .about-vision > p,[data-theme="dark"] .about-career-card > p,[data-theme="dark"] .about-work__grid p,[data-theme="dark"] .about-career-card__link span,[data-theme="dark"] .about-stats__grid span { color:var(--lavender); }[data-theme="dark"] .about-brand,[data-theme="dark"] .about-values,[data-theme="dark"] .about-vision,[data-theme="dark"] .about-work,[data-theme="dark"] .about-career-card,[data-theme="dark"] .about-stats { border-color:rgba(185,197,209,.19); background:linear-gradient(145deg,rgba(18,34,49,.97),rgba(7,16,25,.97)); }[data-theme="dark"] .about-values__grid article,[data-theme="dark"] .about-work__grid article,[data-theme="dark"] .about-career-card__link,[data-theme="dark"] .about-stats__grid article { border-color:rgba(185,197,209,.18); }[data-theme="dark"] .about-vision__quote blockquote { color:#fff; }
[data-theme="dark"] .about-breadcrumb [aria-current="page"] { color: var(--gold); }
@media(max-width:1000px){.about-intro{grid-template-columns:minmax(0,1fr) minmax(260px,.7fr)}.about-intro__pillars{grid-column:1/-1;grid-template-columns:repeat(3,1fr)}.about-brand{grid-template-columns:155px minmax(0,1fr)}.about-brand blockquote{grid-column:1/-1}.about-values__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.about-values__grid article:nth-child(4){border-left:0}.about-page__two-columns{grid-template-columns:1fr}.about-work__grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){.about-page{padding:1rem 1rem 0}.about-page__topbar{margin-bottom:.25rem}.about-back{font-size:0}.about-back img{width:18px;height:18px}.about-intro{grid-template-columns:1fr;padding-bottom:1rem}.about-intro__portrait{order:-1;min-height:300px}.about-intro__pillars{grid-template-columns:1fr;gap:.7rem}.about-brand{grid-template-columns:1fr}.about-brand__mark{min-height:190px}.about-brand__story ul{grid-template-columns:repeat(2,minmax(0,1fr))}.about-values__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.about-values__grid article,.about-values__grid article:nth-child(4){border-left:0}.about-work__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.about-stats__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.about-page__contact{grid-template-columns:1fr;text-align:center}.about-page__contact>span{margin:auto}.about-page__contact .btn{justify-self:center}.about-intro__logo{font-size:6rem}.about-intro__signature{justify-items:center}.about-intro__content{text-align:center}.about-intro__content>p:not(.eyebrow):not(.about-intro__lead){margin-right:auto;margin-left:auto}}

/* ===================== Page Projets — version portfolio ===================== */
.projects-legacy { display:none; }.projects-page { max-width:var(--container); margin:0 auto; padding:1.4rem 1.5rem 0; }.projects-page__topbar { display:flex; justify-content:space-between; align-items:center; margin-bottom:.5rem; }.projects-breadcrumb,.projects-breadcrumb a,.projects-back { display:inline-flex; align-items:center; gap:.45rem; }.projects-breadcrumb { color:var(--color-text-muted); font-size:.8rem; }.projects-breadcrumb a,.projects-back { color:var(--navy); font-weight:700; }.projects-breadcrumb [aria-current="page"] { color:var(--gold-dark); font-weight:800; }.projects-breadcrumb img,.projects-back img { width:15px;height:15px;object-fit:contain; }.projects-breadcrumb a img { transform:rotate(180deg); }.projects-back { padding:.45rem .7rem;border:1px solid var(--color-border);border-radius:6px;font-size:.76rem; }.projects-back:hover { color:var(--gold-dark);border-color:var(--gold); }
.projects-hero { display:grid; grid-template-columns:minmax(0,.88fr) minmax(400px,1.12fr); align-items:center; min-height:275px; overflow:hidden; }.projects-hero h1 { margin:.2rem 0 .75rem; font-size:clamp(2.2rem,4vw,4rem);line-height:1.06; }.projects-hero h1 span { color:var(--gold-dark); }.projects-hero__content>p:not(.eyebrow) { max-width:56ch;margin:0;color:var(--color-text-muted);font-size:.88rem;line-height:1.65; }.projects-hero__visual { align-self:stretch;position:relative;overflow:hidden; }.projects-hero__image { position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center; }.projects-hero__stats { display:flex;gap:1.5rem;margin-top:1.35rem; }.projects-hero__stats div { display:grid;grid-template-columns:35px auto;column-gap:.55rem;align-items:center;min-width:115px;padding-right:1.2rem;border-right:1px solid var(--color-border); }.projects-hero__stats div:last-child { border:0;padding:0; }.projects-hero__stats img { grid-row:1/3;width:31px;height:31px;object-fit:contain;}.projects-hero__stats strong { color:var(--navy);font-size:1.35rem;line-height:1; }.projects-hero__stats span { color:var(--color-text-muted);font-size:.66rem;white-space:nowrap; }
.projects-directory { padding:1rem; border:var(--border);border-radius:var(--radius);background:var(--color-bg-elevated); }.projects-directory__toolbar { display:flex;gap:1rem;align-items:center;justify-content:space-between;margin-bottom:1rem; }.projects-filters { display:flex;flex-wrap:wrap;gap:.55rem; }.projects-filters button { display:inline-flex;align-items:center;gap:.4rem;padding:.46rem .7rem;border:1px solid var(--color-border);border-radius:6px;color:var(--color-text);background:transparent;font-size:.73rem;font-weight:700;cursor:pointer; }.projects-filters button img { width:16px;height:16px;object-fit:contain;}.projects-filters button:hover,.projects-filters button.is-active { border-color:var(--gold);color:var(--gold-dark);background:rgba(216,163,75,.09); }.projects-search { display:flex;align-items:center;gap:.4rem;min-width:220px;padding:.42rem .65rem;border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-muted); }.projects-search input { width:100%;border:0;outline:0;color:inherit;background:transparent;font:inherit;font-size:.76rem; }.projects-pager__viewport { overflow:hidden; }.projects-grid { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem; }.project-directory-card { display:flex;flex-direction:column;min-width:0;overflow:hidden;border:var(--border);border-radius:9px;background:var(--color-bg-elevated); }.project-directory-card__image { position:relative;display:block;aspect-ratio:16/8.1;overflow:hidden;background:var(--navy-deep); }.project-directory-card__image>img { width:100%;height:100%;object-fit:cover;transition:transform var(--transition-slow); }.project-directory-card:hover .project-directory-card__image>img { transform:scale(1.08); }.project-directory-card__image>span { display:grid;place-items:center;width:100%;height:100%;color:var(--gold);font-size:1.45rem;font-weight:800; }.project-directory-card__image b { position:absolute;right:.45rem;top:.45rem;padding:.22rem .4rem;border-radius:4px;color:#fff;background:rgba(22,65,147,.9);font-size:.62rem; }.project-directory-card__content { display:flex;flex:1;flex-direction:column;padding:.85rem; }.project-directory-card h2 { margin:0 0 .5rem;color:var(--navy);font-size:.96rem;line-height:1.3; }.project-directory-card__content>p { margin:0 0 .65rem;color:var(--color-text-muted);font-size:.76rem;line-height:1.55;overflow-wrap:anywhere; }.project-directory-card ul { display:flex;flex-wrap:wrap;gap:.3rem;margin:0 0 .75rem;padding:0;list-style:none; }.project-directory-card li { padding:.16rem .38rem;border:1px solid var(--color-border);border-radius:4px;color:var(--navy);font-size:.64rem; }.project-directory-card__actions { display:flex;justify-content:space-between;gap:.5rem;margin-top:auto; }.project-directory-card__actions a { padding:.36rem .55rem;border:1px solid var(--gold);border-radius:5px;color:var(--gold-dark);font-size:.68rem;font-weight:700; }.project-directory-card__actions a:last-child { border-color:var(--color-border);color:var(--color-text-muted); }.project-directory-card__actions a:hover { color:var(--navy-deep);border-color:var(--gold);background:var(--gold); }.projects-pager__controls { display:flex;align-items:center;justify-content:center;gap:.45rem;margin-top:1rem; }.projects-pager__controls>div { display:flex;gap:.35rem; }.projects-pager__controls button { display:grid;place-items:center;min-width:31px;height:31px;padding:0 .5rem;border:1px solid var(--color-border);border-radius:5px;color:var(--color-text);background:transparent;font-size:.75rem;cursor:pointer; }.projects-pager__controls button[aria-current="page"] { border-color:var(--gold);color:var(--navy-deep);background:var(--gold);font-weight:800; }.projects-pager__controls button[hidden] { display:none; }.projects-page__contact { display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1.2rem;align-items:center;margin:1rem 0 0;padding:1.15rem 1.5rem;border:1px solid rgba(216,163,75,.52);border-radius:var(--radius);color:#fff;background:radial-gradient(circle at 78% 130%,rgba(247,185,52,.22),transparent 27%),linear-gradient(115deg,#102438,#07131e); }.projects-page__contact>span { display:grid;place-items:center;width:58px;height:58px;border:1px solid var(--gold);border-radius:50%; }.projects-page__contact img { width:28px;height:28px;object-fit:contain;}.projects-page__contact p,.projects-page__contact h2,.projects-page__contact small { margin:0; }.projects-page__contact p { color:var(--lavender-2);font-size:.72rem; }.projects-page__contact h2 { color:#fff;font-size:1.3rem; }.projects-page__contact h2 em { color:var(--gold); }.projects-page__contact small { color:var(--lavender);font-size:.74rem; }.projects-page__contact .btn { white-space:nowrap; }.projects-directory__empty { margin:1rem 0;color:var(--color-text-muted);text-align:center; }
[data-theme="dark"] .projects-breadcrumb a,[data-theme="dark"] .projects-back,[data-theme="dark"] .projects-hero__stats strong,[data-theme="dark"] .project-directory-card h2,[data-theme="dark"] .project-directory-card li { color:#fff; }[data-theme="dark"] .projects-breadcrumb [aria-current="page"],[data-theme="dark"] .projects-hero h1 span { color:var(--gold); }[data-theme="dark"] .projects-hero__content>p:not(.eyebrow),[data-theme="dark"] .projects-hero__stats span,[data-theme="dark"] .project-directory-card__content>p,[data-theme="dark"] .projects-directory__empty { color:var(--lavender); }[data-theme="dark"] .projects-directory,[data-theme="dark"] .project-directory-card { border-color:rgba(185,197,209,.19);background:var(--navy-panel); }[data-theme="dark"] .projects-filters button,[data-theme="dark"] .projects-search,[data-theme="dark"] .project-directory-card li,[data-theme="dark"] .project-directory-card__actions a:last-child,[data-theme="dark"] .projects-pager__controls button { border-color:rgba(185,197,209,.28);color:#fff; }[data-theme="dark"] .projects-filters button.is-active,[data-theme="dark"] .projects-filters button:hover { color:var(--gold);border-color:var(--gold);background:rgba(247,185,52,.08); }[data-theme="dark"] .project-directory-card__actions a { color:var(--gold);border-color:var(--gold); }
@media(max-width:1050px){.projects-hero{grid-template-columns:1fr 1fr}.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.projects-directory__toolbar{align-items:flex-start;flex-direction:column}.projects-search{width:100%;max-width:360px}.projects-hero__stats{gap:.8rem}.projects-hero__stats div{min-width:0;padding-right:.65rem}}
@media(max-width:650px){.projects-page{padding:1rem 1rem 0}.projects-back{font-size:0}.projects-back img{width:18px;height:18px}.projects-hero{grid-template-columns:1fr}.projects-hero__visual{display:none}.projects-hero__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem}.projects-hero__stats div{grid-template-columns:1fr;padding:.5rem;border:0;text-align:center}.projects-hero__stats img{grid-row:auto;justify-self:center}.projects-hero__stats span{white-space:normal}.projects-directory{padding:.75rem}.projects-filters{flex-wrap:nowrap;overflow-x:auto;width:100%;padding-bottom:.3rem}.projects-filters button{white-space:nowrap}.projects-grid{grid-template-columns:1fr}.projects-page__contact{grid-template-columns:1fr;text-align:center}.projects-page__contact>span,.projects-page__contact .btn{justify-self:center}}

@media (max-width: 600px) {
  .contact-form__row { grid-template-columns: 1fr; }
  .contact-form { padding: 1.5rem; }
}

/* Pagination interactive de la page Projets. Le HTML reste une grille simple
   sans JavaScript ; ces règles ne s'activent qu'après son initialisation. */
.projects-pager:not(.is-enhanced) .projects-pager__controls { display:none; }
.projects-pager.is-enhanced .projects-grid { display:block; }
.projects-pager__page { display:none; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1rem; }
.projects-pager__page.is-active { display:grid; }
.projects-pager__page.is-entering,
.projects-pager__page.is-exiting { display:grid; transition:transform .28s ease,opacity .28s ease; }
.projects-pager__page.is-entering { opacity:0; transform:translateX(var(--project-pager-enter-offset,12%)); }
.projects-pager__page.is-exiting { position:absolute; width:100%; opacity:0; transform:translateX(var(--project-pager-exit-offset,-12%)); }
.projects-pager__viewport { position:relative; touch-action:pan-y; cursor:grab; }
.projects-pager__viewport.is-dragging { cursor:grabbing; user-select:none; }
@media (max-width:1050px) { .projects-pager__page { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:650px) { .projects-pager__page { grid-template-columns:1fr; } }
@media (prefers-reduced-motion:reduce) { .projects-pager__page.is-entering,.projects-pager__page.is-exiting { transition:none; } }

/* Hero Projets : les statistiques ne doivent jamais passer sous l'illustration. */
.projects-hero { grid-template-columns:minmax(0,1fr) minmax(0,1.12fr); }
.projects-hero__stats { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(.55rem,1.5vw,1.25rem); }
.projects-hero__stats div { min-width:0; padding-right:clamp(.4rem,1vw,1rem); }
.projects-hero__stats span { min-width:0; white-space:normal; overflow-wrap:anywhere; line-height:1.3; }
.projects-hero__visual { min-height:275px; }
.projects-hero__image { object-fit:contain; }
@media (min-width:651px) and (max-width:1050px) { .projects-hero { min-height:320px; } .projects-hero__visual { min-height:320px; } }
@media (max-width:650px) { .projects-hero__stats div { grid-template-columns:1fr; padding:.5rem; } .projects-hero__stats img { grid-row:auto; } }

/* Ajustements d'espacement et de lisibilité de la page Projets. */
.projects-hero { margin-bottom:1.4rem; }
.projects-hero__content { position:relative; z-index:1; padding:1rem 0; }
.projects-hero__visual { z-index:0; }
.projects-hero__stats { margin-top:1.65rem; gap:clamp(.8rem,1.8vw,1.5rem); }
.projects-hero__stats div { grid-template-columns:34px minmax(0,1fr); padding-right:clamp(.55rem,1.2vw,1.15rem); }
.projects-hero__stats img { width:34px; height:34px; }
.projects-hero__stats strong { font-size:clamp(1.42rem,2vw,1.65rem); }
.projects-hero__stats span { font-size:.72rem; }
.projects-directory { margin-top:0; }
.projects-filters button { flex:0 0 auto; padding:.55rem .88rem; }
@media (min-width:651px) and (max-width:1050px) {
  .projects-hero { grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr); column-gap:.8rem; }
  .projects-hero__stats { gap:.65rem; }
  .projects-hero__stats div { grid-template-columns:30px minmax(0,1fr); padding-right:.45rem; }
  .projects-hero__stats img { width:30px; height:30px; }
  .projects-hero__stats strong { font-size:1.32rem; }
  .projects-hero__stats span { font-size:.68rem; }
}
@media (max-width:650px) {
  .projects-hero { margin-bottom:1.1rem; }
  .projects-hero__content { padding:.45rem 0; }
  .projects-hero__stats { margin-top:1.15rem; gap:.45rem; }
  .projects-hero__stats div { grid-template-columns:1fr; padding:.55rem .35rem; }
  .projects-hero__stats img { width:31px; height:31px; }
  .projects-hero__stats strong { font-size:1.28rem; }
  .projects-hero__stats span { font-size:.66rem; }
  .projects-filters button { padding:.58rem .95rem; }
}

/* ===================== Page Parcours — version portfolio ===================== */
.career-page { max-width:var(--container); margin:0 auto; padding:1.4rem 1.5rem 0; }.career-page__topbar { display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem; }.career-breadcrumb,.career-breadcrumb a,.career-back { display:inline-flex;align-items:center;gap:.45rem; }.career-breadcrumb { color:var(--color-text-muted);font-size:.8rem; }.career-breadcrumb a,.career-back { color:var(--navy);font-weight:700; }.career-breadcrumb [aria-current="page"] { color:var(--gold-dark);font-weight:800; }.career-breadcrumb img,.career-back img { width:15px;height:15px;object-fit:contain; }.career-breadcrumb a img { transform:rotate(180deg); }.career-back { padding:.45rem .7rem;border:1px solid var(--color-border);border-radius:6px;font-size:.76rem; }.career-back:hover { color:var(--gold-dark);border-color:var(--gold); }
.career-hero { display:grid;grid-template-columns:minmax(0,.83fr) minmax(330px,1.08fr) minmax(180px,.42fr);align-items:stretch;min-height:300px;margin-bottom:1.25rem;overflow:hidden; }.career-hero__content { position:relative;z-index:1;align-self:center;padding:1rem 0; }.career-hero h1 { max-width:11ch;margin:.2rem 0 .75rem;color:var(--navy);font-size:clamp(2.2rem,4vw,3.8rem);line-height:1.06; }.career-hero h1::first-letter { color:var(--gold-dark); }.career-hero__content>p:not(.eyebrow) { max-width:48ch;margin:0;color:var(--color-text-muted);font-size:.84rem;line-height:1.65; }.career-hero__links { display:flex;gap:.75rem;margin-top:1.25rem; }.career-hero__links a { display:inline-flex;align-items:center;gap:.5rem;padding:.6rem .95rem;border:1px solid var(--color-border);border-radius:6px;color:var(--color-text);font-size:.8rem;font-weight:700; }.career-hero__links img { width:23px;height:23px;object-fit:contain;}.career-hero__links a.is-active,.career-hero__links a:hover { color:var(--gold-dark);border-color:var(--gold);background:rgba(216,163,75,.08); }.career-hero__visual { position:relative;min-height:300px;overflow:hidden; }.career-hero__image { position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center; }.career-hero__aside { align-self:center;padding:1.25rem;border:var(--border);border-radius:10px;background:var(--color-bg-elevated); }.career-hero__aside blockquote { margin:0 0 1.1rem;padding-bottom:1rem;border-bottom:1px solid var(--color-border);color:var(--navy);font-size:.9rem;font-weight:700;line-height:1.55; }.career-hero__aside blockquote::before { content:'“';display:block;color:var(--gold-dark);font-size:2rem;line-height:.6; }.career-hero__aside>div { display:grid;grid-template-columns:30px 1fr;gap:.15rem .55rem; }.career-hero__aside img { grid-row:1/3;width:28px;height:28px;object-fit:contain;}.career-hero__aside strong { color:var(--gold-dark);font-size:.8rem; }.career-hero__aside span { color:var(--color-text-muted);font-size:.7rem;line-height:1.4; }
.career-indicators { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:0 0 1rem;padding:.85rem 1rem;border:var(--border);border-radius:var(--radius);background:var(--color-bg-elevated); }.career-indicators article { display:grid;grid-template-columns:42px minmax(0,1fr);gap:.65rem;align-items:center;min-width:0;padding:.35rem 1rem;border-left:1px solid var(--color-border); }.career-indicators article:first-child { border-left:0; }.career-indicators img { width:35px;height:35px;object-fit:contain;}.career-indicators div { display:grid;gap:.12rem;min-width:0; }.career-indicators small,.career-indicators span { color:var(--color-text-muted);font-size:.63rem;line-height:1.35; }.career-indicators strong { color:var(--navy);font-size:1.2rem; }
.career-timeline { margin:1rem 0;padding:1rem;border:var(--border);border-radius:var(--radius);background:var(--color-bg-elevated); }.career-timeline h2 { margin:0 0 1rem;color:var(--navy);font-size:1.18rem; }.career-timeline h2::after { content:'';display:block;width:34px;height:2px;margin-top:.45rem;background:var(--gold); }.career-timeline ol { margin:0;padding:0;list-style:none; }.career-timeline ol>li { position:relative;display:grid;grid-template-columns:110px 20px minmax(0,1fr);gap:.6rem;align-items:stretch;margin:.7rem 0; }.career-timeline__year { align-self:center;padding:.38rem .5rem;border:1px solid var(--gold);border-radius:5px;color:var(--gold-dark);font-size:.72rem;font-weight:700;text-align:center;white-space:nowrap; }.career-timeline__dot { position:relative;display:grid;place-items:center; }.career-timeline__dot::before { content:'';width:10px;height:10px;border-radius:50%;background:var(--gold); }.career-timeline__dot::after { content:'';position:absolute;top:calc(50% + 5px);bottom:-.8rem;width:1px;background:rgba(216,163,75,.5); }.career-timeline ol>li:last-child .career-timeline__dot::after { display:none; }.career-timeline__card { display:grid;grid-template-columns:70px minmax(0,1.25fr) minmax(190px,.75fr);min-width:0;border:var(--border);border-radius:8px;overflow:hidden; }.career-timeline__icon { display:grid;place-items:center;padding:.7rem;background:var(--paper-alt); }.career-timeline__icon img { width:42px;height:42px;object-fit:contain;}.career-timeline__body,.career-timeline__points { min-width:0;padding:.75rem .9rem; }.career-timeline__body h3 { margin:0 0 .25rem;color:var(--gold-dark);font-size:.92rem; }.career-timeline__body strong { display:block;color:var(--navy);font-size:.72rem; }.career-timeline__body p { margin:.45rem 0 0;color:var(--color-text-muted);font-size:.7rem;line-height:1.5; }.career-timeline__points { border-left:1px solid var(--color-border); }.career-timeline__points b { color:var(--navy);font-size:.71rem; }.career-timeline__points ul { display:grid;gap:.2rem;margin:.45rem 0 0;padding-left:.9rem;color:var(--color-text-muted);font-size:.67rem;line-height:1.35; }.career-timeline__points li::marker { color:var(--gold); }.career-timeline__points span { color:var(--color-text-muted);font-size:.68rem; }.career-timeline--blue .career-timeline__year { color:var(--azure);border-color:var(--azure); }.career-timeline--blue .career-timeline__dot::before { background:var(--azure); }.career-timeline--blue .career-timeline__dot::after { background:rgba(44,125,226,.55); }.career-timeline--blue .career-timeline__body h3 { color:var(--azure); }.career-timeline--blue .career-timeline__points li::marker { color:var(--azure); }.career-timeline__more { display:table;margin:.8rem auto 0;padding:.4rem .75rem;border:1px solid var(--gold);border-radius:5px;color:var(--gold-dark);font-size:.72rem;font-weight:700; }.career-timeline--blue .career-timeline__more { color:var(--azure);border-color:var(--azure); }.career-empty { color:var(--color-text-muted); }.career-page__contact { display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1.2rem;align-items:center;margin:1rem 0 0;padding:1.15rem 1.5rem;border:1px solid rgba(216,163,75,.52);border-radius:var(--radius);color:#fff;background:radial-gradient(circle at 78% 130%,rgba(247,185,52,.22),transparent 27%),linear-gradient(115deg,#102438,#07131e); }.career-page__contact>span { display:grid;place-items:center;width:58px;height:58px;border:1px solid var(--gold);border-radius:50%; }.career-page__contact img { width:28px;height:28px;object-fit:contain;}.career-page__contact p,.career-page__contact h2,.career-page__contact small { margin:0; }.career-page__contact p { color:var(--lavender-2);font-size:.72rem; }.career-page__contact h2 { color:#fff;font-size:1.3rem; }.career-page__contact h2 em { color:var(--gold); }.career-page__contact small { color:var(--lavender);font-size:.74rem; }.career-page__contact .btn { white-space:nowrap; }
[data-theme="dark"] .career-breadcrumb a,[data-theme="dark"] .career-back,[data-theme="dark"] .career-hero h1,[data-theme="dark"] .career-hero__aside blockquote,[data-theme="dark"] .career-indicators strong,[data-theme="dark"] .career-timeline h2,[data-theme="dark"] .career-timeline__body strong,[data-theme="dark"] .career-timeline__points b { color:#fff; }[data-theme="dark"] .career-breadcrumb [aria-current="page"],[data-theme="dark"] .career-hero h1::first-letter { color:var(--gold); }[data-theme="dark"] .career-hero__content>p:not(.eyebrow),[data-theme="dark"] .career-hero__aside span,[data-theme="dark"] .career-indicators small,[data-theme="dark"] .career-indicators span,[data-theme="dark"] .career-timeline__body p,[data-theme="dark"] .career-timeline__points ul,[data-theme="dark"] .career-timeline__points span { color:var(--lavender); }[data-theme="dark"] .career-hero__aside,[data-theme="dark"] .career-indicators,[data-theme="dark"] .career-timeline,[data-theme="dark"] .career-timeline__card { border-color:rgba(185,197,209,.19);background:var(--navy-panel); }[data-theme="dark"] .career-hero__aside blockquote,[data-theme="dark"] .career-indicators article,[data-theme="dark"] .career-timeline__points { border-color:rgba(185,197,209,.18); }[data-theme="dark"] .career-timeline__icon { background:rgba(255,255,255,.06); }
@media(max-width:1080px){.career-hero{grid-template-columns:minmax(0,1fr) minmax(260px,.85fr)}.career-hero__aside{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:.35rem}.career-hero__aside blockquote{margin:0;padding:0;border:0}.career-indicators{grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}.career-indicators article:nth-child(3){border-left:0}.career-timeline__card{grid-template-columns:64px minmax(0,1fr)}.career-timeline__points{grid-column:2;border-top:1px solid var(--color-border);border-left:0}.career-timeline__icon{grid-row:1/3}}
@media(max-width:650px){.career-page{padding:1rem 1rem 0}.career-back{font-size:0}.career-back img{width:18px;height:18px}.career-hero{grid-template-columns:1fr;margin-bottom:1rem}.career-hero__visual{min-height:235px;order:-1}.career-hero__aside{grid-column:auto;grid-template-columns:1fr}.career-hero__aside blockquote{padding-bottom:.8rem;border-bottom:1px solid var(--color-border)}.career-indicators{grid-template-columns:1fr;padding:.7rem}.career-indicators article,.career-indicators article:nth-child(3){border-top:1px solid var(--color-border);border-left:0}.career-indicators article:first-child{border-top:0}.career-timeline{padding:.75rem}.career-timeline ol>li{grid-template-columns:1fr;gap:.35rem}.career-timeline__year{justify-self:start}.career-timeline__dot{display:none}.career-timeline__card{grid-template-columns:55px minmax(0,1fr)}.career-timeline__icon{grid-row:1/3}.career-timeline__body,.career-timeline__points{padding:.7rem}.career-page__contact{grid-template-columns:1fr;text-align:center}.career-page__contact>span,.career-page__contact .btn{justify-self:center}}
.career-hero h1 span { color:var(--gold-dark); }
[data-theme="dark"] .career-hero h1 span { color:var(--gold); }
.career-hero h1::first-letter { color:inherit; }
.career-hero { column-gap:clamp(1rem,2vw,1.75rem); }
@media (max-width:650px) { .career-hero { row-gap:1rem; } }
.career-timeline ol>li { grid-template-columns:132px 20px minmax(0,1fr); }
.career-timeline__year { min-width:128px; }
@media (max-width:650px) { .career-timeline ol>li { grid-template-columns:1fr; } .career-timeline__year { min-width:0; } }

/* ===================== Page Compétences — structure dynamique ===================== */
.skills-page{max-width:var(--container);margin:0 auto;padding:1.4rem 1.5rem 0}.skills-page__topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.skills-breadcrumb,.skills-breadcrumb a,.skills-back{display:inline-flex;align-items:center;gap:.45rem}.skills-breadcrumb{color:var(--color-text-muted);font-size:.8rem}.skills-breadcrumb a,.skills-back{color:var(--navy);font-weight:700}.skills-breadcrumb [aria-current="page"]{color:var(--gold-dark);font-weight:800}.skills-breadcrumb img,.skills-back img{width:15px;height:15px;object-fit:contain}.skills-breadcrumb a img{transform:rotate(180deg)}.skills-back{padding:.45rem .7rem;border:1px solid var(--color-border);border-radius:6px;font-size:.76rem}.skills-back:hover{color:var(--gold-dark);border-color:var(--gold)}
.skills-hero{display:grid;grid-template-columns:minmax(0,.9fr) minmax(420px,1.1fr);align-items:center;min-height:295px;margin-bottom:1.2rem;overflow:hidden}.skills-hero h1{margin:.2rem 0 .8rem;color:var(--navy);font-size:clamp(2.3rem,4vw,4rem);line-height:1.06}.skills-hero h1 span,.skills-directory h2 span,.skills-technologies h2 span{color:var(--gold-dark)}.skills-hero__content>p:not(.eyebrow){max-width:52ch;margin:0;color:var(--color-text-muted);font-size:.88rem;line-height:1.62}.skills-hero__visual{position:relative;align-self:stretch;min-height:295px}.skills-hero__image{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.skills-hero__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.7rem;margin-top:1.35rem}.skills-hero__stats article{display:grid;gap:.25rem;min-width:0;padding:.65rem;border:var(--border);border-radius:8px;background:var(--color-bg-elevated)}.skills-hero__stats img{width:27px;height:27px;object-fit:contain;font-size:1.15rem}.skills-hero__stats span{color:var(--color-text-muted);font-size:.64rem;line-height:1.3;overflow-wrap:anywhere}
.skills-directory{padding:1rem;border:var(--border);border-radius:var(--radius);background:var(--color-bg-elevated)}.skills-directory__filters{display:flex;gap:.55rem;overflow-x:auto;padding-bottom:.35rem;scrollbar-width:thin}.skills-directory__filters button{display:inline-flex;align-items:center;gap:.42rem;flex:0 0 auto;padding:.52rem .75rem;border:1px solid var(--color-border);border-radius:6px;color:var(--color-text);background:transparent;font-size:.73rem;font-weight:700;white-space:nowrap;cursor:pointer}.skills-directory__filters button img{width:17px;height:17px;object-fit:contain;color:var(--gold-dark);background:rgba(216,163,75,.08)}.skills-directory__heading{display:flex;justify-content:space-between;align-items:end;gap:1rem;margin:1.05rem 0 .85rem}.skills-directory__heading .eyebrow{margin:0}.skills-directory h2{margin:.15rem 0 0;color:var(--navy);font-size:1.3rem}.skills-directory__all-link,.skills-domain__all-link,.skills-technologies__all-link{color:var(--gold-dark);font-size:.72rem;font-weight:800;white-space:nowrap}.skills-domain{margin-top:.75rem;padding:.85rem;border:var(--border);border-radius:9px;background:var(--color-bg-elevated)}.skills-domain__header{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.8rem}.skills-domain__header>div{display:flex;align-items:center;gap:.55rem;min-width:0}.skills-domain__header img{width:30px;height:30px;object-fit:contain;color:var(--navy);font-size:1.1rem}.skills-domain__header>div span{padding:.22rem .45rem;border:1px solid var(--color-border);border-radius:5px;color:var(--color-text-muted);font-size:.64rem;white-space:nowrap}.skills-domain__viewport{position:relative;overflow:hidden;touch-action:pan-y;cursor:grab}.skills-domain__viewport.is-dragging{cursor:grabbing;user-select:none}.skills-domain__grid,.skills-domain__page{display:grid;gap:.7rem}.skills-domain__grid{grid-template-columns:repeat(4,minmax(0,1fr))}.skills-domain__page{display:none;grid-template-columns:repeat(var(--domain-columns,4),minmax(0,1fr))}.skills-domain__page.is-active{display:grid}.skills-domain__page.is-entering,.skills-domain__page.is-exiting{display:grid;transition:transform .28s ease,opacity .28s ease}.skills-domain__page.is-entering{opacity:0;transform:translateX(var(--domain-enter-offset,12%))}.skills-domain__page.is-exiting{position:absolute;width:100%;opacity:0;transform:translateX(var(--domain-exit-offset,-12%))}.skills-competence-card{display:flex;flex-direction:column;min-width:0;min-height:205px;padding:.8rem;border:var(--border);border-radius:8px;background:var(--color-bg-elevated)}.skills-competence-card__icon{display:grid;place-items:center;width:42px;height:42px;margin-bottom:.55rem;border:1px solid var(--gold);border-radius:50%;background:rgba(216,163,75,.06)}.skills-competence-card__icon img{width:24px;height:24px;object-fit:contain;color:var(--navy);font-size:.78rem;line-height:1.35;overflow-wrap:anywhere}.skills-competence-card>p{display:-webkit-box;overflow:hidden;margin:0 0 auto;color:var(--color-text-muted);font-size:.68rem;line-height:1.5;-webkit-box-orient:vertical;-webkit-line-clamp:3}.skills-competence-card__level{display:flex;justify-content:space-between;margin-top:.75rem;color:var(--color-text-muted);font-size:.66rem}.skills-competence-card__level b{color:var(--navy)}.skills-competence-card__bar{height:4px;margin:.38rem 0 .55rem;overflow:hidden;border-radius:9px;background:var(--color-border)}.skills-competence-card__bar i{display:block;width:var(--skill-progress);height:100%;border-radius:inherit;background:var(--gold)}.skills-competence-card em{align-self:center;padding:.18rem .65rem;border-radius:99px;color:var(--gold-dark);background:rgba(216,163,75,.14);font-size:.61rem;font-style:normal;font-weight:700}.skills-domain__controls,.skills-global-pagination{display:flex;justify-content:center;align-items:center;gap:.4rem;margin-top:.8rem}.skills-domain__controls>div,.skills-global-pagination>div{display:flex;gap:.3rem}.skills-domain__controls button,.skills-global-pagination button{display:grid;place-items:center;min-width:30px;height:30px;padding:0 .45rem;border:1px solid var(--color-border);border-radius:5px;color:var(--color-text);background:transparent;font-size:.74rem;cursor:pointer}.skills-domain__controls button[aria-current="page"],.skills-global-pagination button[aria-current="page"]{border-color:var(--gold);color:var(--navy-deep);background:var(--gold);font-weight:800}.skills-domain__controls button[hidden],.skills-global-pagination button[hidden]{display:none}.skills-global-pagination{margin-top:1rem}.skills-global-pagination span{margin-left:.5rem;color:var(--color-text-muted);font-size:.68rem}.skills-technologies{margin-top:1rem;padding:1rem;border:var(--border);border-radius:var(--radius);background:var(--color-bg-elevated)}.skills-technologies header{display:flex;align-items:center;gap:.7rem;margin-bottom:.8rem}.skills-technologies header>img{width:33px;height:33px;object-fit:contain;flex:1}.skills-technologies h2{margin:0;color:var(--navy);font-size:1.1rem}.skills-technologies header p{margin:.2rem 0 0;color:var(--color-text-muted);font-size:.68rem}.skills-technologies__all-link{margin-left:auto;text-align:right}.skills-technologies__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}.skills-technologies__grid article{min-width:0;padding:.75rem;border:var(--border);border-radius:7px}.skills-technologies h3{margin:0 0 .55rem;color:var(--gold-dark);font-size:.76rem}.skills-technologies ul{display:flex;flex-wrap:wrap;gap:.38rem;margin:0;padding:0;list-style:none}.skills-technologies li{display:flex;align-items:center;gap:.28rem;max-width:100%;color:var(--color-text);font-size:.65rem}.skills-technologies li img{width:20px;height:20px;object-fit:contain}.skills-technologies article>p{margin:0;color:var(--color-text-muted);font-size:.67rem;line-height:1.4}.skills-technologies__note{margin:.75rem 0 0;color:var(--color-text-muted);font-size:.64rem;text-align:center}.skills-empty{padding:2rem;border:var(--border);border-radius:var(--radius);text-align:center}.skills-empty h2{color:var(--navy)}.skills-empty p{color:var(--color-text-muted)}.skills-page__contact{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1.2rem;align-items:center;margin:1rem 0 0;padding:1.15rem 1.5rem;border:1px solid rgba(216,163,75,.52);border-radius:var(--radius);color:#fff;background:radial-gradient(circle at 78% 130%,rgba(247,185,52,.22),transparent 27%),linear-gradient(115deg,#102438,#07131e)}.skills-page__contact>span{display:grid;place-items:center;width:58px;height:58px;border:1px solid var(--gold);border-radius:50%}.skills-page__contact img{width:28px;height:28px;object-fit:contain;font-size:1.1rem;font-weight:800}.skills-page__contact p em{color:var(--gold);font-style:normal}.skills-page__contact h2{margin-top:.25rem;color:var(--lavender-2);font-size:.73rem;font-weight:400}.skills-page__contact small{display:block;margin-top:.25rem;color:var(--lavender);font-size:.7rem}.skills-page__contact .btn{white-space:nowrap}
[data-theme="dark"] .skills-breadcrumb a,[data-theme="dark"] .skills-back,[data-theme="dark"] .skills-hero h1,[data-theme="dark"] .skills-hero__stats strong,[data-theme="dark"] .skills-directory h2,[data-theme="dark"] .skills-domain__header h3,[data-theme="dark"] .skills-competence-card h4,[data-theme="dark"] .skills-competence-card__level b,[data-theme="dark"] .skills-technologies h2{color:#fff}[data-theme="dark"] .skills-breadcrumb [aria-current="page"],[data-theme="dark"] .skills-hero h1 span,[data-theme="dark"] .skills-directory h2 span,[data-theme="dark"] .skills-technologies h2 span,[data-theme="dark"] .skills-directory__all-link,[data-theme="dark"] .skills-domain__all-link,[data-theme="dark"] .skills-technologies h3{color:var(--gold)}[data-theme="dark"] .skills-hero__content>p:not(.eyebrow),[data-theme="dark"] .skills-hero__stats span,[data-theme="dark"] .skills-competence-card>p,[data-theme="dark"] .skills-competence-card__level,[data-theme="dark"] .skills-technologies header p,[data-theme="dark"] .skills-technologies article>p,[data-theme="dark"] .skills-technologies__note{color:var(--lavender)}[data-theme="dark"] .skills-hero__stats article,[data-theme="dark"] .skills-directory,[data-theme="dark"] .skills-domain,[data-theme="dark"] .skills-competence-card,[data-theme="dark"] .skills-technologies,[data-theme="dark"] .skills-technologies__grid article{border-color:rgba(185,197,209,.19);background:var(--navy-panel)}[data-theme="dark"] .skills-directory__filters button,[data-theme="dark"] .skills-domain__header>div span,[data-theme="dark"] .skills-domain__controls button,[data-theme="dark"] .skills-global-pagination button{border-color:rgba(185,197,209,.28);color:#fff}[data-theme="dark"] .skills-directory__filters button.is-active,[data-theme="dark"] .skills-directory__filters button:hover{color:var(--gold);border-color:var(--gold)}[data-theme="dark"] .skills-competence-card em{color:var(--gold);background:rgba(247,185,52,.12)}[data-theme="dark"] .skills-technologies li{color:#fff}
@media(max-width:1050px){.skills-hero{grid-template-columns:minmax(0,1fr) minmax(310px,.85fr)}.skills-hero__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.skills-domain__grid,.skills-domain__page{grid-template-columns:repeat(var(--domain-columns,2),minmax(0,1fr))}.skills-technologies__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.skills-page{padding:1rem 1rem 0}.skills-back{font-size:0}.skills-back img{width:18px;height:18px}.skills-hero{grid-template-columns:1fr;min-height:0}.skills-hero__visual{order:-1;min-height:225px}.skills-hero__stats{gap:.45rem}.skills-hero__stats article{padding:.55rem}.skills-directory{padding:.75rem}.skills-directory__heading{align-items:flex-start;flex-direction:column}.skills-domain{padding:.65rem}.skills-domain__header{align-items:flex-start;flex-direction:column}.skills-domain__all-link{padding-left:2.2rem}.skills-domain__grid,.skills-domain__page{grid-template-columns:1fr}.skills-competence-card{min-height:0}.skills-technologies{padding:.75rem}.skills-technologies__grid{grid-template-columns:1fr}.skills-page__contact{grid-template-columns:1fr;text-align:center}.skills-page__contact>span,.skills-page__contact .btn{justify-self:center}.skills-global-pagination span{display:none}}
@media(prefers-reduced-motion:reduce){.skills-domain__page.is-entering,.skills-domain__page.is-exiting{transition:none}}

/* Une page interne est toujours large comme son sous-conteneur Domaine. */
[data-domain-pager].is-enhanced .skills-domain__grid{display:block}
[data-domain-pager].is-enhanced .skills-domain__page{width:100%}

/* Accents propres à chaque domaine et protection contre les débordements. */
.skills-domain__header img,.skills-domain__header h3,.skills-domain__all-link,.skills-domain__page .skills-competence-card__icon{color:var(--domain-accent,var(--gold-dark));border-color:var(--domain-accent,var(--gold));}.skills-domain__page .skills-competence-card__icon{background:color-mix(in srgb,var(--domain-accent,var(--gold)) 10%,transparent);}.skills-domain__page .skills-competence-card__bar i{background:var(--domain-accent,var(--gold));}.skills-domain__page .skills-competence-card em{color:var(--domain-accent,var(--gold-dark));background:color-mix(in srgb,var(--domain-accent,var(--gold)) 14%,transparent)}.skills-technologies__grid article h3{color:var(--domain-accent,var(--gold-dark))}.skills-directory__all-link[aria-disabled="true"],.skills-domain__all-link[aria-disabled="true"]{opacity:.82;cursor:default}.skills-directory__all-link[aria-disabled="true"]:hover,.skills-domain__all-link[aria-disabled="true"]:hover{color:var(--gold-dark)}.skills-domain__header h3,.skills-domain__header>div span,.skills-technologies h3,.skills-technologies li{overflow-wrap:anywhere}.skills-domain__header>div span{white-space:normal;text-align:center}.skills-domain__controls{min-height:30px}.skills-domain__controls:has(button[hidden]):not(:has(button:not([hidden]))){display:none}
@media(max-width:650px){.skills-hero__stats{grid-template-columns:repeat(2,minmax(0,1fr))}.skills-hero__stats span{overflow-wrap:anywhere}.skills-directory__filters button{padding:.58rem .95rem}.skills-domain__header>div{flex-wrap:wrap}.skills-directory__all-link,.skills-domain__all-link{white-space:normal;overflow-wrap:anywhere}}

/* Lisibilité du héros Compétences sur tablette et contraste du retour sombre. */
[data-theme="dark"] .skills-breadcrumb img,[data-theme="dark"] .skills-back img{filter:brightness(0) invert(1)}
@media(min-width:651px) and (max-width:1050px){.skills-hero{column-gap:clamp(1.25rem,3vw,2rem)}.skills-hero__content{min-width:0;padding-right:.25rem}.skills-hero__visual{min-width:0}.skills-hero__stats{column-gap:.8rem;row-gap:.8rem}.skills-hero__stats article{min-width:0}}

/* ===================== Détail d'un domaine de compétences ===================== */
.skill-domain-page{max-width:var(--container);margin:0 auto;padding:1.4rem 1.5rem 0}.skill-domain-page__topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}.skill-domain-breadcrumb,.skill-domain-breadcrumb a,.skill-domain-back{display:inline-flex;align-items:center;gap:.42rem}.skill-domain-breadcrumb{flex-wrap:wrap;color:var(--color-text-muted);font-size:.76rem}.skill-domain-breadcrumb a,.skill-domain-back{color:var(--navy);font-weight:700}.skill-domain-breadcrumb [aria-current="page"]{color:var(--domain-accent);font-weight:800}.skill-domain-breadcrumb img,.skill-domain-back img{width:15px;height:15px;object-fit:contain}.skill-domain-breadcrumb a:first-child img{transform:rotate(180deg)}.skill-domain-back{padding:.48rem .7rem;border:1px solid var(--color-border);border-radius:6px;font-size:.73rem;white-space:nowrap}.skill-domain-back:hover{border-color:var(--domain-accent);color:var(--domain-accent)}
.skill-domain-hero{display:grid;grid-template-columns:minmax(0,.72fr) minmax(460px,1.28fr);gap:clamp(1.25rem,2.4vw,2.5rem);align-items:center;min-height:330px}.skill-domain-hero h1{max-width:17ch;margin:.25rem 0 .8rem;color:var(--navy);font-size:clamp(2rem,3.7vw,3.45rem);line-height:1.1}.skill-domain-hero h1 span{color:var(--domain-accent)}.skill-domain-hero__icon{display:grid;place-items:center;width:55px;height:55px;margin-bottom:.7rem;border:1px solid var(--domain-accent);border-radius:12px;background:color-mix(in srgb,var(--domain-accent) 10%,transparent)}.skill-domain-hero__icon img{width:32px;height:32px;object-fit:contain;margin:0;color:var(--color-text-muted);font-size:.84rem;line-height:1.65}.skill-domain-hero__visual{position:relative;min-height:330px;overflow:hidden}.skill-domain-hero__image{position:absolute;inset:0;width:108%;height:108%;object-fit:contain;transform:translate(-4%,-4%)}
.skill-domain-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin:1rem 0}.skill-domain-stats article{display:grid;grid-template-columns:42px minmax(0,1fr);gap:.15rem .6rem;align-items:center;min-width:0;padding:.85rem;border:var(--border);border-radius:9px;background:var(--color-bg-elevated)}.skill-domain-stats img{grid-row:1/3;width:34px;height:34px;object-fit:contain;font-size:1.28rem;line-height:1.1;overflow-wrap:anywhere}.skill-domain-stats span{color:var(--color-text-muted);font-size:.66rem;line-height:1.35}
.skill-domain-list,.skill-domain-technologies{margin-top:1rem;padding:1rem;border:var(--border);border-radius:var(--radius);background:var(--color-bg-elevated)}.skill-domain-list>header{display:flex;justify-content:space-between;align-items:end;gap:1rem;margin-bottom:.9rem}.skill-domain-list h2,.skill-domain-technologies h2{margin:0;color:var(--navy);font-size:1.15rem}.skill-domain-list header p,.skill-domain-technologies header p{margin:.25rem 0 0;color:var(--color-text-muted);font-size:.7rem}.skill-domain-list>header>span{padding:.25rem .5rem;border:1px solid var(--domain-accent);border-radius:5px;color:var(--domain-accent);font-size:.68rem;font-weight:700}.skill-domain-list__grid{display:grid;grid-template-columns:repeat(var(--skill-grid-columns,4),minmax(0,1fr));gap:.7rem}.skill-domain-card{display:flex;flex-direction:column;min-width:0;min-height:205px;padding:.8rem;border:var(--border);border-radius:8px;background:var(--color-bg-elevated)}.skill-domain-card__icon{display:grid;place-items:center;width:42px;height:42px;margin-bottom:.55rem;border:1px solid var(--domain-accent);border-radius:50%;background:color-mix(in srgb,var(--domain-accent) 10%,transparent)}.skill-domain-card__icon img{width:24px;height:24px;object-fit:contain;color:var(--navy);font-size:.78rem;line-height:1.35;overflow-wrap:anywhere}.skill-domain-card>p{display:-webkit-box;overflow:hidden;margin:0 0 auto;color:var(--color-text-muted);font-size:.68rem;line-height:1.5;-webkit-line-clamp:3;-webkit-box-orient:vertical}.skill-domain-card>div{display:flex;justify-content:space-between;margin-top:.75rem;color:var(--color-text-muted);font-size:.66rem}.skill-domain-card>div b{color:var(--navy)}.skill-domain-card>i{display:block;height:4px;margin:.38rem 0 .55rem;overflow:hidden;border-radius:9px;background:var(--color-border)}.skill-domain-card>i em{display:block;width:var(--domain-progress);height:100%;border-radius:inherit;background:var(--domain-accent)}.skill-domain-card small{align-self:center;padding:.18rem .65rem;border-radius:99px;color:var(--domain-accent);background:color-mix(in srgb,var(--domain-accent) 14%,transparent);font-size:.61rem;font-weight:700}
.skill-domain-technologies header{display:grid;grid-template-columns:35px minmax(0,1fr) auto;gap:.6rem;align-items:center;margin-bottom:.85rem}.skill-domain-technologies header>img{width:31px;height:31px;object-fit:contain;border:1px solid var(--domain-accent);border-radius:5px;color:var(--domain-accent);font-size:.68rem;white-space:nowrap}.skill-domain-technologies ul{display:flex;flex-wrap:wrap;gap:.45rem;margin:0;padding:0;list-style:none}.skill-domain-technologies li{display:inline-flex;align-items:center;gap:.35rem;max-width:100%;padding:.36rem .55rem;border:1px solid var(--color-border);border-radius:6px;color:var(--color-text);font-size:.68rem;overflow-wrap:anywhere}.skill-domain-technologies li img{width:21px;height:21px;object-fit:contain}.skill-domain-technologies>small{display:block;margin-top:.75rem;color:var(--color-text-muted);font-size:.65rem}.skill-domain-technologies__empty{margin:0;color:var(--color-text-muted);font-size:.75rem}
.skill-domain-switch{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin-top:1rem}.skill-domain-switch a{display:grid;gap:.18rem;min-width:0;padding:.85rem;border:var(--border);border-radius:8px;color:var(--color-text);background:var(--color-bg-elevated)}.skill-domain-switch a:last-child{text-align:right}.skill-domain-switch a:hover{border-color:var(--domain-accent)}.skill-domain-switch span,.skill-domain-switch small{color:var(--color-text-muted);font-size:.65rem}.skill-domain-switch strong{color:var(--domain-accent);font-size:.86rem;overflow-wrap:anywhere}
[data-theme="dark"] .skill-domain-breadcrumb a,[data-theme="dark"] .skill-domain-back,[data-theme="dark"] .skill-domain-hero h1,[data-theme="dark"] .skill-domain-stats strong,[data-theme="dark"] .skill-domain-list h2,[data-theme="dark"] .skill-domain-technologies h2,[data-theme="dark"] .skill-domain-technologies header>strong,[data-theme="dark"] .skill-domain-card h3,[data-theme="dark"] .skill-domain-card>div b{color:#fff}[data-theme="dark"] .skill-domain-breadcrumb img,[data-theme="dark"] .skill-domain-back img{filter:brightness(0) invert(1)}[data-theme="dark"] .skill-domain-hero h1 span,[data-theme="dark"] .skill-domain-breadcrumb [aria-current="page"]{color:var(--domain-accent)}[data-theme="dark"] .skill-domain-hero>div>p:not(.eyebrow),[data-theme="dark"] .skill-domain-stats span,[data-theme="dark"] .skill-domain-list header p,[data-theme="dark"] .skill-domain-technologies header p,[data-theme="dark"] .skill-domain-card>p,[data-theme="dark"] .skill-domain-card>div,[data-theme="dark"] .skill-domain-technologies>small,[data-theme="dark"] .skill-domain-technologies__empty,[data-theme="dark"] .skill-domain-switch span,[data-theme="dark"] .skill-domain-switch small{color:var(--lavender)}[data-theme="dark"] .skill-domain-stats article,[data-theme="dark"] .skill-domain-list,[data-theme="dark"] .skill-domain-technologies,[data-theme="dark"] .skill-domain-card,[data-theme="dark"] .skill-domain-switch a{border-color:rgba(185,197,209,.19);background:var(--navy-panel)}[data-theme="dark"] .skill-domain-technologies li{border-color:rgba(185,197,209,.28);color:#fff}
@media(max-width:1050px){.skill-domain-hero{grid-template-columns:minmax(0,1fr) minmax(310px,1fr);gap:1.25rem;min-height:300px}.skill-domain-hero__visual{min-height:300px}.skill-domain-hero__image{width:104%;height:104%;transform:translate(-2%,-2%)}.skill-domain-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.skill-domain-list__grid{grid-template-columns:repeat(var(--skill-grid-columns-tablet,2),minmax(0,1fr))}}
@media(max-width:650px){.skill-domain-page{padding:1rem 1rem 0}.skill-domain-page__topbar{align-items:flex-start}.skill-domain-back{font-size:0}.skill-domain-back img{width:18px;height:18px}.skill-domain-hero{grid-template-columns:1fr;min-height:0}.skill-domain-hero__visual{order:-1;min-height:225px}.skill-domain-stats{grid-template-columns:1fr;gap:.55rem}.skill-domain-list,.skill-domain-technologies{padding:.75rem}.skill-domain-list>header{align-items:flex-start;flex-direction:column}.skill-domain-list__grid{grid-template-columns:1fr}.skill-domain-card{min-height:0}.skill-domain-technologies header{grid-template-columns:31px minmax(0,1fr)}.skill-domain-technologies header>strong{grid-column:1/-1;justify-self:start}.skill-domain-switch{grid-template-columns:1fr}.skill-domain-switch a:last-child{text-align:left}}

/* ======================== Toutes les technologies ======================== */
.technologies-page{max-width:var(--container);margin:0 auto;padding:1.4rem 1.5rem 0}.technologies-page__topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}.technologies-breadcrumb,.technologies-breadcrumb a,.technologies-back{display:inline-flex;align-items:center;gap:.42rem}.technologies-breadcrumb{flex-wrap:wrap;color:var(--color-text-muted);font-size:.76rem}.technologies-breadcrumb a,.technologies-back{color:var(--navy);font-weight:700}.technologies-breadcrumb [aria-current="page"]{color:var(--primary);font-weight:800}.technologies-breadcrumb img,.technologies-back img{width:15px;height:15px;object-fit:contain}.technologies-breadcrumb a:first-child img{transform:rotate(180deg)}.technologies-back{padding:.48rem .7rem;border:1px solid var(--color-border);border-radius:6px;font-size:.73rem;white-space:nowrap}.technologies-back:hover{border-color:var(--primary);color:var(--primary)}
.technologies-hero{display:grid;grid-template-columns:minmax(0,.8fr) minmax(460px,1.2fr);gap:clamp(1.25rem,2.5vw,2.7rem);align-items:center;min-height:335px}.technologies-hero h1{max-width:16ch;margin:.25rem 0 .8rem;color:var(--navy);font-size:clamp(2.1rem,3.8vw,3.5rem);line-height:1.1}.technologies-hero h1 span{display:block;color:#159dff}.technologies-hero__icon{display:grid;place-items:center;width:55px;height:55px;margin-bottom:.7rem;border:1px solid #159dff;border-radius:12px;background:rgba(21,157,255,.1)}.technologies-hero__icon img{width:31px;height:31px;object-fit:contain;margin:0;color:var(--color-text-muted);font-size:.84rem;line-height:1.7}.technologies-hero__visual{position:relative;min-height:335px;overflow:hidden}.technologies-hero__image{position:absolute;inset:0;width:106%;height:106%;object-fit:contain;transform:translate(-3%,-3%)}
.technologies-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.7rem;margin-top:.6rem}.technologies-stats article{display:grid;grid-template-columns:44px minmax(0,1fr);column-gap:.7rem;align-items:center;min-width:0;padding:.85rem;border:var(--border);border-radius:8px;background:var(--color-bg-elevated)}.technologies-stats img{grid-row:span 2;width:37px;height:37px;object-fit:contain;color:var(--navy);font-size:1.18rem;overflow-wrap:anywhere}.technologies-stats span{color:var(--color-text-muted);font-size:.66rem;line-height:1.35}
.technologies-directory{margin-top:1rem;padding:1rem;border:var(--border);border-radius:var(--radius);background:var(--color-bg-elevated)}.technologies-directory>header{margin-bottom:.9rem}.technologies-directory h2{margin:0;color:var(--navy);font-size:1.15rem}.technologies-directory h2 span{color:#159dff}.technologies-directory>header p{margin:.25rem 0 0;color:var(--color-text-muted);font-size:.7rem}.technologies-directory__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}.technology-domain-card{display:flex;flex-direction:column;min-width:0;padding:.85rem;border:1px solid color-mix(in srgb,var(--technology-domain-accent) 32%,var(--color-border));border-radius:8px;background:var(--color-bg-elevated)}.technology-domain-card>header{display:grid;grid-template-columns:42px minmax(0,1fr);gap:.6rem;align-items:start}.technology-domain-card__icon{display:grid;place-items:center;width:42px;height:42px;border:1px solid var(--technology-domain-accent);border-radius:50%;background:color-mix(in srgb,var(--technology-domain-accent) 10%,transparent)}.technology-domain-card__icon img{width:24px;height:24px;object-fit:contain;color:var(--navy);font-size:.88rem;line-height:1.25;overflow-wrap:anywhere}.technology-domain-card header p{margin:.25rem 0 0;color:var(--color-text-muted);font-size:.67rem;line-height:1.5}.technology-domain-card header strong{grid-column:1/-1;justify-self:end;margin-top:-1.7rem;padding:.23rem .45rem;border-radius:5px;color:var(--technology-domain-accent);background:color-mix(in srgb,var(--technology-domain-accent) 11%,transparent);font-size:.61rem;white-space:nowrap}.technology-domain-card ul{display:flex;flex-wrap:wrap;gap:.4rem;margin:.8rem 0 .7rem;padding:0;list-style:none}.technology-domain-card li{display:inline-flex;align-items:center;gap:.3rem;min-width:0;padding:.26rem .4rem;border:1px solid var(--color-border);border-radius:5px;color:var(--color-text);font-size:.62rem;line-height:1.2}.technology-domain-card li img{width:17px;height:17px;flex:0 0 auto;object-fit:contain}.technology-domain-card li span{overflow-wrap:anywhere}.technology-domain-card__empty{margin:.9rem 0 auto;color:var(--color-text-muted);font-size:.69rem}.technology-domain-card>small{margin-top:auto;padding-top:.55rem;color:#159dff;font-size:.66rem}.technologies-page__empty{min-height:45vh;text-align:center}
[data-theme="dark"] .technologies-breadcrumb a,[data-theme="dark"] .technologies-back,[data-theme="dark"] .technologies-hero h1,[data-theme="dark"] .technologies-stats strong,[data-theme="dark"] .technologies-directory h2,[data-theme="dark"] .technology-domain-card h3{color:#fff}[data-theme="dark"] .technologies-breadcrumb img,[data-theme="dark"] .technologies-back img{filter:brightness(0) invert(1)}[data-theme="dark"] .technologies-breadcrumb [aria-current="page"]{color:#159dff}[data-theme="dark"] .technologies-hero>div>p:not(.eyebrow),[data-theme="dark"] .technologies-stats span,[data-theme="dark"] .technologies-directory>header p,[data-theme="dark"] .technology-domain-card header p,[data-theme="dark"] .technology-domain-card__empty{color:var(--lavender)}[data-theme="dark"] .technologies-stats article,[data-theme="dark"] .technologies-directory,[data-theme="dark"] .technology-domain-card{border-color:rgba(185,197,209,.19);background:var(--navy-panel)}[data-theme="dark"] .technology-domain-card li{border-color:rgba(185,197,209,.27);color:#fff}
@media(max-width:1050px){.technologies-hero{grid-template-columns:minmax(0,1fr) minmax(310px,1fr);min-height:300px;gap:1.25rem}.technologies-hero__visual{min-height:300px}.technologies-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.technologies-directory__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.technologies-page{padding:1rem 1rem 0}.technologies-page__topbar{align-items:flex-start}.technologies-back{font-size:0}.technologies-back img{width:18px;height:18px}.technologies-hero{grid-template-columns:1fr;min-height:0}.technologies-hero__visual{order:-1;min-height:225px}.technologies-hero__image{width:100%;height:100%;transform:none}.technologies-stats{grid-template-columns:1fr;gap:.55rem}.technologies-directory{padding:.75rem}.technologies-directory__grid{grid-template-columns:1fr}.technology-domain-card{padding:.75rem}.technology-domain-card header strong{position:static;justify-self:start;margin:.1rem 0 0}.technology-domain-card li{max-width:100%}}

@media(max-width:650px){.skills-technologies header{align-items:flex-start;flex-wrap:wrap}.skills-technologies__all-link{width:100%;margin-left:2.6rem;text-align:left;white-space:normal;overflow-wrap:anywhere}}

/* ============================= Page Contact ============================= */
.contact-page{max-width:var(--container);margin:0 auto;padding:1.4rem 1.5rem 0}.contact-page__topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.7rem}.contact-breadcrumb,.contact-breadcrumb a,.contact-back{display:inline-flex;align-items:center;gap:.42rem}.contact-breadcrumb{flex-wrap:wrap;color:var(--color-text-muted);font-size:.76rem}.contact-breadcrumb a,.contact-back{color:var(--navy);font-weight:700}.contact-breadcrumb [aria-current="page"]{color:var(--gold-dark);font-weight:800}.contact-breadcrumb img,.contact-back img{width:15px;height:15px;object-fit:contain}.contact-breadcrumb a img{transform:rotate(180deg)}.contact-back{padding:.48rem .7rem;border:1px solid var(--color-border);border-radius:6px;font-size:.73rem;white-space:nowrap}.contact-back:hover{border-color:var(--gold);color:var(--gold-dark)}
.contact-hero{display:grid;grid-template-columns:minmax(0,.85fr) minmax(450px,1.15fr);align-items:center;gap:1.4rem;min-height:350px}.contact-hero h1{max-width:11ch;margin:.2rem 0 .8rem;color:var(--navy);font-size:clamp(2.2rem,4vw,3.8rem);line-height:1.08}.contact-hero h1 span{color:var(--gold-dark)}.contact-hero__content>p:not(.eyebrow){max-width:48ch;margin:0;color:var(--color-text-muted);font-size:.86rem;line-height:1.7}.contact-hero__visual{position:relative;min-height:350px;overflow:hidden}.contact-hero__image{position:absolute;inset:0;width:106%;height:106%;object-fit:contain;transform:translate(-3%,-3%)}.contact-hero__commitments{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem;margin-top:1.35rem}.contact-hero__commitments article{display:grid;gap:.27rem;min-width:0}.contact-hero__commitments b{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--gold);border-radius:50%;color:var(--gold-dark)}.contact-hero__commitments svg,.contact-hero__commitments img{width:21px;height:21px;object-fit:contain}.contact-hero__commitments strong{color:var(--navy);font-size:.68rem}.contact-hero__commitments span{color:var(--color-text-muted);font-size:.62rem;line-height:1.35}
.contact-methods{margin-top:.4rem}.contact-methods>h2,.contact-audience h2{margin:0 0 .7rem;color:var(--navy);font-size:1.12rem;text-align:center}.contact-methods>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.7rem}.contact-methods article{display:grid;grid-template-columns:42px minmax(0,1fr);gap:.12rem .65rem;min-width:0;padding:.85rem;border:var(--border);border-radius:8px;background:var(--color-bg-elevated)}.contact-methods b{grid-row:span 3;display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--gold);border-radius:50%;color:var(--gold-dark)}.contact-methods b svg,.contact-methods b img{width:23px;height:23px;object-fit:contain}.contact-methods h3{margin:0;color:var(--navy);font-size:.73rem}.contact-methods a,.contact-methods strong{min-width:0;color:var(--gold-dark);font-size:.68rem;overflow-wrap:anywhere}.contact-methods small{color:var(--color-text-muted);font-size:.63rem}
.contact-content{display:grid;grid-template-columns:minmax(0,1.28fr) minmax(270px,.8fr);gap:.8rem;margin-top:1rem}.contact-message-form,.contact-side section,.contact-audience{padding:1rem;border:var(--border);border-radius:var(--radius);background:var(--color-bg-elevated)}.contact-message-form{display:grid;gap:.68rem}.contact-message-form header,.contact-side header{display:flex;align-items:center;gap:.65rem}.contact-message-form header>span,.contact-side header>span{color:var(--gold-dark)}.contact-message-form header svg,.contact-side header svg,.contact-message-form header img,.contact-side header img{width:25px;height:25px;object-fit:contain}.contact-message-form h2,.contact-side h2{margin:0;color:var(--navy);font-size:1rem}.contact-message-form header p,.contact-side p{margin:.2rem 0 0;color:var(--color-text-muted);font-size:.68rem;line-height:1.45}.contact-message-form label{display:grid;gap:.3rem;color:var(--color-text-muted);font-size:.67rem}.contact-message-form input:not([type=checkbox]),.contact-message-form textarea{width:100%;min-width:0;padding:.65rem .72rem;border:1px solid var(--color-border);border-radius:6px;color:var(--color-text);background:transparent;font:inherit;font-size:.73rem;resize:vertical}.contact-message-form input:focus,.contact-message-form textarea:focus{outline:0;border-color:var(--gold)}.contact-message-form__row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.contact-message-form__consent{grid-template-columns:18px minmax(0,1fr);align-items:start;line-height:1.45}.contact-message-form__consent input{margin:.1rem 0 0;accent-color:var(--gold-dark)}.contact-message-form .btn{justify-content:center;border:0}.contact-side{display:grid;gap:.8rem}.contact-side section{min-width:0}.contact-side dl{display:grid;gap:.58rem;margin:.9rem 0 0}.contact-side dl div{display:flex;justify-content:space-between;gap:.5rem;color:var(--color-text-muted);font-size:.7rem}.contact-side dt{color:var(--navy);font-weight:700}.contact-side dd{margin:0}.contact-side__socials{display:flex;gap:.5rem;margin-top:.8rem}.contact-side__socials a{display:grid;place-items:center;width:35px;height:35px;border:1px solid var(--color-border);border-radius:6px}.contact-side__socials img{width:19px;height:19px;object-fit:contain}.contact-side__socials .theme-icon-dark{display:none}[data-theme="dark"] .contact-side__socials .theme-icon-light{display:none}[data-theme="dark"] .contact-side__socials .theme-icon-dark{display:block}.contact-feedback{margin-top:1rem}.contact-audience{margin-top:1rem}.contact-audience header{max-width:720px;margin:0 auto .9rem;text-align:center}.contact-audience header p{margin:0;color:var(--color-text-muted);font-size:.72rem;line-height:1.5}.contact-audience>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}.contact-audience article{min-width:0;padding:.85rem;border:var(--border);border-radius:8px}.contact-audience article>span{display:block;color:var(--azure)}.contact-audience svg,.contact-audience img{width:29px;height:29px;object-fit:contain}.contact-audience h3{margin:.4rem 0;color:var(--navy);font-size:.86rem}.contact-audience article p{margin:0;color:var(--color-text-muted);font-size:.68rem;line-height:1.5}.contact-page__cta{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1rem;align-items:center;margin:1rem 0 0;padding:1.05rem 1.35rem;border:1px solid rgba(31,141,236,.58);border-radius:var(--radius);color:#fff;background:radial-gradient(circle at 88% 40%,rgba(21,157,255,.22),transparent 25%),linear-gradient(115deg,#0d2740,#07131e)}.contact-page__cta>span{display:grid;place-items:center;width:55px;height:55px;border:1px solid var(--gold);border-radius:50%;color:var(--gold)}.contact-page__cta>span svg,.contact-page__cta>span img{width:29px;height:29px;object-fit:contain}.contact-page__cta p,.contact-page__cta h2,.contact-page__cta small{margin:0}.contact-page__cta p{font-size:.7rem}.contact-page__cta h2{margin:.18rem 0;color:#fff;font-size:1.18rem}.contact-page__cta h2 em{color:var(--gold);font-style:normal}.contact-page__cta small{color:var(--lavender);font-size:.68rem}.contact-page__cta .btn{white-space:nowrap}.contact-page__cta .btn svg{width:16px;height:16px}
[data-theme="dark"] .contact-breadcrumb a,[data-theme="dark"] .contact-back,[data-theme="dark"] .contact-hero h1,[data-theme="dark"] .contact-hero__commitments strong,[data-theme="dark"] .contact-methods>h2,[data-theme="dark"] .contact-methods h3,[data-theme="dark"] .contact-side h2,[data-theme="dark"] .contact-message-form h2,[data-theme="dark"] .contact-side dt,[data-theme="dark"] .contact-audience h2,[data-theme="dark"] .contact-audience h3{color:#fff}[data-theme="dark"] .contact-breadcrumb img,[data-theme="dark"] .contact-back img{filter:brightness(0) invert(1)}[data-theme="dark"] .contact-hero__content>p:not(.eyebrow),[data-theme="dark"] .contact-hero__commitments span,[data-theme="dark"] .contact-methods small,[data-theme="dark"] .contact-side p,[data-theme="dark"] .contact-side dl div,[data-theme="dark"] .contact-audience header p,[data-theme="dark"] .contact-audience article p{color:var(--lavender)}[data-theme="dark"] .contact-methods article,[data-theme="dark"] .contact-message-form,[data-theme="dark"] .contact-side section,[data-theme="dark"] .contact-audience,[data-theme="dark"] .contact-audience article{border-color:rgba(185,197,209,.19);background:var(--navy-panel)}[data-theme="dark"] .contact-message-form input:not([type=checkbox]),[data-theme="dark"] .contact-message-form textarea,[data-theme="dark"] .contact-side__socials a{border-color:rgba(185,197,209,.28);color:#fff}
[data-theme="dark"] .contact-message-form input:not([type=checkbox]):focus,[data-theme="dark"] .contact-message-form textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(247,185,52,.18)}
@media(max-width:1050px){.contact-hero{grid-template-columns:minmax(0,1fr) minmax(320px,.95fr);min-height:310px}.contact-hero__visual{min-height:310px}.contact-methods>div{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-audience>div{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){.contact-page{padding:1rem 1rem 0}.contact-page__topbar{align-items:flex-start}.contact-back{font-size:0}.contact-back img{width:18px;height:18px}.contact-hero{grid-template-columns:1fr;min-height:0}.contact-hero__visual{order:-1;min-height:230px}.contact-hero__image{width:100%;height:100%;transform:none}.contact-hero__commitments{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-methods>div,.contact-content,.contact-audience>div{grid-template-columns:1fr}.contact-methods article{padding:.75rem}.contact-message-form__row{grid-template-columns:1fr}.contact-page__cta{grid-template-columns:1fr;text-align:center}.contact-page__cta>span,.contact-page__cta .btn{justify-self:center}}

/* Les boutons Retour utilisent toujours une flèche visible en thème sombre. */
[data-theme="dark"] .about-back img,[data-theme="dark"] .projects-back img,[data-theme="dark"] .career-back img,[data-theme="dark"] .about-breadcrumb img,[data-theme="dark"] .projects-breadcrumb img,[data-theme="dark"] .career-breadcrumb img{filter:brightness(0) invert(1)}

/* Compteurs bas de cartes Technologies : compétences à gauche, total à droite. */
.technology-domain-card__meta{display:flex;justify-content:space-between;align-items:center;gap:.55rem;margin-top:auto;padding-top:.55rem}.technology-domain-card__meta small{color:#159dff;font-size:.66rem}.technology-domain-card__meta strong{padding:.23rem .45rem;border-radius:5px;color:var(--technology-domain-accent);background:color-mix(in srgb,var(--technology-domain-accent) 11%,transparent);font-size:.61rem;white-space:nowrap}.technology-domain-card>small{display:none}@media(max-width:650px){.technology-domain-card__meta{align-items:flex-start;flex-direction:column}}

/* Aération du Hero Contact et bouton de formulaire compact. */
@media(min-width:1051px){.contact-hero{grid-template-columns:minmax(0,.8fr) minmax(500px,1.2fr);gap:clamp(2rem,4vw,4.25rem);min-height:400px;margin-bottom:1.35rem}.contact-hero__visual{min-height:400px}.contact-hero__image{width:100%;height:100%;transform:none}.contact-methods{margin-top:.65rem}}.contact-hero__commitments{gap:1rem;margin-top:1.6rem}.contact-hero__commitments article{gap:.42rem}.contact-hero__commitments b{margin-bottom:.1rem}.contact-message-form .btn{align-self:start;justify-self:start;min-height:0;padding:.68rem 1.15rem;line-height:1.2}.contact-message-form .btn svg{width:17px;height:17px}

@media(min-width:651px) and (max-width:790px){.contact-hero__commitments{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.15rem 1.35rem;margin-top:1.75rem}.contact-hero__commitments article{gap:.48rem}.contact-hero__commitments b{width:42px;height:42px}.contact-hero__commitments strong{font-size:.74rem}.contact-hero__commitments span{font-size:.68rem;line-height:1.45}}

/* Validation et retour asynchrone du formulaire Contact. */
.contact-field-error{display:block;min-height:1.05em;color:#c42b35;font-size:.63rem;font-weight:700;line-height:1.35}.contact-message-form input.is-invalid,.contact-message-form textarea.is-invalid{border-color:#d83b46;background:rgba(216,59,70,.04)}.contact-message-form .btn{position:relative}.contact-submit__loading{display:none;align-items:center;gap:.45rem}.contact-submit__loading i{width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:contact-spin .7s linear infinite}.contact-message-form .btn.is-loading .contact-submit__label{display:none}.contact-message-form .btn.is-loading .contact-submit__loading{display:inline-flex}.contact-message-form .btn:disabled{cursor:wait;opacity:.82}.contact-modal{position:fixed;z-index:1000;inset:0;display:grid;place-items:center;padding:1rem;background:rgba(1,8,14,.7);backdrop-filter:blur(4px)}.contact-modal[hidden]{display:none}.contact-modal__panel{position:relative;width:min(100%,420px);padding:2rem 1.5rem 1.4rem;border:1px solid var(--color-border);border-radius:14px;color:var(--color-text);text-align:center;background:var(--color-bg-elevated);box-shadow:0 22px 60px rgba(0,0,0,.3)}.contact-modal__icon{display:grid;place-items:center;width:54px;height:54px;margin:0 auto .8rem;border-radius:50%;color:#fff;background:#d83b46;font-size:1.6rem;font-weight:800}.contact-modal[data-type="success"] .contact-modal__icon{background:#269c55}.contact-modal h2{margin:0;color:var(--navy);font-size:1.2rem}.contact-modal p{margin:.55rem auto 1.1rem;color:var(--color-text-muted);font-size:.82rem;line-height:1.55}.contact-modal__close{position:absolute;top:.55rem;right:.65rem;border:0;color:var(--color-text-muted);background:transparent;font-size:1.4rem;cursor:pointer}.has-contact-modal{overflow:hidden}@keyframes contact-spin{to{transform:rotate(360deg)}}[data-theme="dark"] .contact-modal__panel{border-color:rgba(185,197,209,.28);background:var(--navy-panel)}[data-theme="dark"] .contact-modal h2{color:#fff}[data-theme="dark"] .contact-modal p{color:var(--lavender)}[data-theme="dark"] .contact-message-form input.is-invalid,[data-theme="dark"] .contact-message-form textarea.is-invalid{border-color:#ff6570;background:rgba(255,101,112,.08)}

.contact-modal__panel{max-height:min(88vh,620px);overflow-y:auto;-webkit-overflow-scrolling:touch}
/* Fond bloquant derrière les bannières du formulaire de contact — même
   principe que le tiroir de navigation mobile (.navbar__backdrop) : empêche
   toute autre interaction avec la page tant qu'une bannière est affichée. */
body.has-contact-modal { overflow: hidden; }
body.has-contact-modal::after {
  content: '';
  position: fixed; inset: 0; z-index: 999;
  background: rgba(6, 10, 22, 0.55);
  -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
}
[data-theme="dark"] body.has-contact-modal::after { background: rgba(6, 10, 22, 0.7); }
/* Bannière de message (succès/erreur du formulaire de contact) : plus une
   fenêtre centrée avec fond sombre, mais une bannière fixée en haut de
   l'écran, centrée horizontalement, juste sous le header — sur tous les
   types d'écran. --header-offset est calculée en JS (hauteur réelle du
   header, qui varie légèrement selon la taille d'écran). */
.contact-modal--toast{
  position:fixed;
  inset:auto;
  top:calc(var(--header-offset, 64px) + .6rem);
  left:50%;
  transform:translateX(-50%);
  z-index:1000;
  display:block;
  width:min(94vw,480px);
  padding:0;
  background:transparent;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
  pointer-events:none;
}
.contact-modal--toast[hidden]{display:none}
.contact-modal--toast .contact-modal__panel{
  pointer-events:auto;
  width:100%;
  max-height:min(70vh,460px);
  /* Couleurs déjà pilotées par les variables --color-* / --navy-panel,
     qui changent automatiquement avec [data-theme="dark"] — voir plus
     haut .contact-modal__panel et [data-theme="dark"] .contact-modal__panel. */
  box-shadow:0 14px 38px rgba(0,0,0,.22);
}
[data-theme="dark"] .contact-modal--toast .contact-modal__panel{box-shadow:0 14px 38px rgba(0,0,0,.4)}
@media(max-width:480px){
  .contact-modal--toast{top:calc(var(--header-offset, 56px) + .5rem);width:min(94vw,440px)}
}
.contact-modal__panel--confirm{width:min(100%,480px);text-align:left}
.contact-modal__panel--confirm h2{text-align:center}
.contact-modal__panel--confirm > p{text-align:center}
.contact-modal__recap{display:grid;gap:.6rem;margin:1.1rem 0;padding:.9rem 1rem;border:1px solid var(--color-border);border-radius:10px;background:var(--color-bg-alt)}
.contact-modal__recap div{display:grid;grid-template-columns:90px minmax(0,1fr);gap:.5rem;align-items:start}
.contact-modal__recap dt{color:var(--color-text-muted);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.contact-modal__recap dd{margin:0;color:var(--color-text);font-size:.85rem;line-height:1.5;overflow-wrap:anywhere;white-space:pre-wrap}
.contact-modal__actions{display:flex;gap:.65rem;margin-top:.4rem}
.contact-modal__actions .btn{flex:1 1 0;justify-content:center}
.contact-modal__actions .btn svg{width:17px;height:17px}
[data-theme="dark"] .contact-modal__recap{border-color:rgba(185,197,209,.28)}
/* Modale de contact : adaptation tablette/mobile — panneau plus compact,
   icône et textes réduits, marges resserrées pour rester confortable
   même sur les petits écrans. */
@media(max-width:480px){
  .contact-modal{padding:.65rem}
  .contact-modal__panel{width:100%;padding:1.5rem 1.1rem 1.1rem;border-radius:12px}
  .contact-modal__icon{width:46px;height:46px;font-size:1.35rem;margin-bottom:.6rem}
  .contact-modal h2{font-size:1.05rem}
  .contact-modal p{font-size:.78rem;margin:.5rem auto 1rem}
  .contact-modal .btn{width:100%;padding:.65rem 1rem}
  .contact-modal__close{top:.45rem;right:.55rem;font-size:1.25rem;padding:.25rem}
  .contact-modal__actions{flex-direction:column}
  .contact-modal__recap div{grid-template-columns:1fr}
}
/* Écrans très bas (mobile en mode paysage) : on réduit encore la hauteur
   réservée et les espacements verticaux pour garder le bouton "Fermer"
   visible sans avoir à défiler outre mesure. */
@media(max-height:480px){
  .contact-modal__panel{max-height:92vh;padding:1.1rem 1.4rem .9rem}
  .contact-modal__icon{width:40px;height:40px;font-size:1.2rem;margin-bottom:.45rem}
  .contact-modal h2{font-size:1rem;margin-bottom:.2rem}
  .contact-modal p{margin:.35rem auto .7rem}
}

/* Aperçu CV de l'accueil : une synthèse, sans dupliquer la page dédiée. */
.home-cv{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1.2rem;align-items:center;max-width:var(--container);margin:1.2rem auto 0;padding:1.2rem 1.45rem;border:1px solid rgba(216,163,75,.52);border-radius:var(--radius);background:radial-gradient(circle at 82% 120%,rgba(247,185,52,.18),transparent 30%),linear-gradient(115deg,#102438,#07131e)}.home-cv__icon{display:grid;place-items:center;width:62px;height:62px;border:1px solid var(--gold);border-radius:50%;color:var(--gold)}.home-cv__icon svg{width:30px;height:30px}.home-cv__icon img{width:34px;height:34px;object-fit:contain}.home-cv p,.home-cv h2{margin:0}.home-cv h2{margin:.12rem 0 .38rem;color:#fff;font-size:1.25rem}.home-cv h2 span{color:var(--gold)}.home-cv__content>p:not(.eyebrow){max-width:62ch;color:var(--lavender);font-size:.76rem;line-height:1.55}.home-cv .eyebrow{margin-bottom:.25rem;color:var(--gold)}.home-cv ul{display:flex;flex-wrap:wrap;gap:.35rem .8rem;margin:.65rem 0 0;padding:0;list-style:none;color:var(--lavender-2);font-size:.67rem}.home-cv li{display:inline-flex;align-items:center;gap:.3rem}.home-cv li::before{content:'•';color:var(--gold);font-size:1rem}.home-cv__actions{display:grid;gap:.55rem;justify-items:stretch;min-width:180px}.home-cv__actions .btn,.home-cv__download{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;white-space:nowrap}.home-cv__actions svg{width:17px;height:17px}.home-cv__download{padding:.5rem .65rem;border:1px solid rgba(234,201,138,.55);border-radius:6px;color:var(--gold-light);font-size:.7rem;font-weight:700}.home-cv__download:hover{border-color:var(--gold);color:#fff;background:rgba(247,185,52,.1)}
/* Projets : à partir d'une tablette étroite, l'illustration devient une vraie ligne au-dessus du contenu. */
@media(max-width:780px){.projects-hero{grid-template-columns:1fr;gap:.5rem;min-height:0;margin-bottom:1.75rem;overflow:visible}.projects-hero__visual{display:block;order:-1;min-height:250px;overflow:hidden}.projects-hero__image{object-fit:contain;object-position:center}.projects-hero__content{padding:.35rem 0 0}.projects-hero__content>p:not(.eyebrow){max-width:62ch}.projects-hero__stats{width:100%;margin-top:1.3rem;gap:clamp(.55rem,2vw,1rem)}.projects-hero__stats div{grid-template-columns:34px minmax(0,1fr);padding-right:.55rem}.projects-hero__stats img{width:33px;height:33px}.projects-hero__stats strong{font-size:1.36rem}.projects-hero__stats span{font-size:.7rem}}
@media(max-width:650px){.projects-hero__visual{min-height:220px}.projects-hero__stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.projects-hero__stats div{grid-template-columns:1fr;padding:.55rem .3rem;text-align:center}.projects-hero__stats img{grid-row:auto;justify-self:center;width:31px;height:31px}.projects-hero__stats span{font-size:.66rem}.home-cv{grid-template-columns:1fr;margin:1rem 1rem 0;padding:1.15rem;text-align:center}.home-cv__icon{justify-self:center}.home-cv__content>p:not(.eyebrow){margin-inline:auto}.home-cv ul{justify-content:center}.home-cv__actions{width:min(100%,280px);margin-inline:auto}}

/* ===================== Page CV dédiée ===================== */
.cv-page{max-width:var(--container);margin:0 auto;padding:1.35rem 1.5rem 0}.cv-page__topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.65rem}.cv-breadcrumb,.cv-breadcrumb a,.cv-back{display:inline-flex;align-items:center;gap:.45rem}.cv-breadcrumb{color:var(--color-text-muted);font-size:.8rem}.cv-breadcrumb a,.cv-back{color:var(--navy);font-weight:700}.cv-breadcrumb [aria-current="page"]{color:var(--gold-dark);font-weight:800}.cv-breadcrumb img,.cv-back img{width:15px;height:15px;object-fit:contain}.cv-breadcrumb a img{transform:rotate(180deg)}.cv-back{padding:.45rem .72rem;border:1px solid var(--color-border);border-radius:6px;font-size:.76rem}.cv-back:hover{border-color:var(--gold);color:var(--gold-dark)}
.cv-hero{display:grid;grid-template-columns:minmax(0,.94fr) minmax(360px,.96fr);align-items:center;gap:clamp(1.75rem,4vw,4rem);min-height:365px;padding:.75rem 0 1.8rem}.cv-hero__content{position:relative;z-index:1}.cv-hero h1{margin:0 0 .95rem;color:var(--navy);font-size:clamp(2.4rem,4.6vw,4.5rem);line-height:1.05}.cv-hero h1 span{color:var(--azure)}.cv-hero__content>p:not(.eyebrow){max-width:45ch;margin:0;color:var(--color-text-muted);font-size:.94rem;line-height:1.75}.cv-hero__actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.5rem}.cv-hero__actions .btn,.cv-fullscreen-trigger{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;min-height:48px;padding:.72rem 1.1rem;border-radius:6px;font:inherit;font-size:.78rem;font-weight:800}.cv-hero__actions .btn{border:0}.cv-hero__actions svg,.cv-fullscreen-trigger svg{width:20px;height:20px}.cv-hero__actions small{font-size:inherit}.cv-fullscreen-trigger{border:1px solid var(--color-border);color:var(--navy);background:transparent;cursor:pointer}.cv-fullscreen-trigger:hover{border-color:var(--azure);color:var(--azure)}.cv-hero__visual{position:relative;min-height:340px;align-self:stretch;overflow:hidden}.cv-hero__visual::before{content:"";position:absolute;inset:9% 3% 1%;border:1px solid rgba(10,138,218,.35);border-radius:48% 52% 47% 53%;background:radial-gradient(circle at 52% 43%,rgba(10,138,218,.18),transparent 61%)}.cv-hero__visual img{position:absolute;z-index:1;inset:0;width:100%;height:100%;object-fit:contain;object-position:center bottom}
.cv-document{position:relative;margin:0 auto 1.1rem;padding:.7rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg-elevated);box-shadow:0 14px 35px rgba(7,19,30,.1)}.cv-document__bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.15rem .15rem .7rem;color:var(--navy);font-size:.76rem;font-weight:800}.cv-document__bar>span,.cv-document__bar>div,.cv-document__bar button,.cv-document__bar a{display:flex;align-items:center;gap:.42rem}.cv-document__bar svg{width:18px;height:18px;color:var(--azure)}.cv-document__bar>div{gap:.45rem}.cv-document__bar button,.cv-document__bar a{padding:.42rem .6rem;border:1px solid var(--color-border);border-radius:5px;color:var(--navy);background:transparent;font:inherit;font-size:.68rem;font-weight:700;cursor:pointer}.cv-document__bar a{border-color:rgba(10,138,218,.5);color:var(--azure)}.cv-document__bar button:hover{border-color:var(--azure);color:var(--azure)}.cv-document__viewer{display:block;width:100%;height:min(78vh,950px);min-height:560px;overflow-y:auto;border:0;border-radius:6px;background:#fff}.cv-document__viewer canvas{display:block;width:100%;height:auto;margin:0 auto .5rem}.cv-document__viewer canvas:last-child{margin-bottom:0}.cv-document__viewer-message{padding:2rem;color:var(--color-text-muted);text-align:center}.cv-document__viewer-message a{color:var(--gold-dark);font-weight:800}.cv-document__viewer iframe{display:block;width:100%;height:100%;border:0;border-radius:6px;background:#fff}.cv-document:fullscreen{display:flex;flex-direction:column;width:100%;height:100%;max-width:none;margin:0;padding:1rem;border:0;border-radius:0;background:var(--color-bg)}.cv-document:fullscreen .cv-document__viewer{flex:1;height:auto;max-height:none;border-radius:6px}.cv-document:fullscreen .cv-document__bar{flex:none}
.cv-unavailable,.cv-general-note{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(230px,.65fr);gap:1.1rem;align-items:center;margin:1rem 0;padding:1.15rem 1.35rem;border:1px solid rgba(10,138,218,.33);border-radius:var(--radius);background:linear-gradient(105deg,rgba(10,138,218,.08),transparent 72%)}.cv-unavailable{grid-template-columns:auto minmax(0,1fr)}.cv-unavailable>span,.cv-general-note>span{display:grid;place-items:center;width:60px;height:60px;border-radius:50%;color:var(--azure);background:rgba(10,138,218,.12)}.cv-unavailable svg,.cv-general-note svg,.cv-unavailable img,.cv-general-note img{width:29px;height:29px;object-fit:contain}.cv-unavailable h2,.cv-general-note h2{margin:0 0 .3rem;color:var(--navy);font-size:1.08rem}.cv-unavailable p,.cv-general-note p{margin:0;color:var(--color-text-muted);font-size:.76rem;line-height:1.6}.cv-general-note blockquote{margin:0;padding-left:1.1rem;border-left:1px solid rgba(10,138,218,.32);color:var(--navy);font-family:var(--font-heading);font-size:1rem;font-weight:700;line-height:1.45;text-align:center}.cv-benefits{margin:1.45rem 0}.cv-benefits header{text-align:center}.cv-benefits header h2{display:inline-block;margin:0;color:var(--navy);font-size:1.15rem}.cv-benefits header h2::after{content:"";display:block;width:42px;height:2px;margin:.45rem auto 1rem;background:var(--azure)}.cv-benefits>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.cv-benefits article{position:relative;min-width:0;padding:1rem 1rem 1rem 4.7rem;border-left:1px solid var(--color-border)}.cv-benefits article:first-child{border-left:0}.cv-benefits article>span{position:absolute;top:.75rem;left:.75rem;display:grid;place-items:center;width:48px;height:48px;border-radius:50%;color:var(--azure);background:rgba(10,138,218,.1)}.cv-benefits svg,.cv-benefits img{width:26px;height:26px;object-fit:contain}.cv-benefits h3{margin:0 0 .35rem;color:var(--navy);font-size:.88rem}.cv-benefits p{margin:0;color:var(--color-text-muted);font-size:.72rem;line-height:1.55}.cv-page__cta{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1.1rem;align-items:center;margin:1.2rem 0 0;padding:1.1rem 1.4rem;border:1px solid rgba(10,138,218,.48);border-radius:var(--radius);color:#fff;background:radial-gradient(circle at 88% 42%,rgba(10,138,218,.28),transparent 27%),linear-gradient(115deg,#09254b,#061426)}.cv-page__cta>span{display:grid;place-items:center;width:56px;height:56px;border:1px solid var(--azure);border-radius:50%;color:#fff;background:rgba(10,138,218,.18)}.cv-page__cta>span svg,.cv-page__cta>span img{width:28px;height:28px;object-fit:contain}.cv-page__cta p,.cv-page__cta h2,.cv-page__cta small{margin:0}.cv-page__cta p{color:var(--lavender-2);font-size:.72rem}.cv-page__cta h2{margin:.1rem 0;color:#fff;font-size:1.25rem}.cv-page__cta h2 em{color:#6ecaff;font-style:normal}.cv-page__cta small{color:var(--lavender);font-size:.72rem}.cv-page__cta .btn{white-space:nowrap}.cv-page__cta .btn svg{width:16px;height:16px}
[data-theme="dark"] .cv-breadcrumb a,[data-theme="dark"] .cv-back,[data-theme="dark"] .cv-hero h1,[data-theme="dark"] .cv-fullscreen-trigger,[data-theme="dark"] .cv-document__bar,[data-theme="dark"] .cv-document__bar button,[data-theme="dark"] .cv-document__bar a,[data-theme="dark"] .cv-unavailable h2,[data-theme="dark"] .cv-general-note h2,[data-theme="dark"] .cv-general-note blockquote,[data-theme="dark"] .cv-benefits h2,[data-theme="dark"] .cv-benefits h3{color:#fff}[data-theme="dark"] .cv-breadcrumb img,[data-theme="dark"] .cv-back img{filter:brightness(0) invert(1)}[data-theme="dark"] .cv-hero__content>p:not(.eyebrow),[data-theme="dark"] .cv-unavailable p,[data-theme="dark"] .cv-general-note p,[data-theme="dark"] .cv-benefits p{color:var(--lavender)}[data-theme="dark"] .cv-document{border-color:rgba(185,197,209,.22);background:var(--navy-panel)}[data-theme="dark"] .cv-document__bar button{border-color:rgba(185,197,209,.3)}[data-theme="dark"] .cv-general-note,[data-theme="dark"] .cv-unavailable{background:linear-gradient(105deg,rgba(10,138,218,.13),transparent 72%)}
@media(max-width:1050px){.cv-hero{grid-template-columns:minmax(0,1fr) minmax(280px,.8fr);gap:1.5rem;min-height:310px}.cv-hero__visual{min-height:290px}.cv-benefits article{padding-left:1rem;padding-top:4rem;border:var(--border);border-radius:8px}.cv-benefits article>span{top:.7rem;left:1rem}.cv-general-note{grid-template-columns:auto minmax(0,1fr)}.cv-general-note blockquote{grid-column:1/-1;padding:1rem 0 0;border-top:1px solid rgba(10,138,218,.28);border-left:0}}
@media(max-width:650px){.cv-page{padding:1rem 1rem 0}.cv-page__topbar{align-items:flex-start}.cv-back{font-size:0}.cv-back img{width:18px;height:18px}.cv-hero{grid-template-columns:1fr;gap:.2rem;min-height:0;padding-top:0}.cv-hero__visual{order:-1;min-height:235px}.cv-hero__content>p:not(.eyebrow){font-size:.84rem}.cv-hero__actions{display:grid;grid-template-columns:1fr;margin-top:1.1rem}.cv-hero__actions .btn,.cv-fullscreen-trigger{width:100%}.cv-document{padding:.45rem}.cv-document__bar>span{font-size:.65rem}.cv-document__bar button span,.cv-document__bar a span{display:none}.cv-document__bar button,.cv-document__bar a{padding:.4rem}.cv-document__viewer{height:69vh;min-height:440px}.cv-unavailable,.cv-general-note{grid-template-columns:1fr;text-align:center}.cv-unavailable>span,.cv-general-note>span{justify-self:center}.cv-general-note blockquote{grid-column:auto;padding:1rem 0 0;border-top:1px solid rgba(10,138,218,.28);border-left:0}.cv-benefits>div{grid-template-columns:1fr;gap:.7rem}.cv-benefits article{padding:1rem 1rem 1rem 4.5rem;border:var(--border);border-radius:8px}.cv-benefits article>span{top:.75rem;left:.75rem}.cv-page__cta{grid-template-columns:1fr;text-align:center}.cv-page__cta>span,.cv-page__cta .btn{justify-self:center}}

/* Boutons masqués à la demande : la carte projet reste entièrement
   cliquable via son image/titre, ces boutons de texte deviennent
   redondants et sont retirés visuellement. */
.project-preview-card__link { display: none; }
.project-directory-card__actions { display: none; }

/* Page 404 personnalisée */
.not-found-page {
  min-height: 60vh;
  display: flex; align-items: center; justify-content: center;
  padding: 3rem 1.5rem;
  text-align: center;
}
.not-found-page__content { max-width: 480px; }
.not-found-page__code {
  display: block; font-family: var(--font-heading); font-weight: 700;
  font-size: clamp(3.5rem, 12vw, 5.5rem); line-height: 1;
  color: var(--gold); margin-bottom: .5rem;
}
.not-found-page h1 { font-family: var(--font-heading); font-size: clamp(1.4rem, 4vw, 1.8rem); color: var(--navy); margin: 0 0 .8rem; }
.not-found-page p { color: var(--color-text-muted); font-size: .95rem; line-height: 1.65; margin: 0 0 1.6rem; }
.not-found-page__actions { display: flex; flex-wrap: wrap; gap: .75rem; justify-content: center; }
[data-theme="dark"] .not-found-page h1 { color: #fff; }
