@layer pages {
  .campus-photo { border-radius: var(--radius-card); overflow: hidden; aspect-ratio: 4 / 3; box-shadow: var(--shadow-2); }
  .campus-photo img { width: 100%; height: 100%; object-fit: cover; }
  .map { border-radius: var(--radius-card); background: var(--c-ciel); border: 1px solid var(--c-trait); overflow: hidden; }
  .map svg { width: 100%; height: auto; }
  /* ---------- entreprises / institut / contact ---------- */
  .offer { padding: var(--space-5); border-radius: var(--radius-card); border: 1px solid var(--c-trait); background: #fff; display: grid; gap: .75rem; align-content: start; box-shadow: var(--shadow-1); }
  .offer .icon { width: 2.2rem; height: 2.2rem; color: var(--c-roi); }
  .timeline { list-style: none; padding: 0; display: grid; gap: var(--space-4); border-left: 3px solid var(--c-roi); margin-left: .4rem; }
  .timeline li { position: relative; padding-left: 1.5rem; display: grid; gap: .1rem; }
  .timeline li::before { content: ""; position: absolute; left: -.62rem; top: .35rem; width: .9rem; height: .9rem; border-radius: 50%; background: var(--c-soleil); border: 3px solid #fff; box-shadow: 0 0 0 2px var(--c-roi); }
  .timeline b { font-family: var(--font-slab); font-size: 1.3rem; }
  .values { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); }
  .value { padding: var(--space-5); border-radius: var(--radius-card); background: var(--c-craie); display: grid; gap: .5rem; align-content: start; }
  .value b { font-family: var(--font-slab); font-size: 1.4rem; }
  .quote-big { font-family: var(--font-slab); font-size: clamp(1.4rem, 1.1rem + 1.4vw, 2.1rem); line-height: 1.25; font-weight: 700; max-width: 20.7em; }
  .channels { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); }
  .channel { padding: var(--space-5); border-radius: var(--radius-card); border: 1px solid var(--c-trait); background: #fff; display: grid; gap: .5rem; align-content: start; box-shadow: var(--shadow-1); }
  .channel .icon { width: 2rem; height: 2rem; color: var(--c-roi); }
  .channel--wa { background: var(--c-ciel); }
  .campus-card { display: grid; gap: var(--space-4); padding: var(--space-5); border: 1px solid var(--c-trait); border-radius: var(--radius-card); background: #fff; align-content: start; }
  .tcols { display: grid; gap: var(--space-5); }
  @media (min-width: 48em) { .tcols--2 { grid-template-columns: 1fr 1fr; } }
  .filter-row { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: var(--space-5); }
  .step-form { display: grid; gap: var(--space-4); }
  .form-box { padding: clamp(1.25rem, 4vw, 2.25rem); background: #fff; border: 1px solid var(--c-trait); border-radius: 1.5rem; box-shadow: var(--shadow-1); display: grid; gap: var(--space-4); }

  /* ---------- documents légaux ---------- */
  .doc { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-6); padding-block: var(--space-6) var(--space-section); }
  .doc__toc { padding: var(--space-5); background: var(--c-craie); border-radius: 1rem; align-self: start; font-size: var(--fs-sm); }
  .doc__toc ol { margin: .5rem 0 0; padding-left: 1.2rem; display: grid; gap: .35rem; }
  .doc__body { max-width: 41.3em; display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-4); overflow-wrap: anywhere; } .doc__body > section { min-width: 0; }
  .doc__body h2 { font-size: clamp(1.4rem, 1.2rem + .9vw, 1.9rem); margin-top: var(--space-5); }
  .doc__body ul, .doc__body ol { padding-left: 1.3rem; display: grid; gap: .4rem; }
  .doc__body table { margin-block: var(--space-3); }
  .doc__body th, .doc__body td { padding: .6rem .75rem; border-bottom: 1px solid var(--c-trait); vertical-align: top; }
  @media (min-width: 64em) { .doc { grid-template-columns: 17rem minmax(0, 1fr); column-gap: var(--space-8); } .doc__toc { position: sticky; top: calc(var(--header-h) + 1rem); } }
  .err404 { min-height: 70vh; display: grid; align-content: center; gap: var(--space-5); }
  .big-404 { font-family: var(--font-slab); font-weight: 700; font-size: clamp(5rem, 20vw, 11rem); line-height: .9; color: var(--c-roi); letter-spacing: -.03em; }

}
@layer pages {
  .tbl--credits { font-size: .88rem; min-width: 34rem; }
  .tbl--credits td { overflow-wrap: normal; }
  .tbl--credits td:last-child { white-space: nowrap; }
  .tbl--credits small { color: var(--c-gris); font-size: .8rem; }
  .tbl--credits .icon { display: inline-block; width: .9em; height: .9em; margin-left: .15em; vertical-align: -.05em; }
  .tbl--credits a { white-space: nowrap; }
}
