/* ==== HERO ==== */
.hero{ position:relative; z-index:0; min-height:var(--hero-h); isolation:isolate; color:var(--c-white); overflow:hidden; }
.hero__overlay{
  position:absolute; inset:0; z-index:-1;
  background:
    radial-gradient(80% 80% at 70% 30%, rgba(0,0,0,0), rgba(0,0,0,.7)),
    linear-gradient(180deg, rgba(0,0,0,0) 20%, rgba(0,0,0,.5) 100%);
  opacity: calc(var(--overlay, 35) / 100);
}
.hero__bg, .hero__bg img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; }

.hero__frame{ position:relative; width:100%; margin:0 auto; height:var(--hero-h); }
.hero__line{ position:absolute; background:var(--line-color); }
.hero__line--v{
  left:var(--gutter); top:0; bottom:0; width:var(--line-w);
  -webkit-mask-image: linear-gradient(to bottom,#000 0 var(--cut-top),transparent var(--cut-top) calc(var(--cut-top) + var(--cut-height)),#000 calc(var(--cut-top) + var(--cut-height)) 100%);
          mask-image: linear-gradient(to bottom,#000 0 var(--cut-top),transparent var(--cut-top) calc(var(--cut-top) + var(--cut-height)),#000 calc(var(--cut-top) + var(--cut-height)) 100%);
}
.hero__line--h{ left:0; right:0; bottom:clamp(12vh,18%,180px); height:var(--line-w); z-index:1; }

.hero__title{
  position:absolute; left:calc(var(--gutter) - 5px); bottom:clamp(11.7vh,17.7%,179px);
  transform:translateY(45%); margin:0; z-index:2; line-height:.65; letter-spacing:.02em;
}

/* ==== CTA ==== */
.cta{ border:none; background:none; cursor:pointer; display:inline-flex; align-items:center; gap:8px; color:var(--c-white); text-decoration:none; z-index:10; }
.cta span{ padding-right:10px; }
.cta svg{ transform:translateX(-8px); transition:all .3s ease; color:var(--c-white); width:var(--svg-size); height:var(--svg-size); }
.cta:hover svg{ transform:translateX(0); }
.cta:active svg{ transform:scale(.9); }
.hover-underline-animation{ position:relative; color:var(--c-white); }
.hover-underline-animation:after{
  content:""; position:absolute; width:100%; transform:scaleX(0); height:2px; bottom:0; left:0;
  background-color:var(--c-white); transform-origin:bottom right; transition:transform .25s ease-out;
}
.cta:hover .hover-underline-animation:after{ transform:scaleX(1); transform-origin:bottom left; }

.btn--hero{ position:absolute; right:var(--gutter); bottom:clamp(7vh,11%,110px); }

/* ==== SERVICES ==== */
.c-services__media{ position:relative; display:block; width:100%; overflow:hidden; }
.c-services__image{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:top center; z-index:0; }
.c-services__bandAbs{
  position:absolute; left:0; top:0; width:100%; height:100%; z-index:1; pointer-events:none;
  background: linear-gradient(180deg, var(--c-blue-900) 0%, #07346e99 35%, #07346e4b 50%, #07346e00 100%);
}
.c-services__tabs{ display:grid; grid-template-columns:repeat(4,1fr); gap:0; width:100%; max-width:100vw; overflow-x:hidden; }
.c-services__tab{
  background:var(--c-white); border:0; cursor:pointer; text-align:center; transition:background .2s ease;
  white-space:normal; word-break:break-word; padding:30px 6px; text-decoration:none !important;
}
.c-services__tab-label{ font-size:var(--panel-text-size) !important; color:var(--c-blue-900); }
.c-services__tab-caret{ display:block; line-height:1; margin-top:4px; font-style:normal !important; color:var(--c-blue-900); }
.c-services__tab.is-active{ background:var(--c-blue-900); color:var(--c-white) !important; }
.c-services__tab.is-active .c-services__tab-label,
.c-services__tab.is-active .c-services__tab-caret{ color:var(--c-white) !important; }
.c-services__panel{ display:none; }
.c-services__panel.is-active{ display:block; font-size:var(--panel-text-size); color:var(--c-white) !important; }

.c-services__overlay{
  position:relative; z-index:2; display:flex; flex-direction:column; justify-content:flex-start; align-items:flex-start;
  text-align:left; color:var(--c-white);
  padding:clamp(16px,4vw,40px);
  padding-bottom:calc(clamp(16px,4vw,40px) + var(--cta-gap));
}
.c-services__heading{ position:relative; margin:0 0 10px; line-height:1.2; color:var(--c-white) !important; }
.c-services__bullets{ display:block; gap:10px 24px; margin:12px 0 14px 0; padding:0; list-style:none; color:var(--c-white); }
.c-services__bullets li{
  position:relative; width:70%; display:flex; align-items:center; gap:8px; margin-bottom:6px; color:var(--c-white) !important;
}
.c-services__bullets li::before{
  content:"✓"; display:inline-block; width:18px; height:18px; flex-shrink:0; color:var(--c-white);
  font-weight:700; font-size:var(--s-size); line-height:1;
}
.c-services__cta-wrap{ width:100%; display:flex; justify-content:flex-end; }

a.btn{
  position:relative; display:inline-block; color:var(--c-gold); text-decoration:none; border:2px solid var(--c-gold);
  padding:10px 20px; cursor:pointer; background:transparent; transition:all 1s; overflow:hidden; z-index:0;
}
a.btn span{ position:relative; z-index:2; color:var(--c-gold); }
a.btn:hover span{ color:var(--c-blue-900); }
a.btn::before{
  content:""; position:absolute; height:100%; width:0%; top:0; left:-40px; transform:skewX(45deg);
  background-color:var(--c-gold); z-index:1; transition:all 1s;
}
a.btn:hover::before{ width:160%; }

/* ==== ASSOCIATION ==== */
.asso-banner{ position:relative; min-height:clamp(380px,60vw,640px); overflow:hidden; color:var(--c-white); }
.asso-banner-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:var(--bg-x) var(--bg-y); z-index:0; }
.asso-banner::after{ content:""; position:absolute; inset:0; background:rgba(255,255,255,.5); z-index:1; }
.asso-lighthouse{ position:absolute; top:0; left:0; width:100%; z-index:2; }
.asso-lighthouse img, .asso-lighthouse source{ display:block; width:100%; height:auto; }
.asso-title{ position:absolute; z-index:3; top:0; right:60px; margin:0; text-align:right; color:var(--c-blue-900); }
.asso-overlay{ position:absolute; inset:0; display:flex; align-items:flex-end; justify-content:flex-end; padding:clamp(12px,3vw,28px); z-index:2; }
.asso-card{ width:70vw; color:var(--c-white); padding:clamp(12px,1.8vw,22px) clamp(16px,2.2vw,28px); line-height:1.5; text-transform:uppercase; }

/* ==== ÉDUCATEURS ==== */
.edu-frame{ position:relative; width:100%; margin:0 auto; min-height:var(--edu-min); height:auto; }
.edu-line{ position:absolute; background:var(--c-blue-900); }
.edu-line--v{
  left:var(--gutter); top:0; bottom:0; width:var(--line-w);
  -webkit-mask-image: linear-gradient(to bottom,#000 0 var(--cut-top),transparent var(--cut-top) calc(var(--cut-top) + var(--cut-height)),#000 calc(var(--cut-top) + var(--cut-height)) 100%);
          mask-image: linear-gradient(to bottom,#000 0 var(--cut-top),transparent var(--cut-top) calc(var(--cut-top) + var(--cut-height)),#000 calc(var(--cut-top) + var(--cut-height)) 100%);
}
.edu-line--h{ left:0; right:0; bottom:var(--line-bottom); height:var(--line-w); z-index:1; }

.edu-title{
  position:absolute; left:calc(var(--gutter) - 3px); bottom:var(--title-bottom);
  transform:translateY(45%); margin:0; z-index:2; line-height:.65;
}

.edu__content{ position:relative; margin-left:var(--gutter); margin-right:min(24px,4vw); padding-top:24px; padding-bottom:calc(var(--title-bottom) + var(--gap-over-title)); }
.edu__posts{ position:relative; }
.edu__post{ display:none; max-width:1040px; }
.edu__post.is-active{ display:block; }

.edu__intro{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(10px,3vw,32px); align-items:start; margin-bottom:14px; }
.edu__col{ min-width:0; }
.edu__header{ margin-bottom:12px; }
.edu__name{ margin:0 0 20px -1px; }
.edu__desc{ margin:0 0 14px; }

.edu__col--media{ display:flex; flex-direction:column; align-items:center; }
.edu__media{ display:flex; flex-direction:column; align-items:center; gap:10px; width:100%; }
.edu-carousel{ display:flex; flex-direction:column; align-items:center; gap:8px; }

.edu-stage{
  --card-w: clamp(120px, 22vw, 180px);
  --card-h: calc(var(--card-w) * 1.2);
  --side-scale-x: .8; --side-scale-y: .8; --side-shift: 28%;
  position:relative; width:var(--card-w); height:var(--card-h);
}
.edu-card{
  position:absolute; left:50%; top:50%; width:var(--card-w); height:var(--card-h);
  transform:translate(-50%,-50%); border-radius:18px; overflow:hidden; box-shadow:0 8px 20px rgba(0,0,0,.25); z-index:1;
  transition:transform .25s ease, box-shadow .25s ease, opacity .25s ease;
}
.edu-card img{ position:absolute; inset:0; width:100%; height:100%; max-width:none; max-height:none; object-fit:cover; object-position:50% 50%; display:block; }
.edu-card--current{ z-index:3; pointer-events:none; }
.edu-card--prev{
  transform:translate(calc(-50% - var(--side-shift)),-50%) scale(var(--side-scale-x), var(--side-scale-y));
  z-index:2; cursor:pointer; border:none !important;
}
.edu-card--next{
  transform:translate(calc(-50% + var(--side-shift)),-50%) scale(var(--side-scale-x), var(--side-scale-y));
  z-index:2; cursor:pointer; border:none !important;
}
.edu-card--prev img,
.edu-card--next img{ filter:blur(2px) brightness(.9); transform:scale(1.03); }
.edu-card--prev::after,
.edu-card--next::after{ content:""; position:absolute; inset:0; pointer-events:none; background:rgba(7,52,110,.28); }

.edu-dots{ display:flex; align-items:center; gap:6px; }
.edu-dot{ width:14px; height:3px; border-radius:2px; background:rgba(7,52,110,.2); border:0; padding:0; cursor:pointer; transition:background .2s ease, transform .2s ease; }
.edu-dot.is-active{ background:rgba(7,52,110,1); transform:scale(1.05); }

.edu__accordions{ margin-top:20px; padding:0 20px; grid-column:1 / -1; width:100%; }
.edu-acc{ border-top:1px solid var(--c-blue-900); }
.edu__accordions .edu-acc:last-child{ border-bottom:1px solid var(--c-blue-900); }
.edu-acc__btn{ width:100%; background:transparent; border:none; color:inherit; text-align:left; padding:12px 12px; display:flex; justify-content:space-between; align-items:center; cursor:pointer; }
.edu-acc__plus{ line-height:1; transform:translateY(-1px); transition:transform .2s ease; font-size:var(--s-size); }
.edu-acc__btn[aria-expanded="true"] .edu-acc__plus{ transform:rotate(45deg) translateY(-1px); }
.edu-acc__panel{ padding:0 0 12px; }
.edu-list{ margin:0; padding-left:18px; display:grid; gap:6px; }

/* ==== TÉMOIGNAGES ==== */
.cuf-temoignages{ position:relative; background:var(--bg, none) center/cover no-repeat; padding:clamp(48px,6vw,96px) 20px; overflow:hidden; }
.cuf-temoignages__overlay{ position:absolute; inset:0; pointer-events:none; background:rgba(255,255,255,.3); z-index:0; }
.cuf-temoignages__title{ position:absolute; right:var(--gutter, 24px); bottom:0; transform:translateY(45%); margin:0; text-align:right; z-index:2; }
.cuf-temoignages__inner{ position:relative; z-index:1; padding-bottom:calc(var(--title-bottom) + var(--gap-over-title)); }

.cuf-swiper-temoignages{ position:relative; }
.cuf-swiper-temoignages.swiper{ overflow:visible !important; }
.cuf-swiper-temoignages .swiper-slide{ width:100% !important; display:flex; justify-content:center; align-items:center; }

.cuf-t-card__inner{
  max-width:80vw; width:100%; background:#f5fbfeac; border-radius:20px; box-shadow:0 12px 40px rgba(0,0,0,.35);
  padding:clamp(18px,4vw,28px) clamp(18px,5vw,36px); position:relative;
}
.cuf-t-card__stars{ display:flex; gap:6px; align-items:center; justify-content:center; margin:2px auto 10px; }
.cuf-star{ fill:#3b536f; opacity:.9; transition:opacity .2s ease; width:var(--svg-size); height:var(--svg-size); }
.cuf-star.is-filled{ fill:var(--c-gold); opacity:1; }

.cuf-t-card__content{ color:var(--c-blue-900); }
.cuf-t-card__quote{ margin:0 0 18px; line-height:1.5; text-align:justify; }
.cuf-t-card__meta{ display:flex; flex-direction:column; gap:2px; align-items:center; text-align:center; }
.cuf-t-card__name{ text-align:center; text-transform:uppercase; }
.cuf-t-card__service{ opacity:.85; letter-spacing:.04em; text-align:center; font-size:var(--s-size); text-transform:uppercase; }

.cuf-swiper-btn{
  position:absolute; top:50%; transform:translateY(-50%); width:42px; height:42px; border:0; background:transparent; cursor:pointer;
  transition:transform .2s ease, background .2s ease; z-index:3; display:flex; align-items:center; justify-content:center;
}
.cuf-swiper-btn:after{ content:''; width:14px; height:14px; border-top:2px solid var(--c-blue-900); border-right:2px solid var(--c-blue-900); transform:rotate(45deg); }
.cuf-swiper-btn.prev{ left:0; }
.cuf-swiper-btn.prev:after{ transform:rotate(-135deg); left:2px; }
.cuf-swiper-btn.next{ right:0; }
.cuf-swiper-btn:hover{ transform:translateY(-50%) scale(1.06); }
.cuf-swiper-btn:focus-visible{ outline:2px solid var(--c-white); outline-offset:2px; }

.cuf-temoignages .swiper-pagination{
  position:absolute; left:0; right:0; bottom:-25px !important; z-index:10; display:flex; justify-content:center; align-items:center; gap:6px;
}
.cuf-temoignages .swiper-pagination-bullet{
  width:14px; height:3px; border-radius:2px; background:rgba(255,255,255,.85); border:0; padding:0; cursor:pointer;
  transition:background .2s ease, transform .2s ease;
}
.cuf-temoignages .swiper-pagination-bullet-active{ background:var(--c-blue-900); transform:scale(1.05); }
.cuf-temoignages__empty{ color:var(--c-blue-900); opacity:.9; text-align:center; }

/* ==== SHOP ==== */
.cuf-shop{
  position:relative; padding:clamp(48px,6vw,96px) 0;
  background: radial-gradient(circle at center,#D9D9D9 0%, rgba(217,217,217,0) 40%, rgba(7,52,110,.1) 100%);
}
.cuf-shop__inner{ width:min(1100px,92vw); margin-left:var(--gutter); margin-right:auto; }
.cuf-shop__head{ margin-bottom:clamp(24px,3vw,40px); }
.cuf-shop__title{ display:inline-block; margin:0 0 4px 0; line-height:1; letter-spacing:.02em; }
.cuf-shop__intro{ margin:0; }
.cuf-shop__grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
.cuf-shop__card{ overflow:hidden; display:flex; flex-direction:column; }
.cuf-shop__media{ position:relative; width:100%; height:180px; display:flex; align-items:center; justify-content:center; }
.cuf-shop__media img{ max-width:100%; max-height:100%; object-fit:cover; }
.cuf-shop__media--placeholder{ width:100%; height:100%; background:linear-gradient(135deg, rgba(255,255,255,.08), rgba(255,255,255,.02)); }
.cuf-shop__badge{
  position:absolute; top:50%; left:50%; transform:translate(-50%, -50%);
  padding:20px 25px; border-radius:6px; background:rgba(255,255,255,.8); color:var(--c-blue-900) !important;
  text-align:center; line-height:1.2; display:inline-block; pointer-events:none; font-weight:bold !important;
}
.cuf-shop__body{ padding:16px; display:grid; gap:10px; justify-items:center; text-align:center; }
.cuf-shop__name{ margin:0; }
.cuf-shop__price{ opacity:.9; font-style:italic; color:var(--c-blue-900); }
.cuf-shop__empty{ color:var(--c-blue-900); opacity:.8; margin-top:20px; }

/* ==== GALERIE ==== */
.cuf-gallery{ position:relative; width:100%; height:60vh; min-height:60vh; overflow:hidden; margin-bottom:-80px; z-index:1; }
.cuf-swiper, .cuf-swiper .swiper-wrapper, .cuf-swiper .swiper-slide{ width:100%; height:100%; }
.cuf-gallery__img{ width:100%; height:100%; object-fit:cover; display:block; }
.cuf-gallery__overlay{ position:absolute; inset:0 auto auto 0; width:100%; pointer-events:none; z-index:5; }
.cuf-gallery__band{
  position:absolute; left:0; top:0; width:100%; height:100px;
  background: linear-gradient(180deg, rgba(221,231,240,1) 0%, rgba(221,231,240,.6) 60%, rgba(221,231,240,0) 100%);
}
.cuf-gallery__title{ position:absolute; right:2rem; top:1.25rem; margin:0; }
.cuf-gallery__empty{ color:var(--c-white); text-align:center; padding:4rem 1rem; opacity:.8; }

/* ==== PAGE SPÉCIFIQUE ==== */
body.page-template-page-prepa-physique #services{ --cta-gap:80px; position:relative; overflow:visible; z-index:0; margin-bottom:-80px; }

/* ==== CONTACT (CUF) ==== */
body.page-template-page-contact::before{
  content:""; position:fixed; inset:0;
  background:url('../images/phare-bleu.png') no-repeat top left;
  background-size:cover; opacity:.1; pointer-events:none; z-index:0;
}

.cuf-contact{ --line-color: var(--c-blue-900); --title-bottom: 130px; --gap-over-title: 100px; position:relative; }
.cufc-frame{ position:absolute; inset:0; z-index:0; pointer-events:none; min-height:0; }
.cufc-line{ position:absolute; background:var(--line-color); z-index:0; }
.cufc-line--v{ left:var(--gutter); top:0; bottom:0; width:var(--line-w); }
.cufc-line--h{ left:0; right:0; top:var(--title-bottom); height:var(--line-w); }

.cufc-title{
  position:absolute; left:calc(var(--gutter) - 7px);
  top:calc(var(--title-bottom) - 54px);
  transform:translateY(45%); margin:0; z-index:2; line-height:.65; letter-spacing:.02em; color:var(--c-blue-900);
}

.cufc__content{
  position:relative; z-index:1;
  margin-left:calc(var(--gutter) + 10px); margin-right:10px;
  padding-top:calc(var(--title-bottom) + var(--gap-over-title));
  padding-bottom:30px; max-width:900px;
}

/* WPForms – variables utiles */
.cufc__content .wpforms-container,
.cufc__content .wpforms-container-full{ --fld-h: 40px; --section-gap: clamp(18px,3.2vw,28px); }

.cufc__content .wpforms-form{ display:grid; gap:var(--section-gap); color:var(--c-blue-900); }

/* Grilles */
.cufc__content .cufc-grid-a, .cufc__content .cufc-grid-b{ display:grid; grid-template-columns:1fr 1fr; gap:1.5rem; }
.cufc__content .cufc-grid-b .span-2{ grid-column:1 / -1; }

/* Champs */
.cufc__content .wpforms-field{ margin:0 !important; }
.cufc__content .wpforms-field label{ display:block; margin:0 0 6px; }
.cufc__content .wpforms-field textarea{ min-height:120px; height:auto; resize:vertical; }

/* Placeholder */
.cufc__content .wpforms-field ::placeholder, .cufc__content .wpforms-field select::placeholder{ color:var(--c-blue-900); opacity:.85; }

/* Select custom */
.cufc__content .wpforms-field select{
  appearance:none;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--c-blue-900) 50%),
    linear-gradient(135deg, var(--c-blue-900) 50%, transparent 50%),
    linear-gradient(to right, transparent, transparent);
  background-position:
    calc(100% - 18px) 50%,
    calc(100% - 12px) 50%,
    100% 0;
  background-size:6px 6px, 6px 6px, 2.5em 100%; background-repeat:no-repeat; padding-right:42px; line-height:1.2;
}

/* Inputs */
.cuf-contact input[type="text"],
.cuf-contact input[type="email"],
.cuf-contact input[type="tel"],
.cuf-contact select,
.cuf-contact textarea{
  width:100%; height:var(--fld-h);
  background-color:rgba(7,52,110,.3);
  color:var(--c-blue-900);
  border:none; border-radius:5px;
  padding:.6rem .8rem; font-size:1rem;
  box-shadow:2px 2px 5px rgba(7,52,110,.8);
  transition:box-shadow .2s ease, background-color .2s ease;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.cuf-contact input[type="text"]:focus,
.cuf-contact input[type="email"]:focus,
.cuf-contact input[type="tel"]:focus,
.cuf-contact select:focus,
.cuf-contact textarea:focus{ outline:none; background-color:rgba(7,52,110,.35); box-shadow:2px 2px 7px rgba(7,52,110,.9); }

/* Bouton envoyer */
.cufc__content .wpforms-submit{
  display:inline-block; border:0; border-radius:14px;
  padding:14px 28px; line-height:1; cursor:pointer;
  background:var(--c-blue-900); color:var(--c-white); font-weight:800; text-transform:uppercase;
  box-shadow:0 10px 24px rgba(7,52,110,.35);
  transition:transform .15s ease, box-shadow .2s ease, background .2s ease;
}
.cufc__content .wpforms-submit:hover{ transform:translateY(-1px); box-shadow:0 14px 28px rgba(7,52,110,.38); }
.cufc__content .wpforms-submit:active{ transform:translateY(0); }
.cufc__content .wpforms-submit:focus-visible{ outline:2px solid var(--c-gold); outline-offset:2px; }
.wpforms-submit span{ color:var(--c-white); }
.cufc__content .wpforms-submit-container{ margin-top:1.5rem; display:flex; justify-content:center; }

/* Accessibilité focus */
.cufc__content .wpforms-field input:focus,
.cufc__content .wpforms-field select:focus,
.cufc__content .wpforms-field textarea:focus{ outline:2px solid var(--c-gold); outline-offset:2px; }

/* ITI */
.iti{ width:100%; }
.iti input[type="tel"]#telephone{
  width:100%; box-sizing:border-box;
  background-color:rgba(7,52,110,.3);
  border:none; border-radius:5px; padding:.6rem .8rem;
  box-shadow:2px 2px 5px rgba(7,52,110,.8);
}
.iti__flag-container .iti__selected-flag{ background:transparent; border-radius:5px 0 0 5px; }
.iti__country-list{ z-index:9999; box-shadow:0 8px 20px rgba(7,52,110,.25); border-radius:8px; }

/* Messages/états */
.field-error{ margin-top:.35rem; color:#b00020; font-size:.9rem; }
.field-hint{ color:#b00020; font-size:.9rem; margin-top:.35rem; }
.needs-attention{ outline:2px solid #b00020; outline-offset:2px; }

/* Modale */
.cufc-modal__content{ background-color:var(--c-white); }
.cufc-modal-open body{ overflow:hidden; }

.wpforms-submit{ position:relative; text-align:center; }
.wpforms-submit .btn-spinner{
  display:none; width:1.2em; height:1.2em;
  border:2px solid rgba(255,255,255,.35); border-top-color:var(--c-white);
  border-radius:50%; animation:cuf-spin .8s linear infinite; vertical-align:middle;
}
.wpforms-submit.is-loading{ cursor:default; }
.wpforms-submit.is-loading .btn-label{ display:none; }
.wpforms-submit.is-loading .btn-spinner{ display:inline-block; }

@keyframes cuf-spin { to { transform:rotate(360deg); } }

.cufc-modal{ position:fixed; inset:0; z-index:100000; display:none; pointer-events:none; }
.cufc-modal.is-open{ display:block; pointer-events:auto; }
.cufc-modal[aria-hidden="true"]{ display:none; }

.cufc-modal__overlay{
  position:fixed; inset:0; background:rgba(0,0,0,.55);
  backdrop-filter:saturate(120%) blur(2px);
  z-index:100001; pointer-events:auto;
}
.cufc-modal__content{
  position:relative; z-index:100002; max-width:min(520px,90vw); margin:10vh auto 0; padding:1.5rem;
  border-radius:14px; background:var(--c-white) !important; color:#111;
  box-shadow:0 24px 48px rgba(7,52,110,.25); text-align:center; pointer-events:auto; isolation:isolate;
}
.cufc-modal__content h3{ margin:0 0 .5rem 0; color:var(--c-blue-900); }
.cufc-modal__actions{ margin-top:1rem; }

.cufc-btn-close{
  display:inline-block; padding:.75rem 1.25rem; border-radius:12px;
  background:var(--c-blue-900); color:var(--c-white); font-weight:800; text-transform:uppercase;
  text-decoration:none; box-shadow:0 10px 24px rgba(7,52,110,.35);
}
.cufc-btn-close:hover{ transform:translateY(-1px); box-shadow:0 14px 28px rgba(7,52,110,.38); }
.cufc-btn-close:focus-visible{ outline:2px solid var(--c-gold); outline-offset:3px; }

.cuf-contact .has-clear{ padding-right:2.25rem !important; }
.cuf-contact .fld-clear{
  position:absolute; right:10px; top:75%; transform:translateY(-50%);
  width:26px; height:26px; border:0; border-radius:50%;
  background:inherit; color:var(--c-blue-900);
  cursor:pointer; display:none; align-items:center; justify-content:center;
}
.cuf-contact .fld-clear::before{ content:"✕"; font-size:16px; line-height:1; }
.cuf-contact .fld-clear:hover{ filter:opacity(.85); }
.cuf-contact .fld-clear:focus-visible{ outline:2px solid var(--c-gold); outline-offset:2px; }

/* ==== MEDIA QUERIES ==== */
/* --- MOBILE ≤640px --- */
@media (max-width: 640px){
  .c-services__tab{ padding:10px 4px; }
  .c-services__bullets{ grid-template-columns:1fr; }
  .cuf-temoignages__title{ right:var(--gutter, 16px); transform:translateY(35%); }

  .btn--hero{ bottom:0; padding:.5rem !important; }
  .hero__line--h{ bottom:clamp(6vh,9%,90px); }
  .hero__title{ bottom:clamp(5vh,8%,60px); left:calc(var(--gutter) - 3px); transform:translateY(37%); }

  .asso-banner{ min-height:440px; }
  .asso-title{ top:10px; right:20px; }
  .asso-card{ max-width:92%; }

  .edu-stage{ --card-w:100px; --card-h:130px; --side-scale-x:.8; --side-scale-y:.769; --side-shift:32%; }
  .edu-title{ left:calc(var(--gutter) - 2px); }

  .cuf-swiper-btn.prev{ left:-22px; }
  .cuf-swiper-btn.next{ right:-22px; }

  /* Contact – adaptations */
  .cufc-title{ left:calc(var(--gutter) - 2px); transform:translateY(37%); }
  .cufc__content{ margin-right:16px; --gap-over-title:40px; }
  .cufc__content .cufc-grid-a,
  .cufc__content .cufc-grid-b{ gap:14px 16px; }
  .cuf-contact .fld-clear{ top:72%; }
}

/* --- TABLET 641–1023px --- */
@media (min-width: 641px) and (max-width: 1023px){
  .c-services__media{ min-height:0; }
  .c-services__overlay{ justify-content:flex-start; padding:clamp(24px,4vw,56px); padding-bottom:calc(clamp(24px,4vw,56px) + var(--cta-gap)); }
  .c-services__heading{ margin-top:60px; margin-bottom:120px; }
  .c-services__bullets{ margin:0 0 16px 0; }
  .c-services__bullets li{ gap:30px; margin-bottom:60px; width:60%; }
  .c-services__cta-wrap{ margin-top:40px; }

  .cuf-shop__grid{ grid-template-columns:repeat(2,1fr); gap:24px; }
  .cuf-shop__media{ height:300px; }

  .cufc-title{ left:calc(var(--gutter) - 5px); }
}

/* --- DESKTOP ≥1024px --- */
@media (min-width: 1024px){
  .c-services__media{ min-height:0; }
  .c-services__overlay{ justify-content:flex-start; padding:clamp(24px,4vw,56px); padding-bottom:calc(clamp(24px,4vw,56px) + var(--cta-gap)); }
  .c-services__heading{ margin-top:60px; margin-bottom:120px; }
  .c-services__bullets{ margin:0 0 16px 0; }
  .c-services__bullets li{ gap:30px; margin-bottom:60px; width:60%; }
  .c-services__cta-wrap{ margin-top:40px; }

  .cuf-shop__grid{ grid-template-columns:repeat(4,1fr); gap:28px; }

  .cuf-gallery{ height:60vh; min-height:60vh; }
  .cuf-gallery__band{ height:110px; }
  .cuf-gallery__title{ top:1.75rem; right:3rem; }
}

/* ==== SUPPORTS ==== */
@supports not (mask-image: linear-gradient(#000,#000)) {
  .hero__line--v{ background:none; }
  .hero__line--v::before, .hero__line--v::after{ content:""; position:absolute; left:0; width:var(--line-w); background:var(--line-color); }
  .hero__line--v::before{ top:0; height:var(--cut-top); }
  .hero__line--v::after{ top:calc(var(--cut-top) + var(--cut-height)); bottom:0; }
  .edu-line--v{ background:none; }
  .edu-line--v::before, .edu-line--v::after{ content:""; position:absolute; left:0; width:var(--line-w); background:var(--line-color); }
  .edu-line--v::before{ top:0; height:var(--cut-top); }
  .edu-line--v::after{ top:calc(var(--cut-top) + var(--cut-height)); bottom:0; }
}