/* ==========================================================================
   Paris World Games — feuille de style principale
   Palette de la marque : blanc · bleu #162a77 · rouge #e1371e (et leurs nuances).
   Signature graphique : le blason du logo (cadres photo, médaillons), les grands mots en contour
   (PARIS, SEINE…), les coins coupés (boutons, cartes), le bandeau défilant rouge. Un seul bleu : #162a77 (jamais de bleu nuit).
   ========================================================================== */

:root {
	--navy: #162a77;
	--navy-rgb: 22 42 119;
	--red: #e1371e;
	--red-rgb: 225 55 30;
	--white: #ffffff;
	--mist: #f2f4fa;
	--ink-soft: rgb(var(--navy-rgb) / .72);
	--line: rgb(var(--navy-rgb) / .12);

	--font-display: "Teko", "Barlow Condensed", "Arial Narrow", sans-serif;
	--font-label: "Barlow Condensed", "Arial Narrow", sans-serif;
	--font-body: "Barlow", "Segoe UI", system-ui, sans-serif;

	--container: 1280px;
	--gutter: clamp(16px, 4vw, 48px);
	--sec: clamp(64px, 9vw, 132px);
	--hdr: 88px;
	--ease: cubic-bezier(.2, .75, .2, 1);
	--notch: 14px;
	--cut: polygon(0 0, 100% 0, 100% calc(100% - var(--notch)), calc(100% - var(--notch)) 100%, 0 100%);
	--shield: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 120' preserveAspectRatio='none'%3E%3Cpath d='M0 0H100V68C100 92 74 107 50 120C26 107 0 92 0 68Z'/%3E%3C/svg%3E");
	--shadow: 0 30px 60px -30px rgb(var(--navy-rgb) / .55);
}

@media (max-width: 1180px) { :root { --hdr: 76px; } }

