/* Habillage saisonnier AFEBAS - produit automatiquement.
   portail-v13-1792286930 actif:octobre_rose */
/* 🎀 Octobre Rose - tableaux d'un tournoi */
:root{
	--afb-primary:#c2185b;
	--afb-primary-mid:#d82e71;
	--afb-primary-light:#ee4487;
	--afb-primary-bg:rgba(255,255,255,.08);
	--afb-accent:#f48fb1;
	--afb-alert:#ad1457;
	--afb-dark:#3d0b22;
	--afb-header-bg:#3d0b22;
	--afb-body-bg:#fdf2f6;
	--afb-teams:#8e24aa;
}
html,body{ background:#fdf2f6 !important; }
.entete{ background:#3d0b22 !important; }
.lien{ background:#f48fb1 !important; color:#3d0b22 !important; }
.pastille{ color:#f48fb1 !important; border-color:#f48fb1 !important; }
.score,th,.num{ color:#c2185b !important; }
th,.num{ background:#fdf2f6 !important; }
html,body{
	background:
		radial-gradient(circle at top, rgba(244,143,177,.10), transparent 32rem),
		linear-gradient(180deg,#3d0b22 0%,#2d0012 100%) !important;
}
h1,.sub-title,.sub-title--date,.bottom-nav__current,.round-menu-mobile__label,.dko-board__note{ color:#fdf2f6 !important; }
.bracket-wrapper,.all-round-section,.dko-board,.round-menu-mobile{ background:#fdf2f6 !important; }
.table-header,.search-modal__header{ background:#3d0b22 !important; }
.round-title,.all-round-section__title,.dko-board__title,.dko-round__title{ color:#c2185b !important; border-color:#f48fb1 !important; }
.tab-link,.action-btn,.nav-btn,.search-jump,.round-menu-mobile__btn,.match-table{ color:#ae496b !important; border-color:#f48fb1 !important; }
.tab-link--active,.tab-link:hover,.action-btn:hover,.nav-btn:hover,.search-jump:hover,.round-menu-mobile__btn--active{ background:#f48fb1 !important; color:#3d0b22 !important; border-color:#f48fb1 !important; }
.player-score{ color:#c2185b !important; }
:root{ --bleu:#3d0b22; --or:#f48fb1; --fond:#fdf2f6; }
.pied{ color:#fdf2f6 !important; }

/* ---- decor.css ---- */
/* ===========================================================================
   AFEBAS — Habillages saisonniers : décors (structure commune)
   ---------------------------------------------------------------------------
   Le plugin dépose en pied de page un conteneur .afb-deco contenant une
   quinzaine d'éléments. Ce fichier les met en mouvement ; chaque fête donne
   ensuite son motif (flocon, cœur, trèfle…) dans son propre fichier.

   Rien n'intercepte le clic : pointer-events:none sur tout le décor.
   Les animations ne portent que sur transform et opacity, celles que le
   navigateur sait animer sans refaire la mise en page.
   =========================================================================== */

.afb-deco{
	position:fixed; inset:0;
	z-index:500;
	pointer-events:none;
	overflow:hidden;
}

/* --- Les éléments qui tombent (ou montent) ------------------------------- */
.afb-deco__f{
	position:absolute;
	top:-10vh;
	left:var(--x,50%);          /* ce qui tombe suit --x ; ce qui traverse suit --y */
	width:18px; height:18px;
	background:var(--afb-accent);
	opacity:.55;
	animation-name:afb-chute;
	animation-timing-function:linear;
	animation-iteration-count:infinite;
	-webkit-mask-repeat:no-repeat; mask-repeat:no-repeat;
	-webkit-mask-position:center;  mask-position:center;
	-webkit-mask-size:contain;     mask-size:contain;
}

@keyframes afb-chute{
	0%   { transform:translate3d(0,-10vh,0) rotate(0deg); }
	100% { transform:translate3d(26px,112vh,0) rotate(300deg); }
}

/* Variante : ce qui traverse l'écran (chauves-souris) */
@keyframes afb-vol{
	0%   { transform:translate3d(-12vw,0,0) scale(.9); }
	25%  { transform:translate3d(18vw,-26px,0) scale(1); }
	50%  { transform:translate3d(48vw,18px,0) scale(.92); }
	75%  { transform:translate3d(78vw,-20px,0) scale(1.04); }
	100% { transform:translate3d(114vw,6px,0) scale(.9); }
}

/* Variante : ce qui éclate sur place puis s'efface (feux d'artifice)
   Une explosion est brève : tout se joue dans les premiers 20 % du cycle,
   le reste du temps la gerbe est éteinte et attend son tour. C'est ce qui
   donne le rythme saccadé d'un vrai feu d'artifice plutôt qu'une fleur
   qui s'ouvre au ralenti. */
@keyframes afb-explosion{
	0%   { transform:scale(.08); opacity:0; }
	3%   { opacity:1; }
	11%  { transform:scale(2.1); opacity:.7; }
	20%  { transform:scale(2.7); opacity:0; }
	100% { transform:scale(2.7); opacity:0; }
}

/* Variante : ce qui s'envole au lieu de tomber (anges, étincelles)
   L'élément est posé juste sous le bas de l'écran (bottom:-10vh) : le
   mouvement part donc de zéro et remonte de toute la hauteur. Une version
   précédente ajoutait 112vh au départ, ce qui le laissait hors de l'écran
   pendant presque tout le cycle — on ne voyait rien. */
@keyframes afb-envol{
	0%   { transform:translate3d(0,0,0) scale(.85); opacity:0; }
	10%  { opacity:.6; }
	85%  { opacity:.6; }
	100% { transform:translate3d(-30px,-118vh,0) scale(1.12); opacity:0; }
}

/* --- Motif d'angle -------------------------------------------------------
   Masqué par défaut : chaque habillage qui en veut un le rend visible et
   donne son motif (toile d'araignée, ruban, cœur, symbole…).              */
.afb-deco__web{
	display:none;
	position:absolute; top:0; left:0;
	width:190px; height:190px;
	opacity:.5;
	background:rgba(255,255,255,.9);
	-webkit-mask:no-repeat left top/contain
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 150 150'%3E%3Cg fill='none' stroke='%23000' stroke-width='2'%3E%3Cpath d='M0 0 L150 40 M0 0 L120 90 M0 0 L80 130 M0 0 L30 150 M0 0 L150 8'/%3E%3Cpath d='M20 6 Q16 16 7 22 M44 13 Q36 34 15 46 M70 21 Q57 54 24 70 M96 29 Q78 73 33 95 M124 37 Q100 93 42 120'/%3E%3C/g%3E%3C/svg%3E");
	mask:no-repeat left top/contain
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 150 150'%3E%3Cg fill='none' stroke='%23000' stroke-width='2'%3E%3Cpath d='M0 0 L150 40 M0 0 L120 90 M0 0 L80 130 M0 0 L30 150 M0 0 L150 8'/%3E%3Cpath d='M20 6 Q16 16 7 22 M44 13 Q36 34 15 46 M70 21 Q57 54 24 70 M96 29 Q78 73 33 95 M124 37 Q100 93 42 120'/%3E%3C/g%3E%3C/svg%3E");
}

/* --- L'araignée au bout de son fil --------------------------------------- */
/* Le fil part du haut de l'écran et S'ALLONGE ; la bête suit son extrémité.
   Déplacer l'ensemble, comme on le faisait, décrochait le fil du plafond dès
   que l'araignée descendait : on voyait un bout de fil flotter avec elle.

   Le fil garde donc sa longueur maximale et c'est son échelle verticale qui
   est animée, ancrée en haut — ni hauteur ni marge ne changent, donc aucune
   mise en page à refaire. La bête, elle, est translatée jusqu'au bout.
   Le nom afb-araignee-descente est neuf a dessein : une ancienne copie de
   @keyframes afb-araignee, restee dans une feuille produite avant la
   correction, ne peut plus s'appliquer a la nouvelle regle.

   Les deux animations ont la même durée et la même courbe : elles tombent
   d'accord image par image. Si l'une des valeurs change, l'autre doit
   suivre — la position de la bête vaut FIL × échelle. */
.afb-deco__spider{
	position:absolute; top:0; left:62%;
	width:34px; height:60vh;
}
.afb-deco__spider i{            /* le fil */
	display:block; margin:0 auto;
	width:1px; height:60vh;
	background:rgba(255,255,255,.5);
	transform-origin:top center;
	animation:afb-fil 9s ease-in-out infinite;
}
.afb-deco__spider b{            /* la bête */
	display:block;
	position:absolute; top:0; left:0;
	animation:afb-araignee-descente 9s ease-in-out infinite;
	width:34px; height:36px;
	background:#0b0612;
	-webkit-mask:no-repeat center/contain
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 46'%3E%3Cg fill='none' stroke='%23000' stroke-width='3.4' stroke-linecap='round'%3E%3Cpath d='M24 24 L7 12 M24 24 L3 24 M24 24 L7 38 M24 24 L41 12 M24 24 L45 24 M24 24 L41 38'/%3E%3C/g%3E%3Cellipse cx='24' cy='26' rx='11' ry='13' fill='%23000'/%3E%3Ccircle cx='24' cy='13' r='6' fill='%23000'/%3E%3C/svg%3E");
	mask:no-repeat center/contain
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 46'%3E%3Cg fill='none' stroke='%23000' stroke-width='3.4' stroke-linecap='round'%3E%3Cpath d='M24 24 L7 12 M24 24 L3 24 M24 24 L7 38 M24 24 L41 12 M24 24 L45 24 M24 24 L41 38'/%3E%3C/g%3E%3Cellipse cx='24' cy='26' rx='11' ry='13' fill='%23000'/%3E%3Ccircle cx='24' cy='13' r='6' fill='%23000'/%3E%3C/svg%3E");
}
/* Deux yeux, pour qu'elle ait l'air de quelque chose */
.afb-deco__spider b::after{ content:none; }

/* Elle descend jusqu'à mi-hauteur de l'écran, marque un temps, puis remonte.
   Mesures en vh : la descente s'adapte à la hauteur de la fenêtre.
   60vh est la longueur du fil ; chaque position de la bête en est le produit
   par l'échelle du même instant (.13 → 7.8vh, .93 → 55.8vh, .88 → 52.8vh). */
@keyframes afb-fil{
	0%,100% { transform:scaleY(.13); }
	45%     { transform:scaleY(.93); }
	55%     { transform:scaleY(.88); }
}

@keyframes afb-araignee-descente{
	0%,100% { transform:translateY(7.8vh); }
	45%     { transform:translateY(55.8vh); }
	55%     { transform:translateY(52.8vh); }
}

/* --- Moins de monde sur les petits écrans -------------------------------- */
@media (max-width:700px){
	.afb-deco__f:nth-of-type(2n){ display:none; }
	.afb-deco__web{ width:120px; height:120px; }
	.afb-deco__spider{ left:72%; }
}

/* --- Respect du réglage « animations réduites » du système --------------- */
@media (prefers-reduced-motion:reduce){
	.afb-deco__f{ display:none; }
	/* L'araignée reste, immobile et haut perchée : les deux animations qui
	   la font descendre sont coupées, et le fil garde la longueur qu'il a
	   au repos. */
	.afb-deco__spider i,
	.afb-deco__spider b{ animation:none; }
	.afb-deco__spider i{ transform:scaleY(.13); }
	.afb-deco__spider b{ transform:translateY(7.8vh); }
}

/* --- Impression : pas de décor sur le papier ----------------------------- */
@media print{
	.afb-deco{ display:none !important; }
}

/* ---- octobre-rose.css ---- */
/* ===========================================================================
   Décor — 🎀 Octobre Rose
   Volontairement sobre : le ruban au pied de page et le liseré, rien d'autre.
   Un sujet de santé ne s'accompagne pas de confettis qui tombent.
   =========================================================================== */

.afb-habillage--octobre-rose .afb-header{ border-bottom:2px solid var(--afb-accent); }
.afb-habillage--octobre-rose .afb-deco__f{ display:none; }

/* Le ruban reste à l'écran, en bas à gauche : visible sur toutes les pages
   sans rien recouvrir, et sans la moindre animation. */
.afb-habillage--octobre-rose .afb-deco__web{
	display:block;
	top:auto; bottom:18px; left:18px;
	width:74px; height:96px;
	opacity:.5;
	background:var(--afb-primary);
	-webkit-mask:no-repeat center/contain
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cg fill='none' stroke='%23000' stroke-width='6' stroke-linecap='round'%3E%3Cpath d='M22 60C26 40 30 28 34 14 38 4 50 8 46 20 42 34 34 46 28 62'/%3E%3Cpath d='M42 60C38 40 34 28 30 14 26 4 14 8 18 20 22 34 30 46 36 62'/%3E%3C/g%3E%3C/svg%3E");
	mask:no-repeat center/contain
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cg fill='none' stroke='%23000' stroke-width='6' stroke-linecap='round'%3E%3Cpath d='M22 60C26 40 30 28 34 14 38 4 50 8 46 20 42 34 34 46 28 62'/%3E%3Cpath d='M42 60C38 40 34 28 30 14 26 4 14 8 18 20 22 34 30 46 36 62'/%3E%3C/g%3E%3C/svg%3E");
}

.afb-habillage--octobre-rose #colophon{ position:relative; }
.afb-habillage--octobre-rose #colophon::after{
	content:""; position:absolute; right:16px; bottom:10px;
	width:40px; height:52px; pointer-events:none; opacity:.4;
	background:var(--afb-accent);
	-webkit-mask:no-repeat center/contain
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cg fill='none' stroke='%23000' stroke-width='6' stroke-linecap='round'%3E%3Cpath d='M22 60C26 40 30 28 34 14 38 4 50 8 46 20 42 34 34 46 28 62'/%3E%3Cpath d='M42 60C38 40 34 28 30 14 26 4 14 8 18 20 22 34 30 46 36 62'/%3E%3C/g%3E%3C/svg%3E");
	mask:no-repeat center/contain
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cg fill='none' stroke='%23000' stroke-width='6' stroke-linecap='round'%3E%3Cpath d='M22 60C26 40 30 28 34 14 38 4 50 8 46 20 42 34 34 46 28 62'/%3E%3Cpath d='M42 60C38 40 34 28 30 14 26 4 14 8 18 20 22 34 30 46 36 62'/%3E%3C/g%3E%3C/svg%3E");
}
.afb-deco{ opacity:.6; }
