/* Calendar page — same palette, type and motion as the home page. */
.calendar-page .site-header .desktop-nav a.is-active:after{transform:scaleX(1)}
.cal-back{display:none;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--paper)}
.cal-back svg{font-size:20px}

/* Hero */
.cal-hero{position:relative;background:var(--ink);color:var(--paper);padding:190px var(--gutter) 70px;overflow:hidden}
.cal-hero:before{content:'';position:absolute;inset:0;background-image:var(--grain);opacity:.07;mix-blend-mode:overlay;pointer-events:none}
.cal-eyebrow{font-size:12px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;opacity:.6;margin-bottom:26px}
.cal-title{font-family:var(--display);font-size:clamp(64px,11vw,200px);line-height:.98;letter-spacing:-.03em;text-transform:uppercase}
.cal-title .line{display:block;overflow:hidden;padding-bottom:.04em}
.cal-title .line>span{display:block}
.cal-title .line:last-child>span{color:var(--red)}
.cal-ready .cal-title .line>span{animation:cal-rise 1100ms var(--ease-expo) both}
.cal-ready .cal-title .line:last-child>span{animation-delay:110ms}
@keyframes cal-rise{from{transform:translate3d(0,105%,0)}to{transform:none}}
.cal-hero-bottom{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-top:60px;padding-top:30px;border-top:1px solid rgba(241,240,235,.16)}
.cal-lead{max-width:440px;font-size:17px;line-height:1.6}
.cal-summary{display:flex;gap:44px;text-align:right}
.cal-summary>*{display:flex;flex-direction:column;gap:6px}
.cal-summary strong{font-family:var(--display);font-weight:400;font-size:clamp(40px,4vw,60px);line-height:1}
.cal-summary span{font-size:13px;opacity:.75}
.cal-summary a strong{transition:color 250ms ease}

/* Toolbar */
.cal-body{background:var(--paper);padding-top:70px}
.cal-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:50px}
.cal-views{display:flex;gap:8px}
.cal-live{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--muted)}
.cal-live span{width:8px;height:8px;border-radius:50%;background:var(--red);box-shadow:0 0 0 0 rgba(255,73,54,.5);animation:cal-pulse 2.4s ease-out infinite}
@keyframes cal-pulse{0%{box-shadow:0 0 0 0 rgba(255,73,54,.45)}70%,100%{box-shadow:0 0 0 10px rgba(255,73,54,0)}}