/* --------------------------------------------------------------- base */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--hdr) + 20px); }
body { margin: 0; background: var(--white); color: var(--navy); font: 400 1.0625rem/1.65 var(--font-body); -webkit-font-smoothing: antialiased; overflow-x: hidden; }
body.nav-open { overflow: hidden; }
img, svg { display: block; max-width: 100%; height: auto; }
h1, h2, h3, h4 { margin: 0 0 .4em; font-family: var(--font-display); font-weight: 700; line-height: .9; text-transform: uppercase; letter-spacing: .01em; text-wrap: balance; }
p { margin: 0 0 1em; }
a { color: inherit; text-decoration-color: var(--red); text-decoration-thickness: 2px; text-underline-offset: 3px; }
em { font-style: normal; }
::selection { background: var(--red); color: var(--white); }
:focus-visible { outline: 3px solid var(--red); outline-offset: 3px; }
.sec--red :focus-visible, .band--red :focus-visible { outline-color: var(--white); }
.wrap { width: 100%; max-width: calc(var(--container) + var(--gutter) * 2); margin-inline: auto; padding-inline: var(--gutter); }
.main { display: block; outline: none; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.skip-link { position: fixed; top: 8px; left: 8px; z-index: 300; padding: .75rem 1.25rem; background: var(--red); color: var(--white); font-weight: 700; text-decoration: none; transform: translateY(-160%); transition: transform .2s; }
.skip-link:focus { transform: none; }
.icon { width: 1.25em; height: 1.25em; flex: none; }
.icon.flip { transform: scaleX(-1); }
.fod { display: block; height: auto; }

/* --------------------------------------------------------------- titres de section */
.kicker { display: inline-flex; align-items: center; gap: .6rem; margin: 0 0 1rem; font: 700 .98rem/1.1 var(--font-label); letter-spacing: .22em; text-transform: uppercase; color: var(--red); }
.kicker::before { content: ""; width: 14px; height: 17px; flex: none; background: currentColor; -webkit-mask: var(--shield) center / 100% 100% no-repeat; mask: var(--shield) center / 100% 100% no-repeat; }
.kicker--light { color: var(--white); }
.kicker--light::before { background: var(--red); }
.head { max-width: 780px; margin-bottom: clamp(32px, 4vw, 56px); }
.head .title { margin-bottom: .3em; font-size: clamp(2.7rem, 5.6vw, 5rem); color: var(--navy); }
.head .title em { color: var(--red); }
.head .lead { max-width: 60ch; }
.head--light .title, .head--light .lead { color: var(--white); }
.head--light .kicker { color: var(--white); }
.head--light .kicker::before { background: var(--red); }
.head--center { margin-inline: auto; text-align: center; }
.head--center .kicker { justify-content: center; }
.head-row { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1rem 2rem; margin-bottom: clamp(32px, 4vw, 56px); }
.head-row .head { margin-bottom: 0; }
.lead { font-size: clamp(1.08rem, 1.4vw, 1.22rem); line-height: 1.6; color: var(--ink-soft); }
.sec--night .lead, .sec--navy .lead { color: rgb(255 255 255 / .82); }
.prose p { max-width: 68ch; }

/* --------------------------------------------------------------- boutons (coin coupé) */
.btn {
	--bg: var(--red); --fg: var(--white); --bg-h: var(--navy); --fg-h: var(--white);
	display: inline-flex; align-items: center; justify-content: center; gap: .7rem;
	min-height: 56px; padding: .95rem 1.6rem .75rem;
	border: 0; background: var(--bg); color: var(--fg);
	font: 600 1.4rem/1 var(--font-display); letter-spacing: .05em; text-transform: uppercase; text-decoration: none;
	cursor: pointer; clip-path: var(--cut);
	transition: background .3s var(--ease), color .3s var(--ease), transform .3s var(--ease);
}
.btn .icon { width: 20px; height: 20px; margin-top: -.18em; transition: transform .3s var(--ease); }
.btn:hover, .btn:focus-visible { background: var(--bg-h); color: var(--fg-h); }
.btn:hover .icon:last-child { transform: translateX(4px); }
.btn:active { transform: translateY(1px); }
.btn[disabled] { opacity: .7; pointer-events: none; }
.btn--sm { min-height: 46px; padding: .75rem 1.25rem .6rem; font-size: 1.22rem; }
.btn--white { --bg: var(--white); --fg: var(--navy); --bg-h: var(--red); --fg-h: var(--white); }
.btn--ghost { --bg: rgb(255 255 255 / .14); --fg: var(--white); --bg-h: var(--white); --fg-h: var(--navy); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.btn--navy { --bg: var(--navy); --fg: var(--white); --bg-h: var(--red); }
.btn--line { --bg: rgb(var(--navy-rgb) / .08); --fg: var(--navy); --bg-h: var(--navy); --fg-h: var(--white); }
.sec--red .btn--white, .band--red .btn--white, .cta .btn--white { --bg-h: var(--navy); }
.link-arrow { display: inline-flex; align-items: center; gap: .5rem; font: 600 1.35rem/1 var(--font-display); letter-spacing: .04em; text-transform: uppercase; color: var(--red); text-decoration: none; }
.link-arrow .icon { width: 20px; height: 20px; margin-top: -.15em; transition: transform .3s var(--ease); }
.link-arrow:hover .icon:last-child { transform: translate(3px, 0); }

.chip { display: inline-flex; align-items: center; gap: .4rem; padding: .42rem .75rem .32rem; font: 700 .92rem/1 var(--font-label); letter-spacing: .08em; text-transform: uppercase; }
.chip .icon { width: 15px; height: 15px; margin-top: -.12em; }
.chip--red { background: var(--red); color: var(--white); }
.chip--glass { background: rgb(255 255 255 / .18); color: var(--white); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }

/* --------------------------------------------------------------- sections */
.sec { position: relative; padding-block: var(--sec); }
.sec--mist { background: var(--mist); }
.sec--navy { background: var(--navy); color: var(--white); }
.sec--night { background: radial-gradient(60% 70% at 88% 18%, rgb(var(--red-rgb) / .2), transparent 65%), radial-gradient(70% 70% at 0% 100%, rgb(var(--navy-rgb) / .9), transparent 70%), var(--navy); color: var(--white); }
.sec--red { background: var(--red); color: var(--white); }
.sec--navy .title, .sec--night .title, .sec--red .title { color: var(--white); }
.sec--red .kicker, .sec--red .title em { color: var(--white); }
.sec--red .kicker::before { background: var(--white); }
.sec--red .head--light .title em { color: var(--navy); }
.band { padding-block: clamp(40px, 5vw, 64px); }
.band--red { background: repeating-linear-gradient(-45deg, rgb(255 255 255 / .05) 0 2px, transparent 2px 16px), var(--red); color: var(--white); }

/* --------------------------------------------------------------- apparitions */
html.reveal-ready [data-reveal] { opacity: 0; transform: translateY(30px); transition: opacity .9s var(--ease), transform .9s var(--ease); transition-delay: calc(var(--d, 0) * 90ms); }
html.reveal-ready [data-reveal="left"] { transform: translateX(-46px); }
html.reveal-ready [data-reveal="right"] { transform: translateX(46px); }
html.reveal-ready [data-reveal].is-visible { opacity: 1; transform: none; }

/* --------------------------------------------------------------- blason (cadre photo) */
.shield { position: relative; display: block; aspect-ratio: 4 / 5; padding: 7px; background: var(--white); -webkit-mask: var(--shield) center / 100% 100% no-repeat; mask: var(--shield) center / 100% 100% no-repeat; }
.shield__in { display: block; width: 100%; height: 100%; overflow: hidden; -webkit-mask: var(--shield) center / 100% 100% no-repeat; mask: var(--shield) center / 100% 100% no-repeat; background: var(--navy); }
.shield__in img { width: 100%; height: 100%; object-fit: cover; }

/* --------------------------------------------------------------- en-tête */
.hdr { position: fixed; inset: 0 0 auto; z-index: 100; color: var(--white); transition: background .35s var(--ease), box-shadow .35s var(--ease), color .35s var(--ease); }
.hdr::before { content: ""; position: absolute; inset: 0 0 -40px; z-index: -1; background: linear-gradient(rgb(var(--navy-rgb) / .65), transparent); transition: opacity .35s; pointer-events: none; }
.hdr.is-scrolled { background: var(--white); color: var(--navy); box-shadow: 0 12px 30px -16px rgb(var(--navy-rgb) / .35); }
.hdr.is-scrolled::before { opacity: 0; }
.admin-bar .hdr { top: 32px; }
@media (max-width: 782px) { .admin-bar .hdr { top: 46px; } }
@media (max-width: 600px) { .admin-bar .hdr { top: 0; } }
.hdr__in { display: flex; align-items: center; gap: 1.3rem; height: var(--hdr); }
.brand { position: relative; flex: none; margin-right: auto; }
.brand img { width: auto; height: 52px; transition: opacity .3s, height .3s var(--ease); }
.brand__white { position: absolute; inset: 0; }
.brand__color { opacity: 0; }
.hdr.is-scrolled .brand__color { opacity: 1; }
.hdr.is-scrolled .brand__white { opacity: 0; }
.hdr.is-scrolled .brand img { height: 44px; }

.nav-list { display: flex; align-items: center; gap: clamp(.9rem, 1.6vw, 1.8rem); margin: 0; padding: 0; list-style: none; }
.nav-link { position: relative; display: inline-flex; align-items: center; gap: .3rem; padding: .5rem 0 .3rem; border: 0; background: none; color: inherit; font: 600 1.32rem/1 var(--font-display); letter-spacing: .05em; text-transform: uppercase; text-decoration: none; white-space: nowrap; cursor: pointer; }
.nav-link .icon { width: 16px; height: 16px; margin-top: -.2em; transition: transform .3s var(--ease); }
.nav-link::after { content: ""; position: absolute; left: 0; right: 0; bottom: -3px; height: 3px; background: var(--red); transform: scaleX(0); transform-origin: left; transition: transform .35s var(--ease); }
.nav-link:hover::after, .nav-link[aria-current="page"]::after, .is-current > .nav-link::after { transform: scaleX(1); }
.nav-item--drop { position: relative; }
.nav-sub { position: absolute; top: calc(100% + 14px); left: -18px; z-index: 5; display: grid; gap: 4px; width: 320px; margin: 0; padding: 10px; list-style: none; background: var(--white); color: var(--navy); box-shadow: 0 30px 60px -24px rgb(var(--navy-rgb) / .5); clip-path: var(--cut); opacity: 0; visibility: hidden; transform: translateY(8px); transition: opacity .25s, transform .25s var(--ease), visibility 0s .25s; }
.nav-item--drop:hover .nav-sub, .nav-item--drop:focus-within .nav-sub, .nav-item--drop.is-open .nav-sub { opacity: 1; visibility: visible; transform: none; transition: opacity .25s, transform .25s var(--ease); }
.nav-item--drop:hover .nav-drop .icon, .nav-item--drop.is-open .nav-drop .icon { transform: rotate(180deg); }
.nav-sport { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: .9rem; padding: .7rem .8rem; text-decoration: none; transition: background .2s; }
.nav-sport:hover, .nav-sport[aria-current="page"] { background: var(--mist); }
.nav-sport__icon { display: grid; place-items: center; width: 46px; height: 46px; background: var(--red); color: var(--white); clip-path: var(--cut); }
.nav-sport__icon .icon { width: 24px; height: 24px; }
.nav-sport b { display: block; font: 600 1.5rem/1 var(--font-display); letter-spacing: .04em; text-transform: uppercase; }
.nav-sport small { font: 700 .82rem/1.2 var(--font-label); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); }
.nav__extra { display: none; }
/* anglais et espagnol : intitulés plus longs, menu resserré sur les écrans moyens */
@media (min-width: 1181px) and (max-width: 1540px) {
	html:not([lang^="fr"]) .nav-list { gap: clamp(.75rem, 1.1vw, 1.3rem); }
	html:not([lang^="fr"]) .nav-link { font-size: 1.16rem; }
	html:not([lang^="fr"]) .hdr__in { gap: 1rem; }
}
@media (min-width: 1181px) and (max-width: 1320px) {
	html:not([lang^="fr"]) .nav-link { font-size: 1.04rem; }
}

.hdr__cta { flex: none; }
.burger { display: none; position: relative; width: 50px; height: 50px; padding: 0; border: 0; background: var(--red); cursor: pointer; clip-path: var(--cut); }
.burger__bars, .burger__bars span, .burger__bars::before, .burger__bars::after { position: absolute; left: 14px; right: 14px; height: 2.5px; background: var(--white); transition: transform .3s var(--ease), opacity .2s; }
.burger__bars { top: 50%; left: 0; right: 0; height: 0; background: none; }
.burger__bars span { top: -1px; }
.burger__bars::before { content: ""; top: -8px; }
.burger__bars::after { content: ""; top: 6px; }
.burger[aria-expanded="true"] .burger__bars span { opacity: 0; }
.burger[aria-expanded="true"] .burger__bars::before { transform: translateY(7px) rotate(45deg); }
.burger[aria-expanded="true"] .burger__bars::after { transform: translateY(-7px) rotate(-45deg); }

/* sélecteur de langue */
.lang-menu { position: relative; flex: none; }
.lang-menu__toggle { display: inline-flex; align-items: center; gap: .4rem; height: 44px; padding: .2rem .8rem 0; background: rgb(255 255 255 / .14); font: 600 1.25rem/1 var(--font-display); letter-spacing: .06em; list-style: none; cursor: pointer; user-select: none; clip-path: var(--cut); transition: background .25s, color .25s; }
.hdr.is-scrolled .lang-menu__toggle { background: rgb(var(--navy-rgb) / .08); }
.lang-menu__toggle::-webkit-details-marker { display: none; }
.lang-menu__toggle:hover, .lang-menu[open] > .lang-menu__toggle { background: var(--red); color: var(--white); }
.lang-menu__globe { width: 1.05em; height: 1.05em; margin-top: -.2em; }
.lang-menu__chevron { width: .85em; height: .85em; margin-top: -.2em; transition: transform .3s var(--ease); }
.lang-menu[open] .lang-menu__chevron { transform: rotate(180deg); }
.lang-menu__panel { position: absolute; top: calc(100% + 12px); right: 0; z-index: 120; width: 236px; padding: .5rem; background: var(--white); color: var(--navy); box-shadow: 0 24px 50px -20px rgb(var(--navy-rgb) / .55); clip-path: var(--cut); animation: lang-in .28s var(--ease) both; }
@keyframes lang-in { from { opacity: 0; transform: translateY(-8px); } }
.lang-menu__title { margin: 0; padding: .55rem .7rem .4rem; font: 700 .78rem/1 var(--font-label); letter-spacing: .22em; text-transform: uppercase; color: var(--red); }
.lang-menu__list { display: grid; gap: 2px; margin: 0; padding: 0; list-style: none; }
.lang-menu__list a { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: .8rem; padding: .6rem .7rem; text-decoration: none; transition: background .2s; }
.lang-menu__list a:hover, .lang-menu__list a:focus-visible { background: var(--mist); }
.lang-code { display: inline-grid; place-items: center; width: 2.6rem; height: 1.75rem; padding-top: .15rem; font: 600 1.1rem/1 var(--font-display); letter-spacing: .06em; color: var(--white); background: var(--navy); clip-path: var(--cut); --notch: 6px; }
.lang-name { font: 600 1.05rem/1.2 var(--font-body); }
.lang-menu__list a[aria-current] .lang-code { background: var(--red); }
.lang-check { width: 1.1em; height: 1.1em; color: var(--red); }
.lang-pills ul { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0; padding: 0; list-style: none; }
.lang-pills a { display: block; padding: .7rem 1.1rem .5rem; background: rgb(255 255 255 / .12); font: 600 1.3rem/1 var(--font-display); letter-spacing: .05em; text-transform: uppercase; color: var(--white); text-decoration: none; clip-path: var(--cut); --notch: 8px; }
.lang-pills a[aria-current] { background: var(--white); color: var(--navy); }

@media (max-width: 1180px) {
	.burger { display: block; }
	.nav {
		position: fixed; inset: var(--hdr) 0 0; z-index: 90;
		display: flex; flex-direction: column; gap: 1.6rem;
		padding: 1.6rem var(--gutter) 2.4rem;
		background: radial-gradient(60% 50% at 100% 0, rgb(var(--red-rgb) / .25), transparent 70%), var(--navy);
		color: var(--white); overflow-y: auto;
		transform: translateY(-14px); opacity: 0; visibility: hidden;
		transition: transform .4s var(--ease), opacity .3s, visibility 0s .4s;
	}
	.admin-bar .nav { top: calc(var(--hdr) + 46px); }
	.nav.is-open { transform: none; opacity: 1; visibility: visible; transition: transform .4s var(--ease), opacity .3s; }
	.nav-list { flex-direction: column; align-items: stretch; gap: 0; }
	.nav-link { width: 100%; padding: .55rem 0 .35rem; font-size: clamp(2.1rem, 8vw, 2.8rem); }
	.nav-link::after { display: none; }
	.nav-link[aria-current="page"] { color: var(--red); }
	.nav-drop .icon { display: none; }
	.nav-sub { position: static; width: auto; margin: .3rem 0 .8rem; padding: 0; background: none; color: var(--white); box-shadow: none; clip-path: none; opacity: 1; visibility: visible; transform: none; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .5rem; }
	.nav-sport { grid-template-columns: 1fr; gap: .4rem; padding: .7rem; background: rgb(255 255 255 / .08); }
	.nav-sport:hover, .nav-sport[aria-current="page"] { background: rgb(255 255 255 / .16); }
	.nav-sport small { color: rgb(255 255 255 / .7); }
	.nav-sport b { font-size: 1.35rem; }
	.nav__extra { display: flex; flex-direction: column; align-items: flex-start; gap: 1.2rem; margin-top: auto; }
	.nav__contact { display: grid; gap: .5rem; margin: 0; }
	.nav__contact a { display: inline-flex; align-items: center; gap: .6rem; text-decoration: none; font-weight: 600; }
	.hdr.nav-is-open { background: var(--navy); color: var(--white); }
	.hdr.nav-is-open .brand__white { opacity: 1; }
	.hdr.nav-is-open .brand__color { opacity: 0; }
}
@media (max-width: 640px) {
	.hdr__cta { display: none; }
	.brand img { height: 42px; }
	.hdr.is-scrolled .brand img { height: 38px; }
	.hdr__in { gap: .7rem; }
	.lang-menu__toggle { padding-inline: .6rem; }
	.lang-menu__globe { display: none; }
	.nav-sub { grid-template-columns: 1fr; }
	.nav-sport { grid-template-columns: auto 1fr; }
}

/* --------------------------------------------------------------- accueil : ouverture
   La photo est calée en haut et sur toute la largeur : la tour Eiffel (68 % de la largeur, base à 43,5 % de la largeur
   depuis le haut) reste entièrement visible. Le texte occupe la moitié gauche, les trois blasons se posent sur la Seine,
   sous la tour, à droite. */
.hero { position: relative; display: flex; flex-direction: column; min-height: max(760px, 100svh, 68vw); padding-top: var(--hdr); overflow: hidden; background: var(--navy); color: var(--white); isolation: isolate; }
.hero__media { position: absolute; inset: 0; z-index: -3; }
.hero__media img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 0; transform-origin: 68% 25%; animation: pwg-drift 26s ease-out both; }
.hero__shade { position: absolute; inset: 0; z-index: -2; background:
	linear-gradient(90deg, rgb(var(--navy-rgb) / .94) 0%, rgb(var(--navy-rgb) / .8) 28%, rgb(var(--navy-rgb) / .3) 47%, rgb(var(--navy-rgb) / 0) 60%),
	linear-gradient(0deg, rgb(var(--navy-rgb) / .92) 0%, rgb(var(--navy-rgb) / 0) 32%),
	linear-gradient(180deg, rgb(var(--navy-rgb) / .45) 0%, rgb(var(--navy-rgb) / 0) 14%),
	radial-gradient(38% 30% at 86% 100%, rgb(var(--red-rgb) / .35), transparent 70%); }
