/* LabAtelier ÉGIDE — feuille de style partagée (accueil + pages d'événements) */
:root {
  --bg: #FFFFFF;
  --paper: #F2F2F6;              /* cards — différenciation renforcée */
  --ink: #2E2D7E;
  --ink-deep: #1F1E5A;
  --accent: #F47920;             /* orange officiel — bordures, backgrounds, éléments non-text */
  --accent-text: #A84E0E;        /* orange pour le texte : 5,6:1 sur blanc, 5,0:1 sur les cartes (AA) */
  --pearl: #E4E4EC;
  --muted: #5A5A6E;
  --text: #1A1A2E;
  --on-ink: #F4F4F8;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
  background: var(--bg);
  color: var(--text);
  font-family: 'Euclid Circular A', sans-serif;
  line-height: 1.6;
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3, h4, .serif { font-family: 'Spectral', serif; color: var(--ink); font-weight: 600; }
a { color: inherit; text-decoration: none; transition: opacity .15s; }

/* Accessibility — focus visible */
a:focus,
button:focus,
[tabindex]:focus { outline: none; }
a:focus-visible,
button:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid var(--ink);
  outline-offset: 2px;
  box-shadow: 0 0 0 1px var(--ink);
  border-radius: 2px;
}

/* Accessibility — skip link */
.skip-link {
  position: absolute;
  top: -60px;
  left: 1rem;
  background: var(--ink);
  color: #fff;
  padding: 0.8rem 1.25rem;
  text-decoration: none;
  font-weight: 600;
  border-radius: 0 0 4px 4px;
  z-index: 1000;
  transition: top .15s;
}
.skip-link:focus { top: 0; }

/* Texte réservé aux lecteurs d'écran (ex. « nouvel onglet » après un lien externe) */
.vh {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

/* Layout */
.layout {
  display: grid;
  grid-template-columns: 260px 1fr;
  min-height: 100vh;
}

aside {
  border-right: 1px solid var(--pearl);
  background: var(--bg);
  padding: 2.5rem 2rem;
  position: sticky; top: 0; height: 100vh;
  display: flex; flex-direction: column; justify-content: space-between;
  overflow-y: auto;   /* filet de sécurité : le menu défile s'il dépasse la hauteur de la fenêtre */
}
aside .logo-block { margin-bottom: 2.5rem; }
aside .logo-block a { display: inline-block; }
aside .logo-block img { width: 100%; max-width: 210px; height: auto; display: block; }

.side-kicker {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--accent-text);
  font-weight: 700;
  margin-bottom: 0.5rem;
}

.side-nav { display: flex; flex-direction: column; gap: 0.15rem; margin-top: 0.25rem; }
.side-nav a {
  font-size: 0.95rem;
  color: var(--text);
  padding: 0.75rem 0;
  min-height: 44px;
  display: flex; align-items: center;
  transition: color .15s;
}
.side-nav a::before {
  content: ''; display: inline-block;
  width: 12px; height: 1px; background: var(--pearl);
  margin-right: 0.75rem; transition: width .2s, background .2s, height .2s;
}
.side-nav a.active { color: var(--accent-text); font-weight: 700; }
.side-nav a.active::before { width: 24px; background: var(--accent); height: 3px; }
.side-nav a:hover { color: var(--accent-text); }
.side-nav a:hover::before { background: var(--accent); width: 24px; }

.side-foot {
  font-size: 0.78rem;
  color: var(--muted);
  line-height: 1.5;
  border-top: 1px solid var(--pearl);
  padding-top: 1.25rem;
}
.side-foot strong { color: var(--ink); display: block; font-weight: 600; margin-bottom: 0.2rem; }
.side-foot .lang { margin-top: 1rem; display: flex; gap: 0.5rem; align-items: center; }
.side-foot .lang a {
  color: var(--ink); font-weight: 500;
  padding: 0.5rem 0.6rem;
  min-height: 36px; min-width: 36px;
  display: inline-flex; align-items: center; justify-content: center;
}
.side-foot .lang a.on { color: var(--accent-text); border-bottom: 2px solid var(--accent); padding-bottom: calc(0.5rem - 2px); }
.side-foot .lang .sep { color: var(--pearl); }

/* Main */
main { padding: 3.5rem 4.5rem 0; max-width: 1100px; }

