@layer pages {
  /* ---------- calendrier ---------- */
  .next-intake { display: grid; gap: var(--space-4); padding: var(--space-5); border-radius: var(--radius-card); background: var(--c-roi-nuit); color: #fff; }
  .next-intake .dblock { background: #fff; color: var(--c-encre); }
  .next-intake__row { display: flex; gap: var(--space-4); align-items: center; flex-wrap: wrap; }
  .next-intake a { color: #fff; }
  .cal-filters { display: grid; gap: var(--space-4); padding: var(--space-5); background: var(--c-craie); border-radius: var(--radius-card); margin-block: var(--space-5); }
  .cal-filters .choices { grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr)); }
  .viewsw { display: inline-flex; border: 1.5px solid var(--c-champ); border-radius: var(--radius-pill); overflow: hidden; background: #fff; }
  .viewsw button { min-height: 2.75rem; padding: .4rem 1.2rem; border: 0; background: transparent; font-weight: 600; }
  .viewsw button[aria-pressed="true"] { background: var(--c-roi); color: #fff; }
  .cal-nav { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; justify-content: space-between; margin-bottom: var(--space-3); }
  .cal-nav h2 { font-size: 1.5rem; text-transform: capitalize; }
  .cal-nav .cluster { gap: .5rem; }
  .cal-grid { display: grid; gap: var(--space-5); }
  @media (min-width: 64em) { .cal-grid.has-day { grid-template-columns: 1fr 22rem; align-items: start; } }
  table.cal { table-layout: fixed; width: 100%; border: 1px solid var(--c-trait); border-radius: 1rem; overflow: hidden; border-collapse: separate; border-spacing: 0; background: #fff; }
  .cal th { padding: .5rem; text-align: center; font-size: .78rem; text-transform: uppercase; letter-spacing: .06em; background: var(--c-craie); color: var(--c-encre-2); }
  .cal td { border-top: 1px solid var(--c-trait); border-left: 1px solid var(--c-trait); padding: 0; height: 3.4rem; vertical-align: top; position: relative; }
  .cal td:first-child { border-left: 0; }
  .cal .out { background: var(--c-craie); color: var(--c-champ); }
  .cal .dn { display: block; padding: .3rem .4rem; font-size: .85rem; font-weight: 500; }
  .cal .out .dn { color: #98a0b8; }
  .cal button.day { width: 100%; height: 100%; min-height: 3.4rem; border: 0; background: transparent; text-align: left; padding: .3rem .4rem; display: grid; align-content: start; gap: .2rem; font-size: .85rem; transition: background var(--dur-2); }
  .cal button.day:hover { background: var(--c-ciel); }
  .cal button.day[aria-pressed="true"] { background: var(--c-ciel); box-shadow: inset 0 0 0 2px var(--c-roi); }
  .cal .dots { display: flex; flex-wrap: wrap; gap: 2px; align-items: center; }
  .cal .dot { width: .6rem; height: .6rem; border-radius: 50%; background: var(--c-roi); }
  .cal .ev-t { display: none; font-size: .72rem; line-height: 1.2; color: var(--c-encre-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .cal .today .dn, .cal .today .dnum { background: var(--c-soleil); border-radius: 50%; width: 1.7rem; height: 1.7rem; display: inline-grid; place-items: center; padding: 0; margin: .2rem; font-weight: 700; }
  .cal-day-panel { display: grid; gap: .75rem; padding: var(--space-4); background: var(--c-craie); border-radius: 1rem; }
  @media (min-width: 64em) { .cal td, .cal button.day { height: 6.5rem; } .cal .ev-t { display: block; } }
  .t-rentree { --tc: var(--c-roi); } .t-portes-ouvertes { --tc: var(--c-corail); } .t-info { --tc: #7a3fd1; } .t-atelier { --tc: var(--c-vert); }
  .t-limite { --tc: var(--c-corail-texte); } .t-forum { --tc: var(--c-roi-nuit); } .t-certificats { --tc: #b88a00; } .t-hackathon { --tc: #0d8da8; } .t-rencontre { --tc: #c13e8c; } .t-ferme { --tc: var(--c-gris); }
  .cal .dot, .tbadge::before { background: var(--tc, var(--c-roi)); }
  .tbadge { display: inline-flex; align-items: center; gap: .4rem; font-size: .75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--c-encre-2); }
  .tbadge::before { content: ""; width: .7rem; height: .7rem; border-radius: 3px; }
  .cal-legend { display: flex; flex-wrap: wrap; gap: .4rem 1.1rem; list-style: none; padding: 0; margin-top: var(--space-3); }
  .month-h { font-size: 1.4rem; text-transform: capitalize; margin: var(--space-6) 0 var(--space-3); padding-bottom: .5rem; border-bottom: 2px solid var(--c-encre); }
  .month-h:focus { outline: none; } .month-h:focus-visible { outline: 3px solid var(--c-roi); outline-offset: 3px; }
  .more-row { margin-top: var(--space-5); display: flex; justify-content: center; }
  .ev-list { list-style: none; padding: 0; display: grid; gap: var(--space-3); }
  .ev { display: grid; grid-template-columns: auto 1fr; gap: var(--space-4); padding: var(--space-4) var(--space-5); background: #fff; border: 1px solid var(--c-trait); border-radius: 1rem; align-items: start; border-left: 5px solid var(--tc, var(--c-roi)); }
  .ev h3 { font-family: var(--font-text); font-size: 1.05rem; font-weight: 650; }
  .ev__body { display: grid; gap: .45rem; }
  .ev__body p { font-size: var(--fs-sm); color: var(--c-encre-2); }
  .ev__meta { display: flex; flex-wrap: wrap; gap: .25rem 1rem; font-size: var(--fs-sm); color: var(--c-encre-2); }
  .ev__act { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .25rem; }
  .ev__act .btn { min-height: 2.75rem; padding: .4rem 1rem; font-size: .88rem; }
  .year { list-style: none; padding: 0; display: grid; gap: var(--space-3); grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr)); }
  .year li { padding: 1rem; border-radius: 1rem; background: var(--c-ciel); display: grid; gap: .2rem; border-top: 4px solid var(--c-corail); }
  .year b { font-family: var(--font-slab); font-size: 1.4rem; }
  .year span { font-size: var(--fs-sm); color: var(--c-encre-2); }

}