.hero__giant { position: absolute; left: -.04em; bottom: .1em; z-index: -1; margin: 0; font: 700 clamp(10rem, 27vw, 32rem)/.72 var(--font-display); letter-spacing: .01em; text-transform: uppercase; white-space: nowrap; color: rgb(255 255 255 / .03); -webkit-text-stroke: 2px rgb(255 255 255 / .22); pointer-events: none; user-select: none; animation: pwg-giant 1.6s .2s var(--ease) both; }
.hero__grid { flex: 1; display: flex; flex-direction: column; justify-content: space-between; gap: 28px; padding-block: clamp(20px, 3vw, 44px) 32px; }
.hero__copy { max-width: min(660px, 50%); }
.hero__edition { display: flex; align-items: center; gap: 1rem; margin: 0 0 1.2rem; animation: pwg-rise .9s var(--ease) backwards; }
.hero__year { padding: .45rem .8rem .25rem; background: var(--red); font: 600 1.6rem/1 var(--font-display); letter-spacing: .08em; clip-path: var(--cut); --notch: 8px; }
.fod--hero { width: clamp(170px, 18vw, 250px); }
.hero__title { margin-bottom: .35em; font-size: clamp(3.3rem, 6.2vw, 6.6rem); line-height: .84; animation: pwg-rise .9s .1s var(--ease) backwards; }
.hero__title em { color: var(--red); }
.hero__title-sports { display: block; margin-bottom: .7rem; font: 700 clamp(.92rem, 1.1vw, 1.12rem)/1.25 var(--font-label); letter-spacing: .2em; color: rgb(255 255 255 / .88); }
.hero__lead { max-width: 46ch; margin-bottom: 1.5rem; font-size: clamp(1.06rem, 1.35vw, 1.22rem); color: rgb(255 255 255 / .9); animation: pwg-rise .9s .2s var(--ease) backwards; }
.hero__sports { display: flex; flex-wrap: wrap; gap: .6rem; margin: 0 0 1.8rem; padding: 0; list-style: none; animation: pwg-rise .9s .3s var(--ease) backwards; }
.hero__sports a { display: inline-flex; align-items: center; gap: .55rem; padding: .35rem .9rem .35rem .35rem; background: rgb(255 255 255 / .12); color: var(--white); text-decoration: none; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); clip-path: var(--cut); --notch: 10px; transition: background .25s; }
.hero__sports a:hover { background: rgb(255 255 255 / .24); }
.hero__sports .icon { box-sizing: content-box; width: 20px; height: 20px; padding: 8px; background: var(--red); clip-path: var(--cut); --notch: 6px; }
.hero__sports b { font: 600 1.45rem/1 var(--font-display); letter-spacing: .04em; text-transform: uppercase; padding-top: .15em; }
.hero__sports small { display: none; }
.hero__actions { display: flex; flex-wrap: wrap; gap: .8rem 1rem; margin: 0; animation: pwg-rise .9s .4s var(--ease) backwards; }

/* les trois blasons, posés sur la Seine sous la tour */
.hero__trio { --tw: clamp(170px, 17vw, 300px); position: absolute; z-index: 5; right: max(var(--gutter), calc((100% - var(--container)) / 2)); bottom: 26px; width: calc(var(--tw) * 2.65); height: calc(var(--tw) * 1.32); }
.trio { position: absolute; bottom: 2%; display: block; width: var(--tw); color: var(--white); text-decoration: none; filter: drop-shadow(0 30px 30px rgb(var(--navy-rgb) / .6)); transform: translate(var(--x, 0), var(--y, 0)) rotate(var(--rot, 0deg)); animation: pwg-trio 1.1s calc(.35s + var(--i) * .14s) var(--ease) backwards; transition: transform .45s var(--ease); }
.trio--handball { left: 0; --rot: -5deg; }
.trio--football { left: 50%; bottom: 5%; z-index: 2; --x: -50%; }
.trio--basketball { right: 0; --rot: 5deg; }
.trio:hover { z-index: 3; transform: translate(var(--x, 0), -10px) rotate(0deg); }
.trio__label { position: absolute; left: 50%; bottom: 15%; display: grid; justify-items: center; padding: .45rem .9rem .3rem; background: var(--red); text-align: center; white-space: nowrap; transform: translateX(-50%); clip-path: var(--cut); --notch: 8px; }
.trio__label b { font: 600 clamp(1.25rem, 1.7vw, 1.8rem)/1 var(--font-display); letter-spacing: .05em; text-transform: uppercase; }
.trio__label small { font: 700 .72rem/1.1 var(--font-label); letter-spacing: .1em; text-transform: uppercase; }

.hero__bar { position: relative; display: flex; flex-wrap: wrap; align-items: stretch; gap: 1rem 1.2rem; max-width: calc(100% - var(--tw, 200px) * 2.65 - 16px); }
.hero__grid { --tw: clamp(170px, 17vw, 300px); }
.countdown { display: grid; gap: .5rem; }
.countdown--hero { padding: .9rem 1.2rem .8rem; background: rgb(255 255 255 / .1); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); clip-path: var(--cut); animation: pwg-rise .9s .55s var(--ease) backwards; }
.countdown__label { margin: 0; font: 700 .85rem/1 var(--font-label); letter-spacing: .2em; text-transform: uppercase; color: rgb(255 255 255 / .8); }
.countdown__units { display: flex; gap: 1.2rem; margin: 0; padding: 0; list-style: none; }
.countdown__units li { display: grid; justify-items: center; }
.countdown__units b { font: 600 clamp(2.4rem, 3.2vw, 3.2rem)/.9 var(--font-display); font-variant-numeric: tabular-nums; }
.countdown__units span { font: 700 .74rem/1 var(--font-label); letter-spacing: .14em; text-transform: uppercase; color: var(--red); }
.hero__cer { display: inline-flex; align-items: center; gap: 1rem; max-width: 450px; padding: .7rem 1.3rem .7rem .7rem; background: var(--white); color: var(--navy); text-decoration: none; clip-path: var(--cut); animation: pwg-rise .9s .65s var(--ease) backwards; transition: transform .3s var(--ease); }
.hero__cer:hover { transform: translateX(4px); }
.hero__cer-photo { position: relative; flex: none; width: 82px; height: 82px; }
.hero__cer-photo img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.hero__cer-photo::after { content: ""; position: absolute; inset: -5px; border: 2px dashed var(--red); border-radius: 50%; animation: pwg-spin 14s linear infinite; }
.hero__cer-text { display: grid; }
.hero__cer-text small { font: 700 .8rem/1.2 var(--font-label); letter-spacing: .14em; text-transform: uppercase; color: var(--red); }
.hero__cer-text b { font: 600 clamp(1.35rem, 1.7vw, 1.75rem)/.95 var(--font-display); letter-spacing: .03em; text-transform: uppercase; }
.hero__cer-text em { font-size: .92rem; color: var(--ink-soft); }
.hero__cer > .icon { width: 22px; height: 22px; color: var(--red); }

.ticker { position: relative; z-index: 4; overflow: hidden; background: var(--red); color: var(--white); padding: .65rem 0 .4rem; }
.ticker__track { display: flex; align-items: center; width: max-content; animation: pwg-marquee 48s linear infinite; }
.ticker__track span { font: 600 clamp(1.6rem, 2.4vw, 2.2rem)/1 var(--font-display); letter-spacing: .06em; text-transform: uppercase; white-space: nowrap; }
.ticker__track i { margin: 0 1.3rem; font-style: normal; opacity: .65; }

@media (max-width: 1024px) {
	/* téléphone et tablette : la photo occupe le haut, tour Eiffel au-dessus du titre */
	.hero { min-height: 0; }
	.hero__media { bottom: auto; height: min(124vw, 860px); }
	.hero__media img { object-position: 62% 0; transform-origin: 70% 20%; }
	.hero__shade { background: linear-gradient(180deg, rgb(var(--navy-rgb) / .5) 0, rgb(var(--navy-rgb) / 0) 100px, rgb(var(--navy-rgb) / 0) min(46vw, 330px), rgb(var(--navy-rgb) / .88) min(88vw, 640px), var(--navy) min(124vw, 860px)); }
	.hero__grid { padding-top: min(60vw, 430px); }
	.hero__copy { max-width: none; }
	.hero__trio { position: relative; right: auto; bottom: auto; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); width: auto; height: auto; margin-inline: -2%; }
	.trio { position: relative; left: auto; right: auto; bottom: auto; width: auto; }
	.trio--handball { --rot: -5deg; }
	.trio--football { --x: 0; --y: -14px; }
	.trio--basketball { --rot: 5deg; }
	.trio:hover { transform: translate(0, -10px) rotate(0deg); }
	.hero__bar { max-width: none; }
	.hero__giant { font-size: 40vw; bottom: auto; top: min(64vw, 470px); }
}
@media (max-width: 640px) {
	.hero__title { font-size: clamp(3rem, 14vw, 4.2rem); }
	.hero__sports a { padding-right: .7rem; }
	.trio__label { bottom: 12%; padding: .35rem .6rem .2rem; }
	.trio__label small { display: none; }
	.hero__bar { flex-direction: column; align-items: stretch; }
	.countdown__units { justify-content: space-between; gap: .5rem; }
	.hero__cer-text b { font-size: 1.3rem; }
}