/* Hero */
.hero { padding-bottom: 3.5rem; border-bottom: 2px solid var(--ink); }
.hero .kicker { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.15em; color: var(--accent-text); font-weight: 700; margin-bottom: 1rem; }
.hero h1 { font-size: 3.6rem; line-height: 1.05; font-weight: 600; letter-spacing: -0.015em; }
.hero h1 em { color: var(--accent-text); font-style: italic; font-weight: 500; }
.hero .deck {
  margin-top: 1.5rem;
  font-family: 'Spectral', serif;
  font-size: 1.25rem; line-height: 1.45;
  font-weight: 400; font-style: italic;
  color: #3A3A52; max-width: 760px;
}
.hero .byline { margin-top: 2rem; font-size: 0.82rem; color: var(--muted); border-top: 1px solid var(--pearl); padding-top: 1rem; }

section { padding: 3.5rem 0; border-bottom: 1px solid var(--pearl); }
section:last-of-type { border-bottom: none; padding-bottom: 4rem; }

.sec-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 2.5rem; gap: 2rem; flex-wrap: wrap; }
.sec-head .sec-label { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.15em; color: var(--accent-text); font-weight: 700; }
.sec-head h2 { font-size: 2.2rem; font-weight: 600; letter-spacing: -0.01em; margin-top: 0.35rem; }
.sec-head .filter { display: flex; gap: 0.5rem; font-size: 0.85rem; flex-wrap: wrap; }
.sec-head .filter a {
  color: var(--muted);
  padding: 0.6rem 0.75rem;
  min-height: 44px;
  display: inline-flex; align-items: center;
  font-weight: 500;
  border-bottom: 2px solid transparent;
}
.sec-head .filter a.active { color: var(--accent-text); border-bottom-color: var(--accent); font-weight: 600; }