/* Month groups (list view) */
.cal-month+.cal-month{margin-top:70px}
.cal-month-head{display:flex;align-items:baseline;justify-content:space-between;gap:20px;padding-bottom:18px;margin-bottom:10px;border-bottom:2px solid var(--ink)}
.cal-month-head h2{font-size:clamp(44px,5.5vw,84px);line-height:1}
.cal-month-head span{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.cal-rows{display:grid;gap:8px}

/* Stage row */
.cal-row{position:relative;display:grid;grid-template-columns:150px minmax(0,1fr) minmax(0,1.3fr) auto;gap:30px;align-items:center;padding:30px 32px;background:var(--surface);isolation:isolate;overflow:hidden;transition:color 400ms ease}
.cal-row:before{content:'';position:absolute;inset:0;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform 700ms var(--ease-expo);z-index:-1}
.cal-row-link{position:absolute;inset:0;z-index:1}
.cal-row-link:focus-visible{outline-offset:-4px}
.cal-date{display:flex;align-items:center;gap:14px}
.cal-date strong{font-family:var(--display);font-weight:400;font-size:64px;line-height:1;transition:transform 600ms var(--ease-expo)}
.cal-date span{font-size:13px;line-height:1.4}
.cal-what h3{font-size:clamp(36px,3.6vw,56px);line-height:1;text-transform:uppercase;letter-spacing:-.015em}
.cal-what p{font-size:13px;margin-top:8px}
.cal-badge{display:inline-block;margin-top:12px;padding:4px 8px;background:var(--ink);color:var(--paper);font-style:normal;font-size:11px;font-weight:800;letter-spacing:.06em}
.cal-badge.is-past{background:transparent;color:var(--muted);border:1px solid currentColor}
.cal-facts{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:20px}
.cal-facts dt{font-size:12px;color:var(--muted);margin-bottom:4px}
.cal-facts dd{margin:0;font-size:14px;line-height:1.45;font-weight:700}
.cal-actions{display:flex;flex-direction:column;align-items:flex-end;gap:12px;position:relative;z-index:2}
.cal-ics{display:inline-flex;align-items:center;gap:9px;background:var(--paper);color:var(--ink);padding:11px 14px;font-size:13px;font-weight:700;white-space:nowrap;transition:background-color 250ms ease,color 250ms ease}
.cal-ics svg{font-size:17px}
.cal-open{display:inline-flex;align-items:center;gap:10px;font-size:13px;font-weight:700;white-space:nowrap;pointer-events:none}
.cal-row.is-next{background:var(--ink);color:var(--paper)}
.cal-row.is-next .cal-facts dt{color:#a7aba1}
.cal-row.is-next .cal-badge{background:var(--red);color:var(--ink)}
.cal-row.is-past{opacity:.6}

/* Past stages */
.cal-past{margin-top:70px;border-top:1px solid rgba(16,18,15,.15)}
.cal-past summary{display:flex;align-items:center;gap:14px;padding:24px 0;cursor:pointer;list-style:none;font-weight:800;font-size:15px;letter-spacing:.02em}
.cal-past summary::-webkit-details-marker{display:none}
.cal-past summary span{display:grid;place-items:center;min-width:28px;height:28px;padding:0 8px;background:var(--surface);font-size:12px}
.cal-past summary:after{content:'+';margin-left:auto;font-size:26px;font-weight:400;transition:transform 400ms var(--ease-expo)}
.cal-past[open] summary:after{transform:rotate(45deg)}

/* Month grid */
.cal-grid-wrap{background:var(--ink);color:var(--paper);padding:34px;margin-bottom:10px}
.cal-grid-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:28px}
.cal-grid-head h2{font-size:clamp(40px,4.6vw,72px);line-height:1}
.cal-grid-head h2 span{color:var(--red)}
.cal-nav{width:52px;height:52px;display:grid;place-items:center;background:transparent;color:var(--paper);border:1px solid rgba(241,240,235,.25);font-size:22px;transition:background-color 250ms ease,color 250ms ease,border-color 250ms ease}
.cal-nav:disabled{opacity:.25}
.cal-weekdays,.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cal-weekdays span{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;opacity:.55;padding:0 10px 12px}
.cal-cell{position:relative;min-height:104px;padding:10px;background:rgba(241,240,235,.04);display:flex;flex-direction:column;justify-content:space-between;transition:background-color 300ms ease,transform 400ms var(--ease-expo)}
.cal-cell.is-blank{background:transparent}
.cal-cell.is-past{opacity:.45}
.cal-day{font-size:14px;font-weight:700}
.cal-cell.is-today{box-shadow:inset 0 0 0 1px var(--paper)}
.cal-cell.is-today .cal-day:after{content:'Aujourd’hui';display:block;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;opacity:.7;margin-top:2px}
.cal-cell.has-stage{background:var(--red);color:var(--ink)}
.cal-cell-city{font-family:var(--display);font-size:clamp(18px,1.8vw,28px);line-height:1;text-transform:uppercase;overflow-wrap:anywhere}
.cal-month-rows{margin-top:10px}

/* Empty state */
.cal-empty{background:var(--surface);padding:70px 40px;text-align:center}
.cal-empty h2{font-size:clamp(36px,4vw,56px);margin-bottom:16px}
.cal-empty p{max-width:460px;margin:0 auto 20px}
.cal-empty-note{padding:28px 0;color:var(--muted);font-size:15px}
.cal-loading{padding:40px 0;color:var(--muted)}

/* Closing call to action */
.cal-cta{background:var(--surface)}
.cal-cta-copy{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);column-gap:8%;align-items:end}
.cal-cta-copy h2{grid-row:span 2;margin:0}
.cal-cta-copy .button{justify-self:start}
.cal-cta-copy h2{font-size:clamp(44px,5.5vw,84px);margin-bottom:22px}
.cal-cta-copy p{max-width:420px;margin-bottom:30px;font-size:17px}

