/* URC Mondor — direction D.
   Layout and colours of A (night band, blue for investigators, raspberry for
   patients), wider and airier; Archivo condensed for questions and figures,
   Atkinson Hyperlegible Next for all running text. */

:root {
  --nuit: #13202b;
  --bleu: #1f6f99;
  --bleu-fonce: #185a7d;
  --framboise: #b9013b;
  --framboise-fonce: #8c0046;
  --fond: #f3f5f6;
  --papier: #ffffff;
  --encre: #161b20;
  --encre-2: #47515b;
  --filet: #d6dce1;
  --sur-nuit: #eef2f5;
  --sur-nuit-2: #b8c6d1;
  --affiche: "Archivo", "Arial Narrow", sans-serif;
  --texte: "Atkinson Hyperlegible Next", "Segoe UI", sans-serif;
  --max: 1320px;
  --respiration: clamp(3.5rem, 7vw, 6.5rem);
  --entete-h: 5.5rem;
  --sortie: cubic-bezier(.16, 1, .3, 1);
}

/* ---------- base */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--entete-h) + 1rem); }
body { margin: 0; background: var(--fond); color: var(--encre); font: 400 1.0625rem/1.65 var(--texte); text-rendering: optimizeLegibility; }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--bleu); text-underline-offset: .2em; text-decoration-thickness: 1px; }
a:hover { color: var(--framboise); }
:focus-visible { outline: 3px solid var(--framboise); outline-offset: 3px; }
/* On night fields the raspberry ring is too faint (2.5:1): use white there. */
.entete :focus-visible, .halos :focus-visible, .pied :focus-visible, .nav.ouvert :focus-visible { outline-color: #fff; }
.halos .publics :focus-visible { outline-color: var(--framboise); }
::selection { background: var(--framboise); color: #fff; }
button { font: inherit; }
.icone { width: 1.15em; height: 1.15em; flex: none; stroke: currentColor; fill: none; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.lien-evitement { position: absolute; left: -999px; top: 0; background: #fff; color: var(--encre); padding: .6rem 1rem; z-index: 200; }
.lien-evitement:focus { left: 1rem; top: 1rem; }
.visuellement-cache, .screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.conteneur { width: min(100% - 2.5rem, var(--max)); margin-inline: auto; }
.titre-affiche { font-family: var(--affiche); font-weight: 800; font-stretch: 70%; line-height: .95; letter-spacing: -.005em; text-wrap: balance; margin: 0; }

/* ---------- header: night band carries the white logo; sticky, frosted once scrolled */
/* The blur lives on ::before: a backdrop-filter on .entete itself would become
   the containing block of the fixed mobile menu panel. The colour stays on
   .entete so the header keeps a real background. */
.entete { background: var(--nuit); color: var(--sur-nuit); position: sticky; top: 0; z-index: 50; isolation: isolate; transition: background-color .35s ease-out, box-shadow .35s ease-out; }
.entete::before { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.admin-bar .entete { top: var(--wp-admin--admin-bar--height, 32px); }
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .entete-defile { background: rgba(19, 32, 43, .84); box-shadow: 0 8px 24px rgba(10, 18, 26, .18); }
  .entete-defile::before { -webkit-backdrop-filter: saturate(150%) blur(16px); backdrop-filter: saturate(150%) blur(16px); }
}
.entete-ligne { display: flex; align-items: center; justify-content: space-between; gap: 1rem 2rem; min-height: var(--entete-h); padding-block: .75rem; }
.marque { display: flex; align-items: center; gap: 1.1rem; color: inherit; text-decoration: none; }
.marque img { width: 128px; }
.marque span { font: 600 .9375rem/1.25 var(--affiche); font-stretch: 85%; color: var(--sur-nuit-2); max-width: 24ch; border-left: 1px solid #3a4c5a; padding-left: 1.1rem; }
.marque:hover span { color: #fff; }
.nav-liste { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .25rem 2rem; }
.nav-liste a { color: var(--sur-nuit); font: 700 1.0625rem/1 var(--affiche); font-stretch: 82%; letter-spacing: .03em; text-transform: uppercase; text-decoration: none; padding-block: .55rem; display: inline-block; border-bottom: 3px solid transparent; }
.nav-liste a:hover, .nav-liste .current-menu-item > a, .nav-liste .current_page_item > a, .nav-liste a[aria-current] { color: #fff; border-bottom-color: var(--framboise); }
.menu-bouton, .menu-fermer { display: none; align-items: center; gap: .5rem; background: transparent; color: #fff; border: 1px solid #3a4c5a; padding: .6rem .9rem; font: 700 1rem/1 var(--affiche); font-stretch: 82%; text-transform: uppercase; letter-spacing: .04em; cursor: pointer; }
.menu-bouton:hover, .menu-fermer:hover { border-color: var(--sur-nuit-2); }

/* ---------- night bands: localized halos, an echo of the former bokeh.
   Placed away from the text column; on the home page the blue light frames
   the investigators' panel and the raspberry light the patients' panel. */
.halos {
  background:
    radial-gradient(34rem 26rem at 92% 6%, rgba(41, 144, 193, .62), transparent 70%),
    radial-gradient(26rem 20rem at 78% 100%, rgba(185, 1, 59, .48), transparent 70%),
    var(--nuit);
  color: var(--sur-nuit);
}
.accueil-intro.halos {
  background:
    radial-gradient(30rem 22rem at 80% 28%, rgba(185, 1, 59, .55), transparent 70%),
    radial-gradient(26rem 14rem at 10% 82%, rgba(41, 144, 193, .60), transparent 70%),
    radial-gradient(28rem 20rem at 98% 0%, rgba(41, 144, 193, .45), transparent 70%),
    var(--nuit);
}

/* ---------- breadcrumb */
.fil { font-size: .9375rem; margin-bottom: clamp(1.25rem, 3vw, 2.25rem); color: var(--sur-nuit-2); }
.fil a { color: var(--sur-nuit); }
.fil a:hover { color: #fff; }
.fil ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.fil li + li::before { content: "›"; margin-right: .4rem; }

/* ---------- buttons */
.actions { display: flex; flex-wrap: wrap; gap: .75rem 1.75rem; align-items: center; }
.bouton { display: inline-flex; align-items: center; gap: .65rem; font: 800 1.125rem/1 var(--affiche); font-stretch: 85%; letter-spacing: .02em; text-transform: uppercase; text-decoration: none; padding: 1rem 1.4rem; background: var(--bleu); color: #fff; border: 0; cursor: pointer; transition: background-color .2s; }
.bouton:hover { background: var(--bleu-fonce); color: #fff; }
.bouton-patient { background: var(--framboise); }
.bouton-patient:hover { background: var(--framboise-fonce); }
.bouton-secondaire { background: transparent; color: var(--bleu); padding-inline: 0; }
.bouton-secondaire:hover { background: transparent; color: var(--framboise); }

/* ---------- home */
.accueil-intro { padding-top: clamp(2.5rem, 5vw, 4.5rem); }
.accueil-intro h1 { font-size: clamp(2.5rem, 1.6rem + 3vw, 4rem); color: #fff; max-width: 24ch; }
.accueil-intro .chapeau { font-size: 1.25rem; line-height: 1.55; color: var(--sur-nuit-2); max-width: 58ch; margin: 1.25rem 0 clamp(2.5rem, 5vw, 4rem); }
.publics { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); background: var(--papier); color: var(--encre); }
.public { padding: clamp(2rem, 4vw, 3.5rem); display: flex; flex-direction: column; gap: 1.25rem; }
.public + .public { border-left: 1px solid var(--filet); background: #fafbfc; }
.public h2 { font-size: clamp(2.25rem, 1.5rem + 2.6vw, 3.75rem); }
.public-investigateur h2 { color: var(--bleu); }
.public-patient h2 { color: var(--framboise); }
.public p { margin: 0; font-size: 1.125rem; color: var(--encre-2); max-width: 48ch; }
.public .actions { margin-top: auto; padding-top: .5rem; }
/* Decorative photo in the lower half of each card: the title area is untouched,
   the picture fades to the left (text side) and upwards. */
.public { position: relative; overflow: hidden; isolation: isolate; }
.public-photo {
  position: absolute; z-index: -1; right: 0; bottom: 0; width: 62%; height: 52%; object-fit: cover; pointer-events: none;
  -webkit-mask-image: linear-gradient(to left, #000 30%, transparent 100%), linear-gradient(to bottom, transparent 0, #000 38%);
  -webkit-mask-composite: source-in;
  mask-image: linear-gradient(to left, #000 30%, transparent 100%), linear-gradient(to bottom, transparent 0, #000 38%);
  mask-composite: intersect;
}
.public p { max-width: min(48ch, 26ch + 8vw); }
.section-titre { font-size: clamp(2.25rem, 1.5rem + 2.6vw, 3.5rem); color: var(--nuit); }
.etapes { padding-block: var(--respiration) 0; }
.etapes-ligne { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 2.2fr); gap: 2rem 4rem; align-items: start; }
.chiffres { padding-block: var(--respiration); }
.chiffres .section-titre { margin-bottom: 1.5rem; }
.colonnes { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(0, 1fr); gap: 3rem 4rem; padding-bottom: var(--respiration); }
.bloc h2 { margin-bottom: 1.25rem; }
.bloc + .bloc { margin-top: 3rem; }
.bloc-contenu { background: var(--papier); padding: .75rem clamp(1.25rem, 3vw, 2.25rem); }
.bloc-pied { margin: 0; padding: 1rem 0 1.25rem; border-top: 1px solid var(--filet); }
.equipe-resume { list-style: none; margin: 0; padding: .75rem 0 1rem; }
.equipe-resume li { display: flex; align-items: baseline; gap: 1rem; padding-block: .55rem; border-bottom: 1px solid var(--filet); }
.equipe-resume li:last-child { border-bottom: 0; }
.equipe-resume-nombre { font: 800 1.75rem/1 var(--affiche); font-stretch: 70%; color: var(--bleu); min-width: 2ch; text-align: right; font-variant-numeric: tabular-nums; }

/* ---------- home page: news (rare alerts and calls for projects, two at most) */
.actualites { padding-block: var(--respiration) 0; }
.actualites .section-titre { margin-bottom: 1.25rem; }
.actualites-liste { list-style: none; margin: 0; padding: 0; background: var(--papier); }
.actualites-liste li { display: grid; grid-template-columns: 9rem minmax(0, 1fr) auto; gap: 1.5rem; align-items: center; padding: 1.1rem clamp(1rem, 3vw, 1.75rem); border-bottom: 1px solid var(--filet); }
.actualites-liste li:last-child { border-bottom: 0; }
.actualite-date { margin: 0; }
.actualite-jour { display: block; font: 800 2.5rem/1 var(--affiche); font-stretch: 68%; color: var(--framboise); }
.actualite-note { display: block; margin-top: .25rem; font: 700 .75rem/1.3 var(--texte); text-transform: uppercase; letter-spacing: .05em; color: var(--encre-2); }
.actualite-type { display: inline-block; font: 700 .75rem/1 var(--texte); letter-spacing: .06em; text-transform: uppercase; padding: .3rem .5rem; background: var(--framboise); color: #fff; }
.actualites-liste h3 { margin: .45rem 0 0; font: 700 1.25rem/1.25 var(--affiche); font-stretch: 85%; color: var(--nuit); }
.actualite-lien { font-weight: 600; white-space: nowrap; }
@media (max-width: 700px) {
  .actualites-liste li { grid-template-columns: minmax(0, 1fr); gap: .5rem; }
}

/* ---------- block: accompaniment steps (a real sequence: numbers carry it) */
.urc-etapes { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 0 1.5rem; counter-reset: etape; }
.urc-etapes li { counter-increment: etape; position: relative; padding-top: 1rem; }
/* The top rule is its own element so that it can be drawn from left to right. */
.urc-etapes li::after { content: ""; position: absolute; inset: 0 0 auto 0; height: 4px; background: var(--nuit); transform-origin: left; }
.effets .urc-etapes li::after { transform: scaleX(0); transition: transform .8s var(--sortie); transition-delay: calc(var(--i, 0) * 380ms); }
.effets .urc-etapes li.visible::after { transform: none; }
.effets .urc-etapes li[data-apparition] { transition-delay: calc(var(--i, 0) * 380ms + 250ms); }
.urc-etapes li::before { content: counter(etape); display: block; font: 800 3rem/1 var(--affiche); font-stretch: 68%; color: var(--bleu); margin-bottom: .5rem; }
.urc-etape-icone { position: absolute; top: 1.25rem; right: 0; width: 2.75rem; height: 2.75rem; fill: none; stroke: var(--nuit); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
/* The icon is drawn stroke by stroke once its step appears. */
.effets .urc-etape-icone path { stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset 1.1s var(--sortie); transition-delay: calc(var(--i, 0) * 380ms + 500ms); }
.effets .urc-etapes li.visible .urc-etape-icone path { stroke-dashoffset: 0; }
.urc-etapes strong { display: block; font: 700 1.25rem/1.15 var(--affiche); font-stretch: 85%; text-transform: uppercase; margin-bottom: .35rem; }
.urc-etapes span { font-size: 1.0625rem; line-height: 1.45; color: var(--encre); }

/* « Nos services »: the steps run down the right side, next to the text of their section. */
@media (min-width: 961px) {
  .avec-frise-verticale .contenu-page { display: grid; grid-template-columns: minmax(0, 38em) minmax(16rem, 24rem); justify-content: space-between; column-gap: 3rem; }
  .avec-frise-verticale .contenu-page > * { grid-column: 1; }
  .avec-frise-verticale .contenu-page > .urc-agenda { grid-column: 1 / -1; }
  .avec-frise-verticale .contenu-page > .urc-etapes { grid-column: 2; grid-row: 2 / span 4; align-self: start; display: block; margin-top: 2.75rem; max-width: none; }
  .avec-frise-verticale .urc-etapes li { padding: 0 0 2.5rem 1.75rem; }
  .avec-frise-verticale .urc-etapes li:last-child { padding-bottom: 0; }
  .avec-frise-verticale .urc-etapes li::after { inset: 0 auto 0 0; width: 4px; height: auto; transform-origin: top; }
  .effets .avec-frise-verticale .urc-etapes li::after { transform: scaleY(0); }
  .effets .avec-frise-verticale .urc-etapes li.visible::after { transform: none; }
  .avec-frise-verticale .urc-etapes li::before { margin-bottom: .35rem; }
  .avec-frise-verticale .urc-etape-icone { top: .2rem; right: 0; }
}

/* « Nos services », section du staff: title on top, photo fading out on the left half, text on the right half. */
.avec-frise-verticale .contenu-page > hr + h2 + p { position: relative; isolation: isolate; }
.avec-frise-verticale .contenu-page > hr + h2 + p::before {
  content: ""; position: relative; z-index: -1; display: block; height: 12rem; margin-bottom: 1rem;
  background: url("../img/reunion-staff.jpg") center / cover;
  -webkit-mask-image: linear-gradient(to bottom, #000 45%, transparent 100%); mask-image: linear-gradient(to bottom, #000 45%, transparent 100%);
}
@media (min-width: 961px) {
  .avec-frise-verticale .contenu-page > hr + h2 { grid-column: 1; max-width: 38em; margin-bottom: 1.5rem; }
  /* One third for the photo, two thirds for the text (kept to a comfortable line length). */
  .avec-frise-verticale .contenu-page > hr + h2 + p {
    grid-column: 1 / -1; max-width: none; width: calc(66.667% - 1.5rem); margin-left: calc(33.333% + 1.5rem);
    padding: 3rem max(0px, calc(66.667% - 1.5rem - 38em)) 0 0; min-height: 21rem;
  }
  .avec-frise-verticale .contenu-page > hr + h2 + p::before {
    position: absolute; inset: 0 auto 0 calc(-50% - 2.25rem); width: calc(50% + 4.25rem); height: auto; margin: 0;
    -webkit-mask-image: radial-gradient(ellipse 110% 120% at 0% 100%, #000 35%, transparent 100%);
    mask-image: radial-gradient(ellipse 110% 120% at 0% 100%, #000 35%, transparent 100%);
  }
}

/* ---------- block: key figures as large lines */
.urc-chiffres-liste { list-style: none; margin: 0; padding: 0; background: var(--papier); }
.chiffre { display: grid; grid-template-columns: clamp(6rem, 11vw, 10rem) minmax(0, 1fr) minmax(0, .9fr); gap: .5rem 2rem; align-items: baseline; padding: 1.1rem clamp(1.25rem, 3vw, 2.25rem); border-top: 1px solid var(--filet); }
.chiffre:first-child { border-top: 0; }
.chiffre-valeur { font: 800 clamp(3rem, 2rem + 3.5vw, 5rem)/.9 var(--affiche); font-stretch: 64%; color: var(--bleu); font-variant-numeric: tabular-nums; }
.chiffre-libelle { font: 700 clamp(1.25rem, 1rem + .9vw, 1.875rem)/1.1 var(--affiche); font-stretch: 85%; text-transform: uppercase; }
.chiffre-precision { font-size: 1rem; color: var(--encre-2); }
.urc-chiffres-source { margin: .75rem 0 0; font-size: .9375rem; color: var(--encre-2); }

/* ---------- block: publications */
.urc-publis { list-style: none; margin: 0; padding: 0; }
.urc-publi { padding-block: 1.25rem; }
.urc-publi + .urc-publi { border-top: 1px solid var(--filet); }
.publi-auteurs { display: block; font-size: .9375rem; color: var(--encre-2); }
.urc-publis-compact .publi-auteurs { font-weight: 700; color: var(--encre); }
.publi-auteurs strong { color: var(--encre); }
.publi-titre { display: block; font-size: 1.125rem; line-height: 1.45; margin-block: .25rem .4rem; }
.publi-titre a { color: var(--encre); text-decoration: none; }
.publi-titre a:hover { color: var(--framboise); text-decoration: underline; }
.publi-source { font: 700 1rem/1.2 var(--affiche); font-stretch: 85%; color: var(--bleu); }
html:has(.urc-annees) { scroll-padding-top: calc(var(--entete-h) + 5rem); }
.urc-annees { position: sticky; top: var(--entete-h); z-index: 5; background: var(--fond); padding-block: .75rem; margin-bottom: 1rem; }
.urc-annees ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.urc-annees a { display: inline-block; font: 800 1.25rem/1 var(--affiche); font-stretch: 70%; padding: .5rem .75rem; background: var(--papier); border: 1px solid var(--filet); color: var(--nuit); text-decoration: none; font-variant-numeric: tabular-nums; }
.urc-annees a:hover { border-color: var(--bleu); color: var(--bleu); }
.urc-annee { background: var(--papier); padding: 1.5rem clamp(1.25rem, 3vw, 2.25rem) .5rem; margin-bottom: 1.5rem; }
.urc-annee h2 { font: 800 clamp(2.5rem, 1.8rem + 2.6vw, 3.75rem)/1 var(--affiche); font-stretch: 66%; color: var(--nuit); margin: 0 0 .25rem; display: flex; align-items: baseline; gap: 1rem; }
.urc-annee-nombre { font: 400 1rem/1 var(--texte); color: var(--encre-2); }

/* ---------- block: portal */
.urc-etudes-etiquettes { list-style: none; margin: 0; padding: 1.25rem 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.urc-etudes-etiquettes a { display: inline-block; font: 700 1.0625rem/1 var(--affiche); font-stretch: 85%; letter-spacing: .02em; padding: .65rem .9rem; border: 1px solid var(--filet); text-decoration: none; color: var(--encre); }
.urc-etudes-etiquettes a:hover { border-color: var(--framboise); color: var(--framboise); }
.urc-portail { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 26rem), 1fr)); gap: 0 2rem; }
.urc-portail li { border-top: 1px solid var(--filet); }
.urc-portail a { display: grid; grid-template-columns: 5.5rem minmax(0, 1fr); gap: 1.1rem; align-items: start; padding: 1.1rem .5rem 1.1rem 0; height: 100%; color: var(--encre); text-decoration: none; transition: background-color .25s; }
.urc-portail a:hover { background: var(--papier); }
.urc-portail img, .urc-portail-vignette { width: 5.5rem; height: 5.5rem; object-fit: cover; background: var(--fond); }
.urc-portail-acronyme { display: block; font: 800 1.5rem/1.05 var(--affiche); font-stretch: 75%; color: var(--nuit); margin-bottom: .35rem; }
.urc-portail a:hover .urc-portail-acronyme { color: var(--framboise); }
.urc-portail-accroche { display: block; font-size: .9375rem; line-height: 1.45; color: var(--encre-2); }

/* ---------- block: team, list by category */
.urc-equipe-categorie { background: var(--papier); padding: 1.5rem clamp(1.25rem, 3vw, 2.25rem); margin-bottom: 1.5rem; }
.urc-equipe-categorie h2 { font: 800 clamp(1.75rem, 1.3rem + 1.5vw, 2.5rem)/1 var(--affiche); font-stretch: 72%; color: var(--nuit); margin: 0 0 1rem; display: flex; align-items: baseline; gap: .75rem; }
.urc-equipe-nombre { font: 800 1.25rem/1 var(--affiche); font-stretch: 70%; color: var(--bleu); }
.urc-equipe-categorie ul { list-style: none; margin: 0; padding: 0; columns: 2 22rem; column-gap: 3rem; }
.urc-equipe-categorie li { break-inside: avoid; padding-block: .6rem; border-top: 1px solid var(--filet); display: grid; }
.urc-membre-nom { font-weight: 700; }
.urc-membre-fonction { font-size: .9375rem; color: var(--encre-2); }
.urc-membre-courriel { font-size: .9375rem; }

/* ---------- block: agenda (steps on the left third, calendar on the right two thirds) */
.urc-agenda { margin-block: 3rem 2rem; }
.contenu-page .urc-agenda > h2 { margin-top: 0; }
.urc-agenda-grille { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: clamp(1.5rem, 3vw, 3rem); align-items: start; margin-top: 1.5rem; }
.urc-reservation { list-style: none; margin: 0; padding: 0; counter-reset: resa; display: grid; gap: 1.75rem; }
.urc-reservation > li { counter-increment: resa; display: grid; grid-template-columns: 2.5rem minmax(0, 1fr); column-gap: .75rem; }
.urc-reservation > li > * { grid-column: 2; }
.urc-reservation > li::before { content: counter(resa); grid-column: 1; grid-row: 1; align-self: center; font: 800 2.5rem/1 var(--affiche); font-stretch: 68%; color: var(--bleu); }
.contenu-page .urc-reservation h3, .urc-reservation h3 { display: flex; align-items: center; min-height: 2.5rem; margin: 0 0 .5rem; padding: 0; font: 700 1.25rem/1.2 var(--affiche); font-stretch: 85%; text-transform: uppercase; color: var(--nuit); }
.urc-reservation p { margin: 0 0 .75rem; max-width: 36em; }
/* Calendar drawn by the site (equipe-core/assets/agenda.js). */
.urc-cal { background: var(--papier); border: 1px solid var(--filet); padding: clamp(.75rem, 2vw, 1.25rem); }
.urc-cal-nav { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin-bottom: .75rem; }
.urc-cal-mois { flex: 1; margin: 0; font: 700 1.375rem/1.2 var(--affiche); font-stretch: 85%; text-transform: capitalize; color: var(--nuit); text-align: center; }
.urc-cal-bouton, .urc-cal-aujourdhui { font: 700 1rem/1 var(--texte); color: var(--bleu); background: var(--papier); border: 1px solid var(--bleu); padding: .55rem .8rem; cursor: pointer; }
.urc-cal-bouton { font-size: 1.25rem; min-width: 2.75rem; }
.urc-cal-bouton:hover:not(:disabled), .urc-cal-aujourdhui:hover { background: var(--bleu); color: #fff; }
.urc-cal-bouton:disabled { opacity: .35; cursor: default; }
.contenu-page .urc-cal-table { display: table; overflow: visible; width: 100%; max-width: none; border-collapse: collapse; table-layout: fixed; background: transparent; }
.contenu-page .urc-cal-table th { font: 700 .8125rem/1 var(--texte); text-transform: uppercase; color: var(--encre-2); padding: .4rem .25rem; border-bottom: 2px solid var(--nuit); text-align: left; }
.contenu-page .urc-cal-table td { border: 1px solid var(--filet); vertical-align: top; height: 6rem; padding: .3rem; }
.contenu-page .urc-cal-table td.urc-cal-vide { background: #fafbfc; }
.urc-cal-num { font: 700 .875rem/1 var(--texte); color: var(--encre-2); }
.urc-cal-jour-nom { display: none; }
.urc-cal-passe .urc-cal-num { opacity: .5; }
.urc-cal-aujourdhui-jour .urc-cal-num { background: var(--nuit); color: #fff; padding: .15rem .35rem; border-radius: 2px; }
.urc-cal-creneaux { list-style: none; margin: .25rem 0 0; padding: 0; display: grid; gap: .2rem; }
.urc-cal-creneau { display: block; width: 100%; text-align: left; font: 400 .75rem/1.2 var(--texte); padding: .2rem .3rem; border: 1px solid transparent; }
button.urc-cal-creneau { cursor: pointer; background: #1d7a4f; color: #fff; border-color: #1d7a4f; font-weight: 700; }
button.urc-cal-creneau:hover { background: #155c3b; border-color: #155c3b; }
button.urc-cal-creneau[aria-pressed="true"] { background: var(--nuit); border-color: var(--nuit); box-shadow: 0 0 0 2px #fff, 0 0 0 4px #1d7a4f; }
.urc-cal-creneau-reserve { background: #3f4650; color: #c4ccd2; border-color: #3f4650; font-style: italic; }
.urc-cal-creneau-passe { background: #eef0f2; color: var(--encre-2); }
.urc-cal-legende { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem; margin: .75rem 0 0; font-size: .875rem; color: var(--encre-2); }
.urc-cal-pastille { display: inline-block; width: .9rem; height: .9rem; border: 1px solid; }
.urc-cal-pastille-libre { background: #1d7a4f; border-color: #1d7a4f; }
.urc-cal-pastille-reserve { background: #3f4650; border-color: #3f4650; margin-left: .75rem; }
@media (max-width: 960px) {
  .urc-agenda-grille { grid-template-columns: minmax(0, 1fr); }
  .contenu-page .urc-cal-table, .urc-cal-table tbody, .urc-cal-table tr, .contenu-page .urc-cal-table td { display: block; width: 100%; }
  .urc-cal-table thead, .contenu-page .urc-cal-table td.urc-cal-vide, .contenu-page .urc-cal-table td:not(.urc-cal-avec) { display: none; }
  .contenu-page .urc-cal-table td { height: auto; padding: .5rem .25rem; }
  .urc-cal-jour-nom { display: inline; text-transform: capitalize; font-weight: 700; }
  .urc-cal-creneau { font-size: .9375rem; padding: .5rem .6rem; }
  .urc-cal-mois { flex: 1 1 8rem; font-size: 1.25rem; }
  .urc-cal-aujourdhui { flex-basis: 100%; }
}
.urc-vide { color: var(--encre-2); }

/* ---------- pages */
.page-entete { padding-block: 1.25rem clamp(2.5rem, 5vw, 4rem); }
.page-entete h1 { font-size: clamp(2.75rem, 1.8rem + 4vw, 5rem); color: #fff; max-width: 22ch; }
.page-entete .chapeau { font-size: 1.25rem; color: var(--sur-nuit-2); margin: 1rem 0 0; max-width: 58ch; }
.page-corps { padding-block: clamp(2rem, 5vw, 3.5rem) var(--respiration); }
/* Team photo (page Notre équipe): only beside the text under the introduction, faded into the page.
   The introduction (first paragraph) stays alone on its row. */
@media (min-width: 801px) {
  .avec-photo-equipe .contenu-page { display: grid; grid-template-columns: minmax(0, 34em) minmax(0, 1fr); column-gap: 3rem; }
  .avec-photo-equipe .contenu-page > * { grid-column: 1; }
  .avec-photo-equipe .contenu-page > .chapeau, .avec-photo-equipe .contenu-page > .urc-equipe { grid-column: 1 / -1; }
  .avec-photo-equipe .contenu-page > .photo-equipe {
    grid-column: 2; grid-row: 2 / span 2; align-self: stretch; justify-self: end;
    width: calc(100% + 3rem); max-width: none; height: 1px; min-height: 100%; margin-left: -3rem; object-fit: cover; object-position: center 18%;
    -webkit-mask-image: linear-gradient(to left, #000 35%, transparent 100%), linear-gradient(to top, transparent 0, #000 22%);
    -webkit-mask-composite: source-in;
    mask-image: linear-gradient(to left, #000 35%, transparent 100%), linear-gradient(to top, transparent 0, #000 22%);
    mask-composite: intersect;
    pointer-events: none;
  }
}
.contenu-page > * { max-width: 38em; }
/* An article (news) uses the whole width of the page instead of the reading column. */
.article-large .contenu-page > *, .article-large .contenu-page .chapeau { max-width: none; }
.contenu-page > .urc-equipe, .contenu-page > .urc-publications, .contenu-page > .urc-portail, .contenu-page > .urc-agenda,
.contenu-page > .urc-etapes, .contenu-page > .urc-chiffres, .contenu-page > .wp-block-table, .contenu-page > .urc-publis { max-width: none; }
.contenu-page .chapeau { font: 700 1.375rem/1.4 var(--texte); color: var(--bleu); margin-bottom: 2rem; max-width: 34em; }
.contenu-page h2 { font: 800 clamp(1.75rem, 1.4rem + 1.2vw, 2.375rem)/1.05 var(--affiche); font-stretch: 76%; color: var(--nuit); margin: 2.75rem 0 1rem; }
.contenu-page h3 { font: 700 1.375rem/1.2 var(--affiche); font-stretch: 85%; color: var(--nuit); margin: 2rem 0 .75rem; }
.contenu-page table { border-collapse: collapse; width: 100%; background: var(--papier); }
.contenu-page th, .contenu-page td { border: 1px solid var(--filet); padding: .6rem .8rem; text-align: left; vertical-align: top; }
.contenu-page th { background: var(--fond); }
.articles { list-style: none; margin: 0; padding: 0; }
.articles li { background: var(--papier); padding: 1.25rem 1.5rem; margin-bottom: 1px; }
.articles a { font: 800 1.5rem/1.1 var(--affiche); font-stretch: 78%; color: var(--nuit); text-decoration: none; }
.articles a:hover { color: var(--framboise); }
.article-date { display: block; font-size: .9375rem; color: var(--encre-2); margin-top: .35rem; }
.recherche { margin-top: 2rem; max-width: 36rem; }
.recherche label { display: block; font-weight: 700; margin-bottom: .5rem; }
.recherche-ligne { display: flex; gap: .5rem; }
.recherche input { flex: 1; min-width: 0; font: inherit; padding: .85rem 1rem; border: 1px solid #9aa6b0; background: #fff; color: var(--encre); }

/* ---------- study page (patient letter): reading first */
.couverture { padding-block: 1.25rem clamp(2.5rem, 5vw, 4rem); }
.couverture-ligne { display: grid; grid-template-columns: minmax(0, 1fr) 260px; gap: 2rem 3.5rem; align-items: end; }
.couverture h1 { font-size: clamp(3.5rem, 2rem + 5vw, 6rem); color: #fff; overflow-wrap: anywhere; }
.couverture .chapeau { font-size: 1.25rem; line-height: 1.5; max-width: 54ch; margin: 1.25rem 0 0; color: var(--sur-nuit-2); }
.etude-registre { margin: .75rem 0 0; color: var(--sur-nuit-2); }
.couverture-image { width: 260px; aspect-ratio: 1; object-fit: cover; }
.bouton-imprimer { margin-top: 1.75rem; background: #fff; color: var(--nuit); }
.bouton-imprimer:hover { background: var(--sur-nuit-2); color: var(--nuit); }
.notice { display: grid; grid-template-columns: 290px minmax(0, 1fr); gap: 2.5rem 4.5rem; padding-block: clamp(2.5rem, 5vw, 4rem) var(--respiration); align-items: start; }
.notice:not(:has(.sommaire)) { grid-template-columns: minmax(0, 1fr); }
.sommaire { position: sticky; top: calc(var(--entete-h) + 1rem); max-height: calc(100vh - var(--entete-h) - 2rem); overflow-x: hidden; overflow-y: auto; scrollbar-width: thin; }
.sommaire summary { list-style: none; display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin: 0 0 1rem; padding-bottom: .75rem; border-bottom: 3px solid var(--nuit); cursor: pointer; }
.sommaire summary::-webkit-details-marker { display: none; }
.sommaire summary h2 { font: 800 1.5rem/1 var(--affiche); font-stretch: 72%; text-transform: uppercase; color: var(--nuit); margin: 0; }
.sommaire-nombre { font-size: .9375rem; color: var(--encre-2); white-space: nowrap; }
.sommaire-nombre::after { content: ""; display: inline-block; width: .5em; height: .5em; margin-left: .5em; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-.15em) rotate(45deg); }
.sommaire-repli[open] .sommaire-nombre::after { transform: translateY(.1em) rotate(-135deg); }
.sommaire ol { margin: 0; padding: 0; list-style: none; counter-reset: q; }
.sommaire li { counter-increment: q; display: grid; grid-template-columns: 2rem 1fr; gap: .25rem; padding-block: .6rem; border-bottom: 1px solid var(--filet); font-size: .9375rem; line-height: 1.35; }
.sommaire li::before { content: counter(q); font: 800 1.125rem/1.2 var(--affiche); font-stretch: 70%; color: var(--bleu); }
.sommaire a { color: var(--encre); text-decoration: none; }
.sommaire a:hover { color: var(--framboise); text-decoration: underline; }
.lettre { background: var(--papier); padding: clamp(1.5rem, 4vw, 3.25rem); font-size: 1.25rem; line-height: 1.65; }
.lettre-texte > *, .lettre-contact > * { max-width: 38.75rem; } /* about 65-70 characters per line; rem so headings and their rules stop with the text */
.lettre-texte + .lettre-texte { margin-top: 2.75rem; padding-top: 2rem; border-top: 3px solid var(--nuit); }
.lettre h2 { font: 800 clamp(1.625rem, 1.3rem + 1vw, 2.125rem)/1.05 var(--affiche); font-stretch: 78%; color: var(--nuit); margin: 2.75rem 0 1rem; padding-top: 1rem; border-top: 3px solid var(--nuit); text-wrap: balance; }
.lettre-texte > h2:first-child, .lettre-version + h2 { margin-top: 0; padding-top: 0; border-top: 0; }
.lettre p { margin: 0 0 1em; }
.lettre .rteindent1 { padding-left: 1.5rem; }
.lettre .rtecenter { text-align: center; }
.lettre ul, .lettre ol { padding-left: 1.4rem; }
.lettre table { border-collapse: collapse; font-size: 1.0625rem; }
.lettre td, .lettre th { border: 1px solid var(--filet); padding: .5rem .7rem; vertical-align: top; }
.lettre-version { font: 700 1rem/1.3 var(--affiche); font-stretch: 85%; text-transform: uppercase; letter-spacing: .03em; color: var(--encre-2); margin: 0 0 1.5rem; }
.lettre-contact { margin-top: 2.75rem; padding: 1.5rem clamp(1.25rem, 3vw, 2rem); background: var(--fond); }
.lettre .lettre-contact h2 { margin: 0 0 .75rem; padding: 0; border: 0; color: var(--framboise); }
.lettre-contact p:last-child { margin-bottom: 0; }
.impression-source { display: none; }
.lettre-fichiers { margin-top: 2.75rem; padding-top: 1.25rem; border-top: 3px solid var(--nuit); }
.lettre-fichiers ul { list-style: none; padding: 0; }
.lettre-fichiers a { display: inline-flex; gap: .6rem; align-items: center; }

/* ---------- footer */
.pied { background: var(--nuit); color: var(--sur-nuit-2); padding-block: 3rem; font-size: .9375rem; }
.pied-ligne { display: flex; flex-wrap: wrap; gap: 2rem 3rem; justify-content: space-between; align-items: flex-start; }
.pied img { width: 210px; }
.pied address { font-style: normal; line-height: 1.6; }
.pied strong { color: #fff; }
.pied a { color: var(--sur-nuit); }
.pied a:hover { color: #fff; }
.pied-liens { list-style: none; margin: 0; padding: 0; line-height: 1.9; }

/* ---------- reveal on scroll (only when effets.js runs and motion is allowed) */
.effets [data-apparition] { opacity: 0; transform: translateY(28px); filter: blur(6px); transition: opacity .9s var(--sortie), transform .9s var(--sortie), filter .9s var(--sortie); transition-delay: calc(var(--i, 0) * 110ms); }
.effets [data-apparition].visible { opacity: 1; transform: none; filter: none; }
/* Long lists (study index, team): a light, quick rise, name after name, without the blur. */
.effets .urc-portail li[data-apparition], .effets .urc-equipe-categorie li[data-apparition] {
  transform: translateY(14px); filter: none; transition: opacity .6s var(--sortie), transform .6s var(--sortie); transition-delay: calc(var(--i, 0) * 70ms);
}
.effets .urc-portail li[data-apparition].visible, .effets .urc-equipe-categorie li[data-apparition].visible { opacity: 1; transform: none; }

/* ---------- responsive */
@media (max-width: 1080px) {
  .js .menu-bouton { display: inline-flex; }
  .js .nav { display: none; }
  html:not(.js) .entete-ligne { flex-wrap: wrap; }
  html:not(.js) .nav-liste { gap: .25rem 1.25rem; }
  .js .nav.ouvert { display: block; position: fixed; inset: 0; z-index: 100; background: var(--nuit); overflow: auto; }
  .nav-panneau { min-height: 100%; display: flex; flex-direction: column; padding: 1.25rem 1.5rem 2.5rem; }
  .menu-fermer { display: inline-flex; align-self: flex-end; }
  .nav-liste { flex-direction: column; gap: 0; margin-top: 2rem; }
  .nav-liste li { border-bottom: 1px solid #2b3c4b; }
  .nav-liste a { font-size: clamp(2rem, 1.4rem + 3vw, 2.75rem); font-weight: 800; font-stretch: 70%; padding-block: 1rem; border-bottom: 0; display: block; }
  .nav-liste .current-menu-item > a, .nav-liste .current_page_item > a { color: #fff; text-decoration: underline; text-decoration-color: var(--framboise); text-decoration-thickness: 4px; text-underline-offset: .25em; }
  .menu-ouvert { overflow: hidden; }
}
@media (max-width: 960px) {
  .publics, .colonnes, .etapes-ligne, .notice, .couverture-ligne { grid-template-columns: minmax(0, 1fr); }
  .public + .public { border-left: 0; border-top: 1px solid var(--filet); }
  .urc-etapes { grid-template-columns: 1fr 1fr; gap: 1.75rem 1.5rem; }
  .chiffre { grid-template-columns: clamp(6rem, 14vw, 9rem) minmax(0, 1fr); }
  .chiffre-precision { grid-column: 2; }
  .sommaire { position: static; max-height: none; background: var(--papier); padding: 1.25rem 1.5rem; }
  .couverture-image { width: 160px; }
}
@media (max-width: 600px) {
  :root { --entete-h: 4.5rem; }
  .marque img { width: 104px; }
  .marque span { display: none; }
  .urc-etapes { grid-template-columns: 1fr; }
  .chiffre { grid-template-columns: 1fr; gap: .25rem; }
  .chiffre-precision { grid-column: 1; }
  .lettre { font-size: 1.1875rem; padding-inline: 1.15rem; }
  .couverture-image { display: none; } /* patients on phones: the text comes first */
  .urc-portail a { grid-template-columns: 4rem minmax(0, 1fr); }
  .urc-portail img, .urc-portail-vignette { width: 4rem; height: 4rem; }
  .recherche-ligne { flex-direction: column; }
  .urc-annees ul { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: thin; padding-bottom: .25rem; }
  .notice { width: 100%; gap: 0; }
  .sommaire { padding: 1rem 1.25rem; }
  .bouton-imprimer { background: transparent; color: var(--sur-nuit); padding: .5rem 0; font-size: 1rem; }
  .bouton-imprimer:hover { background: transparent; color: #fff; }
  .urc-reservation > li { grid-template-columns: 2.25rem minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .entete, .bouton, .urc-portail a { transition: none; }
}

/* ---------- adapt: touch targets of at least 44px on touch screens */
@media (max-width: 600px) {
  .menu-bouton { min-height: 44px; }
  .marque { min-height: 44px; }
  .fil a { display: inline-block; padding-block: .7rem; margin-block: -.7rem; }
  .urc-etudes-etiquettes a, .urc-annees a { min-height: 44px; display: inline-flex; align-items: center; }
  .bouton-imprimer { min-height: 44px; }
  .sommaire summary { min-height: 44px; align-items: center; }
  .sommaire li { padding-block: 0; }
  .sommaire li::before { padding-top: .75rem; }
  .sommaire a { display: block; padding-block: .75rem; }
}
/* short landscape screens: the header scrolls away instead of covering the text */
@media (max-height: 500px) and (orientation: landscape) {
  .entete { position: relative; }
  html { scroll-padding-top: 1rem; }
  .urc-annees, .sommaire { position: static; max-height: none; }
}

/* ---------- harden: long words, wide tables, forced colours */
.lettre, .contenu-page, .publi-titre { overflow-wrap: break-word; }
/* acronyms are single long words: allow breaking anywhere rather than overflowing */
.urc-portail-acronyme, .urc-etudes-etiquettes a, .fil li, .couverture h1, .urc-portail-accroche { overflow-wrap: anywhere; }
.urc-etudes-etiquettes a { max-width: 100%; }
.lettre p, .lettre li { hyphens: auto; -webkit-hyphens: auto; }
.lettre table, .contenu-page table { display: block; max-width: 100%; overflow-x: auto; }
@media (forced-colors: active) {
  .bouton, .menu-bouton, .menu-fermer, .urc-annees a, .urc-etudes-etiquettes a { border: 1px solid ButtonText; }
  .halos { forced-color-adjust: auto; }
  :focus-visible { outline-color: Highlight; }
}

/* ---------- polish: browser surfaces and pressed states */
html { accent-color: var(--bleu); scrollbar-color: #9aa6b0 transparent; }
input, textarea { caret-color: var(--framboise); }
.bouton:active, .menu-bouton:active, .urc-annees a:active, .urc-etudes-etiquettes a:active { transform: translateY(1px); }
.lettre p, .contenu-page p, .public p, .accueil-intro .chapeau, .couverture .chapeau { text-wrap: pretty; }
.urc-annees ul::-webkit-scrollbar { height: 6px; }
.urc-annees ul::-webkit-scrollbar-thumb { background: #9aa6b0; }
@media (prefers-reduced-motion: reduce) {
  .bouton:active, .menu-bouton:active, .urc-annees a:active, .urc-etudes-etiquettes a:active { transform: none; }
}

@media (max-width: 800px) {
  .photo-equipe { position: static; display: block; width: 100%; height: clamp(14rem, 55vw, 22rem); margin-bottom: 1.5rem;
    -webkit-mask-image: linear-gradient(to top, transparent 0, #000 30%); mask-image: linear-gradient(to top, transparent 0, #000 30%); }
}

@media (max-width: 960px) {
  .public-photo { width: 100%; height: 40%; opacity: .45; }
  .public p { max-width: 48ch; }
}
