/* =========================================================
   Site Roy · identité « Nuit de match »
   Chargé uniquement sur les pages « Roy · pleine page » et dans l'éditeur.
   ========================================================= */
@font-face { font-family: 'Barlow'; src: url('../fonts/Barlow-400.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'Barlow'; src: url('../fonts/Barlow-500.woff2') format('woff2'); font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: 'Barlow'; src: url('../fonts/Barlow-600.woff2') format('woff2'); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: 'Barlow'; src: url('../fonts/Barlow-700.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: 'Barlow'; src: url('../fonts/Barlow-700i.woff2') format('woff2'); font-weight: 700; font-style: italic; font-display: swap; }
@font-face { font-family: 'Barlow Condensed'; src: url('../fonts/BarlowCondensed-600.woff2') format('woff2'); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: 'Barlow Condensed'; src: url('../fonts/BarlowCondensed-700.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: 'Barlow Condensed'; src: url('../fonts/BarlowCondensed-700i.woff2') format('woff2'); font-weight: 700; font-style: italic; font-display: swap; }
@font-face { font-family: 'Barlow Condensed'; src: url('../fonts/BarlowCondensed-800i.woff2') format('woff2'); font-weight: 800; font-style: italic; font-display: swap; }

:root {
	--nuit: #0E1430; --marine: #202D57; --roi: #1E5595; --jaune: #F4EA4B;
	--ivoire: #F2F1EC; --brume: #C9D3EA; --gris: #9FB4D9; --trait: #344473;
	--cond: 'Barlow Condensed', 'Arial Narrow', sans-serif;
	--texte: 'Barlow', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--pad: 28px;
}
body.roy-pp { margin: 0; background: var(--nuit); color: var(--ivoire); font-family: var(--texte); font-size: 17px; line-height: 1.5; -webkit-font-smoothing: antialiased; }
body.roy-pp *, body.roy-pp *::before, body.roy-pp *::after, :is(.roy-hero, .roy-chiffres, .roy-weekend, .roy-domicile, .roy-equipes, .roy-inscriptions, .roy-evenement, .roy-reseaux, .roy-partenaires, .roy-papiers, .roy-contact, .roy-page-equipe, .roy-entete-page, .roy-agenda-page, .roy-evenements, .roy-devenir, .roy-qui, .roy-archives, .roy-acces, .roy-categories, .roy-faq, .roy-histoire, .roy-histoire-v2, .roy-comite, .roy-legal, .roy-suivez, .roy-inscription, .roy-rejoindre, .roy-etapes, .roy-plan, .roy-404, .roy-atouts, .roy-communes, .roy-commune-trajet, .roy-avis, .roy-trajet, .roy-proche, .roy-commune-equipes), :is(.roy-hero, .roy-chiffres, .roy-weekend, .roy-domicile, .roy-equipes, .roy-inscriptions, .roy-evenement, .roy-reseaux, .roy-partenaires, .roy-papiers, .roy-contact, .roy-page-equipe, .roy-entete-page, .roy-agenda-page, .roy-evenements, .roy-devenir, .roy-qui, .roy-archives, .roy-acces, .roy-categories, .roy-faq, .roy-histoire, .roy-histoire-v2, .roy-comite, .roy-legal, .roy-suivez, .roy-inscription, .roy-rejoindre, .roy-etapes, .roy-plan, .roy-404, .roy-atouts, .roy-communes, .roy-commune-trajet, .roy-avis, .roy-trajet, .roy-proche, .roy-commune-equipes) * { box-sizing: border-box; }
:is(.roy-hero, .roy-chiffres, .roy-weekend, .roy-domicile, .roy-equipes, .roy-inscriptions, .roy-evenement, .roy-reseaux, .roy-partenaires, .roy-papiers, .roy-contact, .roy-page-equipe, .roy-entete-page, .roy-agenda-page, .roy-evenements, .roy-devenir, .roy-qui, .roy-archives, .roy-acces, .roy-categories, .roy-faq, .roy-histoire, .roy-histoire-v2, .roy-comite, .roy-legal, .roy-suivez, .roy-inscription, .roy-rejoindre, .roy-etapes, .roy-plan, .roy-404, .roy-atouts, .roy-communes, .roy-commune-trajet, .roy-avis, .roy-trajet, .roy-proche, .roy-commune-equipes) { font-family: var(--texte); color: var(--ivoire); line-height: 1.5; }
:is(.roy-hero, .roy-chiffres, .roy-weekend, .roy-domicile, .roy-equipes, .roy-inscriptions, .roy-evenement, .roy-reseaux, .roy-partenaires, .roy-papiers, .roy-contact, .roy-page-equipe, .roy-entete-page, .roy-agenda-page, .roy-evenements, .roy-devenir, .roy-qui, .roy-archives, .roy-acces, .roy-categories, .roy-faq, .roy-histoire, .roy-histoire-v2, .roy-comite, .roy-legal, .roy-suivez, .roy-inscription, .roy-rejoindre, .roy-etapes, .roy-plan, .roy-404, .roy-atouts, .roy-communes, .roy-commune-trajet, .roy-avis, .roy-trajet, .roy-proche, .roy-commune-equipes) :is(h1, h2, h3) { font-family: var(--cond) !important; font-style: italic !important; font-weight: 800 !important; text-transform: uppercase !important; line-height: 1 !important; color: #fff; letter-spacing: 0 !important; margin-top: 0; }
:is(.roy-hero, .roy-chiffres, .roy-weekend, .roy-domicile, .roy-equipes, .roy-inscriptions, .roy-evenement, .roy-reseaux, .roy-partenaires, .roy-papiers, .roy-contact, .roy-page-equipe, .roy-entete-page, .roy-agenda-page, .roy-evenements, .roy-devenir, .roy-qui, .roy-archives, .roy-acces, .roy-categories, .roy-faq, .roy-histoire, .roy-histoire-v2, .roy-comite, .roy-legal, .roy-suivez, .roy-inscription, .roy-rejoindre, .roy-etapes, .roy-plan, .roy-404, .roy-atouts, .roy-communes, .roy-commune-trajet, .roy-avis, .roy-trajet, .roy-proche, .roy-commune-equipes) p { margin-top: 0; }
:is(.roy-hero, .roy-chiffres, .roy-weekend, .roy-domicile, .roy-equipes, .roy-inscriptions, .roy-evenement, .roy-reseaux, .roy-partenaires, .roy-papiers, .roy-contact, .roy-page-equipe, .roy-entete-page, .roy-agenda-page, .roy-evenements, .roy-devenir, .roy-qui, .roy-archives, .roy-acces, .roy-categories, .roy-faq, .roy-histoire, .roy-histoire-v2, .roy-comite, .roy-legal, .roy-suivez, .roy-inscription, .roy-rejoindre, .roy-etapes, .roy-plan, .roy-404, .roy-atouts, .roy-communes, .roy-commune-trajet, .roy-avis, .roy-trajet, .roy-proche, .roy-commune-equipes) :is(p, li, .wp-block-button__link, .roy-bouton, .roy-reseau) { font-family: var(--texte) !important; }
:is(.roy-hero, .roy-chiffres, .roy-weekend, .roy-domicile, .roy-equipes, .roy-inscriptions, .roy-evenement, .roy-reseaux, .roy-partenaires, .roy-papiers, .roy-contact, .roy-page-equipe, .roy-entete-page, .roy-agenda-page, .roy-evenements, .roy-devenir, .roy-qui, .roy-archives, .roy-acces, .roy-categories, .roy-faq, .roy-histoire, .roy-histoire-v2, .roy-comite, .roy-legal, .roy-suivez, .roy-inscription, .roy-rejoindre, .roy-etapes, .roy-plan, .roy-404, .roy-atouts, .roy-communes, .roy-commune-trajet, .roy-avis, .roy-trajet, .roy-proche, .roy-commune-equipes) a:not([class]) { color: var(--jaune); }
body.roy-pp img { max-width: 100%; height: auto; }
body.roy-pp :focus-visible { outline: 3px solid var(--jaune); outline-offset: 2px; }
.roy-saut { position: absolute; left: -9999px; top: 0; background: var(--jaune); color: var(--nuit); padding: 10px 16px; z-index: 100; }
.roy-saut:focus { left: 10px; top: 10px; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px,1px,1px,1px); }
.roy-wrap { max-width: 1280px; margin-left: auto !important; margin-right: auto !important; padding-left: var(--pad); padding-right: var(--pad); width: 100%; }
.roy-main { margin: 0; }
.roy-main > * { margin-top: 0; margin-bottom: 0; }
.roy-surtitre { margin: 0 0 10px; font-weight: 700; font-size: 14px; letter-spacing: .16em; text-transform: uppercase; color: var(--jaune); }
.roy-section-titre, .roy-main h2 { font-size: clamp(40px, 5vw, 58px); margin: 0 0 26px; }
.roy-lien { font-weight: 700; color: var(--jaune); display: inline-block; margin-top: 14px; }
.roy-vide { color: var(--gris); }

/* Boutons */
.roy-bouton, .wp-block-button__link { display: inline-block; background: var(--jaune); color: var(--nuit); text-decoration: none; font-weight: 700; padding: 13px 22px; border-radius: 999px; line-height: 1.2; border: 2px solid var(--jaune); }
.roy-bouton:hover, .wp-block-button__link:hover { background: #fff; border-color: #fff; color: var(--nuit); }
.roy-bouton--contour, .is-style-outline .wp-block-button__link { background: transparent !important; color: #fff !important; border: 2px solid #fff; }
.roy-bouton--contour:hover, .is-style-outline .wp-block-button__link:hover { background: #fff !important; color: var(--nuit) !important; }
.roy-boutons, .wp-block-buttons.roy-boutons { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px; }

/* Onglets / filtres */
.roy-onglets { display: inline-flex; flex-wrap: wrap; gap: 4px; background: var(--nuit); padding: 5px; border-radius: 999px; }
.roy-onglets button { font: inherit; font-weight: 700; font-size: 15px; min-height: 44px; padding: 9px 16px; border-radius: 999px; border: 0; cursor: pointer; background: transparent; color: #fff; }
.roy-onglets button[aria-selected="true"], .roy-onglets button[aria-pressed="true"] { background: var(--jaune); color: var(--nuit); }
.roy-onglets--petit button { min-height: 38px; padding: 7px 14px; font-size: 14px; }

/* ---------- En-tête ---------- */
.roy-header-part { position: sticky; top: 0; z-index: 60; background: var(--nuit); transition: background .25s ease, box-shadow .25s ease; }
.admin-bar .roy-header-part { top: 32px; }
body.roy-pp--hero .roy-header-part { position: fixed; top: 0; left: 0; right: 0; background: transparent; }
.admin-bar.roy-pp--hero .roy-header-part { top: 32px; }
.roy-header-part.is-colle, body.roy-menu-ouvert .roy-header-part { background: rgba(14, 20, 48, .96) !important; box-shadow: 0 8px 24px rgba(0, 0, 0, .35); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.roy-header-part.is-colle .roy-header__ligne { padding-top: 10px; padding-bottom: 10px; }
.roy-header__ligne { transition: padding .25s ease; }
@media (max-width: 782px) { .admin-bar .roy-header-part, .admin-bar.roy-pp--hero .roy-header-part { top: 46px; } }
@media (max-width: 600px) { .admin-bar .roy-header-part, .admin-bar.roy-pp--hero .roy-header-part { top: 0; } }
.roy-header__ligne { display: flex; gap: 18px; align-items: center; justify-content: space-between; padding-top: 18px; padding-bottom: 18px; position: relative; }
.roy-marque { display: flex; align-items: center; gap: 12px; text-decoration: none; color: #fff; font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 22px; line-height: .95; text-transform: uppercase; flex: 0 0 auto; }
body .roy-marque img { height: 60px; width: auto; }
.roy-menu { display: flex; align-items: center; gap: 18px; flex: 1 1 auto; justify-content: flex-end; }
.roy-nav { background: rgba(14, 20, 48, .62); border-radius: 999px; padding: 12px 24px; font-weight: 600; margin-right: auto; margin-left: auto; }
.roy-nav__liste { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: nowrap; gap: 6px 22px; white-space: nowrap; }
.roy-nav a { color: #fff; text-decoration: none; }
.roy-nav a:hover, .roy-nav .current-menu-item > a { color: var(--jaune); }
.roy-header__actions { display: flex; gap: 10px; flex: 0 0 auto; }
.roy-header__actions .roy-bouton { padding: 11px 18px; font-size: 15px; white-space: nowrap; }
.roy-burger { display: none; width: 48px; height: 48px; border-radius: 50%; border: 0; background: rgba(14, 20, 48, .75); cursor: pointer; position: relative; flex: 0 0 auto; }
.roy-burger span[aria-hidden], .roy-burger span[aria-hidden]::before, .roy-burger span[aria-hidden]::after { position: absolute; left: 14px; width: 20px; height: 2px; background: #fff; content: ""; transition: transform .2s ease; }
.roy-burger span[aria-hidden] { top: 23px; }
.roy-burger span[aria-hidden]::before { left: 0; top: -6px; }
.roy-burger span[aria-hidden]::after { left: 0; top: 6px; }
.roy-burger[aria-expanded="true"] span[aria-hidden] { background: transparent; }
.roy-burger[aria-expanded="true"] span[aria-hidden]::before { transform: translateY(6px) rotate(45deg); }
.roy-burger[aria-expanded="true"] span[aria-hidden]::after { transform: translateY(-6px) rotate(-45deg); }

/* Menus déroulants « Le club » et « Nos équipes » */
.roy-nav .roy-nav__deroulant--simple .sub-menu { columns: 1; min-width: 190px; }
.roy-nav__liste > li { position: relative; display: flex; align-items: center; }
.roy-nav__ouvrir { width: 22px; height: 22px; margin-left: 4px; border: 0; background: transparent; cursor: pointer; position: relative; padding: 0; }
.roy-nav__ouvrir span { position: absolute; left: 6px; top: 5px; width: 8px; height: 8px; border-right: 2px solid #fff; border-bottom: 2px solid #fff; transform: rotate(45deg); }
.roy-nav .sub-menu { list-style: none; margin: 0; padding: 10px; position: absolute; top: 100%; left: -14px; min-width: 200px; background: var(--nuit); border: 1px solid var(--marine); border-radius: 16px; box-shadow: 0 16px 30px rgba(0, 0, 0, .35); display: none; z-index: 60; columns: 2; column-gap: 6px; }
.roy-nav .sub-menu li { break-inside: avoid; }
.roy-nav .sub-menu a { display: block; padding: 8px 12px; border-radius: 10px; white-space: nowrap; }
.roy-nav .sub-menu a:hover { background: var(--marine); }
.roy-nav li:hover > .sub-menu, .roy-nav li:focus-within > .sub-menu, .roy-nav li.is-ouvert > .sub-menu { display: block; }
.roy-nav__liste > li:hover::after { content: ""; position: absolute; left: 0; right: 0; top: 100%; height: 14px; }

/* Menu mobile et tablette : bouton menu et panneau plein écran (toujours lisible, sur photo ou non) */
@media (max-width: 1100px) {
	.roy-burger { display: block; }
	.roy-menu { max-height: calc(100vh - var(--roy-entete, 76px) - 20px); max-height: calc(100dvh - var(--roy-entete, 76px) - 20px); overflow-y: auto; display: none; position: absolute; top: 100%; left: 12px; right: 12px; flex-direction: column; align-items: stretch; gap: 18px; background: var(--nuit); border: 1px solid var(--marine); border-radius: 20px; padding: 22px; box-shadow: 0 20px 40px rgba(0, 0, 0, .35); }
	.roy-menu.is-ouvert { display: flex; }
	.roy-nav { background: transparent; padding: 0; margin: 0; }
	.roy-nav__liste { flex-direction: column; gap: 0; }
	.roy-nav__liste a { display: block; padding: 13px 4px; font-size: 19px; border-bottom: 1px solid var(--marine); }
	.roy-nav__liste > li { flex-wrap: wrap; }
	.roy-nav__liste > li > a { flex: 1; }
	.roy-nav__ouvrir { width: 44px; height: 44px; }
	.roy-nav__ouvrir span { left: 16px; top: 14px; }
	.roy-nav .sub-menu { position: static; display: none; width: 100%; box-shadow: none; border: 0; padding: 0 0 8px 12px; columns: 3; background: transparent; }
	.roy-nav li:hover > .sub-menu { display: none; }
	.roy-nav li.is-ouvert > .sub-menu { display: block; }
	.roy-nav .sub-menu a { font-size: 16px; padding: 9px 6px; border: 0; }
	.roy-header__actions { flex-direction: column; }
	.roy-header__actions .roy-bouton { text-align: center; padding: 14px 18px; }
}

/* ---------- Hero (grande photo) ---------- */
.wp-block-cover.roy-hero { padding: 0; align-items: flex-end; }
.roy-hero .wp-block-cover__background { background-color: #0E1430 !important; }
.roy-hero .wp-block-cover__background.has-background-dim { opacity: .5; }
.wp-block-cover.roy-hero .wp-block-cover__inner-container { max-width: 1280px !important; margin: 0 auto !important; width: 100% !important; padding: 140px var(--pad) 60px; }
/* Photos des équipes qui défilent dans l'en-tête */
.roy-hero--defile > .wp-block-cover__image-background { display: none; }
.roy-hero__defile { position: absolute; inset: 0; z-index: 0; overflow: hidden; }
.roy-hero__slide { position: absolute; inset: 0; margin: 0; opacity: 0; transition: opacity 1s ease; }
.roy-hero__slide.is-active { opacity: 1; }
.roy-hero__slide img { position: absolute; inset: 0; width: 100% !important; height: 100% !important; }
.roy-hero__fond { object-fit: cover; filter: blur(28px) brightness(.45) saturate(1.1); transform: scale(1.15); }
.roy-hero__slide .roy-hero__photo { left: auto; right: 0; width: min(100%, calc((100vh - 92px) * 1.43 + 160px), 72%) !important; object-fit: cover; object-position: center 40%; filter: brightness(.75); top: 92px; height: calc(100% - 92px) !important; -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 22%); mask-image: linear-gradient(90deg, transparent 0, #000 22%); }
@media (max-width: 1100px) { .roy-hero__slide .roy-hero__photo { width: 100% !important; top: 88px; height: auto !important; aspect-ratio: 2000 / 1403; object-fit: cover; -webkit-mask-image: linear-gradient(180deg, #000 70%, transparent 100%); mask-image: linear-gradient(180deg, #000 70%, transparent 100%); } }
.roy-hero__slide figcaption { position: absolute; right: 28px; bottom: 26px; z-index: 3; font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 22px; color: var(--nuit); background: var(--jaune); padding: 6px 14px; border-radius: 999px; }
.roy-hero--defile .wp-block-cover__background { display: none; }
.roy-hero--defile .wp-block-cover__inner-container { position: relative; z-index: 2; }
@media (prefers-reduced-motion: reduce) { .roy-hero__slide { transition: none; } }
@media (max-width: 782px) { .roy-hero__slide figcaption { top: 96px; bottom: auto; right: 18px; font-size: 18px; } }
.roy-hero__titre { font-size: clamp(56px, 8.4vw, 112px); line-height: .88; margin: 0; color: #fff; }
.roy-hero__intro { font-size: 20px; line-height: 1.45; max-width: 560px; margin: 22px 0 0; color: #E4E9F5; }

/* ---------- Chiffres ---------- */
.roy-chiffres { background: var(--nuit); }
.roy-chiffres__grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 28px; padding-top: 56px; padding-bottom: 56px; }
.roy-chiffre__valeur { font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 96px; line-height: .9; color: var(--jaune); }
.roy-chiffre__label { font-size: 18px; font-weight: 600; margin-top: 8px; }

/* ---------- Ce week-end ---------- */
.roy-weekend { background: var(--roi); padding: 48px 0 52px; }
.roy-weekend__barre { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 16px; margin-bottom: 22px; }
.roy-weekend__titre { font-size: 46px !important; margin: 12px 0 0 !important; }
.roy-weekend__resume { margin: 6px 0 0; color: #DCE4F4; }
.roy-weekend__jours { display: grid; grid-template-columns: repeat(auto-fit, minmax(420px, 1fr)); gap: 16px; }
.roy-jour { background: var(--nuit); border-radius: 18px; padding: 6px 20px 12px; }
.roy-jour__tete { display: flex; justify-content: space-between; align-items: baseline; padding: 14px 0 10px; }
.roy-jour__tete h3 { font-size: 28px; margin: 0; }
.roy-jour__tete span { font-size: 14px; color: var(--gris); font-weight: 600; }
.roy-jour__vide { margin: 0; padding: 12px 0; color: var(--gris); border-top: 1px solid var(--marine); }
.roy-match { display: grid; grid-template-columns: 56px 104px minmax(0, 1fr) 28px; gap: 12px; align-items: center; padding: 9px 0; border-top: 1px solid var(--marine); font-size: 15px; }
.roy-match[hidden] { display: none; }
.roy-match__lead { font-family: var(--cond); font-weight: 700; font-size: 20px; color: var(--jaune); white-space: nowrap; }
.roy-match__cat { font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 20px; text-transform: uppercase; white-space: nowrap; }
.roy-match__vs { min-width: 0; color: var(--brume); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.roy-chip { display: inline-block; width: 26px; text-align: center; font-size: 13px; font-weight: 700; padding: 3px 0; border-radius: 6px; background: var(--marine); color: var(--brume); }
.roy-chip--d, .roy-chip--v { background: var(--jaune); color: var(--nuit); }
.roy-chip--n { background: var(--gris); color: var(--nuit); }
.roy-chip--vide { background: transparent; }
[data-panneau="res"] .roy-chip--d { background: var(--marine); color: var(--brume); }
.roy-weekend__pied { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; margin-top: 18px; font-size: 14px; color: #DCE4F4; }
.roy-weekend__pied a { font-weight: 700; color: var(--jaune); }

/* ---------- Prochains matchs à domicile + classement ---------- */
.roy-domicile { background: var(--nuit); padding: 64px 0 24px; }
.roy-domicile__grille { display: flex; flex-wrap: wrap; gap: 18px; }
.roy-domicile__cartes { flex: 1.3 1 520px; min-width: 0; display: flex; flex-direction: column; gap: 18px; }
.roy-carte-match { position: relative; border-radius: 20px; min-height: 300px; display: flex; flex-direction: column; justify-content: flex-end; background: var(--marine); }
.roy-carte-match > img { position: absolute; inset: 0; width: 100% !important; height: 100% !important; object-fit: cover; z-index: 0; }
.roy-carte-match::before { content: ""; position: absolute; inset: 0; background: rgba(14, 20, 48, .66); z-index: 1; }
.roy-carte-match__contenu, .roy-carte-match__ballon, .roy-carte-match__actions { position: relative; z-index: 2; }
.roy-carte-match__contenu { padding: 24px 26px 0; display: flex; flex-direction: column; gap: 10px; }
.roy-carte-match__tags { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.roy-pastille { background: var(--jaune); color: var(--nuit); font-weight: 700; font-size: 12px; letter-spacing: .1em; text-transform: uppercase; padding: 5px 11px; border-radius: 999px; }
.roy-carte-match__equipe { font-weight: 700; font-size: 14px; color: var(--jaune); }
.roy-carte-match__affiche { font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; line-height: 1; font-size: clamp(36px, 4vw, 54px); color: #fff; }
.roy-carte-match__affiche span { color: var(--jaune); }
.roy-carte-match__infos { font-weight: 600; }
.roy-carte-match__ballon { margin-top: 18px; padding: 12px 26px; background: rgba(14, 20, 48, .86); display: flex; flex-wrap: wrap; gap: 12px; align-items: center; justify-content: space-between; color: #DCE4F4; font-size: 14px; font-weight: 600; }
.roy-carte-match__ballon > span:first-child { display: flex; align-items: center; gap: 10px; }
.roy-carte-match__ballon svg { color: var(--jaune); }
.roy-carte-match__sponsor { background: #fff; color: #4A5272 !important; border-radius: 10px; padding: 6px 14px; font-size: 13px; font-weight: 700; text-decoration: none; display: inline-flex; align-items: center; min-height: 44px; }
.roy-carte-match__sponsor img { height: 34px !important; width: auto !important; max-width: 150px; object-fit: contain; }
.roy-carte-match__actions { align-items: flex-end; border-radius: 0 0 20px 20px; padding: 12px 26px 18px; background: rgba(14, 20, 48, .86); display: flex; flex-wrap: wrap; gap: 10px; }
.roy-carte-match__actions .roy-bouton { font-size: 14px; padding: 9px 16px; }
.roy-agenda { display: flex; flex-direction: column; gap: 8px; }
.roy-agenda__label { font-size: 13px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--brume); }
.roy-agenda.is-detecte .roy-agenda__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(1px,1px,1px,1px); }
.roy-agenda__boutons { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.roy-agenda__btn { display: inline-flex; align-items: center; gap: 7px; min-height: 40px; padding: 8px 14px; border-radius: 999px; border: 2px solid rgba(255, 255, 255, .55); color: #fff !important; text-decoration: none; font-weight: 700; font-size: 14px; }
.roy-agenda__btn:hover { background: #fff; color: var(--nuit) !important; border-color: #fff; }
.roy-agenda__icone { width: 24px !important; height: 24px !important; flex: 0 0 auto; object-fit: contain; }
.roy-agenda__btn.is-prefere { background: var(--jaune); border-color: var(--jaune); color: var(--nuit) !important; padding: 9px 18px; }
.roy-agenda__btn.is-prefere:hover { background: #fff; border-color: #fff; }
.roy-agenda.is-detecte .roy-agenda__btn:not(.is-prefere) { padding: 8px 12px; font-size: 13px; }
.roy-carte-match { overflow: visible; }
.roy-carte-match > img, .roy-carte-match::before { border-radius: 20px; }
.roy-classement { flex: 1 1 380px; min-width: 0; background: var(--marine); border-radius: 20px; padding: 24px; align-self: flex-start; }
.roy-classement__tete { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 10px; }
.roy-classement__tete h2 { font-size: 32px !important; margin: 0 !important; }
.roy-classement__serie { margin: 0 0 8px; font-size: 14px; color: var(--gris); }
.roy-classement__ligne { display: grid; grid-template-columns: 30px minmax(0, 1fr) 40px 48px; gap: 8px; align-items: center; padding: 9px 10px; border-top: 1px solid var(--trait); border-radius: 8px; font-size: 15px; }
.roy-classement__ligne span:last-child { text-align: right; font-weight: 700; }
.roy-classement__ligne--tete { border-top: 0; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--gris); }
.roy-classement__ligne.is-roy { background: var(--jaune); color: var(--nuit); border-top-color: transparent; }

/* ---------- Nos équipes ---------- */
.roy-equipes { background: var(--marine); padding: 72px 0; }
.roy-equipes__grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); gap: 18px; }
.roy-equipe { position: relative; display: block; aspect-ratio: 2000 / 1403; border-radius: 16px; overflow: hidden; color: #fff; text-decoration: none; background: var(--nuit); }
.roy-equipe img { position: absolute; inset: 0; width: 100% !important; height: 100% !important; object-fit: cover; transition: transform .4s ease; }
.roy-equipe:hover img { transform: scale(1.03); }
.roy-equipe__bandeau { position: absolute; left: 0; right: 0; bottom: 0; padding: 14px 20px; background: rgba(14, 20, 48, .8); display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.roy-equipe__nom { font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 34px; text-transform: uppercase; line-height: 1; }
.roy-equipe__tag { font-size: 13px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--jaune); }

.roy-equipe__sans-photo { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: var(--marine); }
.roy-equipe__sans-photo img { position: static !important; width: auto !important; height: 45% !important; opacity: .35; }
@media (max-width: 782px) { .roy-equipe__sans-photo { position: static; aspect-ratio: 2000 / 1403; } }

/* ---------- Bandeau inscriptions ---------- */
.roy-inscriptions { background: var(--jaune); color: var(--nuit); overflow: hidden; }
.roy-inscriptions__cols { gap: 0 !important; margin-top: 0 !important; margin-bottom: 0 !important; align-items: stretch !important; }
.roy-inscriptions__texte { padding: 56px 40px 56px 0; }
.roy-inscriptions .roy-surtitre { color: var(--nuit); }
.roy-inscriptions h2 { color: var(--nuit) !important; font-size: clamp(40px, 5vw, 60px) !important; line-height: .95; margin-bottom: 14px !important; }
.roy-inscriptions p { font-size: 18px; }
.roy-inscriptions .wp-block-button__link { background: var(--nuit); color: #fff; border-color: var(--nuit); }
.roy-inscriptions .is-style-outline .wp-block-button__link { color: var(--nuit) !important; border-color: var(--nuit); }
.roy-inscriptions .is-style-outline .wp-block-button__link:hover { color: #fff !important; background: var(--nuit) !important; }
.roy-inscriptions__photo { display: flex; align-items: center; padding: 0 !important; }
.roy-inscriptions__image { margin: 0 !important; width: 100%; }
.roy-inscriptions__image img { display: block; width: 100% !important; height: auto !important; aspect-ratio: 2000 / 1403; object-fit: cover; }

/* ---------- Prochain événement ---------- */
.roy-evenement { background: var(--nuit); padding: 56px 0; }
.roy-evenement__ligne { display: flex; flex-wrap: wrap; gap: 28px; align-items: center; }
.roy-evenement__date { flex: 0 0 150px; height: 150px; border-radius: 22px; background: var(--roi); display: flex; flex-direction: column; align-items: center; justify-content: center; }
.roy-evenement__date span { font-weight: 700; text-transform: uppercase; letter-spacing: .1em; font-size: 14px; color: var(--jaune); }
.roy-evenement__date strong { font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 72px; line-height: 1; }
.roy-evenement__texte { flex: 1 1 420px; min-width: 0; }
.roy-evenement__texte h2 { font-size: 52px !important; margin: 0 0 8px !important; }
.roy-evenement__texte p:last-child { margin: 0; color: var(--brume); font-size: 17px; }
.roy-evenement__actions { display: flex; flex-direction: column; gap: 6px; align-items: center; }

/* ---------- Réseaux ---------- */
.roy-reseaux { background: var(--roi); padding: 48px 0; }
.roy-reseaux__ligne { display: flex; flex-wrap: wrap; gap: 20px; align-items: center; justify-content: space-between; }
.roy-reseaux h2 { margin: 0 !important; font-size: 48px !important; }
.roy-reseaux__liens { display: flex; flex-wrap: wrap; gap: 12px; }
.roy-reseau { display: inline-block; background: var(--nuit); color: #fff !important; text-decoration: none; font-weight: 700; border-radius: 16px; padding: 16px 26px; }
.roy-reseau:hover { background: var(--jaune); color: var(--nuit) !important; }

/* ---------- Partenaires (Partenaires Roy) : un maximum de place pour les logos ---------- */
.roy-partenaires { background: var(--nuit); padding: 72px 0; }
.roy-partenaires .roy-section-titre, .roy-partenaires .roy-surtitre { text-align: center; }
.roy-sponsors { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 16px; align-items: stretch; }
.roy-sponsors--seul { grid-template-columns: 1fr; }
.roy-sponsors__vedette { display: grid; gap: 16px; grid-auto-rows: 1fr; }
.roy-sponsors__autres { display: flex; flex-direction: column; gap: 16px; }
.roy-sponsors__rang { display: grid; gap: 16px; grid-template-columns: repeat(var(--roy-cols, 3), minmax(0, 1fr)); }
.roy-partenaire { display: flex; align-items: center; justify-content: center; text-align: center; text-decoration: none; border-radius: 18px; background: #fff; color: #4A5272 !important; font-weight: 700; padding: 12px; transition: transform .2s ease, box-shadow .2s ease; overflow: hidden; }
.roy-partenaire img { max-width: 100%; max-height: 100%; width: auto !important; height: auto !important; object-fit: contain; }
a.roy-partenaire:hover { transform: translateY(-3px); box-shadow: 0 0 0 3px var(--jaune); }
.roy-partenaire--vedette { position: relative; min-height: 340px; padding: 20px 28px 28px; font-size: 22px; box-shadow: 0 0 0 4px var(--jaune), 0 18px 40px rgba(0, 0, 0, .35); overflow: visible; }
.roy-partenaire--vedette img { width: 100% !important; max-height: 320px; }
.roy-partenaire--vedette::before { content: "Sponsor principal"; position: absolute; top: -14px; left: 50%; transform: translateX(-50%); white-space: nowrap; background: var(--jaune); color: var(--nuit); font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 15px; letter-spacing: .04em; padding: 5px 14px; border-radius: 999px; }
.roy-sponsors__vedette { padding-top: 6px; }
.roy-partenaire--n1 { min-height: 150px; }
.roy-partenaire--n2 { min-height: 120px; }
.roy-partenaire--n3 { min-height: 96px; }
.roy-sponsors__supporters { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; margin-top: 16px; }
.roy-partenaire--petit { height: 96px; border-radius: 14px; padding: 10px; font-size: 14px; font-weight: 600; }
.roy-partenaires .roy-boutons { margin-top: 32px; justify-content: center; }
@media (max-width: 900px) {
	.roy-sponsors { grid-template-columns: 1fr; }
	.roy-partenaire--vedette { min-height: 220px; }
	.roy-sponsors { row-gap: 26px; }
	.roy-sponsors__rang { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
	.roy-sponsors__supporters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ---------- Papiers ---------- */
.roy-papiers { background: var(--jaune); color: var(--nuit); padding: 34px 0; }
.roy-papiers__ligne { display: flex; flex-wrap: wrap; gap: 16px 28px; align-items: center; }
.roy-papiers h2 { margin: 0 !important; font-size: 34px !important; color: var(--nuit) !important; }
.roy-papiers__liens { display: flex; flex-wrap: wrap; gap: 10px; }
.roy-doc { display: inline-flex; align-items: center; gap: 8px; background: var(--nuit); color: #fff !important; text-decoration: none; font-weight: 600; padding: 11px 18px; border-radius: 999px; }
.roy-doc:hover { background: #fff; color: var(--nuit) !important; }

/* ---------- Contact ---------- */
.roy-contact { background: var(--roi); padding: 80px 0; }
.roy-contact__cols { gap: 40px !important; margin-top: 0 !important; margin-bottom: 0 !important; }
.roy-contact h2 { font-size: clamp(44px, 5.6vw, 64px) !important; line-height: .95; margin-bottom: 18px !important; }
.roy-contact__infos > p { font-size: 18px; color: #E4E9F5; }
.roy-contact__ligne { font-size: 17px !important; }
.roy-contact__ligne br { display: none; }
.roy-contact__ligne { margin: 0 0 16px; }
.roy-contact__ligne strong { display: block; font-size: 13px; text-transform: uppercase; letter-spacing: .1em; color: var(--brume); }
.roy-contact__formulaire { background: var(--nuit); border-radius: 22px; padding: 34px; display: flex; align-items: center; }
.roy-contact__note { margin: 0; padding: 28px; border: 2px dashed var(--trait); border-radius: 14px; color: var(--brume); text-align: center; width: 100%; }

/* Formulaire seul (page Rejoindre le club) */
.roy-contact__solo { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: 40px; align-items: start; }
.roy-contact__solo h2 { font-size: clamp(38px, 4.6vw, 56px) !important; line-height: .95; margin: 0 0 14px !important; }
@media (max-width: 900px) { .roy-contact__solo { grid-template-columns: 1fr; } }
.roy-eq-partenaire__texte { margin: 0 0 8px; }

/* Formulaire de l'extension « Forms » : champs au style du club */
.roy-formulaire { width: 100%; }
.roy-formulaire :is(input[type="text"], input[type="email"], input[type="tel"], input[type="url"], input[type="number"], select, textarea) { width: 100%; font: inherit; color: #fff; background: var(--marine); border: 1px solid var(--trait); border-radius: 12px; padding: 14px; min-height: 50px; }
.roy-formulaire label { color: #fff; font-weight: 700; font-size: 14px; }
/* Liste déroulante : les choix s'ouvrent sur fond blanc, donc texte foncé (sinon blanc sur blanc, invisible). */
.roy-formulaire select option, .roy-formulaire select optgroup { color: #0E1430 !important; background: #fff !important; }
.roy-formulaire select { -webkit-appearance: menulist; appearance: auto; }
.roy-formulaire :is(button, input[type="submit"]) { font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 22px; background: var(--jaune); color: var(--nuit); border: 0; border-radius: 999px; padding: 14px 28px; min-height: 52px; cursor: pointer; }

/* ---------- Pied de page ---------- */
.roy-pied { background: var(--nuit); border-top: 1px solid var(--marine); }
.roy-pied__ligne { display: flex; flex-wrap: wrap; gap: 16px; justify-content: space-between; align-items: center; padding-top: 30px; padding-bottom: 30px; font-size: 14px; color: var(--brume); }
.roy-pied__club { display: flex; align-items: center; gap: 12px; }
.roy-pied__liens { margin: 0; display: flex; gap: 18px; flex-wrap: wrap; }
.roy-pied a { color: var(--jaune); }
.roy-pied__club img { height: 44px !important; width: auto; }

/* ---------- Éditeur ---------- */
.is-root-container:has(.roy-hero, [data-type^="roy/"]) { background: var(--nuit); padding-bottom: 0 !important; }
.is-root-container:has(.roy-hero, [data-type^="roy/"]) > * { margin-top: 0 !important; margin-bottom: 0 !important; max-width: none !important; }
.roy-bloc-donnees a { pointer-events: none; }


/* =========================================================
   Pages intérieures
   ========================================================= */
.roy-entete-page { background: var(--nuit); border-top: 6px solid var(--jaune); }
.roy-entete-page__ligne { display: flex; flex-wrap: wrap; gap: 28px; align-items: flex-end; justify-content: space-between; padding-top: 56px; padding-bottom: 40px; }
.roy-entete-page__titres { flex: 1 1 560px; min-width: 0; }
.roy-entete-page__h1 { font-size: clamp(56px, 8vw, 110px) !important; line-height: .84 !important; margin: 0 !important; }
.roy-entete-page__h1 strong { color: var(--jaune); font-weight: 800; }
.roy-entete-page__intro { flex: 0 1 460px; margin: 0; color: var(--brume); font-size: 18px; line-height: 1.55; }
body.roy-pp:not(.roy-pp--hero) .roy-main > :first-child { margin-top: 0; }
.roy-fil { margin: 0 0 10px; font-size: 14px; font-weight: 600; color: var(--gris); }
.roy-fil a { color: var(--gris) !important; }
.roy-petit { font-size: 13px; color: var(--brume); }
.roy-rond { width: 46px; height: 46px; border-radius: 50%; border: 1px solid var(--trait); display: inline-flex; align-items: center; justify-content: center; color: #fff !important; text-decoration: none; font-size: 22px; }
.roy-rond:hover { background: var(--jaune); color: var(--nuit) !important; }

/* Page équipe */
.roy-page-equipe { background: var(--nuit); }
.roy-eq-tete { padding: 40px 0 0; }
.roy-eq-tete__ligne { display: flex; flex-wrap: wrap; gap: 18px; align-items: flex-end; justify-content: space-between; margin-bottom: 24px; }
.roy-eq-tete h1 { font-size: clamp(64px, 9vw, 120px) !important; line-height: .85 !important; margin: 0 !important; }
.roy-eq-tete .roy-boutons { margin-top: 0; }
.roy-eq-photo { margin: 0; position: relative; border-radius: 20px; overflow: hidden; }
.roy-eq-photo img { display: block; width: 100% !important; height: auto !important; }
.roy-eq-photo figcaption { position: absolute; right: 16px; bottom: 16px; background: rgba(14, 20, 48, .82); color: #fff; font-size: 13px; padding: 7px 12px; border-radius: 999px; }
.roy-eq-infos { padding: 28px 0; }
.roy-eq-infos__grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 14px; }
.roy-eq-infos__grille > div { background: var(--roi); border-radius: 16px; padding: 18px 20px; }
.roy-eq-infos span { display: block; font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: #DCE4F4; }
.roy-eq-infos strong { display: block; font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 28px; text-transform: uppercase; margin-top: 4px; }
.roy-eq-partenaires { padding: 8px 0 24px; }
.roy-eq-partenaires__grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 16px; }
.roy-eq-partenaire { display: flex; gap: 20px; align-items: center; background: var(--marine); border-radius: 20px; padding: 22px; }
.roy-eq-partenaire--jaune { background: var(--jaune); color: var(--nuit); }
.roy-eq-partenaire--jaune .roy-surtitre, .roy-eq-partenaire--jaune h2, .roy-eq-partenaire--jaune .roy-lien { color: var(--nuit) !important; }
.roy-eq-partenaire h2 { font-size: 30px !important; margin: 0 0 6px !important; }
.roy-eq-logo { flex: 0 0 180px; height: 120px; background: #fff; border-radius: 14px; display: flex; align-items: center; justify-content: center; padding: 12px; color: #4A5272 !important; font-weight: 700; text-decoration: none; }
.roy-eq-logo img { max-width: 100%; max-height: 100%; width: auto !important; height: auto !important; object-fit: contain; }
.roy-eq-staff { background: var(--marine); padding: 56px 0; }
.roy-eq-staff__grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.roy-personne { display: flex; gap: 16px; align-items: center; background: var(--nuit); border-radius: 18px; padding: 14px; }
.roy-personne__photo { flex: 0 0 96px; height: 96px; border-radius: 50%; overflow: hidden; background: #1A2650; color: #4B5A86; display: flex; align-items: center; justify-content: center; }
.roy-personne__photo img { width: 100% !important; height: 100% !important; object-fit: cover; }
.roy-personne__photo svg { width: 52px; height: 52px; }
.roy-personne__role { display: block; font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--jaune); }
.roy-personne strong { display: block; font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 24px; text-transform: uppercase; line-height: 1.05; margin-top: 4px; }
.roy-eq-joueurs { padding: 56px 0; }
.roy-eq-titre-ligne { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 12px; }
.roy-eq-titre-ligne span { color: var(--gris); font-weight: 600; margin-bottom: 26px; }
.roy-eq-joueurs__grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 14px; }
.roy-joueur { display: block; width: 100%; padding: 0; border: 0; background: none; cursor: pointer; text-align: left; font: inherit; color: inherit; perspective: 1000px; }
.roy-joueur__carte { display: grid; transition: transform .7s cubic-bezier(.2, .8, .2, 1); transform-style: preserve-3d; }
.roy-joueur__face { grid-area: 1 / 1; backface-visibility: hidden; -webkit-backface-visibility: hidden; border-radius: 16px; overflow: hidden; }
.roy-joueur__recto { background: var(--marine); border: 4px solid var(--marine); }
.roy-joueur__verso { transform: rotateY(180deg); background: var(--jaune); color: var(--nuit); border: 6px solid #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; padding: 16px 10px 0; text-align: center; position: relative; }
.roy-joueur:hover .roy-joueur__carte, .roy-joueur:focus-visible .roy-joueur__carte, .roy-joueur[aria-pressed="true"] .roy-joueur__carte { transform: rotateY(180deg); }
@media (hover: none) { .roy-joueur:hover .roy-joueur__carte { transform: none; } .roy-joueur[aria-pressed="true"] .roy-joueur__carte { transform: rotateY(180deg); } }
@media (prefers-reduced-motion: reduce) { .roy-joueur__carte { transition: none; } }
.roy-joueur__ecusson { width: 52px !important; height: auto !important; margin-bottom: 4px; }
.roy-joueur__grand-num { font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 86px; line-height: .85; color: var(--nuit); }
.roy-joueur__verso strong { font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 24px; text-transform: uppercase; line-height: 1; margin-top: 6px; }
.roy-joueur__famille { font-weight: 700; font-size: 14px; text-transform: uppercase; letter-spacing: .06em; }
.roy-joueur__bande { margin-top: auto; align-self: stretch; margin-left: -10px; margin-right: -10px; padding: 8px 6px; background: var(--nuit); color: var(--jaune); font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.roy-joueur__photo { position: relative; aspect-ratio: 3 / 4; background: #1A2650; color: #4B5A86; display: flex; align-items: center; justify-content: center; }
.roy-joueur__photo img { position: absolute; inset: 0; width: 100% !important; height: 100% !important; object-fit: cover; }
.roy-joueur__photo svg { width: 64px; height: 64px; }
.roy-joueur__num { position: absolute; top: 8px; left: 12px; font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 40px; color: var(--jaune); text-shadow: 0 2px 8px rgba(0, 0, 0, .5); }
.roy-joueur__nom { padding: 12px 14px 14px; display: block; }
.roy-joueur__nom strong { display: block; font-size: 17px; color: #fff; }
.roy-joueur__nom span { font-size: 14px; color: var(--brume); }
.roy-eq-matchs { padding: 56px 0; }
.roy-eq-matchs__grille { display: flex; flex-wrap: wrap; gap: 18px; align-items: flex-start; }
.roy-eq-calendrier { flex: 1.4 1 520px; min-width: 0; background: var(--roi); border-radius: 20px; padding: 24px 26px; }
.roy-eq-calendrier__tete { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 8px; }
.roy-eq-calendrier .roy-weekend__titre { margin: 0 !important; font-size: 38px !important; }
.roy-eq-calendrier .roy-match { grid-template-columns: 110px 56px minmax(0, 1fr) 28px; border-top-color: rgba(255, 255, 255, .18); }
.roy-eq-calendrier .roy-match__cat { display: none; }
.roy-match__date { font-weight: 600; color: #DCE4F4; font-size: 14px; }
.roy-eq-matchs .roy-classement { flex: 1 1 360px; }
.roy-abonnement { margin-top: 20px; padding-top: 18px; border-top: 1px solid rgba(255, 255, 255, .18); }
.roy-abonnement p { margin: 0 0 12px; }
.roy-eq-nav { padding: 24px 0 56px; border-top: 1px solid var(--marine); }
.roy-eq-nav__grille { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.roy-eq-nav__lien { position: relative; display: flex; align-items: center; min-height: 140px; border-radius: 16px; overflow: hidden; text-decoration: none; color: #fff !important; background: var(--marine); padding: 0 24px; }
.roy-eq-nav__lien img { position: absolute; inset: 0; width: 100% !important; height: 100% !important; object-fit: cover; filter: brightness(.38); }
.roy-eq-nav__lien span { position: relative; }
.roy-eq-nav__lien--suiv { justify-content: flex-end; text-align: right; }
.roy-eq-nav__lien small { display: block; font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--jaune); }
.roy-eq-nav__lien strong { font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 38px; text-transform: uppercase; }

/* Page Agenda */
.roy-agenda-page { background: var(--nuit); padding: 0 0 72px; }
.roy-agenda-page__barre { display: flex; flex-wrap: wrap; gap: 14px; justify-content: space-between; align-items: center; padding: 18px 0; border-bottom: 1px solid var(--marine); }
.roy-agenda-page__semaine { display: flex; align-items: center; gap: 12px; }
.roy-agenda-page__semaine h2 { margin: 0 !important; font-size: 30px !important; }
.roy-agenda-page .roy-onglets { background: var(--marine); }
.roy-agenda-page__equipes { display: flex; gap: 8px; overflow-x: auto; padding: 16px 0 6px; }
.roy-agenda-page__equipes button { font: inherit; font-weight: 700; font-size: 14px; white-space: nowrap; padding: 9px 15px; min-height: 42px; border-radius: 999px; cursor: pointer; border: 1px solid var(--trait); background: transparent; color: #fff; }
.roy-agenda-page__equipes button[aria-pressed="true"] { background: var(--jaune); border-color: var(--jaune); color: var(--nuit); }
.roy-agenda-page__corps { display: flex; flex-wrap: wrap; gap: 24px; align-items: flex-start; padding-top: 20px; }
.roy-agenda-page__liste { flex: 2 1 600px; min-width: 0; display: flex; flex-direction: column; gap: 16px; }
.roy-agenda-page__resume { margin: 0; color: var(--gris); font-weight: 600; }
.roy-agenda-page .roy-jour { background: var(--marine); }
.roy-agenda-page .roy-jour[hidden], .roy-agenda-page .roy-match[hidden] { display: none; }
.roy-agenda-page .roy-match { grid-template-columns: 56px 110px minmax(0, 1fr) 160px 28px; border-top-color: var(--trait); }
.roy-match__lieu { font-size: 13px; color: var(--gris); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.roy-agenda-page__abo { flex: 1 1 320px; min-width: 0; background: var(--jaune); color: var(--nuit); border-radius: 22px; padding: 26px; display: flex; flex-direction: column; gap: 12px; }
.roy-agenda-page__abo h2 { color: var(--nuit) !important; font-size: 34px !important; line-height: .95 !important; margin: 0 !important; }
.roy-agenda-page__abo p { margin: 0; }
.roy-agenda-page__abo label { font-weight: 700; font-size: 14px; }
.roy-agenda-page__abo select { font: inherit; padding: 12px; min-height: 48px; border: 0; border-radius: 12px; background: #fff; color: var(--nuit); }
.roy-agenda-page__abo .roy-agenda__btn { color: var(--nuit) !important; border-color: var(--nuit); background: #fff; }
.roy-agenda-page__abo .roy-petit { color: #3A4466; }

/* Page Soupers & fêtes */
.roy-evenements { background: var(--nuit); padding: 48px 0 72px; }
.roy-ev-vedette { display: flex; flex-wrap: wrap; background: var(--marine); border-radius: 24px; overflow: hidden; }
.roy-ev-vedette__photo { position: relative; flex: 1.1 1 420px; min-height: 340px; }
.roy-ev-vedette__photo img { position: absolute; inset: 0; width: 100% !important; height: 100% !important; object-fit: cover; }
.roy-ev-vedette__photo .roy-pastille { position: absolute; top: 18px; left: 18px; }
.roy-ev-vedette__texte { flex: 1 1 420px; padding: 32px; display: flex; flex-direction: column; gap: 16px; }
.roy-ev-vedette__tete { display: flex; gap: 16px; align-items: center; }
.roy-ev-vedette__tete h2 { margin: 0 !important; font-size: 44px !important; }
.roy-ev-infos { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
.roy-ev-infos > div { background: var(--nuit); border-radius: 14px; padding: 12px 14px; }
.roy-ev-infos span { display: block; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--gris); }
.roy-ev-infos strong { font-weight: 700; }
.roy-ev-suite { margin-top: 48px !important; }
.roy-ev-grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.roy-ev-carte { background: var(--marine); border-radius: 18px; padding: 20px; text-decoration: none; color: #fff !important; display: flex; flex-direction: column; gap: 10px; }
.roy-ev-carte h3 { margin: 0 !important; font-size: 26px; }
.roy-ev-carte p { margin: 0; color: var(--brume); font-size: 14px; }
.roy-evenement__date--petit { flex: 0 0 auto; width: 70px; height: 70px; border-radius: 14px; }
.roy-evenement__date--petit strong { font-size: 34px; }

/* Partenaires (page), devenir partenaire */
.roy-devenir { background: var(--roi); padding: 64px 0; }
.roy-devenir__intro { font-size: 18px; color: #E4E9F5; max-width: 720px; }
.roy-devenir__offres { gap: 14px !important; margin-top: 24px !important; }
.roy-offre { background: var(--nuit); border-radius: 20px; padding: 22px; }
.roy-offre h3 { font-size: 26px; margin: 0 0 8px !important; }
.roy-offre p { color: var(--brume); margin: 0; }

/* Contact (page) */
.roy-qui { background: var(--marine); padding: 56px 0; }
.roy-qui__cartes { gap: 14px !important; }
.roy-qui__carte { background: var(--nuit); border-radius: 18px; padding: 20px; }
.roy-qui__carte h3 { font-size: 24px; margin: 0 0 6px !important; }
.roy-qui__carte p { margin: 0; color: var(--brume); font-size: 15px; }
.roy-archives { background: var(--nuit); padding: 48px 0; }
.roy-archives__boite { background: var(--jaune); color: var(--nuit); border-radius: 22px; padding: 30px !important; display: flex; flex-wrap: wrap; gap: 18px; align-items: center; justify-content: space-between; max-width: calc(1280px - 56px) !important; }
.roy-archives__texte { flex: 1 1 420px; }
.roy-archives h2 { color: var(--nuit) !important; font-size: 36px !important; margin: 0 0 6px !important; }
.roy-archives p { margin: 0; }
.roy-archives .wp-block-button__link { background: var(--nuit); color: #fff; border-color: var(--nuit); }
.roy-acces { background: var(--nuit); padding: 56px 0 72px; }
.roy-acces__adresse { font-size: 20px; }

/* Rejoindre : tableau, FAQ */
.roy-categories, .roy-faq { background: var(--nuit); padding: 56px 0; }
.roy-tableau { margin: 18px 0 0; overflow-x: auto; background: var(--marine); border-radius: 18px; }
.roy-tableau table { width: 100%; border-collapse: collapse; min-width: 560px; }
.roy-tableau th { text-align: left; font-size: 13px; text-transform: uppercase; letter-spacing: .08em; color: var(--gris); padding: 14px 20px; border: 0; }
.roy-tableau td { padding: 14px 20px; border: 0; border-top: 1px solid var(--trait); }
.roy-tableau td:first-child { font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 22px; text-transform: uppercase; }
.roy-faq .wp-block-details { background: var(--marine); border-radius: 16px; padding: 16px 20px; margin: 0 0 10px; }
.roy-faq summary { cursor: pointer; font-weight: 700; font-size: 18px; }
.roy-faq .wp-block-details p { margin: 10px 0 0; color: var(--brume); }

/* Le club : histoire en chapitres */
.roy-histoire { background: var(--nuit); padding: 64px 0; }
.roy-chapitre { margin: 0 0 40px !important; gap: 0; }
.roy-chapitre .wp-block-media-text__media img { border-radius: 20px; width: 100% !important; height: auto !important; }
.roy-chapitre .wp-block-media-text__content { padding: 0 6% !important; }
.roy-chapitre p.roy-chapitre__annee { font-family: var(--cond) !important; font-style: italic; font-weight: 800; font-size: 72px; line-height: .85; color: var(--jaune); margin: 0 0 10px !important; }
.roy-chapitre h3 { font-size: 38px; margin: 0 0 12px !important; }
.roy-chapitre p { color: #E4E9F5; font-size: 17px; line-height: 1.6; }

/* Équipes : tuiles cliquables */
a.roy-equipe:focus-visible { outline: 3px solid var(--jaune); outline-offset: 3px; }

@media (max-width: 782px) {
	.roy-eq-calendrier .roy-match { grid-template-columns: 76px 1fr 26px; grid-template-areas: "date vs chip" "lead vs chip"; }
	.roy-eq-calendrier .roy-match__date { grid-area: date; }
	.roy-eq-calendrier .roy-match__lead { grid-area: lead; font-size: 16px; }
	.roy-eq-calendrier .roy-match__vs { grid-area: vs; white-space: normal; }
	.roy-agenda-page .roy-match__lieu { display: none; }
	.roy-agenda-page .roy-match { grid-template-columns: 50px minmax(0, 1fr) 26px; }
	.roy-eq-nav__grille { grid-template-columns: 1fr; }
	.roy-eq-partenaire { flex-direction: column; align-items: flex-start; }
	.roy-eq-logo { flex-basis: auto; width: 100%; }
	.roy-chapitre .wp-block-media-text__content { padding: 18px 0 0 !important; }
}

/* ---------- Mobile ---------- */
@media (max-width: 782px) {
	:root { --pad: 18px; }
	.roy-logos--or { grid-template-columns: 1fr; }
	.roy-chiffres__grille { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; padding-top: 40px; padding-bottom: 40px; }
	.roy-chiffre__label { font-size: 13px; }
	.roy-hero .wp-block-cover__inner-container { padding-top: 150px; }
	.roy-chiffre__valeur { font-size: 44px; }
	.roy-weekend__jours { grid-template-columns: 1fr; }
	.roy-weekend__barre { align-items: stretch; }
	.roy-weekend .roy-onglets:not(.roy-onglets--petit) { width: 100%; justify-content: space-between; }
	.roy-weekend .roy-onglets button { padding: 8px 12px; font-size: 14px; }
	.roy-jour { padding: 4px 14px 10px; }
	.roy-match { grid-template-columns: 50px minmax(0, 1fr) 26px; grid-template-areas: "lead cat chip" "lead vs chip"; gap: 0 10px; padding: 10px 0; }
	.roy-match__lead { grid-area: lead; align-self: center; font-size: 19px; }
	.roy-match__cat { grid-area: cat; font-size: 18px; }
	.roy-match__vs { grid-area: vs; white-space: normal; font-size: 14px; line-height: 1.3; }
	.roy-match .roy-chip { grid-area: chip; align-self: center; }
	.roy-equipe { aspect-ratio: auto; background: var(--nuit); }
	.roy-equipe img { position: static; display: block; width: 100% !important; height: auto !important; aspect-ratio: 2000 / 1403; }
	.roy-equipe__bandeau { position: static; }
	.roy-carte-match { min-height: 0; }
	.roy-agenda.is-detecte .roy-agenda__btn:not(.is-prefere) { min-height: 36px; padding: 6px 11px; font-size: 13px; border-width: 1.5px; }
	.roy-agenda.is-detecte .roy-agenda__btn:not(.is-prefere) svg { width: 15px; height: 15px; }
	.roy-carte-match__affiche { font-size: 34px; }
	.roy-carte-match__ballon, .roy-carte-match__contenu, .roy-carte-match__actions { padding-left: 18px; padding-right: 18px; }
	.roy-hero__titre { font-size: 50px; }
	.wp-block-cover.roy-hero { min-height: 780px !important; }
	.roy-evenement__date { flex-basis: 110px; height: 110px; }
	.roy-evenement__date strong { font-size: 52px; }
	.roy-reseaux h2, .roy-papiers h2 { font-size: 34px !important; }
	.roy-contact__formulaire { padding: 20px; }
	.roy-equipes__grille { grid-template-columns: 1fr; }
	.roy-partenaires__haut { grid-template-columns: 1fr; }
	.roy-inscriptions__texte { padding: 40px 0; }
	.roy-inscriptions__cols { padding: 0 !important; }
	.roy-inscriptions__texte { padding-left: var(--pad); padding-right: var(--pad); }
	.roy-evenement__texte h2 { font-size: 38px !important; }
}
.roy-tableau td a { color: #fff !important; text-decoration: none; }
.roy-tableau td a:hover { color: var(--jaune) !important; }
.roy-tableau td { line-height: 1.45; vertical-align: top; }

/* =========================================================
   Histoire (page Le club)
   ========================================================= */
.roy-histoire-v2 { background: var(--nuit); padding: 0 0 80px; }
.roy-hist-frise { position: sticky; top: var(--roy-entete, 76px); z-index: 20; background: rgba(14, 20, 48, .94); backdrop-filter: blur(6px); border-bottom: 1px solid var(--marine); }
body.admin-bar .roy-hist-frise { top: calc(var(--roy-entete, 76px) + 32px); }
.roy-hist-frise ol { list-style: none; margin: 0; padding: 10px 0; display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; }
.roy-hist-frise ol::-webkit-scrollbar { display: none; }
.roy-hist-frise a { display: inline-flex; align-items: center; min-height: 40px; padding: 0 14px; border-radius: 999px; white-space: nowrap; font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 18px; text-transform: uppercase; color: var(--brume) !important; text-decoration: none; border: 1px solid transparent; }
.roy-hist-frise a:hover { border-color: var(--trait); color: #fff !important; }
.roy-hist-frise a.is-actif { background: var(--jaune); color: var(--nuit) !important; }
.roy-hist-corps { padding-top: 56px; }
.roy-hist-chapitre { padding: 56px 0; border-top: 1px solid var(--marine); scroll-margin-top: calc(var(--roy-entete, 76px) + 70px); }
.roy-hist-chapitre__tete { position: relative; margin-bottom: 26px; }
.roy-hist-annee { display: block; font-family: var(--cond); font-style: italic; font-weight: 800; font-size: clamp(90px, 15vw, 190px); line-height: .8; color: transparent; -webkit-text-stroke: 2px var(--jaune); opacity: .9; margin-bottom: -10px; }
.roy-hist-chapitre h3 { font-size: clamp(36px, 4.6vw, 60px) !important; margin: 0 !important; }
.roy-hist-chapitre__corps { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: 40px; align-items: start; }
.roy-hist-chapitre--d .roy-hist-chapitre__corps { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); }
.roy-hist-chapitre--d .roy-hist-texte { order: 2; }
.roy-hist-texte p { font-size: 18px; line-height: 1.65; color: #E4E9F5; margin: 0 0 16px; }
.roy-hist-texte strong { color: #fff; }
.roy-hist-citation { margin: 24px 0; padding: 22px 24px; border-left: 6px solid var(--jaune); background: var(--marine); border-radius: 0 18px 18px 0; }
.roy-hist-citation p { font-family: var(--cond) !important; font-style: italic; font-weight: 800; font-size: clamp(26px, 3vw, 36px) !important; line-height: 1.1 !important; text-transform: none; color: var(--jaune) !important; margin: 0 0 10px !important; }
.roy-hist-citation cite { font-style: normal; color: var(--brume); }
.roy-hist-liste { list-style: none; margin: 0 0 18px; padding: 0; display: grid; gap: 6px; }
.roy-hist-liste li { padding: 10px 14px; border-radius: 12px; background: var(--marine); color: #E4E9F5; }
.roy-hist-liste li:nth-child(5) { background: var(--jaune); color: var(--nuit); font-weight: 700; }
.roy-hist-banniere { margin: 20px 0 0 !important; padding: 18px 22px; border-radius: 18px; background: var(--jaune); color: var(--nuit) !important; font-family: var(--cond) !important; font-style: italic; font-weight: 800; font-size: clamp(28px, 3.4vw, 42px) !important; line-height: 1 !important; text-transform: uppercase; }
.roy-hist-fig { margin: 0; }
.roy-hist-zoom { display: block; width: 100%; padding: 0; border: 0; background: none; cursor: zoom-in; border-radius: 18px; overflow: hidden; }
.roy-hist-fig img { display: block; width: 100% !important; height: auto !important; transition: transform .4s ease; }
.roy-hist-zoom:hover img { transform: scale(1.02); }
.roy-hist-fig figcaption { margin-top: 10px; font-size: 14px; color: var(--gris); }
.roy-hist-fig--document .roy-hist-zoom { background: #fff; padding: 10px; }
.roy-hist-grille { display: grid; gap: 18px; margin-top: 24px; align-items: start; }
.roy-hist-grille--1 { grid-template-columns: minmax(0, 420px); }
.roy-hist-grille--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.roy-hist-grille--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.roy-hist-fig--portrait { max-width: 360px; }
.roy-hist-fig--article .roy-hist-zoom { background: #fff; padding: 8px; }
/* Colonne photos : mosaïque (grande photo en tête, vignettes deux par deux) */
.roy-hist-medias { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; align-items: start; }
.roy-hist-medias > .roy-hist-fig--grande, .roy-hist-medias > .roy-hist-emirs { grid-column: 1 / -1; }
.roy-hist-medias > :last-child:nth-child(even) { grid-column: 1 / -1; }
.roy-hist-medias > :last-child:nth-child(even).roy-hist-fig--portrait { grid-column: auto; }
.roy-hist-medias .roy-hist-fig--portrait { max-width: none; }
.roy-hist-fig--aside { max-width: 300px; margin-top: 22px; }
.roy-hist-fig--aside figcaption { font-size: 13px; }
.roy-hist-medias .roy-hist-fig figcaption { font-size: 13px; }
@media (min-width: 901px) {
	.roy-hist-texte, .roy-hist-medias { position: sticky; top: calc(var(--roy-entete, 76px) + 76px); }
	body.admin-bar .roy-hist-texte, body.admin-bar .roy-hist-medias { top: calc(var(--roy-entete, 76px) + 108px); }
}
/* Pétrole : la découverte et l'article en entier */
.roy-hist-petrole { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: 24px; margin-top: 28px; align-items: start; }
.roy-hist-petrole .roy-hist-fig--portrait { max-width: none; position: sticky; top: 96px; }
@media (max-width: 900px) { .roy-hist-petrole { grid-template-columns: 1fr; } .roy-hist-petrole .roy-hist-fig--portrait { position: static; } }
/* Écusson */
.roy-hist-ecusson { background: var(--marine); border-radius: 28px; padding: 40px; }
.roy-hist-ecusson h2 { font-size: clamp(36px, 4vw, 52px) !important; margin: 0 0 12px !important; }
.roy-hist-ecusson__tete p:not(.roy-surtitre) { color: var(--brume); max-width: 680px; font-size: 18px; }
.roy-hist-logos { list-style: none; margin: 28px 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(120px, 1fr)); gap: 16px; overflow-x: auto; }
.roy-hist-logos li { display: flex; flex-direction: column; gap: 10px; align-items: center; text-align: center; color: var(--brume); font-weight: 600; position: relative; }
.roy-hist-logos li:not(:last-child)::after { content: "›"; position: absolute; right: -14px; top: 40%; color: var(--jaune); font-size: 30px; font-weight: 700; }
.roy-hist-logos__img { width: 100%; aspect-ratio: 1; border-radius: 18px; background: #fff; display: flex; align-items: center; justify-content: center; padding: 14px; }
.roy-hist-logos__img img { max-width: 100%; max-height: 100%; width: auto !important; height: auto !important; }
.roy-hist-decrypte { display: grid; grid-template-columns: minmax(0, 360px) minmax(0, 1fr); gap: 36px; align-items: center; }
.roy-hist-decrypte__logo { position: relative; }
.roy-hist-decrypte__logo img { width: 100% !important; height: auto !important; display: block; }
.roy-hist-pin { position: absolute; transform: translate(-50%, -50%); width: 34px; height: 34px; border-radius: 50%; background: #E5484D; color: #fff; font-weight: 800; display: flex; align-items: center; justify-content: center; box-shadow: 0 0 0 3px #fff; font-size: 16px; }
.roy-hist-legende { list-style: none; counter-reset: pin; margin: 0; padding: 0; display: grid; gap: 14px; }
.roy-hist-legende li { counter-increment: pin; position: relative; padding-left: 52px; color: var(--brume); }
.roy-hist-legende li::before { content: counter(pin); position: absolute; left: 0; top: 0; width: 34px; height: 34px; border-radius: 50%; background: #E5484D; color: #fff; font-weight: 800; display: flex; align-items: center; justify-content: center; }
.roy-hist-legende strong { display: block; font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 26px; text-transform: uppercase; color: #fff; }
.roy-hist-legende b { color: var(--jaune); }
/* Pétrole */
.roy-hist-emirs { display: flex; justify-content: center; gap: 16px; margin: 0; }
.roy-hist-emirs figure { margin: 0; width: 50%; background: #fff; border-radius: 20px; overflow: hidden; text-align: center; }
.roy-hist-emirs img { display: block; width: 100% !important; height: auto !important; }
.roy-hist-emirs figcaption { padding: 12px; background: #7A1626; color: #F4E3B0; font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 22px; text-transform: uppercase; }
/* Vidéo : carte qui ouvre Facebook */
.roy-hist-video { position: relative; display: block; aspect-ratio: 4 / 5; border-radius: 18px; overflow: hidden; background: #000; text-decoration: none; }
.roy-hist-video img { width: 100% !important; height: 100% !important; object-fit: cover; filter: brightness(.5); transition: transform .4s ease; }
.roy-hist-video:hover img { transform: scale(1.03); }
.roy-hist-video__play { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); display: inline-flex; align-items: center; gap: 10px; padding: 14px 20px; border-radius: 999px; background: var(--jaune); color: var(--nuit); font-weight: 800; white-space: nowrap; }
.roy-hist-video__note { position: absolute; left: 12px; right: 12px; bottom: 12px; font-size: 12px; color: #fff; text-align: center; }
/* Vidéo YouTube (chargée au clic) */
.roy-hist-yt { grid-column: 1 / -1; margin: 24px 0 0; }
.roy-hist-yt__cadre { position: relative; aspect-ratio: 16 / 9; border-radius: 18px; overflow: hidden; background: #000; }
.roy-hist-yt__cadre img { width: 100% !important; height: 100% !important; object-fit: cover; filter: brightness(.6); }
.roy-hist-yt__cadre iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.roy-hist-yt .roy-hist-video__play { border: 0; cursor: pointer; font: inherit; font-weight: 800; }
.roy-hist-yt figcaption { margin-top: 10px; font-size: 13px; color: var(--gris); }
/* Fin */
.roy-hist-fin { margin-top: 40px; padding: 36px; border-radius: 26px; background: var(--jaune); color: var(--nuit); text-align: center; }
.roy-hist-fin p { margin: 0; font-size: 20px; color: var(--nuit) !important; }
.roy-hist-fin__appel { font-family: var(--cond) !important; font-style: italic; font-weight: 800; font-size: clamp(40px, 6vw, 72px) !important; line-height: 1; text-transform: uppercase; margin-top: 8px !important; }
.roy-hist-fin .roy-boutons { justify-content: center; }
.roy-hist-fin .roy-bouton { background: var(--nuit); color: #fff !important; border-color: var(--nuit); }
.roy-hist-fin .roy-bouton--contour { background: transparent; color: var(--nuit) !important; }
/* Agrandissement */
.roy-hist-lightbox { max-width: min(96vw, 1400px); max-height: 94vh; padding: 0; border: 0; background: transparent; }
.roy-hist-lightbox::backdrop { background: rgba(5, 8, 20, .92); }
.roy-hist-lightbox img { max-width: 100%; max-height: 84vh; width: auto !important; height: auto !important; display: block; margin: 0 auto; border-radius: 12px; }
.roy-hist-lightbox p { color: #fff; text-align: center; margin: 12px 0 0; }
.roy-hist-lightbox__fermer { position: fixed; top: 16px; right: 16px; width: 48px; height: 48px; border-radius: 50%; border: 0; background: var(--jaune); color: var(--nuit); font-size: 28px; cursor: pointer; }
@media (max-width: 900px) {
	.roy-hist-chapitre__corps, .roy-hist-chapitre--d .roy-hist-chapitre__corps { grid-template-columns: 1fr; gap: 24px; }
	.roy-hist-chapitre--d .roy-hist-texte { order: 0; }
	.roy-hist-grille--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.roy-hist-decrypte { grid-template-columns: 1fr; }
	.roy-hist-decrypte__logo { max-width: 320px; margin: 0 auto; }
	.roy-hist-ecusson { padding: 26px 20px; }
	.roy-hist-logos { grid-template-columns: repeat(4, 140px); }
}
@media (max-width: 560px) { .roy-hist-grille--2, .roy-hist-grille--3 { grid-template-columns: 1fr; } .roy-hist-fig--portrait { max-width: 100%; } }
@media (max-width: 782px) { body.admin-bar .roy-hist-frise { top: calc(var(--roy-entete, 76px) + 46px); } }
@media (max-width: 600px) { body.admin-bar .roy-hist-frise { top: var(--roy-entete, 76px); } }
/* Comité */
.roy-comite { background: var(--nuit); padding: 48px 0 72px; }
.roy-comite__grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; }
.roy-comite__carte { background: var(--marine); border-radius: 20px; overflow: hidden; }
.roy-comite__photo { aspect-ratio: 4 / 5; background: #1A2650; display: flex; align-items: center; justify-content: center; }
.roy-comite__photo img { width: 100% !important; height: 100% !important; object-fit: cover; }
.roy-comite__initiales { font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 64px; color: var(--jaune); }
.roy-comite__texte { padding: 16px 18px 20px; }
.roy-comite__fonction { display: block; font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--jaune); margin-bottom: 6px; }
.roy-comite h3 { font-size: 26px !important; margin: 0 !important; }
.roy-comite .roy-boutons { margin-top: 32px; }
/* Confidentialité */
.roy-legal { background: var(--nuit); padding: 48px 0 80px; }
.roy-legal .roy-wrap { max-width: 860px; }
.roy-legal h2 { font-size: 32px !important; margin: 36px 0 12px !important; }
.roy-legal p, .roy-legal li { color: #E4E9F5; font-size: 17px; line-height: 1.65; }
.roy-legal ul { padding-left: 22px; }
.roy-pied__legal { color: var(--gris) !important; }
.roy-hero :is(.roy-hero__titre, .roy-hero__intro, .roy-surtitre) { text-shadow: 0 2px 18px rgba(0, 0, 0, .55); }

/* Réseaux sociaux : pied de page de toutes les pages */
.roy-suivez { background: var(--marine); padding: 40px 0; border-top: 4px solid var(--jaune); }
.roy-suivez__ligne { display: flex; flex-wrap: wrap; gap: 24px; align-items: center; justify-content: space-between; }
.roy-suivez h2 { font-family: var(--cond) !important; font-style: italic !important; font-weight: 800 !important; text-transform: uppercase; font-size: clamp(32px, 4vw, 46px) !important; line-height: 1 !important; color: #fff; margin: 0 !important; }
.roy-suivez .roy-surtitre { color: var(--jaune); }
.roy-suivez__liens { display: flex; flex-wrap: wrap; gap: 10px; }
.roy-suivez__lien { display: inline-flex; align-items: center; gap: 10px; min-height: 56px; padding: 6px 18px 6px 6px; border-radius: 999px; background: var(--nuit); color: #fff !important; text-decoration: none; font-weight: 700; font-size: 15px; transition: transform .2s ease, background .2s ease; }
.roy-suivez__lien:hover { transform: translateY(-2px); background: #fff; color: var(--nuit) !important; }
.roy-suivez__lien img { width: 44px !important; height: 44px !important; }
.roy-suivez__lien--whatsapp { background: #25D366; color: #0B3D1E !important; }
.roy-suivez__lien--whatsapp:hover { background: #fff; }
.roy-pied__icone img { width: 28px !important; height: 28px !important; display: block; }
.roy-pied__liens { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.roy-nav__whatsapp a { display: inline-flex !important; align-items: center; gap: 6px; }
.roy-nav__whatsapp img { width: 22px !important; height: 22px !important; }
@media (max-width: 640px) { .roy-suivez__lien { flex: 1 1 100%; } }

/* WhatsApp dans l'en-tête : bouton rond à côté de « Contactez-nous » (ordinateur), bouton complet dans le menu mobile */
.roy-header__whatsapp { display: inline-flex; align-items: center; justify-content: center; gap: 8px; width: 48px; height: 48px; border-radius: 50%; background: transparent; text-decoration: none; flex: 0 0 auto; transition: transform .2s ease; }
.roy-header__whatsapp:hover { transform: scale(1.08); }
.roy-header__whatsapp img { width: 46px !important; height: 46px !important; }
.roy-header__whatsapp span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); }
@media (max-width: 1100px) {
	.roy-header__whatsapp { width: auto; height: auto; min-height: 50px; border-radius: 999px; padding: 10px 18px; order: 3; background: #25D366; }
	.roy-header__whatsapp span { position: static; width: auto; height: auto; overflow: visible; clip: auto; color: #0B3D1E; font-weight: 800; }
	.roy-header__whatsapp img { width: 30px !important; height: 30px !important; }
}
@media (min-width: 1101px) and (max-width: 1280px) {
	.roy-nav__liste { gap: 6px 16px; }
	.roy-nav__liste a { font-size: 15px; }
	.roy-header__actions .roy-bouton { padding: 10px 14px; font-size: 14px; }
}
/* Formulaire « Forms » : nos couleurs passent avant celles de l'extension */
.roy-formulaire :is(input[type="text"], input[type="email"], input[type="tel"], input[type="url"], input[type="number"], select, textarea) { background: var(--marine) !important; color: #fff !important; border: 1px solid var(--trait) !important; border-radius: 12px !important; box-shadow: none !important; }
.roy-formulaire :is(input, select, textarea):focus { border-color: var(--jaune) !important; outline: 2px solid rgba(244, 234, 75, .35) !important; }
.roy-formulaire :is(button, input[type="submit"]) { background: var(--jaune) !important; color: var(--nuit) !important; border: 0 !important; border-radius: 999px !important; font-family: var(--cond) !important; font-style: italic !important; font-weight: 800 !important; text-transform: uppercase !important; font-size: 20px !important; width: auto !important; padding: 14px 30px !important; }
.roy-formulaire :is(label, p, span) { color: #fff; }
.roy-formulaire input[type="checkbox"] { accent-color: var(--jaune); width: 20px; height: 20px; }

/* Page Rejoindre le club : catégories (gauche) et formulaire (droite) dans deux boîtes */
.roy-inscription { background: var(--nuit); padding: 48px 0 56px; }
.roy-inscription__grille { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 24px; align-items: start; }
.roy-inscription__boite { background: var(--marine); border-radius: 24px; padding: 28px; min-width: 0; }
.roy-inscription__boite--form { order: 2; background: var(--roi); }
.roy-inscription__boite--cat { order: 1; }
.roy-inscription__boite h2 { font-size: clamp(30px, 3vw, 40px) !important; margin: 0 0 8px !important; }
.roy-inscription__boite > p:not(.roy-surtitre) { color: var(--brume); margin: 0 0 18px; font-size: 15px; }
.roy-inscription__boite--form > p:not(.roy-surtitre) { color: #E4E9F5; }
.roy-inscription .roy-tableau { margin: 0; background: var(--nuit); border-radius: 16px; }
.roy-inscription .roy-tableau table { min-width: 0; }
.roy-inscription .roy-tableau th { padding: 10px 12px; font-size: 11px; }
.roy-inscription .roy-tableau td { padding: 9px 12px; font-size: 14px; }
.roy-inscription .roy-tableau td:first-child { font-size: 18px; white-space: nowrap; }
.roy-inscription .roy-formulaire :is(input[type="text"], input[type="email"], input[type="tel"], select, textarea) { background: var(--nuit) !important; }
@media (max-width: 900px) {
	.roy-inscription__grille { grid-template-columns: minmax(0, 1fr); }
	.roy-inscription__boite--form { order: 1; }
	.roy-inscription__boite--cat { order: 2; }
	.roy-inscription__boite { padding: 20px; }
	.roy-inscription .roy-tableau { overflow-x: auto; }
	.roy-inscription .roy-tableau table { min-width: 460px; }
}

html { scroll-padding-top: calc(var(--roy-entete, 76px) + 16px); }

.roy-pied__legal { display: inline-flex; align-items: center; min-height: 44px; padding: 0 4px; }
.roy-weekend__pied { display: flex; flex-wrap: wrap; gap: 12px; justify-content: space-between; align-items: center; }
.roy-weekend__tout { margin-top: 0; display: inline-flex; align-items: center; min-height: 44px; }

/* =========================================================
   Animations (désactivées si le visiteur demande moins de mouvement)
   ========================================================= */
@media (prefers-reduced-motion: no-preference) {
	/* En-tête de l'accueil : la photo avance lentement, les textes arrivent l'un après l'autre */
	.roy-hero .wp-block-cover__image-background { animation: roy-zoom 16s ease-out both; transform-origin: 60% 40%; }
	.roy-hero .wp-block-cover__inner-container > * { animation: roy-monte .9s cubic-bezier(.2, .8, .2, 1) both; }
	.roy-hero .wp-block-cover__inner-container > :nth-child(1) { animation-delay: .15s; }
	.roy-hero .wp-block-cover__inner-container > :nth-child(2) { animation-delay: .3s; }
	.roy-hero .wp-block-cover__inner-container > :nth-child(3) { animation-delay: .5s; }
	.roy-hero .wp-block-cover__inner-container > :nth-child(4) { animation-delay: .7s; }
	/* Apparition au défilement */
	body.roy-anime [data-roy-reveal] { opacity: 0; transform: translateY(28px); transition: opacity .7s ease, transform .7s cubic-bezier(.2, .8, .2, 1); transition-delay: var(--roy-delai, 0ms); }
	body.roy-anime [data-roy-reveal].is-vu { opacity: 1; transform: none; }
	/* Cartes d'équipe : la photo s'approche, un trait jaune souligne le nom */
	.roy-equipe img { transition: transform .6s cubic-bezier(.2, .8, .2, 1); }
	.roy-equipe:hover img { transform: scale(1.06); }
	.roy-equipe__nom { background: linear-gradient(var(--jaune), var(--jaune)) left bottom / 0 3px no-repeat; transition: background-size .35s ease; }
	.roy-equipe:hover .roy-equipe__nom { background-size: 100% 3px; }
	/* Boutons : léger rebond */
	.roy-bouton { transition: transform .2s ease, box-shadow .2s ease, background .2s ease; }
	.roy-bouton:hover { transform: translateY(-2px); box-shadow: 0 10px 22px rgba(0, 0, 0, .3); }
	/* Badge « Des U7 aux seniors » qui tourne */
	.roy-rejoindre__badge { animation: roy-balance 4s ease-in-out infinite; }
}
@keyframes roy-zoom { from { transform: scale(1.12); } to { transform: scale(1); } }
@keyframes roy-monte { from { opacity: 0; transform: translateY(34px); } to { opacity: 1; transform: none; } }
@keyframes roy-balance { 0%, 100% { transform: rotate(-8deg) scale(1); } 50% { transform: rotate(6deg) scale(1.05); } }
@keyframes roy-defile-bandeau { to { transform: translateX(-50%); } }

/* Bandeau défilant sous l'en-tête de l'accueil */
.roy-bandeau { background: var(--jaune); color: var(--nuit); overflow: hidden; border-block: 3px solid var(--nuit); }
.roy-bandeau__piste { display: flex; width: max-content; gap: 22px; padding: 12px 0; animation: roy-defile-bandeau 40s linear infinite; }
.roy-bandeau__piste span { font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 24px; text-transform: uppercase; white-space: nowrap; }
.roy-bandeau__etoile { font-style: normal !important; color: var(--roi); }
@media (prefers-reduced-motion: reduce) { .roy-bandeau__piste { animation: none; } }

/* Compte à rebours des matchs à domicile */
.roy-decompte { display: inline-flex; align-items: baseline; gap: 4px; margin-top: 12px; padding: 8px 14px; border-radius: 14px; background: rgba(14, 20, 48, .7); border: 1px solid rgba(244, 234, 75, .5); }
.roy-decompte span { font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 28px; color: var(--jaune); min-width: 1.4em; text-align: right; font-variant-numeric: tabular-nums; }
.roy-decompte small { font-size: 12px; font-weight: 700; color: #fff; margin-right: 8px; text-transform: uppercase; }
.roy-decompte[hidden] { display: none; }
.roy-decompte.is-direct { border-color: #E5484D; }
.roy-decompte.is-direct::before { content: "En ce moment au Roligri"; font-weight: 800; color: #fff; }
.roy-decompte.is-direct > * { display: none; }

/* Page Rejoindre le club : en-tête avec photos */
.roy-rejoindre { background: var(--nuit); border-top: 6px solid var(--jaune); padding: 56px 0 24px; overflow: hidden; }
.roy-rejoindre__grille { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 48px; align-items: center; }
.roy-rejoindre h1 { font-size: clamp(56px, 7.4vw, 104px) !important; line-height: .86 !important; margin: 0 0 18px !important; }
.roy-rejoindre h1 strong { color: var(--jaune); font-weight: 800; }
.roy-rejoindre__intro { font-size: 19px; color: #E4E9F5; max-width: 520px; }
.roy-rejoindre__atouts { list-style: none; margin: 22px 0; padding: 0; display: grid; gap: 10px; }
.roy-rejoindre__atouts li { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; padding: 12px 16px 12px 48px; border-radius: 14px; background: var(--marine); position: relative; }
.roy-rejoindre__atouts li::before { content: "✓"; position: absolute; left: 14px; top: 50%; transform: translateY(-50%); width: 24px; height: 24px; border-radius: 50%; background: var(--jaune); color: var(--nuit); font-weight: 800; font-size: 14px; display: flex; align-items: center; justify-content: center; }
.roy-rejoindre__atouts strong { color: #fff; }
.roy-rejoindre__atouts span { color: var(--brume); font-size: 15px; }
.roy-rejoindre__photos { position: relative; min-height: 520px; }
.roy-rejoindre__photo { position: absolute; margin: 0; border-radius: 22px; overflow: hidden; box-shadow: 0 24px 50px rgba(0, 0, 0, .45); border: 6px solid #fff; }
.roy-rejoindre__photo img { display: block; width: 100% !important; height: 100% !important; object-fit: cover; }
.roy-rejoindre__photo--1 { width: 86%; aspect-ratio: 4 / 3; right: 0; top: 0; transform: rotate(2.5deg); }
.roy-rejoindre__photo--2 { width: 58%; aspect-ratio: 4 / 3; left: 0; bottom: 0; transform: rotate(-4deg); border-color: var(--jaune); }
.roy-rejoindre__badge { position: absolute; right: 6%; bottom: 8%; width: 130px; height: 130px; border-radius: 50%; background: var(--jaune); color: var(--nuit); display: flex; align-items: center; justify-content: center; box-shadow: 0 12px 30px rgba(0, 0, 0, .4); }
.roy-rejoindre__badge > * { display: flex; flex-direction: column; align-items: center; }
.roy-rejoindre__badge span, .roy-rejoindre__badge b { font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; line-height: .95; }
.roy-rejoindre__badge span { font-size: 24px; }
.roy-rejoindre__badge b { font-size: 15px; }
.roy-rejoindre__badge { flex-direction: column; }
.roy-etapes { background: var(--nuit); padding: 24px 0 64px; }
.roy-etapes__liste { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; counter-reset: none; }
.roy-etapes__liste li { background: var(--marine); border-radius: 22px; padding: 26px; position: relative; }
.roy-etapes__num { display: block; font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 80px; line-height: .8; color: transparent; -webkit-text-stroke: 2px var(--jaune); margin-bottom: 10px; }
.roy-etapes h3 { font-size: 28px !important; margin: 0 0 8px !important; }
.roy-etapes p { color: var(--brume); margin: 0; }
@media (max-width: 900px) {
	.roy-rejoindre__grille { grid-template-columns: minmax(0, 1fr); gap: 32px; }
	.roy-rejoindre__photos { min-height: 0; aspect-ratio: 1 / .85; }
	.roy-rejoindre__badge { width: 104px; height: 104px; right: 2%; }
	.roy-rejoindre__badge span { font-size: 19px; }
	.roy-etapes__liste { grid-template-columns: minmax(0, 1fr); }
}

/* Easter egg : trois clics sur l'écusson */
.roy-cuicui { position: fixed; inset: 0; z-index: 9999; pointer-events: none; overflow: hidden; background: rgba(14, 20, 48, .7); animation: roy-voile 3.4s ease forwards; }
@keyframes roy-voile { 0% { opacity: 0; } 10% { opacity: 1; } 85% { opacity: 1; } 100% { opacity: 0; } }
.roy-cuicui__texte { position: absolute; top: 42%; left: 0; white-space: nowrap; font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: clamp(56px, 11vw, 160px); line-height: 1; color: var(--jaune); -webkit-text-stroke: 3px var(--nuit); text-shadow: 0 10px 30px rgba(0, 0, 0, .5); animation: roy-cuicui 3.2s cubic-bezier(.3, .1, .3, 1) forwards; }
.roy-cuicui__oiseau { position: absolute; font-size: 40px; animation: roy-envol 2.6s ease-out forwards; }
@keyframes roy-cuicui { 0% { transform: translateX(100vw) rotate(-4deg); } 20% { transform: translateX(8vw) rotate(-4deg) scale(1.05); } 70% { transform: translateX(-4vw) rotate(-4deg); } 100% { transform: translateX(-110%) rotate(-4deg); } }
@keyframes roy-envol { 0% { opacity: 0; transform: translate(0, 0) scale(.6); } 15% { opacity: 1; } 100% { opacity: 0; transform: translate(var(--dx), -60vh) rotate(var(--rot)) scale(1.1); } }
@media (prefers-reduced-motion: reduce) { .roy-cuicui__texte { animation: none; left: 50%; transform: translateX(-50%) rotate(-4deg); } .roy-cuicui__oiseau { display: none; } }

/* =========================================================
   Petites scènes dessinées (patte graphique du club : aplats, contour bleu nuit, jaune et vert fluo)
   ========================================================= */
/* Pelouse au-dessus du pied de page : le robot tond, Patrick se repose */
.roy-pelouse { --pat-h: 190px; --pat-w: calc(var(--pat-h) * 1.413); position: relative; height: 110px; overflow-x: clip; overflow-y: visible; background: repeating-linear-gradient(90deg, #3E8E3B 0 90px, #469C42 90px 180px); border-top: 4px solid #2F7A2D; }
.roy-pelouse::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 18px; background: #2F7A2D; }
.roy-pelouse__tondu { position: absolute; left: 0; top: 0; bottom: 18px; width: calc(100% - var(--pat-w)); background: repeating-linear-gradient(90deg, #5DB356 0 45px, #6BC263 45px 90px); transform-origin: left; transform: scaleX(1); }
.roy-pelouse__robot { position: absolute; bottom: 14px; left: 0; width: 110px !important; height: auto !important; transform: translateX(-120px); }
.roy-pelouse__patrick { position: absolute; right: 0; bottom: 0; z-index: 2; width: var(--pat-w); height: var(--pat-h); pointer-events: none; }
.roy-pelouse__patrick > img:first-child { display: block; width: 100% !important; height: 100% !important; max-width: none !important; filter: drop-shadow(-6px 4px 10px rgba(14, 20, 48, .35)); transform-origin: 75% 100%; }
.roy-pelouse__z { position: absolute; left: 50%; top: 22%; font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 22px; line-height: 1; color: #fff; -webkit-text-stroke: 1px var(--nuit); opacity: 0; }
@media (prefers-reduced-motion: no-preference) {
	body.roy-anime .roy-pelouse__tondu { transform: scaleX(0); }
	body.roy-anime .roy-pelouse.is-joue .roy-pelouse__tondu { animation: roy-tonte 9s linear forwards; }
	body.roy-anime .roy-pelouse.is-joue .roy-pelouse__robot { animation: roy-robot 9s linear forwards; }
	.roy-pelouse__patrick > img:first-child { animation: roy-respire 4s ease-in-out infinite; }
	.roy-pelouse__z { animation: roy-ronfle 3.6s ease-out infinite; }
	.roy-pelouse__z:nth-of-type(2) { animation-delay: 1.2s; font-size: 28px; }
	.roy-pelouse__z:nth-of-type(3) { animation-delay: 2.4s; font-size: 36px; }
}
@media (prefers-reduced-motion: reduce) { .roy-pelouse__robot { transform: translateX(calc(100vw - var(--pat-w) - 120px)); } }
@keyframes roy-tonte { 0% { transform: scaleX(0); } 92%, 100% { transform: scaleX(1); } }
@keyframes roy-robot { 0% { transform: translateX(-130px); } 92% { transform: translateX(calc(100vw - var(--pat-w) - 120px)); } 100% { transform: translateX(calc(100vw - var(--pat-w) - 120px)) rotate(-4deg); } }
/* Caravane : Guy et Marc traversent la pelouse à dos de chameau et saluent Patrick */
.roy-pelouse { --cam-h: 165px; }
.roy-caravane { position: absolute; left: 0; bottom: 6px; z-index: 1; display: flex; align-items: flex-end; gap: 0; transform: translateX(max(6px, calc(100vw - var(--pat-w) - 130px - var(--cam-h) * 1.3))); pointer-events: none; }
.roy-caravane__bete { position: relative; height: var(--cam-h); }
.roy-caravane__bete--2 { margin-right: calc(var(--cam-h) * -.06); }
.roy-caravane__bete > img:first-child { display: block; height: 100% !important; width: auto !important; max-width: none !important; filter: drop-shadow(0 4px 4px rgba(14, 20, 48, .3)); transform-origin: 50% 100%; }
.roy-caravane__main { position: absolute; left: 50%; top: 6%; width: 30% !important; height: auto !important; transform-origin: 40% 100%; opacity: 0; }
.roy-caravane__bulle { position: absolute; right: 52%; bottom: calc(100% + 8px); white-space: nowrap; background: #fff; color: var(--nuit); font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 18px; line-height: 1; padding: 8px 12px; border-radius: 12px; border: 2px solid var(--nuit); box-shadow: 0 6px 14px rgba(14, 20, 48, .3); opacity: 0; transform: scale(.4); transform-origin: 85% 120%; }
.roy-caravane__bulle::after { content: ""; position: absolute; right: 14px; top: 100%; border: 8px solid transparent; border-top-color: var(--nuit); }
.roy-caravane.is-arrive .roy-caravane__main { opacity: 1; animation: roy-coucou .5s ease-in-out 6 alternate; }
.roy-caravane.is-arrive .roy-caravane__bulle { animation: roy-bulle-cara 4.5s .2s cubic-bezier(.2, .9, .3, 1.3) forwards; }
@media (prefers-reduced-motion: no-preference) {
	body.roy-anime .roy-caravane { transform: translateX(-300px); }
	body.roy-anime .roy-pelouse.is-joue .roy-caravane { animation: roy-caravane 11s 1.5s linear forwards; }
	body.roy-anime .roy-pelouse.is-joue .roy-caravane:not(.is-arrive) .roy-caravane__bete > img:first-child { animation: roy-dandine .55s ease-in-out infinite alternate; }
	body.roy-anime .roy-pelouse.is-joue .roy-caravane:not(.is-arrive) .roy-caravane__bete--2 > img:first-child { animation-delay: .27s; }
}
@keyframes roy-caravane { from { transform: translateX(-300px); } to { transform: translateX(max(6px, calc(100vw - var(--pat-w) - 130px - var(--cam-h) * 1.3))); } }
@keyframes roy-dandine { from { transform: translateY(0) rotate(-2deg); } to { transform: translateY(-5px) rotate(2deg); } }
@keyframes roy-coucou { from { transform: rotate(-22deg); } to { transform: rotate(18deg); } }
@keyframes roy-bulle-cara { 0% { opacity: 0; transform: scale(.4); } 10%, 85% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: scale(.9); } }
@media (max-width: 640px) { .roy-pelouse { --cam-h: 100px; } .roy-caravane__bulle { font-size: 14px; padding: 6px 9px; right: auto; left: 0; transform-origin: 15% 120%; } .roy-caravane__bulle::after { right: auto; left: 14px; } }
@keyframes roy-ronfle { 0% { opacity: 0; transform: translate(0, 0) rotate(-10deg); } 15% { opacity: 1; } 100% { opacity: 0; transform: translate(-46px, -70px) rotate(8deg); } }
@keyframes roy-respire { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.015) translateY(-1px); } }
@media (max-width: 640px) { .roy-pelouse { height: 96px; } .roy-pelouse { --pat-h: 128px; } .roy-pelouse__robot { width: 80px !important; } .roy-pelouse .roy-pelouse__z { font-size: 15px !important; } .roy-pelouse .roy-pelouse__z:nth-of-type(3) { font-size: 22px !important; } @keyframes roy-robot { 0% { transform: translateX(-120px); } 100% { transform: translateX(calc(100vw - var(--pat-w) - 86px)); } } }

/* Traceur de lignes sous « Ce week-end » */
.roy-traceur { position: relative; height: 84px; margin: 4px 0 6px; }
.roy-traceur__ligne { position: absolute; left: 0; right: 0; bottom: 8px; height: 4px; border-radius: 2px; background: #fff; transform-origin: left; }
.roy-traceur__bonhomme { position: absolute; bottom: 0; left: calc(100% - 30px); width: 92px !important; height: auto !important; }
@media (prefers-reduced-motion: no-preference) {
	body.roy-anime .roy-traceur__ligne { transform: scaleX(0); }
	body.roy-anime .roy-traceur__bonhomme { opacity: 0; }
	body.roy-anime .roy-traceur.is-joue .roy-traceur__ligne { animation: roy-trace 5s cubic-bezier(.4, 0, .6, 1) forwards; }
	body.roy-anime .roy-traceur.is-joue .roy-traceur__bonhomme { animation: roy-traceur 5s cubic-bezier(.4, 0, .6, 1) forwards, roy-pas .4s ease-in-out 12; }
}
.roy-traceur.is-fini .roy-traceur__bonhomme { opacity: 0; transition: opacity .6s ease; }
@media (prefers-reduced-motion: reduce) { .roy-traceur__bonhomme { display: none; } }
@keyframes roy-trace { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes roy-traceur { 0% { opacity: 1; left: -40px; } 100% { opacity: 1; left: calc(100% - 30px); } }
@keyframes roy-pas { 0%, 100% { margin-bottom: 0; } 50% { margin-bottom: 3px; } }

/* Pétrole cliquable (page Le club) */
.roy-petrole-mot { font: inherit; color: var(--jaune); background: none; border: 0; padding: 0; cursor: pointer; text-decoration: underline dotted 2px; text-underline-offset: 4px; }
h3 .roy-petrole-mot { text-transform: inherit; font-style: inherit; font-weight: inherit; letter-spacing: inherit; }
.roy-petrole-mot.is-secoue { animation: roy-secoue .35s ease; }
@keyframes roy-secoue { 25% { transform: rotate(-6deg); } 75% { transform: rotate(6deg); } }
.roy-goutte { position: fixed; z-index: 9998; width: 10px; height: 13px; border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%; background: #111; pointer-events: none; }
/* Le mot invite à cliquer : il brille doucement, une bulle explique la suite */
.roy-petrole-mot { position: relative; animation: roy-brille 2.4s ease-in-out infinite; border-radius: 4px; padding: 0 2px !important; }
@keyframes roy-brille { 0%, 100% { box-shadow: 0 0 0 0 rgba(244, 234, 75, 0); } 50% { box-shadow: 0 0 0 6px rgba(244, 234, 75, .25); } }
.roy-petrole-bulle { position: absolute; left: 50%; bottom: calc(100% + 10px); transform: translateX(-50%); white-space: nowrap; background: var(--jaune); color: var(--nuit); font-family: var(--texte); font-style: normal; font-weight: 800; font-size: 14px; text-transform: none; letter-spacing: 0; line-height: 1.2; padding: 7px 12px; border-radius: 10px; box-shadow: 0 8px 20px rgba(0, 0, 0, .35); pointer-events: none; z-index: 5; }
.roy-petrole-bulle::after { content: ""; position: absolute; left: 50%; top: 100%; margin-left: -7px; border: 7px solid transparent; border-top-color: var(--jaune); }
.roy-petrole-bulle.is-pop { animation: roy-pop .4s cubic-bezier(.2, .9, .3, 1.4); }
@keyframes roy-pop { from { transform: translateX(-50%) scale(.5); opacity: 0; } to { transform: translateX(-50%) scale(1); opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .roy-petrole-mot { animation: none; } }
/* Jackpot : ça gronde, le geyser jaillit et crache l'or, le titre tombe mot par mot, les émirs arrivent, le puits sort de terre */
.roy-jackpot { position: fixed; inset: 0; z-index: 9998; overflow: hidden; cursor: pointer; background: radial-gradient(ellipse at 50% 85%, rgba(30, 85, 149, .7), rgba(14, 20, 48, .9) 70%); animation: roy-jk-voile .4s ease both; perspective: 600px; }
.roy-jackpot.is-fin { opacity: 0; transition: opacity .6s ease; }
@keyframes roy-jk-voile { from { opacity: 0; } }
.roy-jackpot > * { pointer-events: none; }
.roy-jackpot__flash { position: absolute; inset: 0; background: radial-gradient(circle at 50% 80%, #FFF6A8, rgba(244, 234, 75, 0) 60%); opacity: 0; animation: roy-jk-flash .7s .6s ease-out; }
@keyframes roy-jk-flash { 0% { opacity: 0; } 20% { opacity: 1; } 100% { opacity: 0; } }
.roy-jackpot__rayons { position: absolute; left: 50%; top: 26%; width: 160vmax; height: 160vmax; margin: -80vmax 0 0 -80vmax; background: repeating-conic-gradient(rgba(244, 234, 75, .16) 0 9deg, rgba(244, 234, 75, 0) 9deg 18deg); -webkit-mask: radial-gradient(circle, #000 8%, transparent 55%); mask: radial-gradient(circle, #000 8%, transparent 55%); opacity: 0; animation: roy-jk-rayons 1s 1s ease-out forwards, roy-jk-tourne 24s 1s linear infinite; }
@keyframes roy-jk-rayons { to { opacity: 1; } }
@keyframes roy-jk-tourne { to { transform: rotate(360deg); } }
.roy-jackpot__sol { position: absolute; left: 0; right: 0; bottom: 0; height: max(40px, 7vh); background: linear-gradient(#3E7A2E 0 10px, #5B3A1E 10px); border-top: 3px solid #2D5C21; transform: translateY(100%); animation: roy-jk-sol .4s .05s ease-out forwards; }
@keyframes roy-jk-sol { to { transform: none; } }
.roy-jackpot__motte { opacity: 0; position: absolute; left: -7px; top: -7px; width: 14px; height: 12px; border-radius: 40% 60% 50% 50%; background: #5B3A1E; }
.roy-jackpot__christian { position: absolute; left: 50%; bottom: calc(max(40px, 7vh) - 2vh); height: min(94vh, 980px); aspect-ratio: 396 / 1024; transform: translateX(-50%); }
.roy-jackpot__christian img { position: absolute; max-width: none !important; }
.roy-jackpot__homme { left: 0; top: 55.76%; width: 52.78% !important; height: 44.24% !important; transform: translateY(110%); animation: roy-jk-homme .7s .15s cubic-bezier(.2, .9, .3, 1.2) forwards; }
.roy-jackpot__jet { left: 22.4%; top: 0; width: 98.6% !important; height: 65.63% !important; transform-origin: 25.4% 100%; transform: scale(.15, 0); animation: roy-jk-jet 3.6s .85s cubic-bezier(.2, .9, .3, 1) forwards, roy-jk-vibre .16s ease-in-out infinite alternate; }
@keyframes roy-jk-homme { to { transform: none; } }
@keyframes roy-jk-jet { 0% { transform: scale(.15, 0); } 12% { transform: scale(.9, 1.08); } 18% { transform: scale(1.06, .94); } 24%, 72% { transform: scale(1, 1); } 100% { transform: scale(.3, 0); } }
@keyframes roy-jk-vibre { from { scale: 1 1; rotate: -1.2deg; } to { scale: 1.03 .98; rotate: 1.2deg; } }
.roy-jackpot__goutte { opacity: 0; position: absolute; left: -6px; top: -8px; width: 12px; height: 16px; border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%; background: #111; box-shadow: inset -2px -3px 0 rgba(255, 255, 255, .15); }
.roy-jackpot__piece { opacity: 0; position: absolute; left: -20px; top: -20px; width: 40px; height: 40px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #FFF6A8, #F4EA4B 45%, #C9A800); border: 3px solid #8A6D00; color: #8A6D00; font-family: Arial, Helvetica, sans-serif; font-weight: 700; font-size: 21px; line-height: 1; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 10px rgba(0, 0, 0, .35); }
.roy-jackpot__piece--pluie { top: 0; left: auto; margin-left: -20px; }
.roy-jackpot__emir { position: absolute; bottom: calc(max(40px, 7vh) + 2%); width: min(26vw, 210px) !important; height: auto !important; border-radius: 22px; border: 6px solid var(--jaune); box-shadow: 0 16px 40px rgba(0, 0, 0, .5); background: #fff; }
.roy-jackpot__emir--g { left: 3%; transform: translateX(-140%) rotate(-8deg); animation: roy-emir-g .7s cubic-bezier(.2, .9, .3, 1.2) 1.5s forwards; }
.roy-jackpot__emir--d { right: 3%; transform: translateX(140%) rotate(8deg); animation: roy-emir-d .7s cubic-bezier(.2, .9, .3, 1.2) 1.7s forwards; }
@keyframes roy-emir-g { to { transform: translateX(0) rotate(-6deg); } }
@keyframes roy-emir-d { to { transform: translateX(0) rotate(6deg); } }
.roy-jackpot__titre { position: absolute; top: 9%; left: 4%; right: 4%; text-align: center; font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: clamp(44px, 8.5vw, 116px); line-height: .95; color: var(--jaune); -webkit-text-stroke: 3px var(--nuit); text-shadow: 0 8px 24px rgba(0, 0, 0, .5); }
.roy-jackpot__mot { display: inline-block; opacity: 0; transform: scale(3) rotate(-8deg); animation: roy-jk-mot .45s cubic-bezier(.3, 1.6, .5, 1) forwards, roy-jk-respire 1.2s 2.4s ease-in-out infinite alternate; }
.roy-jackpot__mot:nth-child(1) { animation-delay: 1s, 2.4s; }
.roy-jackpot__mot:nth-child(2) { animation-delay: 1.2s, 2.5s; }
.roy-jackpot__mot:nth-child(3) { animation-delay: 1.4s, 2.6s; }
@keyframes roy-jk-mot { to { opacity: 1; transform: scale(1) rotate(-3deg); } }
@keyframes roy-jk-respire { from { transform: scale(1) rotate(-3deg); } to { transform: scale(1.05) rotate(-3deg); } }
.roy-jackpot__titre small { display: block; font-size: .3em; color: #fff; -webkit-text-stroke: 0; margin-top: 12px; opacity: 0; animation: roy-monte .5s 1.6s forwards; }
.roy-jackpot__compteur { color: var(--jaune); font-variant-numeric: tabular-nums; }
@media (max-width: 600px) { .roy-jackpot__titre { top: 6%; font-size: 15vw; } .roy-jackpot__emir { border-width: 4px; border-radius: 14px; } }

/* « Ce week-end » dessiné comme un terrain (le traceur trace la ligne du haut, puis le reste se dessine) */
.roy-weekend { position: relative; isolation: isolate; padding-top: 104px !important; padding-bottom: 60px !important; }
@media (max-width: 782px) { .roy-weekend { padding-top: 76px !important; } }
.roy-weekend > .roy-wrap { position: relative; z-index: 1; }
.roy-terrain { position: absolute; inset: 78px 22px 22px; z-index: 0; pointer-events: none; --t: rgba(255, 255, 255, .32); --e: 3px; }
.roy-terrain > span { position: absolute; display: block; }
.roy-terrain__ligne--haut, .roy-terrain__ligne--bas { left: 0; right: 0; height: var(--e); background: var(--t); }
.roy-terrain__ligne--haut { top: 0; transform-origin: left; }
.roy-terrain__ligne--bas { bottom: 0; transform-origin: right; }
.roy-terrain__ligne--gauche, .roy-terrain__ligne--droite { top: 0; bottom: 0; width: var(--e); background: var(--t); }
.roy-terrain__ligne--droite { right: 0; transform-origin: top; }
.roy-terrain__ligne--gauche { left: 0; transform-origin: bottom; }
.roy-terrain__milieu { left: 50%; top: 0; bottom: 0; width: var(--e); margin-left: calc(var(--e) / -2); background: var(--t); transform-origin: top; }
.roy-terrain__rond { left: 50%; top: 50%; width: 190px; height: 190px; margin: -95px 0 0 -95px; border: var(--e) solid var(--t); border-radius: 50%; }
.roy-terrain__point { left: 50%; top: 50%; width: 10px; height: 10px; margin: -5px 0 0 -5px; border-radius: 50%; background: var(--t); }
.roy-terrain__surface { top: 22%; bottom: 22%; width: 140px; border: var(--e) solid var(--t); }
.roy-terrain__surface--g { left: 0; border-left: 0; }
.roy-terrain__surface--d { right: 0; border-right: 0; }
.roy-terrain__but { top: 37%; bottom: 37%; width: 50px; border: var(--e) solid var(--t); }
.roy-terrain__but--g { left: 0; border-left: 0; }
.roy-terrain__but--d { right: 0; border-right: 0; }
.roy-terrain__coin { width: 28px; height: 28px; border: var(--e) solid var(--t); }
.roy-terrain__coin--hg { top: -14px; left: -14px; border-radius: 50%; clip-path: inset(14px 0 0 14px); }
.roy-terrain__coin--hd { top: -14px; right: -14px; border-radius: 50%; clip-path: inset(14px 14px 0 0); }
.roy-terrain__coin--bg { bottom: -14px; left: -14px; border-radius: 50%; clip-path: inset(0 0 14px 14px); }
.roy-terrain__coin--bd { bottom: -14px; right: -14px; border-radius: 50%; clip-path: inset(0 14px 14px 0); }
.roy-terrain__traceur { position: absolute; top: -70px; left: 0; width: 76px !important; height: auto !important; opacity: 0; }
@media (prefers-reduced-motion: no-preference) {
	body.roy-anime .roy-terrain__ligne--haut, body.roy-anime .roy-terrain__ligne--bas { transform: scaleX(0); }
	body.roy-anime .roy-terrain__ligne--gauche, body.roy-anime .roy-terrain__ligne--droite, body.roy-anime .roy-terrain__milieu { transform: scaleY(0); }
	body.roy-anime .roy-terrain :is(.roy-terrain__rond, .roy-terrain__point, .roy-terrain__surface, .roy-terrain__but, .roy-terrain__coin) { opacity: 0; transform: scale(.6); }
	/* Le tour du terrain (4 lignes + traceur) est piloté par front.js à vitesse constante ; le reste se dessine ensuite. */
	body.roy-anime .roy-terrain.is-trace .roy-terrain__milieu { animation: roy-trait-y 1.6s linear forwards; }
	body.roy-anime .roy-terrain.is-trace :is(.roy-terrain__rond, .roy-terrain__point) { animation: roy-apparait .8s 1.5s cubic-bezier(.2, .8, .2, 1.2) forwards; }
	body.roy-anime .roy-terrain.is-trace :is(.roy-terrain__surface, .roy-terrain__but) { animation: roy-apparait .8s 2.2s cubic-bezier(.2, .8, .2, 1.2) forwards; }
	body.roy-anime .roy-terrain.is-trace .roy-terrain__coin { animation: roy-apparait .6s 2.9s cubic-bezier(.2, .8, .2, 1.2) forwards; }
	body.roy-anime .roy-terrain__traceur.is-marche { opacity: 1; animation: roy-pas-terrain .45s ease-in-out infinite; }
	body.roy-anime .roy-terrain__traceur.is-parti { opacity: 0; transition: opacity .8s ease; }
}
.roy-weekend { overflow-x: clip; }
.roy-terrain__traceur { transform-origin: 0 0; will-change: left, top; }
.roy-terrain__traceur.is-retourne { transform: scaleX(-1); transform-origin: center; }
@keyframes roy-trait-x { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes roy-trait-y { from { transform: scaleY(0); } to { transform: scaleY(1); } }
@keyframes roy-pas-terrain { 0%, 100% { margin-top: 0; } 50% { margin-top: -3px; } }
@keyframes roy-apparait { to { opacity: 1; transform: scale(1); } }
@media (max-width: 782px) {
	.roy-terrain { inset: 58px 10px 10px; }
	.roy-terrain__rond { width: 120px; height: 120px; margin: -60px 0 0 -60px; }
	.roy-terrain__surface { width: 60px; } .roy-terrain__but { width: 24px; }
	.roy-terrain__traceur { width: 56px !important; top: -50px; }
}

/* HappyForms : ses variables (fond blanc, texte noir) l'emportaient en partie sur nos couleurs ;
   résultat, texte blanc sur fond blanc dans certains champs (au focus notamment). On impose la palette du site. */
.roy-formulaire .happyforms-styles {
	--happyforms-color-part-background: #202D57 !important;
	--happyforms-color-part-background-focus: #202D57 !important;
	--happyforms-color-part-value: #FFFFFF !important;
	--happyforms-color-part-placeholder: rgba(242, 241, 236, .5) !important;
	--happyforms-color-part-border: rgba(255, 255, 255, .22) !important;
	--happyforms-color-part-border-focus: #F4EA4B !important;
	--happyforms-color-part-title: #FFFFFF !important;
	--happyforms-color-part-description: rgba(242, 241, 236, .8) !important;
	--happyforms-color-dropdown-item-bg: #FFFFFF !important;
	--happyforms-color-dropdown-item-text: #0E1430 !important;
}
.roy-inscription .roy-formulaire .happyforms-styles { --happyforms-color-part-background: #0E1430 !important; --happyforms-color-part-background-focus: #0E1430 !important; }
.roy-formulaire.roy-formulaire :is(input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not([type="hidden"]):not([type="file"]), select, textarea) { color: #fff !important; -webkit-text-fill-color: #fff !important; caret-color: var(--jaune); color-scheme: dark; }
.roy-formulaire.roy-formulaire :is(input, textarea)::placeholder { color: rgba(242, 241, 236, .5) !important; -webkit-text-fill-color: rgba(242, 241, 236, .5) !important; opacity: 1; }
.roy-formulaire.roy-formulaire :is(input, textarea, select):-webkit-autofill { -webkit-box-shadow: 0 0 0 100px #202D57 inset !important; box-shadow: 0 0 0 100px #202D57 inset !important; -webkit-text-fill-color: #fff !important; }
.roy-inscription .roy-formulaire.roy-formulaire :is(input, textarea, select):-webkit-autofill { -webkit-box-shadow: 0 0 0 100px #0E1430 inset !important; box-shadow: 0 0 0 100px #0E1430 inset !important; }
.roy-formulaire.roy-formulaire select option { -webkit-text-fill-color: #0E1430; }

/* Le Roligri vu du ciel (page Contact) */
.roy-plan { background: var(--nuit); padding: 64px 0 80px; }
.roy-plan__grille { display: grid; grid-template-columns: minmax(260px, 1fr) minmax(0, 1.8fr); gap: 48px; align-items: center; }
.roy-plan h2 { font-size: clamp(36px, 5vw, 60px); margin-bottom: 18px; }
.roy-plan__adresse { font-size: 20px; font-weight: 700; color: #fff; }
.roy-plan__legende { list-style: none; margin: 20px 0 26px; padding: 0; display: grid; gap: 6px; }
.roy-plan__ligne { display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; background: transparent; border: 1px solid transparent; border-radius: 12px; padding: 6px 10px 6px 6px; color: var(--ivoire); font: inherit; cursor: pointer; transition: background .2s, border-color .2s; }
.roy-plan__ligne b { color: #fff; }
.roy-plan__ligne:is(:hover, :focus-visible, .is-actif) { background: var(--marine); border-color: rgba(244, 234, 75, .5); }
.roy-plan__marque { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 50%; background: var(--jaune); color: var(--nuit); border: 3px solid var(--nuit); box-shadow: 0 0 0 2px var(--jaune); font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 19px; line-height: 1; }
.roy-plan__marque--parking, .roy-plan__pin--parking .roy-plan__marque { background: var(--roi); color: #fff; box-shadow: 0 0 0 2px #fff; }
.roy-plan__marque--buvette, .roy-plan__pin--buvette .roy-plan__marque { background: #fff; }
.roy-plan__photo { position: relative; margin: 0; border-radius: 22px; overflow: visible; box-shadow: 0 24px 60px rgba(0, 0, 0, .45); }
.roy-plan__photo img { display: block; width: 100% !important; height: auto !important; border-radius: 22px; border: 4px solid var(--jaune); }
.roy-plan__pin { position: absolute; transform: translate(-50%, -50%); background: none; border: 0; padding: 0; cursor: pointer; z-index: 1; }
.roy-plan__pin .roy-plan__marque { width: 40px; height: 40px; font-size: 22px; box-shadow: 0 0 0 3px var(--jaune), 0 8px 18px rgba(0, 0, 0, .45); transition: transform .2s; }
.roy-plan__pin::before { content: ""; position: absolute; inset: -6px; border-radius: 50%; border: 3px solid var(--jaune); opacity: 0; }
.roy-plan__etiquette { position: absolute; left: 50%; bottom: calc(100% + 10px); transform: translate(-50%, 6px); white-space: nowrap; background: #fff; color: var(--nuit); border-radius: 10px; padding: 8px 12px; box-shadow: 0 10px 24px rgba(0, 0, 0, .4); font-size: 14px; line-height: 1.25; text-align: center; opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s; }
.roy-plan__etiquette b { display: block; font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 18px; }
.roy-plan__etiquette small { display: block; font-size: 13px; color: #4A5274; }
.roy-plan__etiquette::after { content: ""; position: absolute; left: 50%; top: 100%; margin-left: -7px; border: 7px solid transparent; border-top-color: #fff; }
.roy-plan__pin:is(:hover, :focus-visible, .is-actif) { z-index: 3; }
.roy-plan__pin:is(:hover, :focus-visible, .is-actif) .roy-plan__marque { transform: scale(1.18); }
.roy-plan__pin:is(:hover, :focus-visible, .is-actif) .roy-plan__etiquette { opacity: 1; transform: translate(-50%, 0); }
.roy-plan__pin.is-actif::before { animation: roy-plan-onde 1.2s ease-out infinite; }
@keyframes roy-plan-onde { from { opacity: .9; transform: scale(.8); } to { opacity: 0; transform: scale(1.8); } }
@media (prefers-reduced-motion: no-preference) {
	body.roy-anime .roy-plan__photo img { clip-path: inset(0 0 100% 0 round 22px); transition: clip-path 1.1s cubic-bezier(.6, 0, .2, 1); }
	body.roy-anime .roy-plan__pin { opacity: 0; translate: 0 -40px; }
	body.roy-anime .roy-plan.is-vu .roy-plan__photo img { clip-path: inset(0 0 0 0 round 22px); }
	body.roy-anime .roy-plan.is-vu .roy-plan__pin { animation: roy-plan-tombe .55s calc(1s + var(--i) * .14s) cubic-bezier(.3, 1.5, .5, 1) forwards; }
}
@keyframes roy-plan-tombe { to { opacity: 1; translate: 0 0; } }
@media (max-width: 900px) {
	.roy-plan { padding: 48px 0 60px; }
	.roy-plan__grille { grid-template-columns: 1fr; gap: 28px; }
	.roy-plan__photo { order: -1; }
	.roy-plan__pin .roy-plan__marque { width: 30px; height: 30px; font-size: 16px; border-width: 2px; }
	.roy-plan__pin .roy-plan__marque svg { width: 14px; height: 14px; }
	.roy-plan__etiquette { font-size: 12px; padding: 6px 9px; } .roy-plan__etiquette b { font-size: 15px; }
	.roy-plan__legende { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) { .roy-plan__legende { grid-template-columns: 1fr; } }
@media (max-width: 560px) {
	.roy-plan__legende { grid-template-columns: 1fr; }
}
.roy-plan { overflow-x: clip; }

/* Page Contact : photo du club inclinée dans l'en-tête */
.roy-entete-page--photo .roy-entete-page__ligne { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 42%); grid-template-areas: "titres photo" "intro photo" "label photo"; column-gap: 48px; row-gap: 22px; align-items: center; }
.roy-entete-page--photo .roy-entete-page__titres { grid-area: titres; }
.roy-entete-page--photo .roy-entete-page__intro { grid-area: intro; }
.roy-entete-page__photo { grid-area: photo; position: relative; margin: 0 8px 18px; border: 6px solid #fff; border-radius: 18px; box-shadow: 0 24px 50px rgba(0, 0, 0, .45); transform: rotate(2.5deg); }
.roy-entete-page__photo img { display: block; width: 100% !important; height: auto !important; aspect-ratio: 3 / 1; object-fit: cover; border-radius: 12px; }
.roy-entete-page__badge { position: absolute; left: -22px; bottom: -26px; width: 104px; height: 104px; border-radius: 50%; background: var(--jaune); color: var(--nuit); display: flex; flex-direction: column; align-items: center; justify-content: center; transform: rotate(-10deg); box-shadow: 0 10px 24px rgba(0, 0, 0, .4); font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; line-height: .95; }
.roy-entete-page__badge span { font-size: 16px; }
.roy-entete-page__badge b { font-size: 20px; }
@media (prefers-reduced-motion: no-preference) { .roy-entete-page__badge { animation: roy-balance 4s ease-in-out infinite; } }
@media (max-width: 900px) {
	.roy-entete-page--photo .roy-entete-page__ligne { grid-template-columns: 1fr; grid-template-areas: "titres" "intro" "label" "photo"; }
	.roy-entete-page__photo { max-width: 520px; margin: 8px 12px 28px; }
	.roy-entete-page__badge { width: 84px; height: 84px; left: -12px; bottom: -20px; } .roy-entete-page__badge span { font-size: 13px; } .roy-entete-page__badge b { font-size: 16px; }
}

/* Page 404 : « Hors-jeu ! » */
.roy-404 { background: var(--nuit); border-top: 6px solid var(--jaune); padding: 56px 0 64px; overflow: hidden; }
.roy-404__haut { text-align: center; }
.roy-404 h1 { font-size: clamp(72px, 14vw, 170px); line-height: .85 !important; color: var(--jaune) !important; margin: 0 0 18px; transform: rotate(-3deg); }
.roy-404__intro { max-width: 620px; margin: 0 auto 22px; font-size: 18px; color: var(--brume); }
.roy-404__terrain { position: relative; height: 150px; margin: 34px 0 30px; background: repeating-linear-gradient(90deg, #3E8E3B 0 90px, #469C42 90px 180px); border-top: 4px solid #2F7A2D; border-bottom: 4px solid #2F7A2D; }
.roy-404__traceur { position: absolute; left: 0; right: 30%; bottom: 0; margin: 0; height: 120px; }
.roy-404__traceur .roy-traceur__ligne { bottom: 18px; }
.roy-404__robot { position: absolute; right: 12%; bottom: 14px; width: 110px; }
.roy-404__robot img { width: 100% !important; height: auto !important; display: block; }
.roy-404__drapeau { position: absolute; left: 70%; bottom: 38px; display: flex; align-items: flex-start; transform-origin: 0 100%; }
.roy-404__drapeau i { display: block; width: 4px; height: 70px; background: #DDD; border-radius: 2px; }
.roy-404__drapeau b { display: block; background: var(--jaune); color: var(--nuit); font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 15px; white-space: nowrap; padding: 5px 10px; border: 2px solid var(--nuit); border-left: 0; border-radius: 0 6px 6px 0; }
@media (prefers-reduced-motion: no-preference) {
	body.roy-anime .roy-404__robot { transform: translateX(60vw); }
	body.roy-anime .roy-404__drapeau { transform: rotate(80deg) scale(.6); opacity: 0; }
	body.roy-anime .roy-404:has(.roy-traceur.is-joue) .roy-404__robot { animation: roy-404-robot 2.2s 1.2s cubic-bezier(.2, .8, .3, 1) forwards; }
	body.roy-anime .roy-404:has(.roy-traceur.is-joue) .roy-404__drapeau { animation: roy-404-drapeau .6s 5.4s cubic-bezier(.3, 1.6, .5, 1) forwards, roy-404-agite .5s 6s ease-in-out 6 alternate; }
}
@keyframes roy-404-robot { to { transform: none; } }
@keyframes roy-404-drapeau { to { transform: rotate(0) scale(1); opacity: 1; } }
@keyframes roy-404-agite { from { transform: rotate(-8deg); } to { transform: rotate(8deg); } }
.roy-404__liens { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 14px; }
.roy-404__liens a { display: block; height: 100%; padding: 18px 20px; border-radius: 16px; background: var(--marine); border: 1px solid var(--trait); text-decoration: none; color: var(--brume); transition: transform .2s, border-color .2s; }
.roy-404__liens a:hover, .roy-404__liens a:focus-visible { transform: translateY(-3px); border-color: var(--jaune); }
.roy-404__liens strong { display: block; color: #fff; font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 22px; line-height: 1.05; margin-bottom: 4px; }
.roy-404__liens span { font-size: 14px; }
@media (max-width: 640px) { .roy-404__terrain { height: 120px; } .roy-404__robot { width: 76px; right: 30%; } .roy-404__traceur { right: 64%; height: 100px; } .roy-404__drapeau b { font-size: 13px; } }

/* Pages par commune */
.roy-entete-commune .roy-entete-page__h1 { font-size: clamp(44px, 6.4vw, 92px) !important; }
.roy-entete-commune .roy-entete-page__intro { color: #fff; font-size: 19px; }
.roy-atouts { background: var(--nuit); padding: 40px 0 56px; }
.roy-atouts__liste { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.roy-atouts__liste li { background: var(--marine); border: 1px solid var(--trait); border-top: 4px solid var(--jaune); border-radius: 16px; padding: 22px 22px 18px; }
.roy-atouts__liste h3 { font-size: 24px; margin-bottom: 8px; color: var(--jaune) !important; }
.roy-atouts__liste p { margin: 0; color: var(--brume); }
.roy-commune-trajet { background: var(--roi); padding: 48px 0; }
.roy-commune-trajet p { max-width: 820px; font-size: 18px; color: #fff; margin: 0; }
.roy-communes { background: var(--nuit); padding: 48px 0 64px; }
.roy-communes__liste { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 12px; }
.roy-communes__liste a { display: block; padding: 16px 18px; border-radius: 14px; background: var(--marine); border: 1px solid var(--trait); text-decoration: none; transition: transform .2s, border-color .2s; }
.roy-communes__liste a:hover, .roy-communes__liste a:focus-visible { transform: translateY(-3px); border-color: var(--jaune); }
.roy-communes__liste strong { display: block; color: #fff; font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 21px; line-height: 1.05; }
.roy-communes__liste span { color: var(--jaune); font-size: 14px; font-weight: 700; }
@media (max-width: 900px) { .roy-atouts__liste { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .roy-atouts__liste { grid-template-columns: 1fr; } }

/* ===== Easter eggs ===== */
.roy-oeuf { position: fixed; inset: 0; z-index: 9998; overflow: hidden; cursor: pointer; animation: roy-jk-voile .35s ease both; }
.roy-oeuf.is-fin { opacity: 0; transition: opacity .55s ease; }
.roy-oeuf > * { pointer-events: none; }
.roy-oeuf__confetti { position: absolute; top: 0; width: 10px; height: 16px; border-radius: 2px; }
/* Le lob */
.roy-lob { background: radial-gradient(ellipse at 50% 100%, rgba(30, 85, 149, .5), rgba(14, 20, 48, .9) 70%); }
.roy-lob__terrain { position: absolute; left: 0; right: 0; bottom: 0; height: 22%; background: repeating-linear-gradient(90deg, #3E8E3B 0 90px, #469C42 90px 180px); border-top: 4px solid #fff; }
.roy-lob__but { position: absolute; right: 8%; bottom: 22%; width: min(30vw, 300px); height: min(18vw, 170px); border: 8px solid #fff; border-bottom: 0; border-radius: 4px 4px 0 0; }
.roy-lob__but i { position: absolute; inset: 0; background: repeating-linear-gradient(0deg, rgba(255, 255, 255, .35) 0 2px, transparent 2px 16px), repeating-linear-gradient(90deg, rgba(255, 255, 255, .35) 0 2px, transparent 2px 16px); }
.roy-lob.is-but .roy-lob__but i { animation: roy-filet .5s ease-out; }
@keyframes roy-filet { 30% { transform: scale(1.06, 1.04) translateX(8px); } }
.roy-lob__gardien { position: absolute; right: calc(8% + min(15vw, 150px) - 28px); bottom: 22%; width: 56px; height: 120px; }
.roy-lob__gardien b { position: absolute; left: 14px; top: 0; width: 28px; height: 28px; border-radius: 50%; background: #E7A36B; border: 3px solid #111; }
.roy-lob__gardien::before { content: ""; position: absolute; left: 8px; top: 28px; width: 40px; height: 52px; border-radius: 10px 10px 4px 4px; background: #E8442E; border: 3px solid #111; }
.roy-lob__gardien i { position: absolute; top: 76px; width: 12px; height: 44px; background: #111; border-radius: 4px; }
.roy-lob__gardien i:first-of-type { left: 14px; } .roy-lob__gardien i:last-of-type { left: 30px; }
.roy-lob__ballon { position: absolute; left: -22px; top: -22px; width: 44px; height: 44px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #fff 0 30%, #ddd 60%, #999); border: 3px solid #111; box-shadow: inset -6px -6px 0 rgba(0, 0, 0, .12); }
.roy-lob__ballon::after { content: ""; position: absolute; inset: 11px; background: #111; clip-path: polygon(50% 0, 100% 38%, 82% 100%, 18% 100%, 0 38%); }
.roy-lob__titre { position: absolute; top: 12%; left: 0; right: 0; text-align: center; font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: clamp(64px, 13vw, 170px); line-height: .9; color: var(--jaune); -webkit-text-stroke: 3px var(--nuit); opacity: 0; transform: scale(2.4); }
.roy-lob__titre small { display: block; font-size: .24em; color: #fff; -webkit-text-stroke: 0; margin-top: 10px; }
.roy-lob.is-but .roy-lob__titre { animation: roy-jk-mot .5s cubic-bezier(.3, 1.6, .5, 1) forwards; }
.roy-lob-mot { font: inherit; color: var(--jaune); background: none; border: 0; padding: 0 2px; cursor: pointer; text-decoration: underline dotted 2px; text-underline-offset: 4px; border-radius: 4px; animation: roy-brille 2.4s ease-in-out infinite; }
/* Le tifo */
.roy-tifo { background: rgba(14, 20, 48, .82); }
.roy-tifo__bache { position: absolute; left: 4%; right: 4%; top: 6%; padding: 4vh 3vw 5vh; background: repeating-linear-gradient(90deg, #F4EA4B 0 10%, #1E5595 10% 20%); border: 6px solid #0E1430; border-radius: 6px; text-align: center; transform-origin: 50% 0; transform: scaleY(0); animation: roy-tifo-deroule 1.1s .2s cubic-bezier(.3, 1.2, .4, 1) forwards; box-shadow: 0 30px 60px rgba(0, 0, 0, .5); }
@keyframes roy-tifo-deroule { to { transform: scaleY(1); } }
.roy-tifo__bache p { margin: 0; font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; line-height: .95; color: #fff; -webkit-text-stroke: 3px #0E1430; paint-order: stroke fill; opacity: 0; }
.roy-tifo__l1 { font-size: clamp(44px, 9vw, 130px); animation: roy-monte .5s 1.2s forwards; }
.roy-tifo__l2 { font-size: clamp(36px, 7vw, 100px); color: var(--jaune) !important; animation: roy-monte .5s 2.2s forwards; }
.roy-tifo__l3 { font-size: clamp(48px, 10vw, 150px); margin-top: 2vh !important; animation: roy-monte .5s 3.2s forwards; }
.roy-tifo__l3 s { text-decoration-thickness: .12em; text-decoration-color: #E8442E; opacity: .8; }
.roy-tifo__l3 b { color: var(--jaune); display: inline-block; animation: roy-jk-respire .6s 3.8s ease-in-out infinite alternate; }
.roy-tifo__fumee { position: absolute; bottom: -10%; width: 55vw; height: 80vh; border-radius: 50%; filter: blur(40px); opacity: 0; animation: roy-fumee 6.5s .4s ease-out forwards; }
.roy-tifo__fumee--g { left: -15vw; background: radial-gradient(circle, rgba(244, 234, 75, .85), rgba(244, 234, 75, 0) 65%); }
.roy-tifo__fumee--d { right: -15vw; background: radial-gradient(circle, rgba(30, 85, 149, .95), rgba(30, 85, 149, 0) 65%); animation-delay: .7s; }
@keyframes roy-fumee { 0% { opacity: 0; transform: translateY(30%) scale(.6); } 25% { opacity: 1; } 100% { opacity: .75; transform: translateY(-25%) scale(1.3); } }
.roy-tifo.is-calme * { animation: none !important; opacity: 1 !important; transform: none !important; }
/* Patrick se réveille */
.roy-pelouse__patrick.is-cliquable { pointer-events: auto; cursor: pointer; }
.roy-pelouse__patrick.is-reveille > img:first-child { animation: roy-sursaut .5s ease-out !important; }
.roy-pelouse__patrick.is-reveille .roy-pelouse__z { animation: none !important; opacity: 0 !important; }
@keyframes roy-sursaut { 30% { transform: translateY(-18px) rotate(-3deg); } 60% { transform: translateY(0) rotate(2deg); } }
.roy-pelouse__cri { position: absolute; right: 30%; bottom: 100%; margin-bottom: -10px; white-space: nowrap; background: #fff; color: var(--nuit); font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 20px; line-height: 1; padding: 9px 13px; border-radius: 12px; border: 2px solid var(--nuit); box-shadow: 0 8px 18px rgba(14, 20, 48, .35); animation: roy-pop-cri .35s cubic-bezier(.2, .9, .3, 1.4); z-index: 4; }
.roy-pelouse__cri::after { content: ""; position: absolute; right: 22%; top: 100%; border: 8px solid transparent; border-top-color: var(--nuit); }
@keyframes roy-pop-cri { from { transform: scale(.4); opacity: 0; } }
@media (max-width: 640px) { .roy-pelouse__cri { font-size: 14px; right: 10%; } }
/* Faux sponsor */
.roy-faux-sponsor { border: 0; cursor: pointer; font: inherit; background: linear-gradient(135deg, #FFF6A8, #F4EA4B 40%, #C9A800 75%, #FFF1A0) !important; box-shadow: inset 0 0 0 3px #8A6D00; }
.roy-faux-sponsor span { display: block; color: #3B2E00; line-height: 1.1; }
.roy-faux-sponsor b { display: block; font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 18px; }
.roy-faux-sponsor small { display: block; font-size: 12px; letter-spacing: .06em; text-transform: uppercase; margin-top: 3px; }
.roy-faux-sponsor:hover { transform: translateY(-3px) rotate(-1deg); }
/* Mode 1958 */
.roy-1958-mot { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; text-decoration: underline dotted 1px; text-underline-offset: 3px; letter-spacing: inherit; text-transform: inherit; }
html.roy-1958 body > *:not(.roy-1958-bandeau):not(.roy-oeuf):not(.roy-jackpot):not(.roy-cuicui) { filter: sepia(.9) grayscale(.35) contrast(1.08) brightness(.95); }
html.roy-1958 body::after { content: ""; position: fixed; inset: 0; z-index: 9990; pointer-events: none; opacity: .22; mix-blend-mode: multiply; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }
.roy-1958-bandeau { position: fixed; left: 50%; bottom: max(14px, env(safe-area-inset-bottom)); transform: translateX(-50%); z-index: 9995; display: flex; gap: 14px; align-items: center; max-width: calc(100% - 24px); background: #F3E6C8; color: #3A2C17; border: 2px solid #3A2C17; border-radius: 12px; padding: 10px 12px 10px 16px; font-family: Georgia, 'Times New Roman', serif; font-size: 15px; box-shadow: 0 10px 30px rgba(0, 0, 0, .35); }
.roy-1958-bandeau button { flex: none; cursor: pointer; border: 0; border-radius: 999px; background: #0E1430; color: #F4EA4B; font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 16px; padding: 8px 14px; }
@media (max-width: 560px) { .roy-1958-bandeau { flex-direction: column; text-align: center; gap: 8px; } }
/* Édition spéciale d'Olivier Pire */
.roy-pire { background: rgba(14, 20, 48, .82); display: flex; align-items: center; justify-content: center; padding: 20px; }
.roy-pire__une { width: min(560px, 92vw); background: #F3E9D2; color: #1D1A14; padding: 22px 26px 18px; box-shadow: 0 30px 70px rgba(0, 0, 0, .6); font-family: Georgia, 'Times New Roman', serif; animation: roy-une 1.1s cubic-bezier(.2, .8, .3, 1) both; filter: sepia(.25); }
@keyframes roy-une { from { transform: rotate(-1080deg) scale(.05); } to { transform: rotate(-2deg) scale(1); } }
.roy-pire__une header { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; border-bottom: 3px double #1D1A14; padding-bottom: 6px; font-size: 12px; text-transform: uppercase; letter-spacing: .08em; }
.roy-pire__une header b { font-size: clamp(22px, 5vw, 34px); letter-spacing: 0; text-transform: none; font-style: italic; }
.roy-pire__une h2 { margin: 14px 0 10px; font-family: Georgia, serif !important; font-size: clamp(28px, 6vw, 46px); line-height: 1; text-transform: uppercase; font-weight: 900; color: #1D1A14; }
.roy-pire__corps { display: grid; grid-template-columns: 42% 1fr; gap: 14px; align-items: start; }
.roy-pire__corps img { width: 100% !important; height: auto !important; filter: grayscale(1) contrast(1.15); border: 1px solid #1D1A14; }
.roy-pire__corps p { margin: 0; font-size: 15px; line-height: 1.45; text-align: justify; }
.roy-pire__une footer { margin-top: 12px; border-top: 1px solid #1D1A14; padding-top: 6px; font-size: 13px; font-style: italic; text-align: right; }
.roy-pire-mot { font: inherit; color: var(--jaune); background: none; border: 0; padding: 0; cursor: pointer; text-decoration: underline dotted 2px; text-underline-offset: 4px; }
/* Les Roligris s'envolent */
.roy-vol__oiseau { position: absolute; left: 0; top: 0; width: 60px; }
.roy-vol__oiseau svg { display: block; overflow: visible; }
.roy-vol__oiseau .aile { transform-origin: 22px 20px; animation: roy-aile .22s ease-in-out infinite alternate; }
@keyframes roy-aile { to { transform: scaleY(-.6); } }
.roy-vol__oiseau em { position: absolute; left: 34px; top: -24px; font-style: italic; font-family: var(--cond); font-weight: 800; text-transform: uppercase; font-size: 16px; color: var(--nuit); background: #fff; border-radius: 8px; padding: 2px 7px; border: 2px solid var(--nuit); }
/* Surprise de l'agenda */
.roy-ag-surprise { display: flex; align-items: flex-end; justify-content: center; padding-bottom: max(28px, env(safe-area-inset-bottom)); }
.roy-ag-surprise__bulle { position: relative; max-width: min(520px, 92vw); background: var(--jaune); color: var(--nuit); border: 3px solid var(--nuit); border-radius: 18px; padding: 16px 20px; box-shadow: 0 16px 40px rgba(0, 0, 0, .4); animation: roy-pop-cri .4s cubic-bezier(.2, .9, .3, 1.4) both; text-align: center; }
.roy-ag-surprise__bulle p { margin: 0; font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 22px; line-height: 1.1; }
.roy-ag-surprise__bulle small { display: block; margin-top: 6px; font-size: .75em; }
.roy-ag-surprise--nicolas .roy-ag-surprise__bulle { background: #fff; border-color: #B3121F; }
.roy-ag-surprise__mitre { position: absolute; left: 50%; top: -46px; width: 46px; height: 56px; margin-left: -23px; background: #B3121F; clip-path: polygon(50% 0, 100% 30%, 100% 100%, 0 100%, 0 30%); border-bottom: 8px solid #F4EA4B; }
.roy-ag-surprise__mitre::after { content: ""; position: absolute; left: 50%; top: 14px; width: 6px; height: 24px; margin-left: -3px; background: #F4EA4B; box-shadow: 0 9px 0 -0px transparent; }
.roy-ag-mandarine, .roy-ag-speculoos { position: absolute; top: 0; }
.roy-ag-mandarine { width: 26px; height: 24px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #FFB347, #F07F12 60%, #C35F00); }
.roy-ag-mandarine::after { content: ""; position: absolute; top: -4px; left: 11px; width: 9px; height: 6px; border-radius: 50% 0; background: #3E8E3B; }
.roy-ag-speculoos { width: 34px; height: 22px; border-radius: 4px; background: #B5651D; box-shadow: inset 0 0 0 3px #9A5317; }

/* Bandeau « Laissez-nous un avis Google » (toutes les pages) */
.roy-avis { background: var(--jaune); color: var(--nuit); padding: 28px 0; border-top: 4px solid var(--nuit); }
.roy-avis__ligne { display: flex; flex-wrap: wrap; gap: 14px 28px; align-items: center; justify-content: space-between; }
.roy-avis__etoiles { font-size: 34px; letter-spacing: 4px; line-height: 1; color: var(--nuit); }
.roy-avis__texte { flex: 1 1 360px; }
.roy-avis h2 { color: var(--nuit) !important; font-size: clamp(26px, 3.2vw, 38px); margin: 0 0 4px; }
.roy-avis p { margin: 0; color: var(--nuit); font-weight: 600; }
.roy-avis__bouton { display: inline-flex !important; align-items: center; gap: 10px; background: #fff !important; border-color: #fff !important; color: var(--nuit) !important; }
.roy-avis__bouton:hover { background: var(--nuit) !important; border-color: var(--nuit) !important; color: #fff !important; }
.roy-avis__bouton svg { flex: none; background: #fff; border-radius: 50%; }
@media (max-width: 640px) { .roy-avis__etoiles { font-size: 26px; } .roy-avis__bouton { width: 100%; justify-content: center; } }

/* ===== Chasse aux easter eggs ===== */
.roy-chasse { position: fixed; inset: 0; z-index: 10001; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(14, 20, 48, .72); animation: roy-jk-voile .3s ease both; }
.roy-chasse.is-fin { opacity: 0; transition: opacity .35s; }
.roy-chasse__boite { position: relative; width: min(460px, 100%); max-height: calc(100vh - 32px); overflow: auto; background: var(--marine); color: var(--ivoire); border: 3px solid var(--jaune); border-radius: 20px; padding: 26px 24px 22px; text-align: center; font-family: var(--texte); box-shadow: 0 30px 70px rgba(0, 0, 0, .55); animation: roy-pop-cri .4s cubic-bezier(.2, .9, .3, 1.3) both; }
.roy-chasse__boite h2 { font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 32px; line-height: 1; color: #fff; margin: 0 0 12px; }
.roy-chasse__boite p { margin: 0 0 14px; }
.roy-chasse__x { position: absolute; top: 8px; right: 12px; background: none; border: 0; color: #fff; font-size: 28px; line-height: 1; cursor: pointer; }
.roy-chasse__premier { font-weight: 700; color: var(--jaune); }
.roy-chasse__lot { font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 40px; color: var(--jaune); margin: 6px 0 4px !important; }
.roy-chasse__form { display: grid; gap: 10px; text-align: left; }
.roy-chasse__form label { display: grid; gap: 4px; font-weight: 700; font-size: 14px; color: #fff; }
.roy-chasse__form input, .roy-chasse__form select { width: 100%; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--trait); background: var(--nuit); color: #fff; font: inherit; }
.roy-chasse__form .roy-bouton { justify-self: center; margin-top: 4px; cursor: pointer; }
.roy-chasse__err { color: #FF8A80; font-size: 14px; margin: 0 !important; }
.roy-chasse__merci strong { color: var(--jaune); font-size: 1.2em; letter-spacing: .08em; }
.roy-chasse .roy-bouton { cursor: pointer; font-family: var(--texte); }
.roy-roue { position: relative; display: grid; justify-items: center; gap: 14px; margin: 6px 0 12px; }
.roy-roue__disque { width: 240px; height: 240px; transition: transform 4.2s cubic-bezier(.15, .85, .2, 1); filter: drop-shadow(0 10px 18px rgba(0, 0, 0, .4)); }
.roy-roue__fleche { position: absolute; top: -6px; left: 50%; margin-left: -14px; width: 0; height: 0; border-left: 14px solid transparent; border-right: 14px solid transparent; border-top: 26px solid #fff; z-index: 1; filter: drop-shadow(0 2px 2px rgba(0, 0, 0, .4)); }
@media (prefers-reduced-motion: reduce) { .roy-roue__disque { transition-duration: .2s; } }

/* Robot qui tond « ROY » */
.roy-pelouse__robot.is-cliquable { pointer-events: auto; cursor: pointer; }
.roy-pelouse__roy { position: absolute; bottom: 20px; z-index: 2; height: 78px; display: flex; align-items: center; justify-content: center; font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 86px; line-height: 1; letter-spacing: .06em; color: #2F6B2C; text-shadow: 0 2px 0 rgba(255, 255, 255, .18), 0 -2px 0 rgba(0, 0, 0, .2); background: repeating-linear-gradient(90deg, rgba(0, 0, 0, .06) 0 6px, transparent 6px 12px); -webkit-background-clip: text; pointer-events: none; transition: opacity 1.2s; }
.roy-pelouse__roy.is-fin { opacity: 0; }
@media (max-width: 640px) { .roy-pelouse__roy { font-size: 60px; height: 60px; } }
/* Crème solaire et trêve hivernale */
.roy-pelouse__patrick .roy-pelouse__creme { position: absolute; left: 20%; top: 32%; width: 13% !important; height: auto !important; transform-origin: 50% 90%; animation: roy-creme 2.4s ease-in-out infinite; }
@keyframes roy-creme { 0%, 100% { transform: rotate(-30deg) translateY(0); } 50% { transform: rotate(-60deg) translate(10%, -12%); } }
.roy-pelouse__tache { position: absolute; left: 46%; top: 27%; width: 8%; height: 5%; border-radius: 50%; background: #fff; opacity: .9; box-shadow: 0 0 0 2px rgba(255, 255, 255, .5); }
.roy-pelouse__eclat { position: absolute; left: 64%; top: 18%; width: 14px; height: 14px; background: #fff; clip-path: polygon(50% 0, 62% 38%, 100% 50%, 62% 62%, 50% 100%, 38% 62%, 0 50%, 38% 38%); animation: roy-eclat 1.6s ease-in-out infinite; }
@keyframes roy-eclat { 0%, 100% { transform: scale(.3) rotate(0); opacity: 0; } 50% { transform: scale(1.4) rotate(45deg); opacity: 1; } }
.roy-pelouse__patrick .roy-pelouse__couverture { position: absolute; left: 30%; bottom: -3%; width: 74% !important; height: 44% !important; filter: drop-shadow(-4px -2px 6px rgba(14, 20, 48, .35)); }
.roy-pelouse.is-treve::before { content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none; background: repeating-linear-gradient(60deg, rgba(255, 255, 255, .35) 0 2px, transparent 2px 9px), repeating-linear-gradient(-60deg, rgba(255, 255, 255, .25) 0 2px, transparent 2px 11px); mix-blend-mode: screen; }
/* Traceur fatigué sur le classement */
.roy-classement.has-traceur { position: relative; }
.roy-classement__traceur { position: absolute; right: 18px; top: -76px; width: 92px !important; height: auto !important; z-index: 2; animation: roy-assis .6s cubic-bezier(.3, 1.5, .5, 1) both; }
.roy-classement__traceur:hover { animation: roy-sursaut .5s; }
@keyframes roy-assis { from { transform: translateY(-80px); opacity: 0; } }
.roy-classement__ouf { position: absolute; right: 112px; top: -66px; background: #fff; color: var(--nuit); font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; padding: 5px 10px; border-radius: 10px; border: 2px solid var(--nuit); animation: roy-pop-cri .4s .6s both; }
/* Compte à rebours fou */
.roy-decompte.is-fou { position: relative; animation: roy-fou .25s linear infinite; }
.roy-decompte.is-fou span { color: #FF5A3C !important; }
.roy-decompte.is-fou::before, .roy-decompte.is-fou::after { content: ""; position: absolute; bottom: -10px; width: 70px; height: 70px; border-radius: 50%; filter: blur(14px); pointer-events: none; animation: roy-fumee 2.6s ease-out infinite; }
.roy-decompte.is-fou::before { left: -30px; background: rgba(244, 234, 75, .8); }
.roy-decompte.is-fou::after { right: -30px; background: rgba(30, 85, 149, .9); animation-delay: .8s; }
@keyframes roy-fou { 0%, 100% { transform: translate(0, 0) rotate(0); } 25% { transform: translate(-1px, 1px) rotate(-.6deg); } 75% { transform: translate(1px, -1px) rotate(.6deg); } }
/* Logo qui saute de joie */
.roy-match { position: relative; }
.roy-match__joie { position: absolute; left: 6px; top: -10px; width: 30px !important; height: auto !important; pointer-events: none; animation: roy-joie 2.4s ease-out forwards; z-index: 3; }
@keyframes roy-joie { 0% { transform: translateY(10px) scale(.4); opacity: 0; } 15% { transform: translateY(-34px) scale(1.1) rotate(-10deg); opacity: 1; } 30% { transform: translateY(-6px) scale(1); } 45% { transform: translateY(-30px) rotate(10deg); } 60% { transform: translateY(-6px) rotate(0); } 75% { transform: translateY(-20px); } 100% { transform: translateY(-6px); opacity: 0; } }
/* Photo des U7 qui saute */
.roy-eq-photo { position: relative; }
.roy-eq-photo.is-saute img { animation: roy-photo-saut 1.8s ease-in-out; }
@keyframes roy-photo-saut { 0%, 100% { transform: none; } 12% { transform: scale(1.03, .94) translateY(8px); } 24% { transform: scale(.97, 1.05) translateY(-34px); } 36% { transform: scale(1.03, .95) translateY(4px); } 48% { transform: scale(.98, 1.04) translateY(-26px); } 60% { transform: scale(1.02, .97) translateY(3px); } 72% { transform: translateY(-14px); } 84% { transform: none; } }
.roy-eq-photo.is-saute::after { content: ""; position: absolute; inset: 0; background: #fff; pointer-events: none; animation: roy-flash .5s 1.6s ease-out both; }
@keyframes roy-flash { 0% { opacity: 0; } 20% { opacity: .9; } 100% { opacity: 0; } }
.roy-eq-photo__cheese { position: absolute; left: 50%; top: 10%; transform: translateX(-50%); background: var(--jaune); color: var(--nuit); font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 30px; padding: 6px 18px; border-radius: 999px; border: 3px solid var(--nuit); animation: roy-pop-cri .4s 1.5s both; z-index: 2; }
/* Fricadelle oubliée */
.roy-pelouse__fricadelle { position: absolute; left: 4%; bottom: 22px; z-index: 2; background: none; border: 0; padding: 0; cursor: pointer; width: 96px; transform: rotate(-8deg); }
.roy-pelouse__fricadelle img { display: block; width: 100% !important; height: auto !important; clip-path: inset(0 calc(var(--croque, 0) * 22%) 0 0 round 0 40% 40% 0); transition: clip-path .3s; }
.roy-pelouse__fricadelle.is-mangee { opacity: 0; transition: opacity .6s; pointer-events: none; }
.roy-pelouse__cri--fric { right: auto; left: 0; bottom: 100%; margin-bottom: 8px; transform-origin: 20% 120%; }
.roy-pelouse__cri--fric::after { right: auto; left: 22%; }
/* La tireuse */
.roy-entete-page__titres.has-tireuse { position: relative; }
.roy-tireuse { position: absolute; right: -10px; bottom: 0; background: none; border: 0; padding: 0; cursor: pointer; width: 74px; }
.roy-tireuse img { display: block; width: 100% !important; height: auto !important; }
.roy-tireuse.is-tire img { animation: roy-tire .3s ease-out both; }
@keyframes roy-tire { to { transform: rotate(-4deg) translateY(2px); } }
.roy-tireuse__sante { position: absolute; right: 70%; top: -10px; white-space: nowrap; background: #fff; color: var(--nuit); font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; padding: 5px 12px; border-radius: 10px; border: 2px solid var(--nuit); animation: roy-pop-cri .35s both; }
h1.is-biere, h1.is-biere * { color: transparent !important; -webkit-text-fill-color: transparent !important; }
h1.is-biere { background: linear-gradient(to top, #E8A317 0 var(--n, 0%), #FFF4D6 var(--n, 0%) calc(var(--n, 0%) + 9%), rgba(255, 255, 255, .25) calc(var(--n, 0%) + 9%)); -webkit-background-clip: text; background-clip: text; }
@media (max-width: 640px) { .roy-tireuse { width: 52px; right: 0; bottom: -10px; } }
/* Tampon 6120 */
.roy-tampon { display: flex; align-items: center; justify-content: center; }
.roy-tampon__marque { display: grid; justify-items: center; padding: 18px 34px; border: 8px double #C8102E; border-radius: 16px; color: #C8102E; background: rgba(255, 255, 255, .9); font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; line-height: .95; transform: rotate(-12deg); animation: roy-tampon .45s cubic-bezier(.2, 1.4, .4, 1) both; box-shadow: 0 20px 50px rgba(0, 0, 0, .4); -webkit-mask: radial-gradient(circle at 30% 40%, #000 60%, rgba(0, 0, 0, .75) 61%); }
.roy-tampon__marque span { font-size: clamp(22px, 4vw, 36px); letter-spacing: .08em; }
.roy-tampon__marque b { font-size: clamp(70px, 14vw, 150px); }
@keyframes roy-tampon { from { transform: rotate(-12deg) scale(3); opacity: 0; } 70% { transform: rotate(-12deg) scale(.92); opacity: 1; } to { transform: rotate(-12deg) scale(1); } }
/* VAR */
.roy-var { background: rgba(14, 20, 48, .55); display: flex; align-items: center; justify-content: center; }
.roy-var::before { content: ""; position: absolute; inset: 0; background: repeating-linear-gradient(0deg, rgba(255, 255, 255, .06) 0 2px, transparent 2px 4px); animation: roy-var-scan 1s linear infinite; }
@keyframes roy-var-scan { to { background-position: 0 40px; } }
.roy-var__cadre { position: relative; text-align: center; padding: 26px 34px; border: 4px solid #fff; border-radius: 10px; background: rgba(14, 20, 48, .85); box-shadow: 0 0 0 9999px rgba(0, 0, 0, .15); }
.roy-var__logo { display: inline-block; width: 120px; height: 84px; border: 6px solid #fff; border-radius: 6px; font-family: var(--cond); font-weight: 800; font-size: 46px; line-height: 72px; color: #fff; margin-bottom: 14px; animation: roy-var-rect 1.4s ease-in-out infinite; }
@keyframes roy-var-rect { 50% { transform: scale(1.06); box-shadow: 0 0 24px rgba(255, 255, 255, .6); } }
.roy-var__cadre p { margin: 0; font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; color: #fff; }
.roy-var__l1 { font-size: 30px; animation: roy-var-l1 2.2s steps(1) both; }
.roy-var__l2 { font-size: 52px; color: #3CE07A !important; opacity: 0; animation: roy-monte .4s 2.3s forwards; }
@keyframes roy-var-l1 { 0%, 99% { opacity: 1; } 100% { opacity: .35; } }

/* Pages par commune : modèle Rejoindre */
.roy-commune .roy-ariane { font-size: 14px; color: var(--brume); padding-top: 4px; margin-bottom: 14px; }
.roy-commune .roy-ariane a { color: var(--brume) !important; text-decoration: underline; text-underline-offset: 3px; }
.roy-commune .roy-ariane span { color: #fff; }
.roy-commune h1 { font-size: clamp(40px, 5.6vw, 78px) !important; }
.roy-atouts__intro { max-width: 760px; font-size: 18px; color: var(--brume); margin: -6px 0 22px !important; }
.roy-atouts__liste--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1080px) { .roy-atouts__liste--4 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .roy-atouts__liste--4 { grid-template-columns: 1fr; } }
.roy-trajet { background: var(--marine); padding: 56px 0; scroll-margin-top: 80px; }
.roy-trajet p { color: var(--brume); }
.roy-trajet__table { overflow-x: auto; margin: 18px 0 10px; border-radius: 16px; border: 1px solid var(--trait); }
.roy-trajet table { width: 100%; border-collapse: collapse; min-width: 420px; }
.roy-trajet :is(th, td) { padding: 11px 16px; text-align: left; border-bottom: 1px solid var(--trait); color: #fff; font-size: 16px; }
.roy-trajet thead th { background: var(--nuit); color: var(--jaune); font-size: 13px; text-transform: uppercase; letter-spacing: .08em; }
.roy-trajet tbody th { font-weight: 700; }
.roy-trajet tbody tr:nth-child(odd) { background: rgba(14, 20, 48, .35); }
.roy-trajet td:nth-child(2) { width: 46%; }
.roy-trajet__barre { display: inline-block; vertical-align: middle; height: 10px; width: calc(var(--p) * .7); min-width: 10px; margin-right: 10px; border-radius: 999px; background: linear-gradient(90deg, var(--jaune), #E8C93A); }
.roy-trajet td strong { color: var(--jaune); font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 20px; vertical-align: middle; }
.roy-trajet__note { font-size: 13px; }
.roy-proche { background: var(--roi); padding: 34px 0; }
.roy-proche__ligne { display: flex; flex-wrap: wrap; gap: 16px 28px; align-items: center; justify-content: space-between; }
.roy-proche__texte { margin: 0 !important; max-width: 760px; font-size: 19px; font-weight: 600; color: #fff; }
.roy-commune-equipes { background: var(--nuit); padding: 44px 0; }
.roy-commune-equipes__liste { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.roy-commune-equipes__liste a { display: inline-block; padding: 10px 18px; border-radius: 999px; background: var(--marine); border: 1px solid var(--trait); color: #fff !important; text-decoration: none; font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 20px; text-transform: uppercase; }
.roy-commune-equipes__liste a:hover { border-color: var(--jaune); color: var(--jaune) !important; }
.roy-commune__maj { color: var(--gris); font-size: 13px; padding-top: 18px; padding-bottom: 18px; margin: 0 auto; background: none; }
.roy-cta-mobile { display: none; }
@media (max-width: 760px) {
	.roy-cta-mobile { display: block; position: fixed; left: 12px; right: 12px; bottom: max(12px, env(safe-area-inset-bottom)); z-index: 900; text-align: center; background: var(--jaune); color: var(--nuit) !important; font-weight: 800; text-decoration: none; padding: 15px; border-radius: 999px; box-shadow: 0 10px 30px rgba(0, 0, 0, .45); transition: transform .3s, opacity .3s; }
	.roy-cta-mobile.is-cache { transform: translateY(140%); opacity: 0; pointer-events: none; }
}

/* Label ACFF une étoile */
.roy-label-acff { display: inline-flex; align-items: center; gap: 12px; padding: 8px 18px 8px 8px; border-radius: 999px; background: var(--marine); border: 2px solid var(--jaune); color: #fff; text-decoration: none; }
.roy-label-acff__etoile { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; border-radius: 50%; background: var(--jaune); color: var(--nuit); font-size: 24px; line-height: 1; }
.roy-label-acff__texte { display: grid; line-height: 1.15; }
.roy-label-acff__texte b { font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 20px; color: #fff; }
.roy-label-acff__texte small { font-size: 13px; color: var(--brume); }
.roy-chiffres__label { display: flex; justify-content: center; margin-top: -24px; padding-bottom: 44px; }
.roy-entete-page__label { grid-area: label; margin: 0 !important; }
.roy-rejoindre__atouts li.roy-rejoindre__label { background: var(--roi); }
.roy-rejoindre__atouts li.roy-rejoindre__label::before { content: "★"; }
@media (max-width: 640px) { .roy-chiffres__label { margin-top: -16px; padding-bottom: 32px; } .roy-label-acff__texte b { font-size: 17px; } }

/* ===== Coffre du matricule 6120 ===== */
.roy-coffre-mot, .roy-neige-mot, .roy-carte-mot { font: inherit; color: var(--jaune); background: none; border: 0; padding: 0; cursor: pointer; text-decoration: underline dotted 2px; text-underline-offset: 4px; }
.roy-coffre__dessin { position: relative; width: 150px; height: 120px; margin: 4px auto 10px; }
.roy-coffre__caisse { position: absolute; left: 10px; right: 10px; bottom: 0; height: 66px; background: linear-gradient(#8A5A2B, #6B4220); border: 4px solid #3A220D; border-radius: 6px; box-shadow: inset 0 -10px 0 rgba(0, 0, 0, .2); }
.roy-coffre__caisse::before { content: ""; position: absolute; inset: 0; background: repeating-linear-gradient(90deg, transparent 0 28px, rgba(0, 0, 0, .25) 28px 32px); }
.roy-coffre__couvercle { position: absolute; left: 6px; right: 6px; bottom: 62px; height: 40px; background: linear-gradient(#9C6A35, #7A4D24); border: 4px solid #3A220D; border-radius: 40px 40px 6px 6px; transform-origin: 50% 100%; transition: transform .8s cubic-bezier(.3, 1.5, .5, 1); z-index: 2; }
.roy-coffre__cadenas { position: absolute; left: 50%; bottom: 44px; width: 26px; height: 24px; margin-left: -13px; background: var(--jaune); border: 3px solid #3A220D; border-radius: 5px; z-index: 3; transition: opacity .4s; }
.roy-coffre__cadenas::before { content: ""; position: absolute; left: 3px; top: -15px; width: 14px; height: 16px; border: 3px solid #3A220D; border-bottom: 0; border-radius: 10px 10px 0 0; }
.roy-coffre__lumiere { position: absolute; left: 50%; bottom: 60px; width: 10px; height: 10px; margin-left: -5px; border-radius: 50%; background: #FFF6A8; box-shadow: 0 0 0 0 rgba(255, 240, 150, 0); opacity: 0; transition: all .8s .3s; }
.roy-coffre.is-ouvert .roy-coffre__couvercle { transform: rotateX(70deg) translateY(-14px) rotate(-14deg); }
.roy-coffre.is-ouvert .roy-coffre__cadenas { opacity: 0; }
.roy-coffre.is-ouvert .roy-coffre__lumiere { opacity: 1; box-shadow: 0 0 60px 50px rgba(255, 240, 150, .75); }
.roy-coffre__serrures { list-style: none; display: flex; justify-content: center; gap: 10px; margin: 0 0 14px; padding: 0; }
.roy-coffre__serrures li { width: 28px; height: 28px; border-radius: 50%; border: 3px solid var(--trait); background: var(--nuit); position: relative; }
.roy-coffre__serrures li.is-ouverte { border-color: var(--jaune); background: var(--jaune); }
.roy-coffre__serrures li.is-ouverte::after { content: "✓"; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: var(--nuit); font-weight: 800; }
.roy-coffre__titre { font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; color: var(--jaune); margin: 0 !important; }
.roy-tampon__indice { display: block; margin-top: 8px; font-size: 18px; color: var(--nuit); text-transform: none; letter-spacing: 0; }
/* ===== Tempête de neige de 1958 ===== */
.roy-tempete { background: linear-gradient(#5E6B7D, #9AA6B5); filter: none; }
.roy-tempete__flocon { position: absolute; left: 0; top: 0; border-radius: 50%; background: #fff; opacity: .9; }
.roy-tempete__titre { position: absolute; top: 18%; left: 0; right: 0; text-align: center; font-family: Georgia, serif; font-style: italic; font-size: clamp(54px, 10vw, 120px); color: #fff; text-shadow: 0 4px 20px rgba(0, 0, 0, .35); animation: roy-monte 1s .4s both; filter: sepia(.35); }
.roy-tempete__titre small { display: block; font-size: .24em; letter-spacing: .14em; text-transform: uppercase; margin-top: 8px; }
.roy-tempete__tas { position: absolute; left: -5%; right: -5%; bottom: 0; height: 0; background: #fff; border-radius: 50% 50% 0 0 / 30px 30px 0 0; box-shadow: 0 -6px 30px rgba(255, 255, 255, .6); animation: roy-tas 6s .5s ease-out forwards; }
@keyframes roy-tas { to { height: 18vh; } }
.roy-tempete__phrase { position: absolute; left: 0; right: 0; bottom: 6vh; text-align: center; padding: 0 20px; font-family: Georgia, serif; font-style: italic; font-size: clamp(18px, 2.4vw, 26px); color: #3A4A5E; opacity: 0; animation: roy-monte .8s 3.6s forwards; z-index: 2; }
/* ===== Le wallon des fondateurs ===== */
.roy-patois { cursor: pointer; transition: transform .2s; }
.roy-patois:hover { transform: translateX(4px); }
.roy-patois:not(.is-traduit) p::after { content: " 🔎"; font-size: .55em; vertical-align: middle; }
.roy-patois.is-traduit p { line-height: 1.9 !important; }
.roy-patois__mot { display: inline-flex; flex-direction: column; align-items: center; margin: 0 2px; animation: roy-patois-saut .5s calc(var(--i) * .18s) both; }
.roy-patois__mot small { font-family: var(--texte); font-style: normal; font-weight: 600; font-size: 14px; line-height: 1.1; color: var(--ivoire); background: var(--roi); border-radius: 6px; padding: 2px 6px; margin-top: 2px; animation: roy-pop-cri .35s calc(var(--i) * .18s + .25s) both; }
@keyframes roy-patois-saut { 0% { transform: translateY(0); } 40% { transform: translateY(-10px); } 100% { transform: translateY(0); } }
.roy-patois { position: relative; }
.roy-patois__tampon { position: absolute; right: 16px; top: 8px; transform: rotate(6deg); background: var(--jaune); color: var(--nuit); font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 14px; padding: 4px 10px; border-radius: 6px; border: 2px solid var(--nuit); animation: roy-tampon .45s 1.6s cubic-bezier(.2, 1.4, .4, 1) both; }
/* ===== Carte des trois pays ===== */
.roy-carte__boite { width: min(640px, 100%); }
.roy-carte__consigne { color: var(--brume); }
.roy-carte__fond { position: relative; margin: 0 auto 10px; max-width: 460px; border-radius: 14px; overflow: hidden; border: 3px solid var(--jaune); }
.roy-carte__fond img { display: block; width: 100% !important; height: auto !important; }
.roy-carte__trajets { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.roy-carte__trajet { fill: none; stroke: var(--jaune); stroke-width: .8; stroke-dasharray: 1; stroke-dashoffset: 1; animation: roy-trajet 1.6s ease-out forwards; vector-effect: non-scaling-stroke; }
.roy-carte__trajets path { stroke-width: 3; }
@keyframes roy-trajet { to { stroke-dashoffset: 0; } }
.roy-carte__pin { position: absolute; transform: translate(-50%, -50%); background: none; border: 0; padding: 6px; cursor: pointer; z-index: 2; }
.roy-carte__point { display: block; width: 18px; height: 18px; border-radius: 50%; background: #fff; border: 3px solid var(--nuit); box-shadow: 0 0 0 3px rgba(255, 255, 255, .5); margin: 0 auto; }
.roy-carte__pin--roy .roy-carte__point { background: var(--jaune); }
.roy-carte__nom { position: absolute; left: 50%; top: 100%; transform: translateX(-50%); white-space: nowrap; font-size: 11px; font-weight: 700; color: #fff; background: rgba(14, 20, 48, .8); padding: 1px 6px; border-radius: 6px; opacity: 0; transition: opacity .2s; }
.roy-carte__pin:hover .roy-carte__nom, .roy-carte__pin:focus-visible .roy-carte__nom, .roy-carte__pin--roy .roy-carte__nom, .roy-carte__pin.is-gagne .roy-carte__nom, .roy-carte__pin.is-rate .roy-carte__nom { opacity: 1; }
.roy-carte__pin.is-rate .roy-carte__point { background: #9AA3B8; animation: roy-fou .25s 2; }
.roy-carte__pin.is-gagne .roy-carte__point { background: var(--jaune); transform: scale(1.4); box-shadow: 0 0 0 4px rgba(244, 234, 75, .5), 0 0 22px var(--jaune); }
.roy-carte__retour { min-height: 2.6em; font-weight: 600; color: #fff; }
.roy-carte__etoiles { display: flex; justify-content: center; gap: 12px; font-size: 40px; line-height: 1; color: var(--trait); }
.roy-carte__etoiles .is-allumee { color: var(--jaune); text-shadow: 0 0 18px var(--jaune); animation: roy-tampon .5s cubic-bezier(.2, 1.4, .4, 1) both; }
/* ===== Le Roligri en nocturne ===== */
.roy-plan__photo img { transition: filter 1s ease; }
.roy-plan__photo.is-nuit img { filter: brightness(.3) saturate(.55) contrast(1.1); }
.roy-nuit { position: absolute; inset: 4px; border-radius: 18px; overflow: hidden; pointer-events: none; opacity: 0; transition: opacity .6s; }
.roy-plan__photo.is-nuit .roy-nuit { opacity: 1; }
.roy-nuit__projo { position: absolute; width: 34%; aspect-ratio: 1; transform: translate(-50%, -50%) scale(0); border-radius: 50%; background: radial-gradient(circle, rgba(255, 252, 220, .85) 0 4%, rgba(255, 248, 200, .38) 12%, rgba(255, 245, 190, 0) 62%); mix-blend-mode: screen; }
.roy-plan__photo.is-nuit .roy-nuit__projo { animation: roy-projo .5s calc(.4s + var(--i) * .35s) cubic-bezier(.2, 1.4, .4, 1) forwards; }
@keyframes roy-projo { 0% { transform: translate(-50%, -50%) scale(0); } 60% { transform: translate(-50%, -50%) scale(1.15); } 100% { transform: translate(-50%, -50%) scale(1); } }
.roy-nuit__titre { position: absolute; left: 50%; bottom: 8%; transform: translateX(-50%); white-space: nowrap; font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: clamp(18px, 2.6vw, 30px); color: var(--jaune); text-shadow: 0 0 18px rgba(244, 234, 75, .7); opacity: 0; animation: roy-monte .6s 2.6s forwards; }
.roy-agenda-page { scroll-margin-top: 80px; }
.roy-agenda-page__tete { margin-bottom: 22px; }
.roy-agenda-page__tete p:last-child { color: var(--brume); max-width: 720px; }
main.roy-main { padding-bottom: 72px; } /* place pour le chapeau de Patrick, qui dépasse au-dessus de la pelouse */
@media (max-width: 640px) { main.roy-main { padding-bottom: 36px; } }

/* Anniversaires du jour : chapeau de fête sur la carte du joueur */
.roy-joueur.is-anniversaire .roy-joueur__recto { box-shadow: 0 0 0 3px var(--jaune), 0 10px 26px rgba(244, 234, 75, .25); }
.roy-joueur__chapeau { position: absolute; left: 50%; top: -6px; z-index: 2; width: 46px; height: 54px; margin-left: -23px; transform: rotate(-12deg); background: repeating-linear-gradient(135deg, var(--jaune) 0 8px, var(--roi) 8px 16px); clip-path: polygon(50% 0, 100% 100%, 0 100%); filter: drop-shadow(0 3px 4px rgba(0, 0, 0, .35)); animation: roy-chapeau 2.2s ease-in-out infinite; }
.roy-joueur__chapeau::before { content: ""; position: absolute; left: 50%; top: -2px; width: 12px; height: 12px; margin-left: -6px; border-radius: 50%; background: #fff; }
@keyframes roy-chapeau { 0%, 100% { transform: rotate(-12deg); } 50% { transform: rotate(-4deg) translateY(-3px); } }
.roy-joueur__fete { display: block; margin: 6px 0; padding: 4px 8px; border-radius: 999px; background: var(--nuit); color: var(--jaune); font-weight: 800; font-size: 12px; }

/* Pages d'inscription par catégorie */
.roy-insc-staff { background: var(--marine); padding: 52px 0; }
.roy-insc-staff__grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; margin-top: 8px; }
.roy-insc-staff__contact { margin-top: 18px !important; color: var(--brume); }
.roy-insc-staff__contact a { color: var(--jaune) !important; font-weight: 700; }
.roy-inscription__boite--cat .roy-tableau th[scope=row] { text-align: left; width: 42%; color: var(--brume); font-weight: 600; }
.roy-etapes__liste--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1000px) { .roy-etapes__liste--4 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .roy-etapes__liste--4 { grid-template-columns: 1fr; } }
.roy-quelle__outil { margin-top: 22px; max-width: 560px; background: var(--marine); border: 2px solid var(--jaune); border-radius: 18px; padding: 18px 20px; }
.roy-quelle__outil label { display: block; font-weight: 700; color: #fff; margin-bottom: 8px; }
.roy-quelle__outil select { width: 100%; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--trait); background: var(--nuit); color: #fff; font: inherit; font-size: 18px; }
.roy-quelle__resultat { margin: 12px 0 0 !important; color: #fff; font-size: 18px; }
.roy-quelle__resultat strong { color: var(--jaune); font-family: var(--cond); font-style: italic; font-size: 26px; text-transform: uppercase; }
.roy-quelle__resultat .roy-bouton { display: inline-block; margin-top: 10px; }
.roy-abo-equipes { border: 0; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.roy-abo-equipes legend { font-weight: 700; margin-bottom: 6px; padding: 0; }
.roy-abo-eq { display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 0 12px; border-radius: 999px; background: rgba(14,20,48,.08); cursor: pointer; font-weight: 600; }
.roy-abo-eq input { width: 18px; height: 18px; accent-color: var(--nuit); }
.roy-abo-copier { align-self: flex-start; min-height: 40px; padding: 0 14px; border-radius: 10px; border: 2px solid var(--nuit); background: transparent; color: var(--nuit); font: inherit; font-weight: 700; cursor: pointer; }
.roy-abo-android { padding: 10px 12px; border-radius: 12px; background: rgba(14,20,48,.08); font-size: 14px; }
.roy-agenda__btn[aria-disabled="true"] { opacity: .45; pointer-events: none; }

/* =========================================================
   0.18 · Easter eggs : déclencheurs cachés, quiz, carte, jongles, mode 1958
   ========================================================= */
@font-face { font-family: 'Special Elite'; src: url('../fonts/SpecialElite-400.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212; }
@font-face { font-family: 'Special Elite'; src: url('../fonts/SpecialElite-400-ext.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1E00-1EFF, U+20A0-20AB, U+20AD-20C4, U+2C60-2C7F, U+A720-A7FF; }

/* Petits déclencheurs posés sur les photos : discrets, mais une vraie zone de toucher. */
.roy-cache { position: absolute; z-index: 3; display: inline-flex; align-items: center; justify-content: center; min-width: 32px; min-height: 32px; margin: 0; padding: 0; border: 0; background: transparent; cursor: pointer; transform: translate(-50%, -50%); -webkit-tap-highlight-color: transparent; }
.roy-cache:focus-visible { outline: 2px dashed var(--jaune); outline-offset: 2px; border-radius: 6px; }
.roy-cache svg { display: block; filter: drop-shadow(0 1px 1px rgba(0,0,0,.35)); }
.roy-tache::before { content: ""; width: 13px; height: 9px; border-radius: 55% 45% 60% 40%; background: #0b0b0b; box-shadow: 0 0 0 1px rgba(0,0,0,.4); opacity: .85; }
.roy-tache.is-secoue { animation: roy-forage .35s ease; }
@keyframes roy-forage { 25% { transform: translate(-50%, -50%) translateY(2px) rotate(-6deg); } 75% { transform: translate(-50%, -50%) translateY(-2px) rotate(6deg); } }
.roy-journal { transform: translate(-50%, -50%) rotate(-12deg); opacity: .92; }
.roy-journal:hover { opacity: 1; }
.roy-ballon-cache { opacity: .9; }
.roy-porte-p1 { transform: none; width: 12.5%; height: 28%; min-width: 0; min-height: 0; border-radius: 4px; }
.roy-porte-p1 .roy-toc { position: absolute; right: -6px; top: 26%; width: 14px; height: 18px; pointer-events: none; }
.roy-toc i { position: absolute; left: 0; height: 2px; width: 8px; background: #fff; border-radius: 2px; opacity: 0; box-shadow: 0 0 2px rgba(0,0,0,.6); }
.roy-toc i:nth-child(1) { top: 0; transform: rotate(-35deg); }
.roy-toc i:nth-child(2) { top: 7px; width: 10px; }
.roy-toc i:nth-child(3) { top: 14px; transform: rotate(35deg); }
@media (prefers-reduced-motion: no-preference) { .roy-toc i { animation: roy-toc 7s infinite; } .roy-toc i:nth-child(2) { animation-delay: .12s; } .roy-toc i:nth-child(3) { animation-delay: .24s; } }
@media (prefers-reduced-motion: reduce) { .roy-toc i { opacity: .7; } }
@keyframes roy-toc { 0%, 82%, 100% { opacity: 0; transform: translateX(0); } 86%, 92% { opacity: 1; transform: translateX(3px); } }
.roy-pop { position: absolute; left: 50%; bottom: 100%; transform: translateX(-50%); white-space: nowrap; background: #fff; color: var(--nuit); font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 15px; padding: 3px 9px; border-radius: 8px; pointer-events: none; animation: roy-pop 1.2s ease forwards; }
@keyframes roy-pop { 0% { opacity: 0; transform: translate(-50%, 6px); } 15% { opacity: 1; transform: translate(-50%, 0); } 80% { opacity: 1; } 100% { opacity: 0; transform: translate(-50%, -10px); } }
.roy-flocon { position: absolute; left: 12%; top: 0; z-index: 3; transform: none; opacity: .8; }
@media (prefers-reduced-motion: no-preference) { .roy-flocon { animation: roy-flocon 26s linear infinite; } .roy-flocon svg { animation: roy-flocon-tourne 6s linear infinite; } }
@media (prefers-reduced-motion: reduce) { .roy-flocon { top: 40%; } }
@keyframes roy-flocon { 0% { top: 0; left: 12%; opacity: 0; } 5% { opacity: .85; } 50% { left: 18%; } 92% { opacity: .85; } 100% { top: calc(100% - 40px); left: 10%; opacity: 0; } }
@keyframes roy-flocon-tourne { to { transform: rotate(360deg); } }
.roy-interrupteur { opacity: .75; }
.roy-cuicui-cible { cursor: pointer; }
.roy-caravane.is-cliquable { pointer-events: auto; cursor: pointer; }
.roy-pelouse__cri--reveil { background: var(--jaune); }
.roy-pelouse__fricadelle--cachee { transform: scale(.55) translateY(42%); transform-origin: 50% 100%; clip-path: inset(0 0 38% 0); }
.roy-pied__matricule { white-space: nowrap; }
.roy-6120 { cursor: default; -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
.roy-6120.is-appui { color: var(--jaune); transition: color 1.8s linear; }

/* VAR : appui long sur un score, puis « Contester ». */
[data-panneau="res"] .roy-match { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; position: relative; }
[data-panneau="res"] .roy-match.is-appui { background: rgba(244, 234, 75, .08); }
.roy-contester { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); z-index: 2; font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 15px; background: var(--jaune); color: var(--nuit); border: 0; border-radius: 999px; padding: 6px 14px; cursor: pointer; box-shadow: 0 4px 12px rgba(0,0,0,.35); animation: roy-pop-in .25s ease both; }
@keyframes roy-pop-in { from { opacity: 0; transform: translateY(-50%) scale(.8); } }

/* Wallon : bouton « Écouter ». */
.roy-patois__ecouter { display: inline-flex; align-items: center; gap: 8px; margin: -6px 0 18px; font: inherit; font-size: 14px; font-weight: 700; color: var(--jaune); background: transparent; border: 1px solid var(--trait); border-radius: 999px; padding: 6px 14px; cursor: pointer; }
.roy-patois__ecouter.is-joue { background: var(--jaune); color: var(--nuit); border-color: var(--jaune); }

/* Billets des émirs. */
.roy-billet { position: fixed; z-index: 10000; pointer-events: none; display: inline-block; padding: 3px 8px; font-family: var(--cond); font-weight: 800; font-size: 13px; color: #1f4d1d; background: linear-gradient(135deg, #b9dca8, #8fc27c); border: 1.5px solid #2f6b2b; border-radius: 3px; box-shadow: 0 2px 4px rgba(0,0,0,.3); }
.roy-billet::before { content: "€ "; }

/* Carte des Lignières : replacer les six clubs. */
.roy-carte__boite { width: min(760px, 100%); }
.roy-carte__jeu { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 16px; align-items: start; margin-top: 10px; }
.roy-carte__fond { position: relative; border-radius: 12px; overflow: hidden; }
.roy-carte__fond img { display: block; width: 100%; height: auto; }
.roy-carte__point-vide { position: absolute; transform: translate(-50%, -50%); min-width: 28px; height: 28px; padding: 0 6px; border-radius: 999px; border: 2px dashed var(--jaune); background: rgba(14, 20, 48, .55); color: var(--nuit); font-family: var(--cond); font-weight: 800; font-size: 13px; cursor: pointer; white-space: nowrap; }
.roy-carte__point-vide.is-ok { border: 2px solid var(--nuit); background: var(--jaune); cursor: default; padding: 0 8px; }
.roy-carte__jetons { display: flex; flex-direction: column; gap: 8px; }
.roy-carte__jeton { font: inherit; font-size: 14px; font-weight: 700; text-align: left; color: var(--nuit); background: var(--ivoire); border: 2px solid transparent; border-radius: 10px; padding: 9px 12px; cursor: grab; touch-action: none; }
.roy-carte__jeton.is-choisi { border-color: var(--jaune); box-shadow: 0 0 0 3px rgba(244, 234, 75, .35); }
.roy-carte__jeton.is-faux { animation: roy-faux .35s ease; }
@keyframes roy-faux { 25% { transform: translateX(-6px); } 75% { transform: translateX(6px); } }
.roy-carte__fantome { position: fixed; z-index: 10003; pointer-events: none; transform: translate(-50%, -60%) rotate(-3deg); box-shadow: 0 8px 20px rgba(0,0,0,.4); }
.roy-carte__retour { min-height: 1.5em; margin: 12px 0 0; font-weight: 600; color: var(--jaune); }
@media (max-width: 640px) { .roy-carte__jeu { grid-template-columns: 1fr; } .roy-carte__jetons { flex-direction: row; flex-wrap: wrap; } .roy-carte__jeton { font-size: 13px; padding: 7px 10px; } }

/* Le quiz du club. */
.roy-quiz { background: var(--marine); border-top: 4px solid var(--jaune); padding: 54px 0; }
.roy-quiz__grille { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 36px; align-items: start; }
.roy-quiz__texte > p { max-width: 620px; color: var(--brume); }
.roy-quiz__regles { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; margin: 0 0 16px; padding: 0; }
.roy-quiz__regles li { background: var(--nuit); border: 1px solid var(--trait); border-radius: 999px; padding: 6px 14px; font-size: 15px; }
.roy-quiz__regles b { color: var(--jaune); }
.roy-quiz__petit { font-size: 14px; }
.roy-quiz__fait { color: var(--ivoire) !important; }
.roy-quiz__tableau { background: var(--nuit); border: 1px solid var(--trait); border-radius: 18px; padding: 20px 22px; }
.roy-quiz__tableau h3 { margin: 0 0 12px; font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 24px; color: #fff; }
.roy-quiz__classement { list-style: none; margin: 0; padding: 0; }
.roy-quiz__classement li { display: grid; grid-template-columns: 30px 1fr auto auto; gap: 10px; align-items: baseline; padding: 8px 0; border-top: 1px solid var(--trait); }
.roy-quiz__classement li:first-child { border-top: 0; }
.roy-quiz__classement b { font-family: var(--cond); font-weight: 800; font-size: 20px; color: var(--jaune); }
.roy-quiz__classement small { color: var(--gris); font-size: 13px; }
.roy-quiz__vide { color: var(--gris); margin: 0; }
@media (max-width: 860px) { .roy-quiz__grille { grid-template-columns: 1fr; } }
.roy-quiz-bandeau { display: flex; flex-wrap: wrap; gap: 6px 18px; align-items: center; justify-content: center; padding: 14px var(--pad); background: var(--jaune); color: var(--nuit); text-decoration: none; text-align: center; font-weight: 600; }
.roy-quiz-bandeau__titre { font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 22px; }
.roy-quiz-bandeau b { background: var(--nuit); color: var(--jaune); border-radius: 999px; padding: 5px 14px; font-family: var(--cond); font-style: italic; text-transform: uppercase; }
.roy-quiz-modal .roy-chasse__boite { width: min(560px, 100%); }
.roy-quiz__barre { height: 6px; border-radius: 3px; background: var(--nuit); overflow: hidden; margin: 0 0 14px; }
.roy-quiz__barre i { display: block; height: 100%; background: var(--jaune); }
.roy-quiz__q { font-size: clamp(24px, 4vw, 30px) !important; line-height: 1.15; margin: 0 0 16px !important; }
.roy-quiz__consigne { color: var(--brume); }
.roy-quiz__modes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.roy-quiz__mode { display: flex; flex-direction: column; gap: 2px; align-items: center; font: inherit; padding: 14px 8px; border-radius: 14px; border: 2px solid var(--trait); background: var(--nuit); color: #fff; cursor: pointer; }
.roy-quiz__mode b { font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 18px; line-height: 1.05; text-align: center; }
.roy-quiz__mode span { color: var(--jaune); font-weight: 700; font-size: 14px; }
.roy-quiz__mode:hover, .roy-quiz__mode:focus-visible { border-color: var(--jaune); }
.roy-quiz__choix { display: grid; gap: 10px; }
.roy-quiz__choix-b { font: inherit; font-weight: 600; text-align: left; padding: 12px 16px; border-radius: 12px; border: 2px solid var(--trait); background: var(--nuit); color: #fff; cursor: pointer; }
.roy-quiz__choix-b:hover, .roy-quiz__choix-b:focus-visible { border-color: var(--jaune); }
.roy-quiz__tape label { display: block; font-weight: 600; }
.roy-quiz__tape input { display: block; width: 100%; margin: 6px 0 12px; padding: 12px 14px; font: inherit; border-radius: 10px; border: 2px solid var(--trait); background: #fff; color: var(--nuit); }
.roy-quiz__bilan { list-style: none; margin: 14px 0 18px; padding: 0; font-size: 14px; }
.roy-quiz__bilan li { display: grid; gap: 2px; padding: 8px 0 8px 14px; border-left: 4px solid var(--trait); margin-bottom: 6px; }
.roy-quiz__bilan li.is-ok { border-left-color: var(--jaune); }
.roy-quiz__bilan b { color: #fff; }
.roy-quiz__bilan em { font-style: normal; color: var(--gris); }
.roy-quiz__bilan li.is-ok em { color: var(--jaune); font-weight: 700; }
@media (max-width: 480px) { .roy-quiz__modes { grid-template-columns: 1fr; } .roy-quiz__mode { flex-direction: row; justify-content: space-between; } }

/* L'abonnement à tout. */
.roy-abo-tout { font: inherit; font-size: 14px; font-weight: 700; color: var(--jaune); background: var(--nuit); border: 0; border-radius: 999px; padding: 5px 14px; margin: 0 0 10px; cursor: pointer; }
.roy-bulle-abo { position: relative; margin: 12px 0; padding: 12px 16px; border-radius: 14px; background: #fff; color: var(--nuit); font-weight: 700; box-shadow: 0 6px 18px rgba(0,0,0,.3); animation: roy-pop-in2 .35s cubic-bezier(.3, 1.4, .5, 1) both; transition: opacity .5s; }
.roy-bulle-abo.is-fin { opacity: 0; }
@keyframes roy-pop-in2 { from { opacity: 0; transform: scale(.85); } }

/* Hors-jeu : la page 404. */
.roy-404__var { display: flex; gap: 18px; align-items: center; justify-content: center; margin: 4px 0 18px; text-align: left; }
.roy-404__drapeau-leve { flex: none; transform-origin: 20% 95%; }
.roy-404__verif { display: flex; align-items: center; gap: 10px; margin: 0 0 6px; color: var(--brume); font-weight: 600; }
.roy-404__var-logo { font-family: var(--cond); font-weight: 800; font-style: italic; background: var(--ivoire); color: var(--nuit); padding: 1px 8px; border-radius: 4px; }
.roy-404 h1.roy-404__decision { font-size: clamp(30px, 5.4vw, 58px); transform: none; margin: 0; }
@media (prefers-reduced-motion: no-preference) {
	.roy-404__drapeau-leve { animation: roy-drapeau-leve .7s .2s cubic-bezier(.3, 1.6, .5, 1) both, roy-drapeau-agite .45s 1s ease-in-out 5 alternate; }
	.roy-404__verif { animation: roy-verif 2.2s ease both; }
	.roy-404__decision { animation: roy-decision .5s 2s ease both; }
}
@keyframes roy-drapeau-leve { from { transform: rotate(80deg) scale(.6); opacity: 0; } }
@keyframes roy-drapeau-agite { to { transform: rotate(-8deg); } }
@keyframes roy-verif { 0% { opacity: 0; } 10%, 85% { opacity: 1; } 100% { opacity: .55; } }
@keyframes roy-decision { from { opacity: 0; transform: scale(1.15); } }
.roy-404 .roy-404__liens { max-width: 760px; margin: 0 auto 10px; }
.roy-jongles { margin-top: 30px; background: var(--marine); border: 1px solid var(--trait); border-radius: 22px; padding: 22px; }
.roy-jongles__tete { text-align: center; }
.roy-jongles__titre { margin: 0; font-family: var(--cond); font-style: italic; font-weight: 800; text-transform: uppercase; font-size: 28px; color: #fff; }
.roy-jongles__consigne { margin: 4px 0 0; color: var(--brume); }
.roy-jongles__compteurs { display: flex; justify-content: space-between; gap: 12px; margin: 14px 0 10px; font-weight: 600; }
.roy-jongles__compteurs p { margin: 0; }
.roy-jongles__compteurs b { font-family: var(--cond); font-weight: 800; font-size: 26px; color: var(--jaune); }
.roy-jongles__terrain { position: relative; height: 340px; border-radius: 16px; overflow: hidden; background: repeating-linear-gradient(90deg, #3E8E3B 0 70px, #469C42 70px 140px); border-bottom: 6px solid #2F7A2D; touch-action: manipulation; }
.roy-jongles__ballon { position: absolute; left: 0; top: 0; width: 56px; height: 56px; padding: 0; border: 0; border-radius: 50%; background: transparent; cursor: pointer; touch-action: none; -webkit-tap-highlight-color: transparent; will-change: transform; }
.roy-jongles__ballon svg { display: block; width: 56px; height: 56px; }
.roy-jongles__message { position: absolute; left: 0; right: 0; top: 16px; margin: 0; text-align: center; font-weight: 700; color: #fff; text-shadow: 0 1px 3px rgba(0,0,0,.6); pointer-events: none; }
@media (max-width: 640px) { .roy-jongles__terrain { height: 300px; } .roy-404__var { flex-direction: column; text-align: center; } .roy-404__verif { justify-content: center; } }

/* Mode 1958 : machine à écrire, papier jauni, tirages photo, avis de buvette. */
html.roy-1958 body.roy-pp { background: #e9dfc6; }
html.roy-1958 :is(h1, h2, h3, .roy-section-titre, .roy-surtitre) { font-family: 'Special Elite', 'Courier New', monospace !important; font-style: normal !important; letter-spacing: 0 !important; }
html.roy-1958 body.roy-pp img { filter: grayscale(1) contrast(1.15) brightness(1.03); }
html.roy-1958 :is(.roy-hist-zoom, .roy-equipe, .roy-eq-photo, .roy-rejoindre__photo) { background: #fbf7ec; padding: 6px; box-shadow: 0 3px 8px rgba(0,0,0,.35); }
html.roy-1958 :is(.roy-evenement, .roy-ev-carte, .roy-jour) { background: #f4ecd4 !important; color: #2b241a !important; border: 1px solid #c9b88d !important; border-radius: 2px !important; box-shadow: 2px 3px 0 rgba(0,0,0,.25); position: relative; transform: rotate(-.6deg); }
html.roy-1958 :is(.roy-evenement, .roy-ev-carte, .roy-jour)::before { content: ""; position: absolute; top: -7px; left: 50%; width: 14px; height: 14px; margin-left: -7px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #f06b5a, #9c2a1e); box-shadow: 0 2px 2px rgba(0,0,0,.4); z-index: 2; }
html.roy-1958 :is(.roy-evenement, .roy-ev-carte, .roy-jour) :is(h2, h3, p, span, b, strong, a, small, time) { color: #2b241a !important; }

/* 0.18.1 · Blagues du mode 1958 */
.roy-blague { display: block; margin: 6px 0 0; font-family: 'Special Elite', 'Courier New', monospace; font-size: 15px; font-style: normal; font-weight: 400; letter-spacing: 0; text-transform: none; color: #E2C48E; }
p.roy-blague { margin: -8px 0 18px; font-size: 17px; }
.roy-contact__ligne .roy-blague { font-size: 14px; }
html.roy-1958 .roy-equipe__tag { background: #8a5a1c; color: #fbf7ec; }

/* 0.18.2 · Œufs revus */
.roy-tache::before { width: 22px; height: 15px; opacity: 1; background: radial-gradient(circle at 35% 30%, #555 0 12%, #0b0b0b 40%); box-shadow: 0 0 0 2px rgba(255,255,255,.35), 0 2px 6px rgba(0,0,0,.6); }
@media (prefers-reduced-motion: no-preference) { .roy-tache::after { content: ""; position: absolute; left: 50%; top: 60%; width: 5px; height: 7px; margin-left: -2px; border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%; background: #0b0b0b; animation: roy-goutte-tombe 3.2s ease-in infinite; } }
@keyframes roy-goutte-tombe { 0%, 60% { transform: translateY(0) scale(.4); opacity: 0; } 70% { opacity: 1; transform: translateY(2px) scale(1); } 100% { transform: translateY(18px) scale(.8); opacity: 0; } }
.roy-porte-p1 .roy-toc { right: -16px; width: 22px; height: 30px; }
.roy-toc i { height: 4px; width: 14px; box-shadow: 0 0 0 1.5px #0E1430; }
.roy-toc i:nth-child(2) { top: 12px; width: 18px; }
.roy-toc i:nth-child(3) { top: 24px; }
@media (prefers-reduced-motion: no-preference) { .roy-toc i { animation: roy-toc 3.5s infinite; } }
.roy-appareil { position: absolute; right: 14px; top: 14px; z-index: 3; padding: 8px 9px; border: 3px solid #0E1430; border-radius: 14px; background: var(--jaune); box-shadow: 0 4px 12px rgba(0,0,0,.35); cursor: pointer; line-height: 0; transition: transform .2s; }
.roy-appareil:hover, .roy-appareil:focus-visible { transform: scale(1.08) rotate(-4deg); }
.roy-eq-photo.is-flash::after { content: ""; position: absolute; inset: 0; z-index: 4; background: #fff; pointer-events: none; animation: roy-flash .6s ease-out forwards; }
@keyframes roy-flash { from { opacity: .95; } to { opacity: 0; } }
.roy-match__joie { position: absolute; left: auto; right: 8px; top: 50%; z-index: 2; margin-top: -24px; width: auto !important; pointer-events: auto; padding: 0; border: 0; background: none; cursor: pointer; line-height: 0; }
@media (prefers-reduced-motion: no-preference) { .roy-match__joie { animation: roy-joie-saut .5s ease-in-out infinite alternate; } }
@keyframes roy-joie-saut { to { transform: translateY(-10px) rotate(6deg); } }
.roy-jongle-ecusson .roy-chasse__boite { width: min(420px, 100%); text-align: center; }
.roy-jongle-ecusson__compte { margin: 0 0 10px; font-family: var(--cond); font-weight: 800; font-size: 22px; }
.roy-jongle-ecusson__compte b { color: var(--jaune); font-size: 34px; }
.roy-jongle-ecusson__terrain { position: relative; height: 300px; border-radius: 14px; overflow: hidden; background: repeating-linear-gradient(90deg, #3E8E3B 0 60px, #469C42 60px 120px); border-bottom: 5px solid #2F7A2D; touch-action: manipulation; }
.roy-jongle-ecusson__ballon { position: absolute; left: 0; top: 0; width: 46px; height: 66px; padding: 0; border: 0; background: none; cursor: pointer; touch-action: none; will-change: transform; }
.roy-jongle-ecusson__ballon img { display: block; width: 46px !important; height: 66px !important; filter: drop-shadow(0 3px 3px rgba(0,0,0,.4)); }
.roy-jongle-ecusson__msg { position: absolute; left: 0; right: 0; top: 12px; margin: 0; font-weight: 700; color: #fff; text-shadow: 0 1px 3px rgba(0,0,0,.6); pointer-events: none; }
.roy-escargot { position: absolute; z-index: 3; pointer-events: none; }
@media (prefers-reduced-motion: no-preference) { .roy-escargot { animation: roy-escargot 5s linear forwards; } }
@keyframes roy-escargot { from { transform: translateX(0); } to { transform: translateX(var(--trajet, 80px)); } }
.roy-escargot__bulle { position: absolute; left: 96px; top: 50%; transform: translateY(-50%); z-index: 3; white-space: nowrap; background: #fff; color: var(--nuit); font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 15px; padding: 4px 10px; border-radius: 10px; box-shadow: 0 4px 10px rgba(0,0,0,.3); animation: roy-pop-in2 .3s ease both; }

/* Mode 1958 : photos des équipes encore plus vieillies (sépia fort, grain, rayures, coins sombres). */
html.roy-1958 :is(.roy-equipe, .roy-eq-photo, .roy-rejoindre__photo, .roy-hist-zoom, .roy-hero__slide) img { filter: sepia(1) contrast(1.35) brightness(.88) saturate(.55) blur(.35px) !important; }
html.roy-1958 :is(.roy-equipe, .roy-eq-photo, .roy-rejoindre__photo) { position: relative; overflow: hidden; }
html.roy-1958 :is(.roy-equipe, .roy-eq-photo, .roy-rejoindre__photo)::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background:
	radial-gradient(ellipse at center, transparent 45%, rgba(40, 25, 5, .55) 100%),
	repeating-linear-gradient(90deg, transparent 0 37px, rgba(255, 245, 220, .16) 37px 38px, transparent 38px 91px),
	repeating-linear-gradient(0deg, rgba(0, 0, 0, .05) 0 1px, transparent 1px 3px);
	mix-blend-mode: multiply; }
html.roy-1958 .roy-equipe__bandeau { z-index: 2; }

/* 0.18.3 · Patrick, faux sponsor, friteuse, VAR, abonnement, traceur, blason 1958 */
@media (prefers-reduced-motion: no-preference) {
	.roy-pelouse__patrick.is-sursaut img { animation: roy-sursaut .7s cubic-bezier(.3, 1.8, .5, 1); }
	.roy-pelouse__patrick.is-etire img { animation: roy-etire 1.3s ease-in-out; transform-origin: 50% 100%; }
	.roy-pelouse__lunettes { animation: roy-lunettes 1s .15s cubic-bezier(.4, 0, .9, .6) forwards; }
}
@keyframes roy-sursaut { 30% { transform: translateY(-22px) rotate(-5deg); } 60% { transform: translateY(-6px) rotate(3deg); } }
@keyframes roy-etire { 40%, 70% { transform: scale(1.04, 1.1); } }
@keyframes roy-lunettes { from { transform: translate(0, 0) rotate(0); } 60% { transform: translate(-30px, 60px) rotate(-200deg); } to { transform: translate(-38px, 92px) rotate(-170deg); } }
.roy-pelouse__lunettes { position: absolute; left: 42%; top: 18%; z-index: 4; pointer-events: none; }
.roy-pelouse__cri--baille { background: #F2F1EC; font-style: italic; }

.roy-faux-sponsor { background: #e9e9e6 !important; border: 1px solid #c9c9c4 !important; color: #6d6d68 !important; filter: grayscale(1); box-shadow: none !important; }
.roy-faux-sponsor b { font-family: var(--cond); font-weight: 800; font-size: 15px; letter-spacing: .04em; color: #6d6d68 !important; }
.roy-faux-sponsor small { font-size: 11px; color: #8d8d88 !important; }
.roy-camion { background: linear-gradient(#0E1430 0 72%, #3E8E3B 72%) !important; overflow: hidden; }
.roy-camion__sol { position: absolute; left: 0; right: 0; top: 72%; height: 18px; background: #555; border-top: 3px solid #F2F1EC; }
.roy-camion__buvette { position: absolute; left: 58%; top: calc(72% - 166px); }
.roy-camion__vehicule { position: absolute; left: 0; top: calc(72% - 104px); transform: translateX(-340px); }
.roy-camion__tuyau { position: absolute; left: calc(58% - 26px); top: calc(72% - 70px); width: 0; height: 6px; background: #0E1430; border-radius: 3px; }
.roy-camion__jauge { position: absolute; left: 50%; top: 14%; width: min(320px, 80vw); transform: translateX(-50%); height: 26px; border: 3px solid #F4EA4B; border-radius: 14px; overflow: hidden; background: rgba(255,255,255,.08); opacity: 0; }
.roy-camion__jauge span { position: absolute; inset: 0; z-index: 1; display: flex; align-items: center; justify-content: center; font-family: var(--cond); font-weight: 800; font-style: italic; color: #fff; text-transform: uppercase; }
.roy-camion__jauge i { position: absolute; left: 0; top: 0; bottom: 0; width: 0; background: repeating-linear-gradient(45deg, #E9B83A 0 10px, #F4CF5A 10px 20px); }
.roy-camion__texte { position: absolute; left: 0; right: 0; top: calc(14% + 40px); margin: 0; text-align: center; font-family: var(--cond); font-style: italic; font-weight: 800; font-size: clamp(22px, 4vw, 34px); color: #F4EA4B; opacity: 0; padding: 0 16px; }
@media (prefers-reduced-motion: no-preference) {
	.roy-camion__vehicule { animation: roy-camion-arrive 2s cubic-bezier(.2, .7, .3, 1) .2s forwards, roy-camion-part 1.4s ease-in 5.8s forwards; }
	.roy-camion__tuyau { animation: roy-tuyau .4s 2.3s ease-out forwards, roy-tuyau-retire .3s 5.4s forwards; }
	.roy-camion__jauge { animation: roy-apparait .3s 2.5s forwards; }
	.roy-camion__jauge i { animation: roy-plein 2.4s 2.7s linear forwards; }
	.roy-camion__texte { animation: roy-apparait .4s 3.4s forwards; }
}
.roy-camion.is-calme .roy-camion__vehicule { transform: translateX(calc(58vw - 300px)); }
.roy-camion.is-calme :is(.roy-camion__jauge, .roy-camion__texte) { opacity: 1; }
.roy-camion.is-calme .roy-camion__jauge i { width: 100%; }
@keyframes roy-camion-arrive { to { transform: translateX(calc(58vw - 300px)); } }
@keyframes roy-camion-part { from { transform: translateX(calc(58vw - 300px)); } to { transform: translateX(110vw); } }
@keyframes roy-tuyau { to { width: 30px; } }
@keyframes roy-tuyau-retire { to { width: 0; } }
@keyframes roy-apparait { to { opacity: 1; } }
@keyframes roy-plein { to { width: 100%; } }
@media (max-width: 640px) { .roy-camion__buvette { left: 52%; transform: scale(.7); transform-origin: 0 100%; } .roy-camion__vehicule svg { width: 220px; height: 88px; } .roy-camion__vehicule { top: calc(72% - 78px); } }

.roy-evenement__date.has-fricadelle { position: relative; z-index: 1; }
.roy-fricadelle-cachee { position: absolute; right: -34px; bottom: -4px; z-index: -1; width: 64px; padding: 0; border: 0; background: none; cursor: pointer; transform: rotate(-14deg); }
.roy-fricadelle-cachee img { display: block; width: 64px !important; height: auto !important; }
.roy-fricadelle-cachee:hover, .roy-fricadelle-cachee:focus-visible { z-index: 2; }
.roy-friteuse .roy-chasse__boite { width: min(460px, 100%); text-align: center; }
.roy-friteuse__consigne { color: var(--brume); }
.roy-friteuse__bac { position: relative; height: 150px; margin: 10px auto 14px; width: 86%; border: 5px solid #C9D3EA; border-top: 0; border-radius: 0 0 26px 26px; background: linear-gradient(#202D57 0 30%, #C99A3A 30%); overflow: hidden; }
.roy-friteuse__huile i { position: absolute; bottom: 0; width: 10px; height: 10px; border-radius: 50%; background: rgba(255, 240, 190, .7); opacity: 0; }
.roy-friteuse__huile i:nth-child(1) { left: 18%; } .roy-friteuse__huile i:nth-child(2) { left: 34%; } .roy-friteuse__huile i:nth-child(3) { left: 52%; } .roy-friteuse__huile i:nth-child(4) { left: 68%; } .roy-friteuse__huile i:nth-child(5) { left: 84%; }
@media (prefers-reduced-motion: no-preference) { .roy-friteuse.is-dedans .roy-friteuse__huile i { animation: roy-bulle-huile .9s ease-in infinite; } .roy-friteuse.is-dedans .roy-friteuse__huile i:nth-child(2n) { animation-delay: .3s; } .roy-friteuse.is-dedans .roy-friteuse__huile i:nth-child(3n) { animation-delay: .6s; } }
@keyframes roy-bulle-huile { from { transform: translateY(0) scale(.5); opacity: .9; } to { transform: translateY(-90px) scale(1); opacity: 0; } }
.roy-friteuse__fric { position: absolute; left: 50%; top: 4px; width: 120px; margin-left: -60px; transition: top .5s ease; }
.roy-friteuse__fric img { display: block; width: 120px !important; height: auto !important; filter: drop-shadow(0 0 0 var(--cuisson, #e8a99a)); }
.roy-friteuse__fric::after { content: ""; position: absolute; inset: 22% 6% 22% 6%; border-radius: 40px; background: var(--cuisson, #e8a99a); mix-blend-mode: multiply; opacity: .85; }
.roy-friteuse.is-dedans .roy-friteuse__fric { top: 92px; }
.roy-friteuse__jauge { position: relative; height: 14px; margin: 0 auto 10px; width: 86%; border-radius: 7px; background: linear-gradient(90deg, #e8a99a, #C8862D 70%, #281a10); }
.roy-friteuse__zone { position: absolute; left: 62%; width: 20%; top: -4px; bottom: -4px; border: 3px solid #F4EA4B; border-radius: 6px; }
.roy-friteuse__jauge i { position: absolute; top: -8px; width: 4px; height: 30px; margin-left: -2px; background: #fff; border-radius: 2px; box-shadow: 0 0 0 2px #0E1430; }
.roy-friteuse__retour { min-height: 1.5em; font-weight: 700; color: var(--jaune); }

.roy-var-btn { display: inline-flex; align-items: center; justify-content: center; margin-left: 4px; padding: 2px; border: 0; background: none; cursor: pointer; vertical-align: middle; line-height: 0; }
.roy-var-btn:hover svg, .roy-var-btn:focus-visible svg { transform: scale(1.12); }
.roy-match.is-var .roy-match__lead { color: var(--jaune); }
.roy-match.is-var .roy-match__lead::after { content: "VAR"; margin-left: 5px; padding: 0 4px; font-size: 10px; border-radius: 3px; background: var(--jaune); color: var(--nuit); vertical-align: middle; }
@media (prefers-reduced-motion: no-preference) { .roy-match.is-var-flash { animation: roy-var-flash 1.2s ease; } }
@keyframes roy-var-flash { 0%, 100% { background: transparent; } 30% { background: rgba(244, 234, 75, .25); } }

.roy-abo-scene { display: flex; align-items: center; justify-content: center; padding: 16px; }
.roy-abo-scene__carte { position: relative; max-width: 560px; padding: 30px 30px 26px; border-radius: 24px; background: #fff; color: var(--nuit); text-align: center; box-shadow: 0 20px 50px rgba(0,0,0,.45); animation: roy-pop-in2 .45s cubic-bezier(.3, 1.4, .5, 1) both; }
.roy-abo-scene__carte .roy-surtitre { color: var(--roi); }
.roy-abo-scene__texte { margin: 0 0 16px; font-family: var(--cond); font-style: italic; font-weight: 800; font-size: clamp(26px, 5vw, 40px); line-height: 1.05; text-transform: uppercase; }
.roy-abo-scene__cals { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin: 0 0 14px; }
.roy-abo-scene__cals span { line-height: 0; }
@media (prefers-reduced-motion: no-preference) { .roy-abo-scene__cals span { animation: roy-pop-in2 .3s calc(var(--i) * .12s + .4s) cubic-bezier(.3, 1.6, .5, 1) both; } }
.roy-abo-scene__chute { margin: 0; font-family: var(--cond); font-style: italic; font-weight: 800; font-size: clamp(24px, 4vw, 32px); color: var(--roi); text-transform: uppercase; }

.roy-terrain__traceur, .roy-classement__traceur { cursor: pointer; pointer-events: auto; }
.roy-traceur__bulle { position: absolute; z-index: 5; transform: translate(-50%, calc(-100% - 8px)); max-width: 240px; padding: 6px 12px; border-radius: 12px; background: #fff; color: var(--nuit); font-family: var(--cond); font-style: italic; font-weight: 800; font-size: 15px; line-height: 1.15; text-align: center; box-shadow: 0 4px 12px rgba(0,0,0,.35); pointer-events: none; animation: roy-pop-in2 .3s ease both; }

html.roy-1958 .roy-label-acff__etoile.is-urbsfa { background: transparent !important; border: 0 !important; width: 36px; height: 54px; border-radius: 0; }
html.roy-1958 .roy-label-acff__etoile.is-urbsfa img { width: 34px !important; height: auto !important; filter: sepia(.6) contrast(1.1) !important; }
html.roy-1958 img.roy-logo-rer { object-fit: contain; filter: sepia(.35) contrast(1.05) !important; max-width: none !important; }

/* 0.18.4 · Illustrations (style Patrick) */
.roy-terrain__traceur { width: 96px !important; }
@media (max-width: 640px) { .roy-terrain__traceur { width: 66px !important; } }
.roy-classement__traceur { width: 120px !important; top: -98px; }
.roy-appareil { padding: 4px; background: rgba(244, 234, 75, .92); }
.roy-appareil img { display: block; width: 64px !important; height: auto !important; }
.roy-camion__vehicule img { display: block; width: 300px !important; height: auto !important; }
.roy-camion__vehicule { top: calc(72% - 118px); }
@media (max-width: 640px) { .roy-camion__vehicule img { width: 220px !important; } .roy-camion__vehicule { top: calc(72% - 86px); } }
.roy-fricadelle-cachee { width: 72px; right: -40px; bottom: 2px; }
.roy-fricadelle-cachee img { width: 72px !important; }
.roy-friteuse__bac { height: auto; width: 100%; border: 0; border-radius: 0; background: none; overflow: visible; }
.roy-friteuse__appareil { display: block; width: 100% !important; height: auto !important; }
.roy-friteuse__huile { position: absolute; left: 15%; right: 15%; top: 48%; bottom: 33%; pointer-events: none; }
.roy-friteuse__fric { position: absolute; left: 24%; width: 52%; top: 12%; margin: 0; transition: top .6s ease, transform .6s ease; transform: rotate(-4deg); }
.roy-friteuse__fric::after { display: none; }
.roy-friteuse__fric img { position: absolute; left: 0; top: 0; width: 100% !important; height: auto !important; filter: drop-shadow(0 3px 3px rgba(0,0,0,.4)); transition: opacity .2s linear; }
.roy-friteuse__fric img[data-etat="crue"] { position: relative; }
.roy-friteuse.is-dedans .roy-friteuse__fric { top: 50%; transform: rotate(-2deg); }
.roy-abo-scene { gap: 0; flex-wrap: wrap; }
.roy-abo-scene__mamie { width: min(300px, 42vw); height: auto; margin-right: -30px; position: relative; z-index: 1; filter: drop-shadow(0 10px 20px rgba(0,0,0,.4)); }
@media (prefers-reduced-motion: no-preference) { .roy-abo-scene__mamie { animation: roy-mamie .6s cubic-bezier(.3, 1.3, .5, 1) both; } }
@keyframes roy-mamie { from { transform: translateY(60px) rotate(-6deg); opacity: 0; } }
@media (max-width: 640px) { .roy-abo-scene__mamie { width: 170px; margin: 0 0 -24px; } }
.roy-var--arbitre { display: flex; align-items: center; justify-content: center; gap: 10px; flex-wrap: wrap; }
.roy-var__arbitre { width: min(340px, 60vw); height: auto; filter: drop-shadow(0 10px 22px rgba(0,0,0,.5)); }
@media (prefers-reduced-motion: no-preference) { .roy-var__arbitre { animation: roy-mamie .5s cubic-bezier(.3, 1.3, .5, 1) both; } }
.roy-tireuse { width: 64px; }
.roy-pelouse__cri--reveil { white-space: normal; width: max-content; max-width: min(320px, 70vw); text-align: center; }

/* 0.18.5 · Tireuse au-dessus du titre, bulles du traceur au premier plan, Guy */
.roy-tireuse-zone { display: flex; align-items: flex-end; gap: 12px; margin: 0 0 6px; min-height: 110px; }
.roy-tireuse-zone .roy-tireuse { position: static; width: 72px; touch-action: none; -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
.roy-tireuse-zone .roy-tireuse img { pointer-events: none; -webkit-user-drag: none; }
.roy-tireuse.is-tire img { animation: none; transform: rotate(-6deg); transform-origin: 50% 100%; transition: transform .15s; }
.roy-tireuse-zone .roy-tireuse__sante { position: static; margin-bottom: 18px; white-space: normal; max-width: 280px; }
.roy-tireuse-zone .roy-tireuse__sante.is-bien { background: var(--jaune); }
@media (max-width: 640px) { .roy-tireuse-zone { min-height: 74px; } .roy-tireuse-zone .roy-tireuse { width: 48px; } .roy-tireuse-zone .roy-tireuse__sante { font-size: 14px; margin-bottom: 10px; } }
h1.is-biere.is-deborde { background: linear-gradient(to top, #E8A317 0 80%, #FFF4D6 80% 100%); -webkit-background-clip: text; background-clip: text; }
@media (prefers-reduced-motion: no-preference) { h1.is-deborde { animation: roy-deborde .5s ease 2; } }
@keyframes roy-deborde { 50% { transform: translateY(2px) skewX(-2deg); } }
.roy-traceur__bulle { position: absolute; z-index: 9000; }
.roy-friteuse__retour { min-height: 3.2em; margin: 6px 0 12px; padding: 0; font-weight: 600; color: var(--ivoire); }
.roy-friteuse__retour b { color: var(--jaune); }
.roy-friteuse__retour:not(:empty) { padding: 10px 14px; border-radius: 14px; background: #fff; color: var(--nuit); }
.roy-friteuse__retour:not(:empty) b { color: var(--roi); }