@media(hover:hover) and (pointer:fine){
  .cal-row:hover{color:var(--ink)}
  .cal-row:hover:before{transform:scaleX(1)}
  .cal-row:hover .cal-date strong{transform:translateY(-6px)}
  .cal-row:hover .cal-facts dt{color:var(--ink)}
  .cal-row:hover .cal-badge{background:var(--ink);color:var(--paper)}
  .cal-row:hover .cal-open svg{animation:arrow-loop 650ms var(--ease-expo)}
  .cal-ics:hover{background:var(--ink);color:var(--paper)}
  .cal-nav:not(:disabled):hover{background:var(--paper);color:var(--ink);border-color:var(--paper)}
  a.cal-cell.has-stage:hover{background:var(--paper);transform:translateY(-3px)}
  .cal-summary a:hover strong{color:var(--red)}
}
@media(hover:none){.cal-row:active:before{transform:scaleX(1);transition-duration:350ms}}

@media(max-width:1100px){
  .cal-row{grid-template-columns:120px minmax(0,1fr) auto;row-gap:22px}
  .cal-facts{grid-column:2/-1;grid-row:2}
}
@media(max-width:850px){
  .cal-hero{padding-top:150px}
  .cal-hero-bottom{flex-direction:column;align-items:flex-start}
  .cal-cta-copy{grid-template-columns:1fr}
  .cal-cta-copy h2{grid-row:auto;margin-bottom:22px}
  .cal-summary{text-align:left;gap:34px}
  .cal-cell{min-height:78px;padding:8px}
  .cal-cell-city{font-size:15px}
}
@media(max-width:580px){
  .calendar-page .site-header .cal-back{display:inline-flex}
  .cal-hero{padding:130px var(--gutter) 50px}
  .cal-title{font-size:17vw}
  .cal-lead{font-size:16px}
  .cal-body{padding-top:44px}
  .cal-toolbar{margin-bottom:34px}
  .cal-live{display:none}
  .cal-month+.cal-month{margin-top:50px}
  .cal-month-head h2{font-size:46px}
  .cal-row{grid-template-columns:66px minmax(0,1fr);gap:16px 18px;padding:24px 20px}
  .cal-date{flex-direction:column;align-items:flex-start;gap:6px}
  .cal-date strong{font-size:48px}
  .cal-date span{font-size:12px}
  .cal-what h3{font-size:34px}
  .cal-facts{grid-column:1/-1;grid-row:auto;grid-template-columns:1fr 1fr;gap:14px;padding-top:16px;border-top:1px solid rgba(16,18,15,.12)}
  .cal-row.is-next .cal-facts{border-color:rgba(241,240,235,.16)}
  .cal-facts>div:first-child{grid-column:1/-1}
  .cal-actions{grid-column:1/-1;flex-direction:row;justify-content:space-between;align-items:center}
  .cal-grid-wrap{padding:20px 12px;margin:0 calc(var(--gutter)*-1) 10px}
  .cal-grid-head{padding:0 6px}
  .cal-nav{width:44px;height:44px}
  .cal-weekdays span{padding:0 0 10px;text-align:center;font-size:10px;letter-spacing:.06em}
  .cal-weekdays,.cal-grid{gap:3px}
  .cal-cell{min-height:52px;padding:6px 4px;align-items:center;justify-content:center;text-align:center}
  .cal-day{font-size:13px}
  .cal-cell-city{display:none}
  .cal-cell.has-stage .cal-day{font-family:var(--display);font-weight:400;font-size:20px}
  .cal-cell.is-today .cal-day:after{display:none}
  .cal-cta-copy p{font-size:16px}
}
@media(prefers-reduced-motion:reduce){.cal-ready .cal-title .line>span{animation:none}.cal-live span{animation:none}}
