/* ========== LE FESTIVAL (pixel maquette) ========== */
.gf-intro{ position:relative; overflow:hidden; }
.gf-intro .ga-hero-bg{ position:absolute; inset:0; z-index:0; background-image:linear-gradient(180deg,rgba(11,13,14,.55),rgba(11,13,14,.94)),var(--hero); background-size:cover; background-position:center; }
.gf-intro-grid{ position:relative; z-index:1; display:grid; grid-template-columns:1.3fr .7fr; gap:clamp(28px,4vw,56px); align-items:center; }
.gf-intro-sub{ color:var(--g-jaune); font-size:clamp(1.3rem,2.2vw,1.8rem); font-weight:800; margin:.4rem 0 1.2rem; line-height:1.2; }

/* Repères : soulignement coloré par ligne */
.gf-reperes{ padding:1.4rem 2rem !important; }
.gf-reperes ul{ list-style:none; margin:0; padding:0; }
.gf-reperes li{ padding:1.2rem 0; border-bottom:2px solid var(--c); font-size:1.4rem; font-weight:600; }
.gf-reperes li:last-child{ border-bottom:2px solid var(--c); }

/* En bref */
.gf-stats{ display:grid; grid-template-columns:repeat(5,1fr); gap:24px; margin-top:1.5rem; }
.gf-stat{ text-align:center; }
.gf-stat strong{ display:block; font-size:clamp(2.8rem,4.5vw,4rem); font-weight:800; line-height:1; }
.gf-stat span{ color:var(--g-muted); font-size:1.25rem; }

/* Ce que porte : icône ronde encadrée */
.gf-porte-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:24px; margin-top:1.5rem; }
.gf-porte-card{ position:relative; }
.gf-ic{ display:inline-flex; width:56px; height:56px; align-items:center; justify-content:center; border-radius:50%; color:var(--c); margin-bottom:1.2rem;
  background:color-mix(in oklab,var(--c) 14%,transparent); border:1px solid color-mix(in oklab,var(--c) 35%,transparent); box-shadow:0 0 20px color-mix(in oklab,var(--c) 28%,transparent); }
.gf-ic svg{ width:28px; height:28px; }
.gf-porte-card h3{ color:var(--c); font-size:1.5rem; margin:0 0 .7rem; }
.gf-porte-card p{ color:var(--g-muted); font-size:1.15rem; line-height:1.6; }

/* 3 scènes : icône ronde à gauche */
.gf-scenes-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; margin-top:1.5rem; }
.gf-scene{ display:flex; gap:1.2rem; align-items:center; }
.gf-scene-ic{ flex:none; width:56px; height:56px; display:inline-flex; align-items:center; justify-content:center; border-radius:50%; color:var(--c);
  background:color-mix(in oklab,var(--c) 14%,transparent); border:1px solid color-mix(in oklab,var(--c) 35%,transparent); box-shadow:0 0 18px color-mix(in oklab,var(--c) 25%,transparent); }
.gf-scene-ic svg{ width:28px; height:28px; }
.gf-scene h3{ color:var(--c); font-size:1.5rem; margin:0 0 .3rem; }
.gf-scene p{ color:var(--g-muted); font-size:1.15rem; margin:0; }

@media (max-width:980px){ .gf-intro-grid{ grid-template-columns:1fr; } .gf-stats{ grid-template-columns:repeat(3,1fr); } .gf-porte-grid{ grid-template-columns:repeat(2,1fr); } .gf-scenes-grid{ grid-template-columns:1fr; } }
@media (max-width:560px){ .gf-stats{ grid-template-columns:repeat(2,1fr); } .gf-porte-grid{ grid-template-columns:1fr; } }

/* ===== ENCADRÉ REPÈRES — FUTURISTE DYNAMIQUE ===== */
.gf-reperes{ position:relative; overflow:hidden; isolation:isolate; }
/* halo qui respire en fond */
.gf-reperes::before{ content:""; position:absolute; inset:-40%; z-index:-1; pointer-events:none;
  background:radial-gradient(300px 120px at 20% 20%,rgba(43,157,103,.14),transparent 60%),
             radial-gradient(300px 120px at 80% 80%,rgba(252,62,56,.12),transparent 60%);
  animation:gfReperesGlow 10s ease-in-out infinite alternate; }
@keyframes gfReperesGlow{ from{ transform:translate(-3%,-2%);} to{ transform:translate(3%,2%);} }
/* liseré dégradé animé */
.gf-reperes::after{ content:""; position:absolute; inset:0; border-radius:inherit; padding:1px; pointer-events:none; z-index:2;
  background:linear-gradient(135deg,var(--g-vert),var(--g-jaune),var(--g-orange),var(--g-rouge),var(--g-turq-2));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0); -webkit-mask-composite:xor; mask-composite:exclude;
  opacity:.4; background-size:300% 300%; animation:gfBorderFlow 8s ease infinite; }
@keyframes gfBorderFlow{ 0%{background-position:0% 50%;}50%{background-position:100% 50%;}100%{background-position:0% 50%;} }

.gf-reperes li{ position:relative; padding-left:1.2rem; transition:transform .25s ease, background .25s ease; }
/* point lumineux + ligne qui s'allume au survol */
.gf-reperes li::before{ content:""; position:absolute; left:0; top:50%; transform:translateY(-50%); width:9px; height:9px; border-radius:50%;
  background:var(--c); box-shadow:0 0 12px var(--c); opacity:.85; transition:transform .25s, box-shadow .25s; }
.gf-reperes li:hover{ transform:translateX(6px); }
.gf-reperes li:hover::before{ transform:translateY(-50%) scale(1.5); box-shadow:0 0 22px var(--c); }
.gf-reperes li span{ position:relative; transition:color .25s; }
.gf-reperes li:hover span{ color:#fff; }
/* apparition en cascade au chargement */
.gf-reperes li{ opacity:0; transform:translateX(-10px); animation:gfLineIn .5s ease forwards; }
.gf-reperes li:nth-child(1){ animation-delay:.05s; } .gf-reperes li:nth-child(2){ animation-delay:.12s; }
.gf-reperes li:nth-child(3){ animation-delay:.19s; } .gf-reperes li:nth-child(4){ animation-delay:.26s; }
.gf-reperes li:nth-child(5){ animation-delay:.33s; } .gf-reperes li:nth-child(6){ animation-delay:.40s; }
@keyframes gfLineIn{ to{ opacity:1; transform:translateX(0);} }