/* --------------------------------------------------------------- bandeaux de photos qui défilent */
.reels { display: grid; gap: 12px; padding-top: clamp(40px, 5vw, 72px); overflow: hidden; }
.reel { --h: clamp(170px, 19vw, 300px); overflow: hidden; }
.reel--sm { --h: clamp(130px, 12vw, 200px); }
.reel__track { display: flex; width: max-content; margin: 0; padding: 0; list-style: none; animation: pwg-reel var(--dur, 110s) linear infinite; }
.reel--rev .reel__track { animation-direction: reverse; }
.reel:hover .reel__track { animation-play-state: paused; }
.reel__item { flex: none; height: var(--h); aspect-ratio: var(--r); margin-right: 12px; overflow: hidden; background: var(--navy); }
.reel__item img { width: 100%; height: 100%; object-fit: cover; }
.reel__item:nth-child(3n + 2) { clip-path: polygon(0 0, 100% 0, 100% calc(100% - 22px), calc(100% - 22px) 100%, 0 100%); }
.reel-band { padding: 12px 0; background: var(--red); }
.reel-band .reel__item { margin-right: 10px; }
@keyframes pwg-reel { to { transform: translateX(-50%); } }

/* --------------------------------------------------------------- les trois sports */
.sec--sports { padding-top: calc(var(--sec) + 20px); }
.sports { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(16px, 2vw, 28px); margin: 0; padding: 0; list-style: none; }
.sport__link { position: relative; display: block; aspect-ratio: 3 / 4.1; overflow: hidden; color: var(--white); text-decoration: none; background: var(--navy); clip-path: polygon(0 0, 100% 0, 100% calc(100% - 34px), calc(100% - 34px) 100%, 0 100%); }
.sport__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.sport__link::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgb(var(--navy-rgb) / .96) 6%, rgb(var(--navy-rgb) / .35) 52%, rgb(var(--navy-rgb) / 0) 75%); transition: background .4s; }
.sport__link:hover .sport__media img { transform: scale(1.07); }
.sport__top { position: absolute; top: 18px; left: 18px; right: 18px; z-index: 1; display: flex; flex-wrap: wrap; gap: .4rem; }
.sport__body { position: absolute; inset: auto 0 0; z-index: 1; display: grid; gap: .4rem; padding: 1.6rem 1.7rem 2rem; }
.sport__icon { display: grid; place-items: center; width: 52px; height: 52px; margin-bottom: .3rem; background: var(--red); clip-path: var(--cut); --notch: 8px; }
.sport__icon .icon { width: 26px; height: 26px; }
.sport__name { font: 700 clamp(3rem, 4.6vw, 4.6rem)/.8 var(--font-display); letter-spacing: .01em; text-transform: uppercase; }
.sport__text { max-width: 36ch; min-height: 4.5em; font-size: .98rem; line-height: 1.5; color: rgb(255 255 255 / .85); } /* 3 lignes réservées : les noms des sports restent alignés d'une carte à l'autre */
.sport__go { display: inline-flex; align-items: center; gap: .5rem; margin-top: .4rem; font: 600 1.3rem/1 var(--font-display); letter-spacing: .05em; text-transform: uppercase; color: var(--white); }
.sport__go .icon { width: 20px; height: 20px; margin-top: -.15em; color: var(--red); transition: transform .3s var(--ease); }
.sport__link:hover .sport__go .icon { transform: translateX(5px); }
@media (max-width: 900px) {
	.sports { grid-template-columns: 1fr; }
	.sport__link { aspect-ratio: 4 / 3.6; }
}

/* --------------------------------------------------------------- cérémonie */
.cer__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); align-items: center; gap: clamp(40px, 6vw, 96px); }
.cer__title { font-size: clamp(3.2rem, 6.4vw, 6.4rem); line-height: .84; color: var(--white); }
.cer__title em { display: block; color: var(--red); }
.cer__facts { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 2rem; padding: 0; list-style: none; }
.cer__facts li { display: inline-flex; align-items: center; gap: .5rem; padding: .5rem .9rem .4rem; background: rgb(255 255 255 / .1); font: 700 .95rem/1 var(--font-label); letter-spacing: .06em; text-transform: uppercase; clip-path: var(--cut); --notch: 8px; }
.cer__facts .icon { width: 18px; height: 18px; color: var(--red); margin-top: -.15em; }
.cer__collage { position: relative; height: clamp(520px, 50vw, 700px); }
.snap { position: absolute; margin: 0; padding: 10px 10px 12px; background: var(--white); box-shadow: 0 40px 60px -30px rgb(0 0 0 / .65); }
.snap img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; }
.snap figcaption { margin: 12px 4px 0; font: 600 1.4rem/1.05 var(--font-display); letter-spacing: .05em; text-transform: uppercase; color: var(--navy); }
.snap--a { left: 0; top: 0; width: 42%; transform: rotate(-6deg); }
.snap--b { right: 0; top: 4%; width: 38%; transform: rotate(5deg); }
.snap--c { left: 28%; bottom: 0; z-index: 2; width: 48%; transform: rotate(-2deg); }
.snap--c img { aspect-ratio: 3 / 2; }
html.reveal-ready .snap--a[data-reveal].is-visible { transform: rotate(-6deg); }
html.reveal-ready .snap--b[data-reveal].is-visible { transform: rotate(5deg); }
html.reveal-ready .snap--c[data-reveal].is-visible { transform: rotate(-2deg); }
.stamp { position: absolute; right: 1%; bottom: 3%; z-index: 3; display: grid; place-items: center; width: clamp(120px, 11vw, 160px); aspect-ratio: 1; border-radius: 50%; background: var(--red); color: var(--white); box-shadow: 0 20px 40px -16px rgb(0 0 0 / .6); }
.stamp svg { position: absolute; inset: 8px; width: calc(100% - 16px); height: calc(100% - 16px); animation: pwg-spin 22s linear infinite; }
.stamp text { fill: currentColor; font: 700 15.5px var(--font-label); letter-spacing: .16em; text-transform: uppercase; }
.stamp b { font: 600 clamp(1.7rem, 2.4vw, 2.3rem)/1 var(--font-display); text-transform: uppercase; padding-top: .15em; }
.stamp--light { background: var(--navy); }
.cer__collage--page .snap { box-shadow: 0 34px 50px -26px rgb(var(--navy-rgb) / .55); }
@media (max-width: 900px) {
	.cer__grid { grid-template-columns: 1fr; }
	.cer__collage { height: 118vw; max-height: 680px; }
}

/* --------------------------------------------------------------- chiffres */
.stats__since { margin: 0 0 1.6rem; font: 700 .95rem/1 var(--font-label); letter-spacing: .22em; text-transform: uppercase; color: var(--white); }
.stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.5rem; margin: 0; padding: 0; list-style: none; }
.stat { display: grid; gap: .3rem; padding-left: 1.2rem; border-left: 2px solid rgb(255 255 255 / .35); }
.stat__num { font: 700 clamp(3.4rem, 6vw, 5.8rem)/.85 var(--font-display); font-variant-numeric: tabular-nums; }
.stat__label { font: 700 1rem/1.2 var(--font-label); letter-spacing: .1em; text-transform: uppercase; }
@media (max-width: 800px) { .stats { grid-template-columns: 1fr 1fr; row-gap: 2rem; } }

/* --------------------------------------------------------------- séjour de rêve */
.dream__grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); align-items: center; gap: clamp(48px, 7vw, 110px); }
.dream__media { position: relative; padding: 0 12% 14% 0; }
.dream__main { overflow: hidden; aspect-ratio: 1.15; clip-path: polygon(0 0, 100% 0, 100% calc(100% - 48px), calc(100% - 48px) 100%, 0 100%); }
.dream__main img { width: 100%; height: 100%; object-fit: cover; }
.dream__shield { position: absolute; right: 0; bottom: 0; width: 36%; filter: drop-shadow(0 26px 30px rgb(var(--navy-rgb) / .35)); }
.dream__shield--top { top: -8%; bottom: auto; width: 29%; transform: rotate(6deg); }
.dream__sports { display: flex; flex-wrap: wrap; gap: .6rem; margin: 0; padding: 0; list-style: none; }
.dream__sports a { display: inline-flex; align-items: center; gap: .6rem; padding: .4rem 1rem .4rem .4rem; background: var(--navy); color: var(--white); text-decoration: none; clip-path: var(--cut); --notch: 10px; transition: background .25s; }
.dream__sports a:hover { background: var(--red); }
.dream__sports .icon:first-child { box-sizing: content-box; width: 20px; height: 20px; padding: 8px; background: var(--red); clip-path: var(--cut); --notch: 6px; transition: background .25s; }
.dream__sports a:hover .icon:first-child { background: var(--navy); }
.dream__sports .icon:last-child { width: 18px; height: 18px; margin-top: -.15em; }
.dream__sports b { font: 600 1.45rem/1 var(--font-display); letter-spacing: .04em; text-transform: uppercase; padding-top: .15em; }
.dream__tag { position: absolute; left: -16px; top: 8%; display: flex; align-items: center; gap: .7rem; margin: 0; padding: .8rem 1.2rem .6rem; background: var(--red); color: var(--white); clip-path: var(--cut); }
.dream__tag b { font: 700 4rem/.8 var(--font-display); }
.dream__tag span { max-width: 9ch; font: 700 .95rem/1.1 var(--font-label); letter-spacing: .06em; text-transform: uppercase; }
.perks { display: grid; gap: 1.2rem; margin: 0 0 2rem; padding: 0; list-style: none; }
.perks li { display: grid; grid-template-columns: auto 1fr; gap: 1rem; align-items: start; }
.perks__icon { display: grid; place-items: center; width: 54px; height: 64px; padding-bottom: 8px; background: var(--navy); color: var(--white); -webkit-mask: var(--shield) center / 100% 100% no-repeat; mask: var(--shield) center / 100% 100% no-repeat; }
.perks__icon .icon { width: 24px; height: 24px; }
.perks b { display: block; font: 600 1.6rem/1 var(--font-display); letter-spacing: .03em; text-transform: uppercase; padding-top: .3rem; }
.perks li > span:last-child { color: var(--ink-soft); }
.sec--navy .perks li > span:last-child, .sec--night .perks li > span:last-child { color: rgb(255 255 255 / .8); }
@media (max-width: 900px) { .dream__grid { grid-template-columns: 1fr; } .dream__tag { left: 0; } }