/* Projets : cartes compactes (vignette à gauche, texte à droite), toute la carte est cliquable */
.proj-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; }
.proj {
  position: relative;
  display: grid; grid-template-columns: 132px minmax(0, 1fr); gap: 1.1rem; align-items: start;
  background: var(--paper); padding: 1.1rem; border-radius: 6px;
  box-shadow: 0 1px 2px rgba(46,45,126,0.04); transition: transform .2s, box-shadow .2s;
}
.proj:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(46,45,126,0.08); }
.proj .ph { width: 132px; aspect-ratio: 1; border-radius: 3px; }
.proj img.ph { height: auto; object-fit: cover; display: block; }
.proj .ph.a { background: linear-gradient(135deg, #6361B8 0%, var(--ink) 100%); }
.proj .ph.b { background: linear-gradient(135deg, #FAB47A 0%, var(--accent) 100%); }
.proj .ph.c { background: linear-gradient(135deg, var(--ink) 0%, var(--accent) 100%); }
.proj .tag { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.14em; color: var(--accent-text); font-weight: 700; }
.proj h4 { font-family: 'Spectral', serif; font-size: 1.15rem; font-weight: 600; margin: 0.3rem 0 0.35rem; line-height: 1.2; color: var(--ink); }
.proj h4 a::after { content: ''; position: absolute; inset: 0; border-radius: 6px; }   /* étend le lien à toute la carte */
.proj h4 a:hover { color: var(--accent-text); }
.proj:has(a:focus-visible) { outline: 3px solid var(--ink); outline-offset: 2px; }
.proj h4 a:focus-visible { outline: none; }
.proj p { font-size: 0.88rem; color: #4A4A60; }

/* Team */
.team-section { background: var(--paper); border-radius: 6px; padding: 2.75rem; box-shadow: 0 1px 2px rgba(46,45,126,0.04); }
.team { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 2.5rem 3rem; align-items: start; }   /* deux fiches de même largeur par rangée */
.member .ph { width: 128px; aspect-ratio: 1; border-radius: 50%; margin-bottom: 1rem; }   /* portrait compact */
.member img.ph { display: block; height: auto; object-fit: cover; background: var(--paper); }
.member .ph.a { background: linear-gradient(135deg, #6361B8, var(--ink)); }
.member .ph.b { background: linear-gradient(135deg, #FAB47A, var(--accent)); }
.member .ph.c { background: linear-gradient(135deg, var(--ink), var(--accent)); }
.member .name { font-family: 'Spectral', serif; font-size: 1.3rem; font-weight: 600; color: var(--ink); }
.member .role { font-size: 0.78rem; color: var(--accent-text); text-transform: uppercase; letter-spacing: 0.1em; font-weight: 700; margin: 0.3rem 0 0.7rem; }
.member .bio { font-size: 0.9rem; color: #3A3A52; }

/* Tools */
.tools-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1.5rem; }
.tool-card { background: var(--paper); padding: 1.9rem; border-radius: 6px; border-left: 4px solid var(--accent); display: flex; flex-direction: column; box-shadow: 0 1px 2px rgba(46,45,126,0.04); }
.tool-card .meta { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.12em; color: var(--muted); font-weight: 600; margin-bottom: 0.5rem; }
.tool-card h3 { font-family: 'Spectral', serif; font-size: 1.35rem; font-weight: 600; color: var(--ink); margin-bottom: 0.5rem; }
.tool-card p { font-size: 0.94rem; color: #3A3A52; margin-bottom: 1rem; flex: 1; }
/* Ce que fait l'outil, en une phrase, juste à côté de son nom */
.tool-card .tool-role { flex: 0 0 auto; font-family: 'Spectral', serif; font-style: italic; font-size: 1.05rem; line-height: 1.35; color: var(--accent-text); margin: -0.25rem 0 0.9rem; }
.prose h3 em { font-weight: 400; }
/* D'où vient le nom de l'outil : petite note en italique, sous la description */
.tool-card .tool-nom { flex: 0 0 auto; font-size: 0.85rem; font-style: italic; line-height: 1.5; border-top: 1px solid var(--pearl); padding-top: 0.8rem; }
.tools-credit, .projet-note { font-size: 0.85rem; color: #3A3A52; max-width: 68ch; }
.tools-credit { margin-top: 1.5rem; }
.projet-note { margin: 2.5rem 0 3rem; padding-top: 1rem; border-top: 1px solid var(--pearl); }
.tool-card .link {
  font-size: 0.88rem; font-weight: 600; color: var(--accent-text);
  border-bottom: 1px solid var(--accent);
  padding: 0.5rem 0;
  min-height: 44px;
  display: inline-flex; align-items: center;
  align-self: flex-start;
}

/* Footer — full width across columns */
footer {
  background: var(--ink); color: var(--on-ink);
  padding: 3rem 4.5rem;
  display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 3rem;
}
footer .logo-foot { display: inline-block; margin-bottom: 1rem; }
footer .logo-foot a { display: inline-block; }
footer .logo-foot img { height: 90px; width: auto; display: block; }
footer .foot-titre { font-family: 'Spectral', serif; font-size: 1.15rem; margin-bottom: 0.6rem; color: white; font-weight: 600; }
footer .tag-line { font-style: italic; color: var(--pearl); font-family: 'Spectral', serif; font-size: 1rem; }
footer ul { list-style: none; font-size: 0.9rem; }
footer ul li { display: block; color: var(--on-ink); opacity: 0.9; padding: 0.35rem 0; }
footer ul li:has(a) { padding: 0; }
footer ul li a {
  color: var(--on-ink);
  display: inline-flex; align-items: center;
  min-height: 44px;   /* zone cliquable confortable au doigt */
}
footer ul li a:hover { opacity: 1; border-bottom: 1px solid var(--accent); }

/* ——— Responsive ——— */
@media (max-width: 1024px) {
  .layout {
    grid-template-columns: minmax(0, 1fr);   /* jamais plus large que l'écran, même avec un contenu long */
    grid-template-rows: auto 1fr;   /* sur une page courte, c'est le contenu qui s'étire, pas l'en-tête */
  }

  aside {
    position: static; height: auto;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    padding: 1rem 2rem;
    border-right: none;
    border-bottom: 1px solid var(--pearl);
    gap: 2rem;
    flex-wrap: wrap;
  }
  aside > div:first-child {
    display: flex; align-items: center; gap: 2rem;
    flex-wrap: wrap;
  }
  aside .logo-block { margin: 0; }
  aside .logo-block img { max-width: 170px; }
  aside .side-kicker { display: none; }
  aside .side-nav { flex-direction: row; margin-top: 0; gap: 0.25rem 1rem; flex-wrap: wrap; }
  aside .side-nav a { padding: 0.65rem 0.25rem; }
  aside .side-nav a::before { display: none; }
  aside .side-nav a.active {
    border-bottom: 2px solid var(--accent);
    padding-bottom: calc(0.65rem - 2px);
  }
  aside .side-foot {
    border-top: none; padding-top: 0;
    font-size: 0.75rem;
    text-align: right;
  }
  aside .side-foot strong,
  aside .side-foot br { display: none; }

  main { padding: 2.5rem 2rem 0; max-width: none; }
  .hero h1 { font-size: 2.8rem; }

  footer { padding: 2rem; grid-template-columns: 1fr 1fr; gap: 2rem; }
}

@media (max-width: 640px) {
  /* En-tête compact, toujours visible : logo à gauche, bouton « Menu » à droite, liens en liste repliable dessous */
  aside { position: sticky; top: 0; z-index: 30; padding: 0.5rem 1.25rem; gap: 0; }
  [id] { scroll-margin-top: 72px; }   /* une ancre n'arrive jamais sous l'en-tête */
  aside .side-nav.ouvert { max-height: calc(100vh - 72px); overflow-y: auto; }
  aside > div:first-child { flex-direction: row; align-items: center; justify-content: space-between; gap: 0 1rem; width: 100%; }
  aside .logo-block img { max-width: 112px; }
  .js-menu .menu-btn:not([hidden]) { display: inline-flex; }
  aside .side-nav { width: 100%; flex-direction: column; gap: 0; margin-top: 0.5rem; }
  .js-menu aside .side-nav { display: none; }
  .js-menu aside .side-nav.ouvert { display: flex; }
  aside .side-nav a { padding: 0.75rem 0; border-bottom: 1px solid var(--pearl); }
  aside .side-nav a.active { border-bottom: 1px solid var(--pearl); padding-bottom: 0.75rem; }
  aside .side-nav a:last-child { border-bottom: none; }
  aside .side-foot { display: none; }

  main { padding: 2rem 1.25rem 0; }
  .hero h1 { font-size: 2.1rem; }
  .hero .deck { font-size: 1.05rem; }
  .proj-grid { grid-template-columns: 1fr; }
  .proj { grid-template-columns: 88px minmax(0, 1fr); gap: 0.9rem; padding: 0.9rem; }
  .proj .ph { width: 88px; }
  /* résumé limité à trois lignes sur téléphone : le texte complet est sur la page du projet */
  .proj p { display: -webkit-box; -webkit-line-clamp: 3; line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
  .member .ph { width: 96px; }
  section { padding: 2.75rem 0; }
  .hero { padding-bottom: 2.75rem; }
  .team { grid-template-columns: 1fr; }
  .team-section { padding: 1.75rem; }
  .tools-grid { grid-template-columns: 1fr; }
  .sec-head { flex-direction: column; align-items: flex-start; gap: 1rem; }
  .sec-head h2 { font-size: 1.8rem; }
  footer { grid-template-columns: 1fr; padding: 2rem 1.25rem; }
}

/* ——— Événements sur l'accueil : carte d'annonce (à venir) et lignes compactes (passés) ——— */
.events-list { display: flex; flex-direction: column; }
.event-card {
  background: var(--paper); border-radius: 6px; padding: 2rem 2.25rem;
  border-left: 5px solid var(--accent); box-shadow: 0 1px 2px rgba(46,45,126,0.04);
}
.event-row {
  display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 1.5rem; align-items: start;
  padding: 1.5rem 0; border-top: 1px solid var(--pearl);
}
.event-row-img { display: block; }
.event-row-img img { width: 150px; height: auto; aspect-ratio: 16/10; object-fit: cover; border-radius: 4px; display: block; }
.event-card .tag, .event-row .tag { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.14em; color: var(--accent-text); font-weight: 700; }
.event-card .tag .status, .event-row .tag .status { color: var(--muted); }
.event-card h3, .event-card h4 { font-size: 1.45rem; line-height: 1.2; margin: 0.45rem 0 0.5rem; }
.event-row h3, .event-row h4 { font-size: 1.25rem; line-height: 1.25; margin: 0.3rem 0 0.35rem; }
.event-row h3 a:hover, .event-row h4 a:hover { color: var(--accent-text); }
.event-card-meta { font-size: 0.85rem; color: var(--muted); margin-bottom: 0.6rem; }
.event-card p, .event-row p { color: #3A3A52; font-size: 0.95rem; }
/* Liens d'un événement ou d'une publication : documents à télécharger, page de l'événement */
.event-liens, .pub-actions { list-style: none; display: flex; flex-wrap: wrap; gap: 0 1.5rem; margin-top: 0.35rem; }
.event-liens a, .pub-lien {
  display: inline-flex; align-items: center; min-height: 44px;
  font-size: 0.9rem; font-weight: 600; color: var(--ink);
  text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: 4px;
}
.event-liens a:hover, .pub-lien:hover { color: var(--accent-text); }

/* ——— Événements : page de détail ——— */
.event-page section { padding: 3rem 0; }
.breadcrumb ol { list-style: none; display: flex; flex-wrap: wrap; align-items: center; gap: 0 0.4rem; font-size: 0.82rem; color: var(--muted); margin-bottom: 1.25rem; }
.breadcrumb li + li::before { content: '›'; margin-right: 0.4rem; }
.breadcrumb a { color: var(--ink); text-decoration: underline; text-underline-offset: 2px; display: inline-flex; align-items: center; min-height: 44px; }
.breadcrumb li { display: inline-flex; align-items: center; }
.event-hero { padding-bottom: 2.5rem; border-bottom: 2px solid var(--ink); }
.event-hero .kicker { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.15em; color: var(--accent-text); font-weight: 700; margin-bottom: 1rem; }
.event-hero h1 { font-size: 2.6rem; line-height: 1.1; letter-spacing: -0.01em; }
.event-hero .deck { margin-top: 0.75rem; font-family: 'Spectral', serif; font-style: italic; font-size: 1.2rem; color: #3A3A52; }
.event-meta {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem 2rem;
  margin: 1.75rem 0; padding: 1.25rem 0; border-top: 1px solid var(--pearl); border-bottom: 1px solid var(--pearl);
}
.event-meta dt { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.14em; color: var(--accent-text); font-weight: 700; margin-bottom: 0.25rem; }
.event-meta dd { font-size: 0.95rem; color: var(--text); }
.event-banner { margin: 0; }
.event-banner img { width: 100%; height: auto; border-radius: 4px; display: block; }
.event-banner figcaption { font-size: 0.75rem; color: var(--muted); margin-top: 0.4rem; font-style: italic; }
.event-toc { display: flex; flex-wrap: wrap; gap: 0.25rem 1.5rem; padding: 0.75rem 0; border-bottom: 1px solid var(--pearl); font-size: 0.9rem; }
.event-toc a { color: var(--ink); font-weight: 500; min-height: 44px; display: inline-flex; align-items: center; border-bottom: 2px solid transparent; }
.event-toc a:hover { color: var(--accent-text); border-bottom-color: var(--accent); }
.event-page h2 { font-size: 1.9rem; margin-bottom: 1.25rem; }
.prose p, .prose ul { max-width: 68ch; color: #3A3A52; margin-bottom: 1rem; }
.prose ul { padding-left: 1.25rem; }
.prose li { margin-bottom: 0.4rem; }
.prose a { color: var(--ink); text-decoration: underline; text-underline-offset: 2px; }
.doc-btn {
  display: inline-flex; align-items: center; gap: 0.6rem; min-height: 44px; padding: 0.85rem 1.25rem;
  background: var(--ink); color: #fff; border-radius: 4px; font-weight: 600;
}
.doc-btn:hover { background: var(--ink-deep); }

/* Programme */
.day + .day { margin-top: 2.5rem; }
.day h3 { font-size: 1.35rem; padding-bottom: 0.6rem; border-bottom: 2px solid var(--ink); }
.sched { list-style: none; }
.sess { display: grid; grid-template-columns: 8.5rem minmax(0, 1fr); gap: 1.25rem; padding: 1rem 0; border-bottom: 1px solid var(--pearl); }
.sess-time { font-size: 0.88rem; font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; padding-top: 0.15rem; }
.sess-title { font-family: 'Spectral', serif; font-size: 1.12rem; font-weight: 600; color: var(--ink); line-height: 1.3; }
.sess-desc { font-size: 0.9rem; color: #3A3A52; margin-top: 0.25rem; max-width: 68ch; }
.sess-type { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.12em; color: var(--accent-text); font-weight: 700; margin-top: 0.3rem; }
.sess-people { list-style: none; display: flex; flex-wrap: wrap; gap: 0.2rem 1rem; margin-top: 0.4rem; font-size: 0.88rem; color: #4A4A60; }
.sess-people a { color: var(--ink); text-decoration: underline; text-decoration-color: var(--pearl); text-underline-offset: 3px; }
.sess-people a:hover { text-decoration-color: var(--accent); }
.sess-docs { list-style: none; margin-top: 0.5rem; }
.sess-docs a { display: inline-flex; align-items: center; min-height: 32px; font-size: 0.85rem; font-weight: 600; color: var(--accent-text); border-bottom: 1px solid var(--accent); }
.sess--break { padding: 0.55rem 0; }
.sess--break .sess-title { font-family: 'Euclid Circular A', sans-serif; font-size: 0.9rem; font-weight: 500; color: var(--muted); }
.sess--break .sess-time { font-weight: 500; color: var(--muted); }

/* Conférenciers */
.speakers { list-style: none; display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 1.5rem; }
.speaker { background: var(--paper); border-radius: 6px; padding: 1.25rem; scroll-margin-top: 1.5rem; }
.speaker:target { outline: 3px solid var(--accent); outline-offset: 2px; }
.speaker img, .speaker .avatar { width: 88px; height: 88px; border-radius: 50%; object-fit: cover; display: block; margin-bottom: 0.85rem; }
.speaker .avatar { display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #6361B8, var(--ink)); color: #fff; font-weight: 600; font-size: 1.4rem; }
.speaker h3 { font-size: 1.15rem; line-height: 1.25; }
.speaker-role { font-size: 0.85rem; color: #4A4A60; margin-top: 0.25rem; }
.speaker details { margin-top: 0.75rem; font-size: 0.88rem; color: #3A3A52; }
.speaker summary { cursor: pointer; font-weight: 600; color: var(--accent-text); padding: 0.35rem 0; }
.speaker details p { margin-top: 0.5rem; }

/* Partenaires */
.partners { list-style: none; display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 1.25rem; }
.partners li { background: #fff; border: 1px solid var(--pearl); border-radius: 6px; padding: 1rem; display: flex; flex-direction: column; align-items: center; gap: 0.75rem; text-align: center; font-size: 0.8rem; color: #4A4A60; }
.partners img { width: 100%; height: 80px; object-fit: contain; }

/* Référentiel */
.ref-group { margin-top: 2rem; }
.ref-group h3 { font-size: 1.2rem; margin-bottom: 0.4rem; }
.ref-list { list-style: none; }
.ref-list li { padding: 0.7rem 0; border-bottom: 1px solid var(--pearl); }
.ref-list a { color: var(--ink); font-weight: 500; text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: 3px; }
.ref-host { font-size: 0.78rem; color: var(--muted); }
.ref-list p { font-size: 0.88rem; color: #4A4A60; margin-top: 0.3rem; max-width: 70ch; }

/* Événements : intertitres, thèmes, résumés, sous-séances, comité */
.prose h3 { font-size: 1.25rem; margin: 1.75rem 0 0.5rem; }
.prose h3:first-child { margin-top: 0; }
.sess-themes { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem; margin-top: 0.4rem; font-size: 0.78rem; color: var(--muted); }
.sess-themes span { background: var(--paper); border: 1px solid var(--pearl); border-radius: 999px; padding: 0.1rem 0.6rem; color: var(--ink); font-weight: 500; }
.sess-resume { margin-top: 0.5rem; font-size: 0.9rem; }
.sess-resume summary { cursor: pointer; font-weight: 600; color: var(--accent-text); padding: 0.35rem 0; }
.sess-resume .prose { margin-top: 0.5rem; }
.sess-resume .prose p, .sess-resume .prose ul { font-size: 0.9rem; margin-bottom: 0.6rem; }
.sous-seances { list-style: none; margin-top: 0.6rem; border-left: 3px solid var(--pearl); padding-left: 1rem; }
.sous-seances > li { display: grid; grid-template-columns: 7.5rem minmax(0, 1fr); column-gap: 0.75rem; row-gap: 0.15rem; padding: 0.45rem 0; font-size: 0.88rem; }
.sous-seances > li + li { border-top: 1px dashed var(--pearl); }
.sous-heure { grid-column: 1; font-weight: 600; color: var(--ink); font-variant-numeric: tabular-nums; }
.sous-titre { grid-column: 2; font-weight: 600; color: var(--text); }
.sous-gens { grid-column: 2; color: #4A4A60; }
.sous-gens a { color: var(--ink); text-decoration: underline; text-decoration-color: var(--pearl); text-underline-offset: 3px; }
.sous-seances .sess-docs { grid-column: 2; margin-top: 0; }
.committee { list-style: none; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1rem; }
.committee li { background: var(--paper); border-radius: 6px; padding: 1rem 1.1rem; display: flex; flex-direction: column; gap: 0.2rem; font-size: 0.85rem; color: #4A4A60; }
.committee strong { font-family: 'Spectral', serif; font-size: 1.08rem; font-weight: 600; color: var(--ink); margin-bottom: 0.15rem; }
@media (max-width: 640px) {
  .sous-seances > li { grid-template-columns: 1fr; }
  .sous-heure, .sous-titre, .sous-gens, .sous-seances .sess-docs { grid-column: 1; }
}

/* Pastilles (partenaires des projets) */
.chips { list-style: none; display: flex; flex-wrap: wrap; gap: 0.5rem; }
.chips li { background: var(--paper); border: 1px solid var(--pearl); border-radius: 999px; padding: 0.4rem 0.9rem; font-size: 0.88rem; color: var(--ink); font-weight: 500; }

/* Accueil : texte de présentation, publications, contact */
.hero .hero-texte { display: grid; grid-template-columns: 1fr 1fr; gap: 0 2.5rem; margin-top: 0.5rem; }
.hero .hero-texte p { margin-top: 1rem; color: #3A3A52; font-size: 1rem; }
.pub-list { list-style: none; display: flex; flex-direction: column; }
.pub { padding: 1.25rem 0 0.75rem; border-top: 1px solid var(--pearl); }
.pub-meta { font-size: 0.8rem; color: var(--muted); }
.pub-meta .tag { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.14em; color: var(--accent-text); font-weight: 700; }
.pub-titre { font-size: 1.15rem; line-height: 1.3; margin: 0.3rem 0 0.35rem; max-width: 70ch; }
.pub-precision { font-size: 0.88rem; color: #3A3A52; max-width: 70ch; }
.contact-bloc { background: var(--paper); border-radius: 6px; padding: 2rem; max-width: 640px; }
.contact-bloc p { color: #3A3A52; }
.contact-courriel { margin: 0.75rem 0 1.25rem; font-family: 'Spectral', serif; font-size: 1.5rem; font-weight: 600; }
.contact-courriel a { color: var(--ink); text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: 4px; }
.contact-adresse { font-size: 0.92rem; line-height: 1.6; }

/* Photos des projets */
.event-banner figcaption a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.credits-list { list-style: none; }
.credits-list li { padding: 0.75rem 0; border-bottom: 1px solid var(--pearl); font-size: 0.92rem; color: #3A3A52; }
.credits-list a { color: var(--ink); text-decoration: underline; text-underline-offset: 2px; }

.event-source { font-size: 0.8rem; color: var(--muted); padding-top: 2rem; }
.event-source a { color: var(--ink); text-decoration: underline; }

@media (max-width: 1024px) {
  .hero .hero-texte { grid-template-columns: 1fr; max-width: 640px; }
  .event-hero h1 { font-size: 2.1rem; }
}
@media (max-width: 640px) {
  .event-card { padding: 1.25rem; }
  .event-row { grid-template-columns: 1fr; padding: 1.25rem 0; }
  .event-row-img { display: none; }
  .event-hero h1 { font-size: 1.75rem; }
  .sess { grid-template-columns: 1fr; gap: 0.35rem; }
}

/* Intertitre de catégorie (états des projets, éditions à venir ou passées d'une série d'événements) */
.cat-titre {
  display: flex; align-items: center; gap: 0.75rem;
  font-family: 'Euclid Circular A', sans-serif; font-size: 0.78rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.15em; color: var(--ink);
  margin-bottom: 1.5rem;
}
.cat-titre::after { content: ''; flex: 1; height: 1px; background: var(--pearl); }
.cat-titre .nb {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 1.6rem; height: 1.6rem; padding: 0 0.45rem; border-radius: 999px;
  background: var(--ink); color: var(--on-ink); font-size: 0.75rem; letter-spacing: 0;
}
.proj-cats-duo { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; margin-top: 2.5rem; }
.proj-cats-duo .proj-grid { grid-template-columns: 1fr; }

/* Pastille d'état sur la page d'un projet */
.etat {
  display: inline-block; margin-top: 0.9rem; padding: 0.3rem 0.8rem; border-radius: 999px;
  font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em;
}
.etat--en-cours { background: var(--ink); color: var(--on-ink); }
.etat--a-venir { color: var(--accent-text); border: 1px solid var(--accent); }
.etat--termine { background: var(--paper); color: var(--muted); border: 1px solid var(--pearl); }
.event-hero .etat + .deck { margin-top: 0.9rem; }

@media (max-width: 640px) {
  .proj-cats-duo { grid-template-columns: 1fr; gap: 2.5rem; }
}

/* Séries d'événements sur l'accueil (École d'été, Journées d'étude, Autres événements) */
.sec-intro { margin-top: 0.75rem; max-width: 62ch; color: #3A3A52; font-size: 1rem; }
.events-list + .cat-titre { margin-top: 2.5rem; }
/* Événement annoncé, sans image ni page de détail */
.event-card-label {
  font-size: 0.75rem !important; font-weight: 700; text-transform: uppercase; letter-spacing: 0.14em;
  color: var(--ink) !important; margin-bottom: 0.4rem;
}
.event-card-liste { margin-top: 1rem; }
.event-card-liste ul { padding-left: 1.15rem; color: #3A3A52; font-size: 0.95rem; }
.event-card-liste li { margin-bottom: 0.3rem; }
.event-card-liste a { color: var(--ink); text-decoration: underline; text-underline-offset: 2px; }
.event-card-liste a:hover { color: var(--accent-text); }
.event-card-note { margin-top: 1rem; font-style: italic; color: var(--muted) !important; }

/* Page d'un projet : le texte commence tout de suite, l'image est réduite et placée à sa droite */
.projet-corps--image { display: grid; grid-template-columns: minmax(0, 1fr) clamp(220px, 32%, 340px); gap: 0 2.5rem; align-items: start; }
.projet-corps--image .projet-texte { grid-column: 1; grid-row: 1; }
.projet-figure { grid-column: 2; grid-row: 1; margin: 3.4rem 0 0; }
.projet-figure img { width: 100%; height: auto; border-radius: 4px; display: block; }
.projet-figure figcaption { font-size: 0.75rem; line-height: 1.45; color: var(--muted); margin-top: 0.45rem; font-style: italic; }
.projet-figure figcaption a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.projet-figure--logo img { width: min(230px, 70%); margin: 0 auto; }
.projet-figure--logo figcaption { text-align: center; }
@media (max-width: 640px) {
  .projet-corps--image { display: block; }
  .projet-figure { max-width: 400px; margin-top: 2rem; }
  .projet-corps--image .projet-texte section:first-child { padding-top: 2rem; }
}

/* ——— Bouton « Menu » (téléphone seulement ; révélé par menu.js) ——— */
.menu-btn {
  display: none; align-items: center; gap: 0.6rem;
  min-height: 44px; padding: 0 0.9rem;
  background: var(--bg); color: var(--ink); border: 1px solid var(--ink); border-radius: 4px;
  font: inherit; font-size: 0.9rem; font-weight: 600; cursor: pointer;
}
.menu-btn[aria-expanded="true"] { background: var(--ink); color: var(--on-ink); }
.menu-btn-icone, .menu-btn-icone::before, .menu-btn-icone::after {
  display: block; width: 18px; height: 2px; background: currentColor; border-radius: 1px;
}
.menu-btn-icone { position: relative; }
.menu-btn-icone::before, .menu-btn-icone::after { content: ''; position: absolute; left: 0; }
.menu-btn-icone::before { top: -6px; }
.menu-btn-icone::after { top: 6px; }

/* ——— Menu latéral sur un écran bas (petit portable) : espacements resserrés ——— */
@media (min-width: 1025px) and (max-height: 800px) {
  aside { padding: 1.5rem 2rem; }
  aside .logo-block { margin-bottom: 1.4rem; }
  aside .logo-block img { max-width: 160px; }
  .side-nav { gap: 0; }
  .side-nav a { min-height: 38px; padding: 0.45rem 0; }
}

/* ——— Focus au clavier sur fond indigo (pied de page, boutons de document) ——— */
footer a:focus-visible { outline-color: var(--accent); }
.doc-btn:focus-visible { outline-offset: 3px; }

/* ——— Mouvement réduit : pas de transitions pour qui le demande ——— */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; scroll-behavior: auto !important; }
  .proj:hover { transform: none; }
}

/* ——— Rappel du prochain événement, en haut de l'accueil ——— */
.annonce {
  display: flex; align-items: center; gap: 0.4rem 1rem; flex-wrap: wrap;
  min-height: 44px; padding: 0.7rem 1.1rem; margin-bottom: 2.5rem;
  background: var(--paper); border-left: 4px solid var(--accent); border-radius: 4px; color: var(--ink);
}
.annonce:hover { background: #E9E9F1; }
.annonce-tag { font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.14em; color: var(--accent-text); white-space: nowrap; }
.annonce-texte { flex: 1 1 16rem; font-size: 0.95rem; line-height: 1.4; }
.annonce-texte strong { font-family: 'Spectral', serif; font-weight: 600; font-size: 1.02rem; }
.annonce-quand { color: var(--muted); font-size: 0.88rem; display: inline-block; margin-left: 0.4rem; }   /* passe à la ligne d'un bloc, et se replie sur écran étroit */
.annonce-fleche { color: var(--accent-text); font-weight: 700; }

/* ——— Bouton « retour en haut » (tablette et téléphone ; révélé par menu.js après un écran de défilement) ——— */
.retour-haut { display: none; }
@media (max-width: 1024px) {
  .retour-haut:not([hidden]) {
    display: flex; align-items: center; justify-content: center;
    position: fixed; right: 1rem; bottom: 1rem; z-index: 25;
    width: 48px; height: 48px; border-radius: 50%;
    background: var(--ink); color: var(--on-ink); font-size: 1.3rem; font-weight: 700;
    box-shadow: 0 2px 10px rgba(31,30,90,0.35);
  }
  .retour-haut:focus-visible { outline-color: var(--accent); }
}

/* Cartes de projets : une seule colonne dès que deux colonnes deviendraient trop étroites */
@media (max-width: 860px) {
  .proj-grid, .proj-cats-duo { grid-template-columns: 1fr; }
  .proj-cats-duo { gap: 2.5rem; }
}

/* Page d'un événement à venir : bouton vers le site officiel, avertissement en tête du programme */
.event-site { margin: 1.25rem 0 1.5rem; }
.prog-note {
  max-width: 68ch; margin-bottom: 1.5rem; padding: 0.75rem 1rem;
  background: var(--paper); border-left: 4px solid var(--accent); border-radius: 4px;
  font-size: 0.92rem; color: #3A3A52;
}
