/* V30 : fiches compétition sobres, hiérarchisées, sans affiche obligatoire. */
.comp-cards .comp-v30{display:flex;flex-direction:column;gap:0;padding:0!important;overflow:hidden;border:1px solid #dce5f4;border-radius:13px;background:#fff;box-shadow:0 5px 22px rgba(17,44,92,.045)}
.comp-v30-top{background:#24378e;color:#fff;padding:23px 22px 21px}
.comp-v30-kicker{font-weight:800;font-size:10px;letter-spacing:.16em;color:#c2d7ff}
.comp-v30-top h2{font-size:clamp(22px,3vw,29px);line-height:1.12;letter-spacing:-.025em;color:#fff;margin:8px 0 0}
.comp-v30-facts{display:grid;grid-template-columns:1fr 1fr;gap:0;margin:0;border-bottom:1px solid #e6ecf6}
.comp-v30-facts>div{min-width:0;padding:19px 22px;border-bottom:1px solid #e6ecf6}
.comp-v30-facts>div:first-child{border-right:1px solid #e6ecf6}
.comp-v30-facts>div.comp-v30-location{grid-column:1/-1;border:0}
.comp-v30-facts dt{font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:800;color:#7c8ba7;margin-bottom:6px}
.comp-v30-facts dd{margin:0;color:#102e65;font-size:17px;font-weight:800;line-height:1.3;overflow-wrap:anywhere}
.comp-v30-audience{font-size:12px;font-weight:800;color:#1649aa;margin:16px 22px 0}
.comp-v30-description{margin:12px 22px 0!important;line-height:1.5;font-size:14px;color:#586b89}
.comp-v30>.tags{padding:15px 22px 0}
.comp-v30-footer{padding:18px 22px 22px!important;margin-top:auto;display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.comp-v30-footer .mini.primary{background:#1b51c0;color:white;border-radius:9px;min-height:46px;padding:0 22px;font-weight:800}
.comp-v30-signed{display:inline-flex;align-items:center;font-size:13px;font-weight:800;color:#0f7251;background:#e7f7f0;padding:10px 12px;border-radius:7px}
.comp-v30-footer .comp-hint{line-height:1.4;font-size:13px}
/* transition entre semaines; pas de page blanche */
#trainingSchedule .weekgrid{touch-action:pan-y;overscroll-behavior-x:contain;will-change:transform,opacity}
#trainingSchedule.week-switching{overflow:hidden}
#trainingSchedule.week-switching .weekgrid{pointer-events:none}
#trainingSchedule .weekgrid.week-leaving-next{animation:week-leave-next .18s ease-in forwards}
#trainingSchedule .weekgrid.week-leaving-prev{animation:week-leave-prev .18s ease-in forwards}
#trainingSchedule .weekgrid.week-enter-next{animation:week-enter-next .28s cubic-bezier(.18,.75,.2,1) both}
#trainingSchedule .weekgrid.week-enter-prev{animation:week-enter-prev .28s cubic-bezier(.18,.75,.2,1) both}
@keyframes week-leave-next{to{transform:translateX(-42%);opacity:.25}}
@keyframes week-leave-prev{to{transform:translateX(42%);opacity:.25}}
@keyframes week-enter-next{from{transform:translateX(46%);opacity:.35}to{transform:translateX(0);opacity:1}}
@keyframes week-enter-prev{from{transform:translateX(-46%);opacity:.35}to{transform:translateX(0);opacity:1}}
@media(max-width:720px){
 body.member-app .comp-page .comp-v30{margin:0!important;padding:0!important;border-radius:0!important;border-left:0;border-right:0;border-top:0;box-shadow:none}
 body.member-app .comp-v30-top{padding:26px 20px 24px}
 body.member-app .comp-v30-top h2{font-size:27px}
 body.member-app .comp-v30-facts>div{padding:17px 18px}
 body.member-app .comp-v30-facts dd{font-size:16px}
 body.member-app .comp-v30-audience{margin-left:18px;margin-right:18px}
 body.member-app .comp-v30-description{margin-left:18px!important;margin-right:18px!important}
 body.member-app .comp-v30-footer{padding:20px 18px 24px!important}
 body.member-app .comp-v30-footer .inline,body.member-app .comp-v30-footer button{width:100%}
}
@media(prefers-reduced-motion:reduce){#trainingSchedule .weekgrid[class*="week-"]{animation:none!important;will-change:auto}}