/* --------------------------------------------------------------- programme */
.days { position: relative; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1.2rem; margin: 0; padding: 0; list-style: none; }
.days::before { content: ""; position: absolute; left: 0; right: 0; top: 11px; height: 2px; background: rgb(255 255 255 / .25); }
.day { position: relative; padding-top: 2.4rem; }
.day::before { content: ""; position: absolute; left: 0; top: 0; width: 24px; height: 24px; border: 3px solid var(--white); border-radius: 50%; background: var(--navy); }
.day--hl::before { background: var(--red); border-color: var(--red); box-shadow: 0 0 0 6px rgb(var(--red-rgb) / .25); }
.day__date { display: flex; align-items: baseline; gap: .45rem; margin: 0 0 .5rem; }
.day__name { font: 700 .85rem/1 var(--font-label); letter-spacing: .14em; text-transform: uppercase; color: rgb(255 255 255 / .7); }
.day__date b { font: 700 4rem/.8 var(--font-display); }
.day--hl .day__date b { color: var(--red); }
.day__month { font: 700 .85rem/1 var(--font-label); letter-spacing: .14em; text-transform: uppercase; }
.day__title { margin-bottom: .35rem; font-size: 1.65rem; line-height: .95; color: var(--white); }
.day__text { margin: 0; font-size: .95rem; line-height: 1.45; color: rgb(255 255 255 / .78); }
@media (max-width: 760px) {
	.days { grid-template-columns: 1fr; gap: 1.6rem; padding-left: 2.4rem; }
	.days::before { left: 11px; right: auto; top: 0; bottom: 0; width: 2px; height: auto; }
	.day { padding-top: 0; }
	.day::before { left: -2.4rem; top: .2rem; }
}

/* --------------------------------------------------------------- Paris : rail et lieux */
.rail { overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding-inline: max(var(--gutter), calc((100vw - var(--container)) / 2)); scroll-padding-inline: max(var(--gutter), calc((100vw - var(--container)) / 2)); }
.rail::-webkit-scrollbar { display: none; }
.rail__track { display: flex; gap: 1.2rem; width: max-content; margin: 0; padding: 0 0 8px; list-style: none; outline: none; }
.rail .place { flex: 0 0 clamp(260px, 26vw, 340px); scroll-snap-align: start; }
.places { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.2rem; margin: 0; padding: 0; list-style: none; }
.place__in { position: relative; display: block; aspect-ratio: 3 / 4; overflow: hidden; color: var(--white); text-decoration: none; background: var(--navy); clip-path: polygon(0 0, 100% 0, 100% calc(100% - 26px), calc(100% - 26px) 100%, 0 100%); }
.place__in > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.place__in::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgb(var(--navy-rgb) / .95) 8%, rgb(var(--navy-rgb) / .1) 58%); }
a.place__in:hover > img { transform: scale(1.06); }
.place--text .place__in { background: radial-gradient(80% 60% at 100% 0, rgb(255 255 255 / .18), transparent 60%), linear-gradient(155deg, var(--red) 35%, var(--navy)); }
.place--text .place__in::after { display: none; }
.place__icon { position: absolute; top: 24px; left: 24px; width: 64px; height: 64px; }
.place__icon .icon { width: 64px; height: 64px; stroke-width: 1.4; }
.place__body { position: absolute; inset: auto 0 0; z-index: 1; display: grid; gap: .35rem; padding: 1.4rem 1.5rem 1.8rem; }
.place__tag { justify-self: start; padding: .35rem .6rem .25rem; background: var(--red); font: 700 .78rem/1 var(--font-label); letter-spacing: .12em; text-transform: uppercase; }
.place--text .place__tag { background: var(--white); color: var(--red); }
.place__title { font: 700 2.2rem/.88 var(--font-display); text-transform: uppercase; }
.place__text { font-size: .95rem; line-height: 1.45; color: rgb(255 255 255 / .86); }
.rail-nav { display: flex; gap: .5rem; margin: 0; }
.rail-nav button { display: grid; place-items: center; width: 54px; height: 54px; border: 0; background: var(--navy); color: var(--white); cursor: pointer; clip-path: var(--cut); --notch: 10px; transition: background .25s; }
.rail-nav button:hover { background: var(--red); }
.rail-nav .icon { width: 22px; height: 22px; }
.rail-more { margin-top: 2rem; }
@media (max-width: 900px) { .places { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .places { grid-template-columns: 1fr; } .rail-nav { display: none; } }

/* --------------------------------------------------------------- offre (accueil) */
.offer__grid { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: clamp(40px, 7vw, 110px); }
.offer__price { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .3rem; width: clamp(270px, 28vw, 390px); aspect-ratio: 5 / 6; padding: 0 1rem 18%; background: radial-gradient(70% 60% at 30% 10%, rgb(255 255 255 / .22), transparent 60%), var(--red); color: var(--white); text-align: center; -webkit-mask: var(--shield) center / 100% 100% no-repeat; mask: var(--shield) center / 100% 100% no-repeat; }
.offer__from { font: 700 1rem/1 var(--font-label); letter-spacing: .24em; text-transform: uppercase; }
.offer__amount { font: 700 clamp(5rem, 8vw, 7.6rem)/.8 var(--font-display); white-space: nowrap; }
.offer__unit { font: 600 1.6rem/1 var(--font-display); letter-spacing: .08em; text-transform: uppercase; }
.offer__note { margin-top: .5rem; padding-top: .6rem; border-top: 2px solid rgb(255 255 255 / .5); font: 700 .85rem/1.2 var(--font-label); letter-spacing: .12em; text-transform: uppercase; }
.offer__inc { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem 1.4rem; margin: 0 0 1.4rem; padding: 0; list-style: none; }
.offer__inc li { display: flex; align-items: center; gap: .7rem; font: 600 1.45rem/1 var(--font-display); letter-spacing: .03em; text-transform: uppercase; }
.offer__inc .icon { box-sizing: content-box; width: 22px; height: 22px; padding: 10px; background: var(--mist); color: var(--red); clip-path: var(--cut); --notch: 8px; }
.offer__hotels { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 2rem; }
.offer__hotels span { padding: .45rem .8rem .35rem; background: var(--navy); color: var(--white); font: 700 .9rem/1 var(--font-label); letter-spacing: .1em; text-transform: uppercase; }
.offer__actions { display: flex; flex-wrap: wrap; gap: .8rem 1rem; margin: 0; }
@media (max-width: 900px) { .offer__grid { grid-template-columns: 1fr; justify-items: center; } .offer__text { width: 100%; } }
@media (max-width: 480px) { .offer__inc { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------- témoignages */
.quotes-sec { overflow: hidden; }
.quotes-sec::after { content: "»"; position: absolute; left: -.08em; top: 50%; font: 700 clamp(18rem, 40vw, 36rem)/.6 var(--font-display); color: transparent; -webkit-text-stroke: 2px rgb(255 255 255 / .12); transform: translateY(-50%); pointer-events: none; }
.quotes { position: relative; z-index: 1; }
.quotes__grid { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); align-items: center; gap: clamp(32px, 5vw, 80px); }
.quotes__media { position: relative; height: clamp(420px, 38vw, 560px); }
.quotes__shield { position: absolute; right: 6%; top: 0; width: 60%; filter: drop-shadow(0 30px 30px rgb(0 0 0 / .4)); }
.quotes__snap { left: 0; bottom: 6%; z-index: 2; width: 42%; transform: rotate(-7deg); }
.quotes__snap--b { left: auto; right: 0; bottom: 0; z-index: 3; width: 36%; transform: rotate(6deg); }
@media (max-width: 900px) { .quotes__grid { grid-template-columns: 1fr; } .quotes__media { height: min(112vw, 520px); } }
.quote { display: none; margin: 0; }
.quote.is-active { display: block; animation: pwg-rise .7s var(--ease) backwards; }
.quote blockquote { margin: 0; }
.quote blockquote p { max-width: 20ch; margin: 0 0 1.4rem; font: 700 clamp(2.4rem, 4.4vw, 4.6rem)/.9 var(--font-display); text-transform: uppercase; color: var(--white); }
.quote figcaption { display: flex; flex-wrap: wrap; align-items: baseline; gap: .6rem; font: 700 1rem/1.2 var(--font-label); letter-spacing: .12em; text-transform: uppercase; }
.quote figcaption b { color: var(--red); font-size: 1.2rem; }
.quote figcaption span { color: rgb(255 255 255 / .7); }
.quotes__dots { display: flex; gap: .5rem; margin: 2rem 0 0; }
.quotes__dots button { width: 34px; height: 8px; padding: 0; border: 0; background: rgb(255 255 255 / .3); cursor: pointer; transition: background .25s, width .25s; }
.quotes__dots button[aria-current="true"] { width: 64px; background: var(--red); }

/* --------------------------------------------------------------- histoire (accueil) */
.story__grid { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: clamp(40px, 7vw, 110px); }
.story__badge { display: grid; justify-items: center; gap: .6rem; }
.story__badge img { width: clamp(170px, 18vw, 250px); }
.story__badge p { display: grid; justify-items: center; margin: 0; }
.story__badge b { font: 700 4.4rem/.8 var(--font-display); color: var(--navy); }
.story__badge span { font: 700 .9rem/1 var(--font-label); letter-spacing: .16em; text-transform: uppercase; color: var(--red); }
@media (max-width: 760px) { .story__grid { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------- galerie */
.gallery { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: clamp(220px, 25vw, 360px); grid-auto-flow: dense; gap: 12px; margin: 0; padding: 0; list-style: none; }
.gallery__item { overflow: hidden; }
.gallery__item--wide { grid-column: span 2; }
.gallery__item img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.gallery__item:hover img { transform: scale(1.06); }
.gallery__item:nth-child(5n + 2) { clip-path: polygon(0 0, 100% 0, 100% calc(100% - 26px), calc(100% - 26px) 100%, 0 100%); }
@media (max-width: 760px) { .gallery { grid-template-columns: 1fr 1fr; grid-auto-rows: 52vw; gap: 8px; } }
.strip { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin: 12px 0 0; padding: 0; list-style: none; }
.strip li { width: min(19%, 210px); aspect-ratio: 3 / 4; overflow: hidden; }
.strip img { width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 640px) { .strip li { width: calc(33.333% - 7px); } }

/* --------------------------------------------------------------- ouverture des pages intérieures */
.phero { position: relative; padding: calc(var(--hdr) + clamp(28px, 4vw, 56px)) 0 clamp(56px, 7vw, 96px); overflow: hidden; background: radial-gradient(55% 70% at 92% 20%, rgb(var(--red-rgb) / .3), transparent 65%), radial-gradient(60% 60% at 0 100%, rgb(var(--navy-rgb) / .95), transparent 70%), var(--navy); color: var(--white); isolation: isolate; }
.phero__bg { position: absolute; inset: 0; z-index: -2; }
.phero__bg img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.1); opacity: .17; mix-blend-mode: luminosity; }
.phero::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 8px; background: linear-gradient(90deg, var(--navy) 0 33.33%, var(--white) 33.33% 66.66%, var(--red) 66.66%); }
.phero__word { position: absolute; left: -.04em; bottom: -.08em; z-index: -1; margin: 0; font: 700 clamp(8rem, 24vw, 26rem)/.8 var(--font-display); text-transform: uppercase; white-space: nowrap; color: transparent; -webkit-text-stroke: 2px rgb(255 255 255 / .12); pointer-events: none; animation: pwg-giant 1.4s var(--ease) both; }
.phero__grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, .75fr); align-items: center; gap: clamp(28px, 5vw, 80px); }
.phero--plain .phero__grid { grid-template-columns: 1fr; }
.breadcrumb ol { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 1.4rem; padding: 0; list-style: none; font: 700 .9rem/1.2 var(--font-label); letter-spacing: .14em; text-transform: uppercase; }
.breadcrumb li + li::before { content: "/"; margin-right: .5rem; color: var(--red); }
.breadcrumb a { text-decoration: none; opacity: .8; }
.breadcrumb a:hover { opacity: 1; text-decoration: underline; }
.phero__title { max-width: 14ch; margin-bottom: .35em; font-size: clamp(3.2rem, 6.4vw, 6.6rem); line-height: .84; color: var(--white); animation: pwg-rise .9s .1s var(--ease) backwards; }
.phero__title em { color: var(--red); }
.phero__kicker { animation: pwg-rise .9s var(--ease) backwards; }
.phero__lead { max-width: 56ch; margin-bottom: 1.4rem; font-size: clamp(1.06rem, 1.4vw, 1.22rem); color: rgb(255 255 255 / .86); animation: pwg-rise .9s .2s var(--ease) backwards; }
.phero__facts { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 1.6rem; padding: 0; list-style: none; animation: pwg-rise .9s .25s var(--ease) backwards; }
.phero__facts li { display: inline-flex; align-items: center; gap: .5rem; padding: .5rem .9rem .4rem; background: rgb(255 255 255 / .1); font: 700 .95rem/1 var(--font-label); letter-spacing: .06em; text-transform: uppercase; clip-path: var(--cut); --notch: 8px; }
.phero__facts .icon { width: 18px; height: 18px; margin-top: -.15em; color: var(--red); }
.phero__actions { display: flex; flex-wrap: wrap; gap: .8rem 1rem; margin: 0; animation: pwg-rise .9s .3s var(--ease) backwards; }
.phero__media { justify-self: end; width: min(100%, 420px); margin: 0; filter: drop-shadow(0 34px 34px rgb(0 0 0 / .45)); transform: rotate(3deg); animation: pwg-trio 1.1s .2s var(--ease) backwards; }
.phero__media--stack { position: relative; width: min(100%, 500px); aspect-ratio: 1 / 1.04; transform: none; }
.phero__s { position: absolute; }
.phero__s--main { right: 9%; top: 0; z-index: 2; width: 63%; transform: rotate(3deg); }
.phero__s--a { left: 0; top: 16%; z-index: 1; width: 40%; transform: rotate(-9deg); }
.phero__s--b { right: -1%; bottom: 0; z-index: 3; width: 41%; transform: rotate(8deg); }
@media (max-width: 860px) {
	.phero__grid { grid-template-columns: 1fr; }
	.phero__media { justify-self: center; width: min(72vw, 320px); }
	.phero__media--stack { width: min(90vw, 420px); }
}

