.programme-page{padding:60px 40px 120px;max-width:1400px;margin:0 auto}
.day-block{margin-bottom:80px}
.day-block-head{display:grid;grid-template-columns:auto 1fr auto;gap:30px;align-items:end;padding-bottom:24px;margin-bottom:40px;border-bottom:1px solid var(--rule)}
.day-num{font-family:var(--serif);font-weight:300;font-size:120px;line-height:.85;color:var(--brique)}
.day-info h2{font-family:var(--serif);font-size:48px;font-weight:300;letter-spacing:-.02em}
.day-info p{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft);margin-top:8px}
.day-stats{display:flex;gap:30px;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft)}
.day-stats strong{display:block;font-family:var(--serif);font-size:32px;color:var(--brique);font-weight:400;font-variant-numeric:tabular-nums}
.timeline{display:grid;grid-template-columns:140px 1fr;gap:40px}
.timeline-time{position:sticky;top:120px;align-self:start}
.tl-item{display:grid;grid-template-columns:140px 1fr;gap:40px;padding:32px 0;border-top:1px solid var(--rule)}
.tl-item:first-child{border-top:0;padding-top:0}
.tl-time{font-family:var(--serif);font-size:34px;color:var(--brique);font-weight:300;font-variant-numeric:tabular-nums;line-height:1}
.tl-time small{display:block;font-family:var(--mono);font-size:11px;color:var(--ink-soft);margin-top:6px;letter-spacing:.1em;text-transform:uppercase}
.tl-content{display:grid;grid-template-columns:200px 1fr;gap:40px}
.tl-where{font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft);padding-top:6px}
.tl-where::before{content:"\25C9 ";color:var(--brique)}
.tl-where.has-places::before{content:none}
.tl-places{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.tl-places li::before{content:"\25C9 ";color:var(--brique)}
.tl-places a,.tl-where>a{color:var(--ink-soft);text-decoration:none;border-bottom:1px dashed var(--rule);transition:color .15s,border-color .15s}
.tl-places a:hover,.tl-where>a:hover{color:var(--brique);border-bottom-color:var(--brique)}
.tl-places .ext,.tl-where .ext{font-size:10px}
.tl-body h3{font-family:var(--serif);font-size:30px;font-weight:400;letter-spacing:-.01em;margin-bottom:10px}
.tl-body p{font-size:15px;line-height:1.6;color:var(--ink-soft);max-width:680px}
.tl-tags{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}
.tl-tag{padding:4px 10px;border:1px solid var(--rule);border-radius:999px;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft)}
.tl-item.is-highlight{background:linear-gradient(90deg,rgba(248,171,24,.1),transparent);border-radius:8px;padding:32px 24px;margin:0 -24px;border:0}
.tl-item.is-highlight .tl-time{color:var(--ocre)}
.tl-item.is-highlight .tl-body h3::before{content:"\2605 ";color:var(--ocre)}
.prog-sub{list-style:none;margin-top:16px}
.prog-sub li{display:grid;grid-template-columns:230px 1fr auto;gap:18px;align-items:baseline;padding:13px 0;border-top:1px dashed var(--rule)}
.prog-sub .pl{font-family:var(--display);font-size:18px;font-weight:500;color:var(--ink)}
.prog-sub .mq{font-size:14px;color:var(--ink-soft)}
.prog-sub .hr{font-family:var(--mono);font-size:12px;color:var(--brique);letter-spacing:.04em;text-align:right;white-space:nowrap}
.prog-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.prog-chips span{padding:6px 13px;border:1px solid var(--rule);border-radius:999px;font-size:13px;color:var(--ink);background:rgba(46,26,18,.03)}
.prog-aside{margin-top:14px;font-size:14px;line-height:1.6;color:var(--ink-soft)}
@media(max-width:760px){.prog-sub li{grid-template-columns:1fr;gap:4px}.prog-sub .hr{text-align:left}}

/* ──────────────────────────────────────────────────────────
   Responsivité — page Programme
   ────────────────────────────────────────────────────────── */
@media(max-width:900px){
  .programme-page{padding:50px 28px 90px}
  .day-num{font-size:90px}
  .day-info h2{font-size:38px}
  .tl-item{grid-template-columns:104px 1fr;gap:24px}
  /* La sous-grille lieu/contenu s'empile : lieu au-dessus du descriptif. */
  .tl-content{grid-template-columns:1fr;gap:10px}
  .tl-where{padding-top:0}
  .tl-item.is-highlight{margin:0 -16px;padding:28px 16px}
}
@media(max-width:680px){
  .programme-page{padding:40px 20px 80px}
  .day-block{margin-bottom:56px}
  /* En-tête de jour : numéro + titre sur une ligne, horaires en dessous. */
  .day-block-head{grid-template-columns:auto 1fr;gap:12px 16px;align-items:center;margin-bottom:30px}
  .day-num{font-size:clamp(52px,16vw,72px);line-height:.8}
  .day-info h2{font-size:clamp(24px,6.5vw,34px)}
  .day-info p{font-size:10.5px}
  .day-stats{grid-column:1/-1;gap:18px;margin-top:2px}
  .day-stats strong{font-size:24px}
  /* Chaque créneau empilé : heure (avec son sous-texte en ligne) puis contenu. */
  .tl-item{grid-template-columns:1fr;gap:8px;padding:24px 0}
  .tl-time{font-size:27px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
  .tl-time small{margin-top:0}
  .tl-body h3{font-size:clamp(20px,5.5vw,25px)}
  .tl-body p{font-size:14px}
  .tl-item.is-highlight{margin:0 -12px;padding:22px 12px}
}