/* --------------------------------------------------------------- page d'un tournoi */
.brief { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); align-items: center; gap: clamp(40px, 6vw, 96px); }
.brief .head { margin-bottom: 1rem; }
.tiles { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 0; padding: 0; list-style: none; }
.tile { display: grid; align-content: start; gap: .6rem; min-height: 190px; padding: 1.6rem; background: var(--mist); clip-path: var(--cut); --notch: 20px; }
.tile b { font: 700 4.6rem/.8 var(--font-display); color: var(--red); }
.tile > .icon { width: 44px; height: 44px; color: var(--red); stroke-width: 1.6; }
.tile span { font: 600 1.4rem/1.02 var(--font-display); letter-spacing: .02em; text-transform: uppercase; }
.tile--red { background: var(--red); color: var(--white); }
.tile--red b { color: var(--white); }
.tile--navy { background: var(--navy); color: var(--white); }
.tile--navy > .icon { color: var(--white); }
@media (max-width: 900px) { .brief { grid-template-columns: 1fr; } }

.cats { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem 3rem; }
.cats__title { margin-bottom: 1rem; font-size: 2.2rem; color: var(--white); }
.cats__list { display: grid; grid-template-columns: repeat(auto-fill, minmax(124px, 1fr)); gap: 8px; margin: 0; padding: 0; list-style: none; }
.cat { display: grid; gap: .1rem; padding: .9rem 1rem .8rem; background: rgb(255 255 255 / .12); border: 1px solid rgb(255 255 255 / .28); transition: background .3s, color .3s, transform .3s var(--ease); }
.cat__code { font: 700 2.3rem/.85 var(--font-display); }
.cat__years { font: 700 .8rem/1.2 var(--font-label); letter-spacing: .06em; opacity: .85; }
.cat--g { border-style: dashed; }
.cat.is-match { background: var(--white); color: var(--navy); border-color: var(--white); transform: scale(1.05); box-shadow: 0 16px 30px -14px rgb(0 0 0 / .45); }
.finder { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.4rem; padding: 1.2rem 1.4rem; background: var(--navy); clip-path: var(--cut); }
.finder__label { display: inline-flex; align-items: center; gap: .6rem; font: 600 1.5rem/1 var(--font-display); letter-spacing: .04em; text-transform: uppercase; }
.finder__label .icon { width: 24px; height: 24px; color: var(--red); margin-top: -.15em; }
.finder__select { min-height: 48px; padding: .5rem 2.4rem .5rem 1rem; border: 0; background: var(--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e1371e' stroke-width='3'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") right .8rem center / 16px no-repeat; color: var(--navy); font: 700 1.05rem var(--font-body); appearance: none; cursor: pointer; }
.finder__result { flex: 1 1 260px; margin: 0; font-weight: 600; }
.finder__result strong { color: var(--red); font: 600 1.6rem/1 var(--font-display); }
.cats__note { grid-column: 1 / -1; margin: 0; font-size: .9rem; opacity: .85; }

.format { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: clamp(32px, 6vw, 96px); }
.rules { display: grid; gap: 1rem; margin: 0; padding: 0; list-style: none; }
.rules li { display: grid; grid-template-columns: auto 1fr; gap: .8rem; padding: 1rem 1.2rem; background: var(--mist); }
.rules .icon { margin-top: .15rem; color: var(--red); }
@media (max-width: 900px) { .format { grid-template-columns: 1fr; } }

.incl { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 0; padding: 0; list-style: none; }
.incl__item { padding: 1.6rem 1.5rem; background: var(--mist); clip-path: var(--cut); --notch: 18px; }
.incl--dark .incl__item { background: rgb(255 255 255 / .07); color: var(--white); }
.incl__icon { display: grid; place-items: center; width: 56px; height: 56px; margin-bottom: 1rem; background: var(--red); color: var(--white); clip-path: var(--cut); --notch: 10px; }
.incl__icon .icon { width: 26px; height: 26px; }
.incl__title { margin-bottom: .2rem; font-size: 1.9rem; }
.incl--dark .incl__title { color: var(--white); }
.incl__sub { margin-bottom: .6rem; font: 700 .9rem/1.2 var(--font-label); letter-spacing: .1em; text-transform: uppercase; color: var(--red); }
.incl__line { margin: 0 0 .3rem; font-size: .95rem; line-height: 1.45; }
@media (max-width: 1000px) { .incl { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .incl { grid-template-columns: 1fr; } }
.basket-stay { max-width: 780px; }
.basket-stay__actions { display: flex; flex-wrap: wrap; gap: .8rem 1rem; }

/* --------------------------------------------------------------- cartes « continuer » */
.next { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin: 0; padding: 0; list-style: none; }
.next__link { position: relative; display: flex; flex-direction: column; height: 100%; background: var(--white); color: var(--navy); text-decoration: none; clip-path: polygon(0 0, 100% 0, 100% calc(100% - 22px), calc(100% - 22px) 100%, 0 100%); transition: transform .4s var(--ease); }
.sec:not(.sec--mist) .next__link { background: var(--mist); }
.next__link:hover { transform: translateY(-6px); }
.next__media { display: block; aspect-ratio: 16 / 10; overflow: hidden; }
.next__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.next__link:hover .next__media img { transform: scale(1.06); }
.next__body { display: grid; gap: .25rem; padding: 1.3rem 5rem 1.5rem 1.4rem; }
.next__title { font: 700 2.1rem/.9 var(--font-display); text-transform: uppercase; }
.next__sub { font-size: .95rem; color: var(--ink-soft); }
.next__arrow { position: absolute; right: 1.2rem; bottom: 1.4rem; display: grid; place-items: center; width: 48px; height: 48px; background: var(--red); color: var(--white); clip-path: var(--cut); --notch: 8px; transition: transform .4s var(--ease); }
.next__link:hover .next__arrow { transform: translateX(4px); }
@media (max-width: 900px) { .next { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------- séjour : packs */
.range + .range { margin-top: clamp(48px, 6vw, 80px); }
.range__head { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: .6rem 2rem; margin-bottom: 1.4rem; }
.range__title { margin: 0; font-size: clamp(2.4rem, 4vw, 3.4rem); color: var(--white); }
.range__lead { grid-column: 1; margin: 0; color: rgb(255 255 255 / .82); }
.range__inc { grid-column: 2; grid-row: 1 / span 2; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .4rem; max-width: 440px; margin: 0; padding: 0; list-style: none; }
.range__inc li { display: inline-flex; align-items: center; gap: .35rem; padding: .4rem .7rem .3rem; background: rgb(255 255 255 / .1); font: 700 .85rem/1 var(--font-label); letter-spacing: .06em; text-transform: uppercase; }
.range__inc .icon { width: 14px; height: 14px; color: var(--red); margin-top: -.1em; }
.hotels { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 12px; margin: 0; padding: 0; list-style: none; }
.hotel { padding: 1.8rem 1.6rem 1.6rem; background: var(--white); color: var(--navy); clip-path: var(--cut); --notch: 20px; }
.range--confort .hotel { box-shadow: inset 0 6px 0 var(--red); }
.hotel__stars { display: flex; gap: 2px; margin: 0 0 .8rem; color: var(--red); }
.hotel__stars .icon { width: 20px; height: 20px; fill: currentColor; }
.hotel__name { margin-bottom: 1rem; font-size: 2.4rem; }
.hotel__rooms { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0; padding: 0; list-style: none; }
.hotel__rooms li { padding: .5rem .85rem .35rem; background: var(--mist); font: 600 1.2rem/1 var(--font-display); letter-spacing: .05em; text-transform: uppercase; }
.hotel__prices { display: grid; gap: .6rem; margin: 0; padding: 0; list-style: none; }
.hotel__prices li { display: grid; grid-template-columns: 1fr auto; align-items: baseline; gap: 0 1rem; padding-bottom: .6rem; border-bottom: 1px solid var(--line); }
.hotel__room { font: 600 1.3rem/1 var(--font-display); text-transform: uppercase; }
.hotel__price { font: 700 2.2rem/1 var(--font-display); color: var(--red); }
.hotel__price small { font-size: .45em; }
.hotel__extra { grid-column: 1 / -1; font-size: .85rem; color: var(--ink-soft); }
@media (max-width: 760px) { .range__head { grid-template-columns: 1fr; } .range__inc { grid-column: 1; grid-row: auto; justify-content: flex-start; } }

.pcall { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: clamp(32px, 5vw, 80px); margin-top: clamp(56px, 7vw, 96px); }
.pcall__amount { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .3rem; width: clamp(250px, 24vw, 320px); aspect-ratio: 5 / 6; margin: 0; padding: 0 1rem 18%; background: var(--red); color: var(--white); text-align: center; -webkit-mask: var(--shield) center / 100% 100% no-repeat; mask: var(--shield) center / 100% 100% no-repeat; }
.pcall__from { font: 700 .95rem/1 var(--font-label); letter-spacing: .22em; text-transform: uppercase; }
.pcall__price { font: 700 clamp(4.4rem, 6.6vw, 6.4rem)/.8 var(--font-display); white-space: nowrap; }
.pcall__unit { font: 600 1.45rem/1 var(--font-display); letter-spacing: .08em; text-transform: uppercase; }
.pcall__note { margin-top: .4rem; padding-top: .55rem; border-top: 2px solid rgb(255 255 255 / .5); font: 700 .78rem/1.25 var(--font-label); letter-spacing: .1em; text-transform: uppercase; }
.pcall__title { font-size: clamp(2.2rem, 4vw, 3.4rem); color: var(--white); }
.pcall__lead { color: rgb(255 255 255 / .85); }
.pcall__actions { display: flex; flex-wrap: wrap; gap: .8rem 1rem; margin: 0; }
@media (max-width: 860px) { .pcall { grid-template-columns: 1fr; justify-items: center; } .pcall__text { width: 100%; } }
.fees { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 2rem; }
.fee { display: inline-flex; align-items: center; gap: .7rem; margin: 0; padding: .7rem 1.1rem; background: rgb(255 255 255 / .1); }
.fee .icon { color: var(--red); }
.fee b { font: 600 1.4rem/1 var(--font-display); }
.fee--note { flex-basis: 100%; padding: 0; background: none; font-style: italic; }

.cards3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 0; padding: 0; list-style: none; }
.card { padding: 1.8rem 1.6rem; background: var(--mist); clip-path: var(--cut); --notch: 18px; }
.card__icon { display: grid; place-items: center; width: 54px; height: 54px; margin-bottom: 1rem; background: var(--navy); color: var(--white); clip-path: var(--cut); --notch: 10px; }
.card__title { font-size: 1.9rem; }
.card p { margin: 0; color: var(--ink-soft); }
@media (max-width: 900px) { .cards3 { grid-template-columns: 1fr; } }

.split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(40px, 6vw, 96px); align-items: start; }
.split--center { align-items: center; }
@media (max-width: 900px) { .split { grid-template-columns: 1fr; } }
.ideas { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.ideas li { display: grid; grid-template-columns: auto 1fr; gap: 1rem; padding: 1.2rem 1.3rem; background: rgb(255 255 255 / .08); color: rgb(255 255 255 / .85); }
.ideas .icon { color: var(--red); fill: currentColor; }
.ideas b { display: block; font: 600 1.55rem/1 var(--font-display); text-transform: uppercase; color: var(--white); padding-top: .15rem; }

/* --------------------------------------------------------------- infos pratiques */
.infos { display: grid; grid-template-columns: 270px minmax(0, 1fr); gap: clamp(32px, 5vw, 72px); align-items: start; }
.infos__nav { position: sticky; top: calc(var(--hdr) + 24px); padding: 1.4rem; background: var(--navy); color: var(--white); clip-path: var(--cut); }
.infos__nav-title { margin: 0 0 .6rem; font: 700 .85rem/1 var(--font-label); letter-spacing: .2em; text-transform: uppercase; color: var(--red); }
.infos__nav ul { display: grid; gap: 2px; margin: 0; padding: 0; list-style: none; }
.infos__nav a { display: flex; align-items: center; gap: .6rem; padding: .55rem .4rem .4rem; font: 600 1.35rem/1 var(--font-display); letter-spacing: .03em; text-transform: uppercase; text-decoration: none; }
.infos__nav a:hover { color: var(--red); }
.infos__nav .icon { width: 18px; height: 18px; margin-top: -.2em; color: var(--red); }
.infos__list { display: grid; gap: 12px; }
.info { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 1.4rem; padding: clamp(1.4rem, 3vw, 2.2rem); background: var(--mist); scroll-margin-top: calc(var(--hdr) + 20px); }
.info__icon { display: grid; place-items: center; width: 60px; height: 60px; background: var(--red); color: var(--white); clip-path: var(--cut); --notch: 10px; }
.info__icon .icon { width: 28px; height: 28px; }
.info__title { font-size: 2.4rem; margin-bottom: .5rem; }
.info p { margin-bottom: .7rem; }
.info--navy { background: var(--navy); color: var(--white); }
.info--navy .info__title { color: var(--white); }
.info__links { display: grid; gap: .5rem; margin: 0; padding: 0; list-style: none; }
.info__links li { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem 1.2rem; padding: .6rem 0; border-bottom: 1px solid rgb(255 255 255 / .2); }
.info__links b { min-width: 7rem; font: 600 1.4rem/1 var(--font-display); text-transform: uppercase; }
.info__links a { font-weight: 600; }
@media (max-width: 900px) { .infos { grid-template-columns: 1fr; } .infos__nav { position: static; } }
@media (max-width: 560px) { .info { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------- règlements */
.regs { max-width: 980px; }
.regs__switch { position: sticky; top: calc(var(--hdr) + 12px); z-index: 5; display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 1rem; }
.regs__switch a { display: inline-flex; align-items: center; gap: .5rem; padding: .7rem 1.1rem .5rem; background: var(--navy); color: var(--white); font: 600 1.35rem/1 var(--font-display); letter-spacing: .04em; text-transform: uppercase; text-decoration: none; clip-path: var(--cut); --notch: 10px; transition: background .25s; }
.regs__switch a:hover { background: var(--red); }
.regs__switch .icon { width: 20px; height: 20px; margin-top: -.2em; }
.reg { padding-top: clamp(40px, 5vw, 64px); scroll-margin-top: calc(var(--hdr) + 60px); }
.reg__head { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: .2rem 1.2rem; margin-bottom: 1rem; }
.reg__icon { grid-row: span 2; display: grid; place-items: center; width: 64px; height: 64px; background: var(--red); color: var(--white); clip-path: var(--cut); --notch: 12px; }
.reg__icon .icon { width: 30px; height: 30px; }
.reg__title { margin: 0; font-size: clamp(2.4rem, 4vw, 3.4rem); }
.reg__dates { margin: 0; font: 700 .9rem/1 var(--font-label); letter-spacing: .12em; text-transform: uppercase; color: var(--red); }
.reg__sec { border-bottom: 1px solid var(--line); }
.reg__sec summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.1rem 0 .9rem; font: 600 1.7rem/1 var(--font-display); letter-spacing: .03em; text-transform: uppercase; list-style: none; cursor: pointer; }
.reg__sec summary::-webkit-details-marker { display: none; }
.reg__sec summary .icon { color: var(--red); transition: transform .3s var(--ease); }
.reg__sec[open] summary .icon { transform: rotate(45deg); }
.reg__sec ul { margin: 0 0 1.2rem; padding-left: 1.2rem; }
.reg__sec li { margin-bottom: .5rem; }
.reg__sec li::marker { color: var(--red); }
.reg__more { margin-top: 1.2rem; }

/* --------------------------------------------------------------- histoire */
.timeline { display: grid; gap: 1.6rem; margin: 0; padding: 0 0 0 1.6rem; list-style: none; border-left: 2px solid var(--line); }
.timeline li { position: relative; display: grid; gap: .2rem; }
.timeline li::before { content: ""; position: absolute; left: calc(-1.6rem - 9px); top: .6rem; width: 16px; height: 16px; border-radius: 50%; background: var(--red); }
.timeline b { font: 700 3.4rem/.85 var(--font-display); color: var(--navy); }
.timeline span { color: var(--ink-soft); }
.winners { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.winners__col { padding: 1.6rem; background: var(--mist); clip-path: var(--cut); --notch: 18px; }
.winners__title { display: flex; align-items: center; gap: .6rem; font-size: 2.2rem; }
.winners__title .icon { width: 28px; height: 28px; color: var(--red); margin-top: -.15em; }
.winners ul { margin: 0; padding: 0; list-style: none; }
.winners li { display: grid; grid-template-columns: 4.2rem 1fr; gap: .8rem; padding: .55rem 0; border-bottom: 1px solid var(--line); }
.winners li b { font: 600 1.35rem/1.05 var(--font-display); color: var(--red); }
@media (max-width: 900px) { .winners { grid-template-columns: 1fr; } }

.clubs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 0; padding: 0; list-style: none; }
.club { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 1.3rem; padding: 1.2rem 1.4rem; background: var(--white); clip-path: var(--cut); --notch: 16px; }
.club__logo { display: grid; place-items: center; width: 100px; height: 84px; }
.club__logo img { display: block; }
.club__mark { display: grid; place-items: center; width: 64px; height: 76px; padding-bottom: 12px; background: var(--navy); color: var(--white); font: 700 1.9rem/1 var(--font-display); letter-spacing: .04em; -webkit-mask: var(--shield) center / 100% 100% no-repeat; mask: var(--shield) center / 100% 100% no-repeat; }
.club__text { display: grid; gap: .2rem; }
.club__name { font: 700 clamp(1.6rem, 2.2vw, 2.1rem)/.95 var(--font-display); text-transform: uppercase; color: var(--navy); }
.club__country { font: 700 .8rem/1 var(--font-label); letter-spacing: .16em; text-transform: uppercase; color: var(--red); }
@media (max-width: 900px) { .clubs { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .clubs { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------- inscription & contact */
.steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 0; padding: 0; list-style: none; counter-reset: none; }
.step { position: relative; display: grid; align-content: start; gap: .5rem; padding: 2rem 1.8rem; background: var(--mist); clip-path: var(--cut); --notch: 20px; }
.step__num { font: 700 6rem/.75 var(--font-display); color: transparent; -webkit-text-stroke: 2px var(--red); }
.step__title { margin: .6rem 0 0; font-size: 2rem; }
.step p { margin: 0 0 .6rem; color: var(--ink-soft); }
@media (max-width: 900px) { .steps { grid-template-columns: 1fr; } }
.contact__grid { display: grid; grid-template-columns: minmax(280px, 380px) minmax(0, 1fr); gap: clamp(24px, 4vw, 56px); align-items: start; }
.contact__card { position: sticky; top: calc(var(--hdr) + 24px); padding: clamp(1.6rem, 3vw, 2.4rem); background: var(--navy); color: var(--white); clip-path: var(--cut); --notch: 24px; }
.contact__title { font-size: 2.6rem; color: var(--white); }
.contact__list { display: grid; gap: 1rem; margin: 1.4rem 0; padding: 0; list-style: none; }
.contact__list li { display: grid; grid-template-columns: auto 1fr; gap: .9rem; align-items: center; }
.contact__icon { display: grid; place-items: center; width: 44px; height: 44px; background: rgb(255 255 255 / .1); color: var(--red); clip-path: var(--cut); --notch: 8px; }
.contact__icon .icon { width: 20px; height: 20px; }
.contact__list small { display: block; font: 700 .78rem/1.2 var(--font-label); letter-spacing: .14em; text-transform: uppercase; color: rgb(255 255 255 / .65); }
.contact__list a { font-weight: 600; text-decoration: none; }
.contact__org { margin: 0; font-size: .92rem; color: rgb(255 255 255 / .65); }
.contact__form-wrap { padding: clamp(1.6rem, 3vw, 2.6rem); background: var(--white); box-shadow: var(--shadow); scroll-margin-top: calc(var(--hdr) + 20px); }
.contact__form-title { font-size: 2.6rem; }
.contact__hint { font-size: .92rem; color: var(--ink-soft); }
.form__hp { position: absolute; left: -9999px; }
.form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1.2rem; }
.field { display: grid; gap: .35rem; margin: 0; }
.field--full { grid-column: 1 / -1; }
.field label { font: 700 .88rem/1.2 var(--font-label); letter-spacing: .1em; text-transform: uppercase; }
.field input, .field select, .field textarea { width: 100%; min-height: 50px; padding: .7rem .9rem; border: 2px solid var(--line); background: var(--white); color: var(--navy); font: 500 1rem var(--font-body); transition: border-color .2s; }
.field textarea { min-height: 130px; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--red); }
.consent { margin-top: 1rem; }
.check { display: grid; grid-template-columns: auto 1fr; gap: .7rem; align-items: start; font-size: .95rem; cursor: pointer; }
.check input { width: 20px; height: 20px; margin-top: .15rem; accent-color: var(--red); }
.form__submit { margin: 1.4rem 0 0; }
.form-notice { margin-bottom: 1.2rem; padding: 1rem 1.2rem; font-weight: 600; outline: none; }
.form-notice--success { background: var(--mist); color: var(--navy); box-shadow: inset 4px 0 0 var(--navy); }
.form-notice--error { background: rgb(var(--red-rgb) / .1); color: var(--red); box-shadow: inset 4px 0 0 var(--red); }
@media (max-width: 900px) { .contact__grid { grid-template-columns: 1fr; } .contact__card { position: static; } }
@media (max-width: 560px) { .form__grid { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------- appel final */
.cta { position: relative; padding-block: clamp(96px, 12vw, 170px); overflow: hidden; color: var(--white); text-align: center; isolation: isolate; }
.cta__bg { position: absolute; inset: 0; z-index: -2; }
.cta__bg img { width: 100%; height: 100%; object-fit: cover; }
.cta::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgb(var(--navy-rgb) / .78), rgb(var(--navy-rgb) / .9)), radial-gradient(60% 60% at 50% 100%, rgb(var(--red-rgb) / .5), transparent 70%); }
.cta__in { display: grid; justify-items: center; }
.fod--cta { width: clamp(200px, 22vw, 300px); margin-bottom: 1rem; }
.cta__title { margin-bottom: .3em; font-size: clamp(3.6rem, 9vw, 8.4rem); line-height: .82; color: var(--white); }
.cta__text { max-width: 54ch; font-size: 1.15rem; color: rgb(255 255 255 / .88); }
.cta__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: .8rem 1rem; margin: .6rem 0 0; }

/* --------------------------------------------------------------- pied de page */
.ftr { background: var(--navy); color: rgb(255 255 255 / .82); padding-top: clamp(56px, 7vw, 96px); }
.ftr__grid { display: grid; grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr)); gap: 2.4rem; }
.ftr__logo { width: 170px; margin-bottom: 1.2rem; }
.ftr__brand p { max-width: 34ch; font-size: .95rem; }
.ftr__social { display: flex; gap: .5rem; }
.ftr__social a { display: grid; place-items: center; width: 44px; height: 44px; background: rgb(255 255 255 / .1); color: var(--white); clip-path: var(--cut); --notch: 8px; transition: background .25s; }
.ftr__social a:hover { background: var(--red); }
.ftr__title { margin: 0 0 1rem; font: 600 1.5rem/1 var(--font-display); letter-spacing: .05em; text-transform: uppercase; color: var(--white); }
.ftr__col ul { display: grid; gap: .5rem; margin: 0; padding: 0; list-style: none; }
.ftr__col a { text-decoration: none; }
.ftr__col a:hover { color: var(--white); text-decoration: underline; }
.ftr__col small { color: var(--red); font-weight: 700; }
.ftr__contact li, .ftr__contact a { display: inline-flex; align-items: center; gap: .6rem; }
.ftr__contact li { display: flex; }
.ftr__contact .icon { width: 18px; height: 18px; color: var(--red); }
.fod--ftr { width: 200px; margin-top: 1.4rem; opacity: .9; }
.ftr__seo { margin-top: 3rem; padding-top: 1.6rem; border-top: 1px solid rgb(255 255 255 / .12); font-size: .82rem; line-height: 1.6; color: rgb(255 255 255 / .5); }
.ftr__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .6rem 2rem; padding-block: 1.2rem 2rem; font-size: .88rem; color: rgb(255 255 255 / .6); }
.ftr__bottom p { margin: 0; }
.ftr__legal { display: flex; gap: 1.4rem; }
@media (max-width: 900px) { .ftr__grid { grid-template-columns: 1fr 1fr; } .ftr__brand { grid-column: 1 / -1; } }
@media (max-width: 560px) { .ftr__grid { grid-template-columns: 1fr; } }

/* barre d'inscription mobile */
.mcta { display: none; }
@media (max-width: 760px) {
	.mcta { position: fixed; left: 0; right: 0; bottom: 0; z-index: 80; display: flex; gap: 8px; padding: 10px 12px calc(10px + env(safe-area-inset-bottom, 0px)); background: rgb(255 255 255 / .96); box-shadow: 0 -10px 30px -12px rgb(var(--navy-rgb) / .35); transform: translateY(110%); transition: transform .35s var(--ease); }
	.mcta.is-visible { transform: none; }
	.mcta .btn { flex: 1; }
	.mcta__tel { display: grid; place-items: center; width: 56px; background: var(--navy); color: var(--white); clip-path: var(--cut); }
	body.nav-open .mcta { display: none; }
	.ftr { padding-bottom: 80px; }
}

/* --------------------------------------------------------------- 404 */
.notfound { position: relative; display: grid; align-items: center; min-height: 80vh; padding: calc(var(--hdr) + 40px) 0 80px; overflow: hidden; background: var(--navy); color: var(--white); isolation: isolate; }
.notfound__giant { position: absolute; right: -.04em; bottom: -.1em; z-index: -1; margin: 0; font: 700 clamp(14rem, 40vw, 40rem)/.8 var(--font-display); color: transparent; -webkit-text-stroke: 2px rgb(255 255 255 / .14); }
.notfound__title { font-size: clamp(4rem, 10vw, 8rem); color: var(--white); }
.notfound__lead { max-width: 52ch; }
.notfound__actions { display: flex; flex-wrap: wrap; gap: .8rem 1rem; }

/* --------------------------------------------------------------- pages simples (mentions…) */
.prose h2 { margin-top: 1.6em; font-size: 2.2rem; }
.prose a { font-weight: 600; }

/* --------------------------------------------------------------- animations */
@keyframes pwg-rise { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }
@keyframes pwg-trio { from { opacity: 0; transform: translateY(70px) rotate(0); } }
@keyframes pwg-giant { from { opacity: 0; transform: translateY(14%); } to { opacity: 1; transform: none; } }
@keyframes pwg-drift { from { transform: scale(1.14); } to { transform: scale(1.02); } }
@keyframes pwg-spin { to { transform: rotate(360deg); } }
@keyframes pwg-marquee { to { transform: translateX(-33.333%); } }
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
	.ticker__track { animation: none; }
}

/* --------------------------------------------------------------- cohabitation Divi
   Neutralise les styles globaux que Divi pourrait injecter en ligne sur les pages du site.
   Même spécificité qu'un sélecteur d'élément Divi (p, h1, a…) : cette feuille étant imprimée
   après les styles Divi, elle l'emporte, sans écraser les composants du site (sélecteurs de classe). */
:where(body.pwg-view) p, :where(body.pwg-view) ul, :where(body.pwg-view) ol, :where(body.pwg-view) li,
:where(body.pwg-view) h1, :where(body.pwg-view) h2, :where(body.pwg-view) h3, :where(body.pwg-view) h4 { padding-bottom: 0; }
:where(body.pwg-view) h1, :where(body.pwg-view) h2, :where(body.pwg-view) h3, :where(body.pwg-view) h4 { color: inherit; }
:where(body.pwg-view) a { color: inherit; }
