/* =========================================================================
   UbSkilled — feuille de style principale (v3)
   Variables surchargées par le Customizer (inc/customizer.php).
   ========================================================================= */
:root {
	--ub-brand: #0052cc;
	--ub-brand-dark: #003d99;
	--ub-brand-soft: #dbe7ff;
	--ub-night: #0b2347;
	--ub-night-2: #10387a;
	--ub-gold: #ffd700;
	--ub-mint: #00d084;
	--ub-mint-dark: #067a4d;
	--ub-pale: #eef4fb;
	--ub-muted: #5b6b85;
	--ub-border: #e3e9f2;
	--ub-radius: 16px;
	--ub-radius-sm: 10px;
	--ub-shadow: 0 10px 30px rgba(11, 35, 71, .08);
	--ub-shadow-lg: 0 24px 60px rgba(11, 35, 71, .14);
	--ub-font-head: "Montserrat", "Inter", system-ui, sans-serif;
	--ub-font-body: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
	--ub-container: 1200px;
	--ub-section: clamp(3.5rem, 8vw, 6rem);
	--ub-ease: cubic-bezier(.2, .7, .2, 1);
}

/* Base ------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 140px; overflow-x: clip; }
body { margin: 0; font-family: var(--ub-font-body); font-size: 1.05rem; line-height: 1.6; color: var(--ub-night); background: #fff; -webkit-font-smoothing: antialiased; overflow-x: clip; }
.ub-main { overflow-x: clip; }
img, svg, video { max-width: 100%; height: auto; }
a { color: var(--ub-brand); text-decoration: none; }
a:hover { color: var(--ub-brand-dark); }
h1, h2, h3, h4, h5, h6 { font-family: var(--ub-font-head); font-weight: 700; line-height: 1.15; letter-spacing: -.02em; color: var(--ub-night); margin: 0 0 .6em; text-wrap: balance; }
h1 { font-size: clamp(2.2rem, 5vw, 3.4rem); }
h2 { font-size: clamp(1.8rem, 3.6vw, 2.5rem); }
h3 { font-size: 1.3rem; }
p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }
.ub-container { max-width: var(--ub-container); margin-left: auto; margin-right: auto; padding-left: 1.25rem; padding-right: 1.25rem; }
.ub-main { min-height: 50vh; }
.screen-reader-text { position: absolute !important; clip: rect(1px,1px,1px,1px); width: 1px; height: 1px; overflow: hidden; }
.skip-link:focus { position: fixed; top: 8px; left: 8px; z-index: 9999; clip: auto; width: auto; height: auto; padding: .6em 1em; background: var(--ub-brand); color: #fff; border-radius: 999px; }
.ub-hide-md { display: inline-flex; }
:focus-visible { outline: 3px solid var(--ub-gold); outline-offset: 2px; }

/* Apparition douce ------------------------------------------------------- */
/* Fiabilité : les éléments ne sont masqués que si html.ub-js est posé (script en tête) ; main.js pose html.ub-motion
   quand l'observateur est prêt, sinon la garde en tête retire ub-js après 3 s et tout redevient visible. */
.ub-reveal { transition: opacity .7s var(--ub-ease), transform .7s var(--ub-ease); }
.ub-js .ub-reveal:not(.is-visible) { opacity: 0; transform: translateY(18px); }
.ub-js .ub-split__media.ub-reveal:not(.is-visible) { transform: translateY(10px) scale(.97); }
.ub-js .ub-footer__intro.ub-reveal:not(.is-visible) { transform: translateY(10px); }
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	.ub-reveal, .ub-js .ub-reveal:not(.is-visible) { opacity: 1; transform: none; transition: none; }
	*, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; animation-timeline: auto !important; }
	/* Héros figé proprement : pas de cache sur la photo, plaque directement à l'état « terminé ». */
	.ub-hero__frame::after { display: none; }
	.ub-hero__print, .ub-hero__print * { animation-delay: 0s !important; }
}

/* Boutons ---------------------------------------------------------------- */
/* Verrouillage de la charte face aux styles globaux d'Elementor / Thim Elementor Kit / LearnPress. */
a.ub-btn, .ub-btn, .elementor a.ub-btn, .elementor-widget-text-editor a.ub-btn { border-radius: 999px !important; text-decoration: none !important; box-shadow: none; }
a.ub-btn--primary, .elementor a.ub-btn--primary { background: var(--ub-brand) !important; color: #fff !important; border: 1.5px solid var(--ub-brand) !important; }
a.ub-btn--primary:hover, .elementor a.ub-btn--primary:hover { background: var(--ub-brand-dark) !important; border-color: var(--ub-brand-dark) !important; color: #fff !important; }
a.ub-btn--outline, .elementor a.ub-btn--outline { background: #fff !important; color: var(--ub-night) !important; border: 1.5px solid var(--ub-border) !important; }
a.ub-btn--outline:hover, .elementor a.ub-btn--outline:hover { color: var(--ub-brand) !important; border-color: var(--ub-brand) !important; background: #fff !important; }
a.ub-btn--white, .elementor a.ub-btn--white { background: transparent !important; color: #fff !important; border: 1.5px solid rgba(255,255,255,.45) !important; }
a.ub-btn--white:hover, .elementor a.ub-btn--white:hover { background: rgba(255,255,255,.12) !important; border-color: #fff !important; color: #fff !important; }
.elementor-widget-text-editor .ub-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin: 1.25rem 0 0; }
.elementor-widget-text-editor .ub-actions--center { justify-content: center; }
.elementor-widget-text-editor .ub-actions a.ub-btn { margin: 0; }
.ub-btn, .wp-block-button__link, .wp-element-button, .ub-el-btn .elementor-button, button.ub-btn { display: inline-flex; align-items: center; justify-content: center; gap: .4em; padding: .8em 1.5em; border-radius: 999px; font-family: var(--ub-font-body); font-weight: 600; font-size: .95rem; line-height: 1.2; text-decoration: none; border: 1.5px solid transparent; cursor: pointer; transition: background .2s, color .2s, border-color .2s, box-shadow .2s, transform .2s; min-height: 44px; }
.ub-btn--primary, .is-style-ub-primary .wp-block-button__link, .wp-block-button__link:not([class*="is-style"]), .ub-el-btn--primary .elementor-button { background: var(--ub-brand); color: #fff; border-color: var(--ub-brand); }
.ub-btn--primary:hover, .is-style-ub-primary .wp-block-button__link:hover, .ub-el-btn--primary .elementor-button:hover { background: var(--ub-brand-dark); border-color: var(--ub-brand-dark); color: #fff; box-shadow: var(--ub-shadow); transform: translateY(-1px); }
.ub-btn--outline, .is-style-ub-outline .wp-block-button__link, .ub-el-btn--outline .elementor-button { background: #fff; color: var(--ub-night); border-color: var(--ub-border); }
.ub-btn--outline:hover, .is-style-ub-outline .wp-block-button__link:hover, .ub-el-btn--outline .elementor-button:hover { border-color: var(--ub-brand); color: var(--ub-brand); background: #fff; }
.ub-btn--white, .is-style-ub-white .wp-block-button__link, .ub-el-btn--white .elementor-button { background: transparent; color: #fff; border-color: rgba(255,255,255,.45); }
.ub-btn--white:hover, .is-style-ub-white .wp-block-button__link:hover, .ub-el-btn--white .elementor-button:hover { background: rgba(255,255,255,.12); border-color: #fff; color: #fff; }
.ub-btn--sm { padding: .6em 1.15em; font-size: .85rem; min-height: 40px; }
.ub-btn--block { width: 100%; }
.ub-btn--arrow::after { content: "→"; transition: transform .2s; }
.ub-btn--arrow:hover::after { transform: translateX(3px); }
.ub-actions, .wp-block-buttons.ub-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1.5rem; }
.ub-actions--center, .wp-block-buttons.ub-actions--center { justify-content: center; }
.wp-block-buttons { gap: .75rem; }
.ub-el-btn { display: inline-block; margin-right: .75rem; margin-top: .5rem; }

/* Étiquettes ------------------------------------------------------------- */
.ub-eyebrow, p.ub-eyebrow { display: block; font-size: .72rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--ub-brand); margin: 0 0 .6rem; }
.ub-eyebrow--light, p.ub-eyebrow--light { color: var(--ub-mint); }
.ub-pill, p.ub-pill { display: inline-block; background: var(--ub-pale); color: var(--ub-brand); font-weight: 600; font-size: .85rem; padding: .35em 1em; border-radius: 999px; margin: 0 0 1.25rem; }
.ub-badge { position: absolute; top: 12px; left: 12px; z-index: 2; font-size: .7rem; font-weight: 700; padding: .35em .8em; border-radius: 999px; background: #fff; color: var(--ub-night); box-shadow: var(--ub-shadow); }
.ub-badge--open { color: var(--ub-mint-dark); background: #e6faf1; }
.ub-badge--limited { color: #8a5a00; background: #fff6d6; }
.ub-badge--waitlist { color: var(--ub-muted); background: #f1f3f7; }
.ub-badge--pending { color: var(--ub-night); background: #fff; }
.ub-badge--custom { color: #fff; background: var(--ub-night); }
.ub-badge--online { color: var(--ub-brand); background: var(--ub-pale); }
/* Barre d'action fixe sur mobile (fiche de formation) : reflète le statut réel. */
.ub-stickycta { display: none; }
@media (max-width: 781px) {
	body.single-lp_course { padding-bottom: 76px; }
	.ub-stickycta { position: fixed; left: 0; right: 0; bottom: 0; z-index: 99970; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 16px calc(10px + env(safe-area-inset-bottom, 0px)); background: #fff; border-top: 1px solid var(--ub-border); box-shadow: 0 -6px 20px rgba(11,35,71,.10); }
	.ub-stickycta__info { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
	.ub-stickycta__price { font-family: var(--ub-font-head); font-weight: 700; color: var(--ub-brand); font-size: 1rem; white-space: nowrap; }
	.ub-stickycta .ub-btn { white-space: normal; text-align: center; font-size: .9rem; line-height: 1.2; padding: .7rem 1rem; max-width: 58%; flex: 0 1 auto; }
	/* Le badge de statut est positionné en absolu sur les cartes : dans la barre il doit rester dans le flux, sinon il recouvre le prix. */
	.ub-stickycta .ub-badge { position: static; align-self: flex-start; box-shadow: none; border: 1px solid var(--ub-border); }
	.ub-stickycta.is-hidden { transform: translateY(110%); transition: transform .25s; }
	/* Bulle de l'assistant et bouton « haut de page » remontés au-dessus de la barre ; reviennent en bas quand la barre est masquée (CTA visible). */
	body.single-lp_course #ub-chat { bottom: 84px !important; transition: bottom .25s; }
	body.single-lp_course.ub-cta-visible #ub-chat { bottom: 20px !important; }
	.ub-totop { bottom: 88px; }
	body.single-lp_course.ub-cta-visible .ub-totop { bottom: 20px; }
	/* Héros : un seul paragraphe avant le bouton sur mobile (le second reste lu par les moteurs, masqué à l'écran). */
	.ub-hero__text p + p { display: none; }
}
.ub-course-facts__employer { margin: 1rem 0 0; font-size: .92rem; }
.ub-notice { background: #fff6d6; border-left: 4px solid var(--ub-gold); padding: 1rem 1.25rem; border-radius: var(--ub-radius-sm); font-size: .95rem; color: var(--ub-night); }
.ub-admin-hint { font-size: .85rem; color: var(--ub-muted); margin-top: .75rem; }

/* Top bar + header ------------------------------------------------------- */
/* Barre d'information de l'en-tête (ordinateur) : contact, territoire, réseaux, compte. */
.ub-infobar { background: var(--ub-brand); color: #fff; font-size: .82rem; font-weight: 500; }
.ub-infobar__inner { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 38px; }
.ub-infobar__contact, .ub-infobar__right { display: flex; align-items: center; gap: 1.25rem; flex-wrap: wrap; }
.ub-infobar a, .ub-infobar span { color: #fff !important; display: inline-flex; align-items: center; gap: .4rem; text-decoration: none; }
.ub-infobar a:hover { text-decoration: underline; text-underline-offset: 2px; }
.ub-infobar__contact svg { width: 16px; height: 16px; color: var(--ub-gold); flex: none; }
.ub-infobar .ub-social { display: flex; align-items: center; gap: .55rem; }
.ub-infobar .ub-social a { opacity: .85; }
.ub-infobar .ub-social a:hover { opacity: 1; }
.ub-infobar .ub-social svg { width: 18px; height: 18px; }
.ub-infobar .ub-social { margin-top: 0; }
.ub-infobar .ub-social a { width: 28px; height: 28px; background: transparent !important; border: 0 !important; color: #fff !important; transform: none !important; }
.ub-infobar__account { font-weight: 600; }
@media (max-width: 1023px) { .ub-infobar { display: none; } }
.ub-topbar { background: var(--ub-night); color: #fff; font-size: .8rem; font-weight: 500; text-align: center; padding: .45rem 0; }
.ub-topbar .ub-container { display: flex; justify-content: center; align-items: center; gap: .5rem; flex-wrap: wrap; }
.ub-topbar__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--ub-gold); }
.ub-topbar a { color: var(--ub-gold) !important; text-decoration: underline; text-underline-offset: 2px; } /* !important : couleur de lien globale du kit Elementor */
.ub-header { background: #fff; border-bottom: 1px solid var(--ub-border); z-index: 100; transition: box-shadow .2s; }
.has-sticky-header .ub-header, .has-sticky-header .ub-custom-header { position: sticky; top: 0; z-index: 100; }
.ub-custom-header { background: #fff; transition: box-shadow .2s; }
.ub-header.is-scrolled, .ub-custom-header.is-scrolled { box-shadow: 0 6px 24px rgba(11,35,71,.08); }
/* Retour en haut (pages longues) : à gauche, le chat occupe la droite. */
.ub-totop { position: fixed; left: 20px; bottom: 20px; z-index: 99980; width: 44px !important; height: 44px !important; min-height: 0 !important; padding: 0 !important; border: 1.5px solid var(--ub-border) !important; border-radius: 50% !important; background: #fff !important; color: var(--ub-night) !important; box-shadow: 0 6px 20px rgba(11,35,71,.15) !important; cursor: pointer; display: flex; align-items: center; justify-content: center; opacity: 0; visibility: hidden; transform: translateY(12px); transition: opacity .25s, transform .25s, visibility .25s; }
.ub-totop.is-visible { opacity: 1; visibility: visible; transform: none; }
.ub-totop:hover, .ub-totop:focus-visible { background: var(--ub-brand) !important; color: #fff !important; border-color: var(--ub-brand) !important; }
.ub-totop svg { width: 20px; height: 20px; }
@media (max-width: 480px) { .ub-totop { left: 12px; bottom: 12px; } }
.ub-header__inner { display: flex; align-items: center; gap: 1.5rem; min-height: 80px; }
.ub-header__brand { flex: 0 0 auto; }
.ub-header__brand img, .custom-logo { max-height: 52px; width: auto; display: block; }
.ub-logo { display: inline-flex; align-items: center; }
.ub-logo__img { height: 48px; width: auto; }
.ub-nav { flex: 1 1 auto; }
.ub-menu { list-style: none; margin: 0; padding: 0; display: flex; gap: .15rem; justify-content: center; }
.ub-menu li { position: relative; }
.ub-menu > li > a { display: block; padding: .6em .75em; font-weight: 500; font-size: .95rem; color: var(--ub-night); border-radius: 999px; white-space: nowrap; }
.ub-menu > li > a:hover, .ub-menu > li.current-menu-item > a, .ub-menu > li.current_page_item > a, .ub-menu > li.current-menu-ancestor > a { background: var(--ub-pale); color: var(--ub-brand); }
.ub-menu > li.menu-item-has-children > a::after { content: ""; display: inline-block; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg); margin-left: .45em; position: relative; top: -2px; }
.ub-menu .sub-menu { list-style: none; margin: 0; padding: .5rem; position: absolute; top: 100%; left: 0; min-width: 240px; background: #fff; border: 1px solid var(--ub-border); border-radius: var(--ub-radius-sm); box-shadow: var(--ub-shadow); opacity: 0; visibility: hidden; transform: translateY(6px); transition: .2s; z-index: 50; }
.ub-menu li:hover > .sub-menu, .ub-menu li:focus-within > .sub-menu, .ub-menu li.is-open > .sub-menu { opacity: 1; visibility: visible; transform: none; }
.ub-menu .sub-menu a { display: block; padding: .55em .8em; border-radius: 8px; color: var(--ub-night); font-size: .92rem; }
.ub-menu .sub-menu a:hover { background: var(--ub-pale); color: var(--ub-brand); }
.ub-nav__mobile-actions { display: none; }
.ub-nav__close { display: none; } /* bouton « Fermer » du panneau mobile (créé par main.js) : jamais visible hors panneau ouvert */
.ub-header__actions { display: flex; align-items: center; gap: .6rem; margin-left: auto; flex: 0 0 auto; }
.ub-header__account { display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; border-radius: 50%; color: var(--ub-night); }
.ub-header__account:hover { background: var(--ub-pale); color: var(--ub-brand); }
/* !important : le kit Elementor recolore tous les <button> (fond bleu, texte blanc). */
.ub-burger { display: none; width: 44px !important; height: 44px !important; min-height: 0 !important; border: 0 !important; background: transparent !important; box-shadow: none !important; border-radius: 8px !important; padding: 10px !important; cursor: pointer; flex-direction: column; justify-content: center; gap: 5px; }
.ub-burger:hover, .ub-burger:focus-visible { background: var(--ub-pale) !important; }
.ub-burger span { display: block; width: 100%; height: 2px; background: var(--ub-night) !important; border-radius: 2px; transition: .25s; }
.ub-burger.is-active span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.ub-burger.is-active span:nth-child(2) { opacity: 0; }
.ub-burger.is-active span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Sections --------------------------------------------------------------- */
.ub-section, .is-style-ub-section, .is-style-ub-section-pale, .is-style-ub-section-dark { padding: var(--ub-section) 0; }
.ub-section--tight { padding: 1.5rem 0; }
.ub-section--pale, .is-style-ub-section-pale { background: var(--ub-pale); }
.ub-section--dark, .is-style-ub-section-dark { background: var(--ub-night); color: #fff; }
.ub-section--dark h1, .ub-section--dark h2, .ub-section--dark h3, .is-style-ub-section-dark h1, .is-style-ub-section-dark h2, .is-style-ub-section-dark h3 { color: #fff; }
.ub-section--dark p, .is-style-ub-section-dark p { color: rgba(255,255,255,.78); }
.ub-section--dark .ub-eyebrow, .is-style-ub-section-dark .ub-eyebrow { color: var(--ub-mint); }
.ub-section + .ub-section:not(.ub-section--pale):not(.ub-section--dark) { padding-top: 0; }
.ub-section--pale + .ub-section--pale { padding-top: 0; }
.ub-section--tight + .ub-section { padding-top: 1rem; }
.ub-fullwidth > .alignfull, .ub-fullwidth > .wp-block-group.alignfull { width: 100%; max-width: none; margin-left: 0; margin-right: 0; }
.ub-fullwidth > *:not(.alignfull):not(.ub-section):not(.ub-hero):not(.ub-cta):not(.elementor) { max-width: var(--ub-container); margin-left: auto; margin-right: auto; padding-left: 1.25rem; padding-right: 1.25rem; }
.ub-fullwidth > .wp-block-columns { padding-top: var(--ub-section); padding-bottom: var(--ub-section); }

/* Hero ------------------------------------------------------------------- */
.ub-hero { position: relative; overflow: hidden; padding: clamp(3rem, 6vw, 4.5rem) 0 clamp(2.5rem, 5vw, 3.5rem); background: linear-gradient(135deg, #f4f8fd 0%, #ffffff 45%, #fffbe6 100%); }
.ub-hero::before { content: ""; position: absolute; right: -10%; bottom: -40%; width: 60%; height: 90%; background: radial-gradient(closest-side, rgba(0,208,132,.15), transparent 70%); pointer-events: none; }
.ub-hero__grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: 3rem; align-items: center; position: relative; }
.ub-hero__title, h1.ub-hero__title { font-size: clamp(2.5rem, 5.6vw, 4.4rem); line-height: 1.04; margin: 0 0 1.25rem; font-weight: 800; }
/* 3.8.5 : le mot souligné peut passer à la ligne à toutes les largeurs (il débordait de la colonne sur grand écran, ex. « les mains dans le projet ») ; soulignement par box-shadow cloné sur chaque ligne. */
.ub-hero__title em { font-style: normal; color: var(--ub-brand); position: relative; white-space: normal; box-shadow: inset 0 -.16em 0 0 var(--ub-gold); -webkit-box-decoration-break: clone; box-decoration-break: clone; }
.ub-hero__title em::after { display: none; }
.ub-hero__text, .ub-hero__text p, p.ub-hero__text { font-size: 1.12rem; line-height: 1.65; max-width: 36rem; color: var(--ub-muted); }
.ub-hero__micro, p.ub-hero__micro { font-size: .8rem; color: var(--ub-muted); margin-top: 1.25rem; letter-spacing: .02em; }
.ub-hero__media { position: relative; }
.ub-hero__frame, figure.ub-hero__frame, .ub-el-hero .elementor-widget-image img { border-radius: 24px; overflow: hidden; box-shadow: var(--ub-shadow-lg); background: var(--ub-pale); aspect-ratio: 4/3; margin: 0; }
.ub-hero__frame img, .ub-hero__frame.elementor-widget img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ub-hero__stats { margin-top: 3rem; position: relative; }
.ub-hero--simple .ub-hero__title { font-size: clamp(2.2rem, 4.6vw, 3.6rem); }

/* Stats ------------------------------------------------------------------ */
.ub-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 1rem; }
.ub-stat { background: #fff; border: 1px solid var(--ub-border); border-radius: var(--ub-radius); padding: 1.25rem 1.4rem; }
.ub-stat__value { display: block; font-family: var(--ub-font-head); font-size: 2rem; line-height: 1; color: var(--ub-brand); margin-bottom: .35rem; font-variant-numeric: tabular-nums; }
.ub-stat__label { font-size: .85rem; color: var(--ub-muted); }
.ub-section--dark .ub-stat { background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.12); }
.ub-section--dark .ub-stat__value { color: var(--ub-mint); }

/* En-tête de section ----------------------------------------------------- */
.ub-heading { margin-bottom: 2.5rem; }
.ub-heading--split { display: flex; align-items: flex-end; justify-content: space-between; gap: 2rem; }
.ub-heading--center { text-align: center; }
.ub-heading--center .ub-heading__text, .ub-heading--center .ub-heading__title { margin-left: auto; margin-right: auto; }
.ub-heading__title, h2.ub-heading__title, .elementor-widget-heading .ub-heading__title { font-size: clamp(1.8rem, 3.6vw, 2.5rem); line-height: 1.12; margin: 0 0 .75rem; max-width: 42rem; }
.ub-heading__text, .ub-heading__text p, p.ub-heading__text { font-size: 1.05rem; max-width: 42rem; margin: 0; color: var(--ub-muted); }
.ub-heading__aside { margin: 0; flex: 0 0 auto; }
.ub-heading .wp-block-buttons { margin-top: 0; }

/* Grille + cartes -------------------------------------------------------- */
.ub-grid { display: grid; gap: 1.25rem; grid-template-columns: repeat(var(--ub-cols, 4), minmax(0, 1fr)); }
.ub-grid--1 { --ub-cols: 1; } .ub-grid--2 { --ub-cols: 2; } .ub-grid--3 { --ub-cols: 3; } .ub-grid--4 { --ub-cols: 4; } .ub-grid--5 { --ub-cols: 5; } .ub-grid--6 { --ub-cols: 6; }
.ub-card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--ub-border); border-radius: var(--ub-radius); padding: 1.75rem 1.5rem; text-decoration: none; color: inherit; transition: transform .25s var(--ub-ease), box-shadow .25s, border-color .25s; position: relative; }
a.ub-card:hover { transform: translateY(-4px); box-shadow: var(--ub-shadow); border-color: transparent; color: inherit; }
.ub-cards--path .ub-card { border-top: 4px solid var(--ub-brand); }
.ub-card__title { font-size: 1.12rem; line-height: 1.3; margin: 0 0 .6rem; }
.ub-card__text { font-size: .93rem; line-height: 1.55; margin: 0 0 1.25rem; flex: 1; color: var(--ub-muted); }
.ub-card__link { font-weight: 600; color: var(--ub-brand); font-size: .92rem; }
.ub-card__num { font-family: var(--ub-font-head); font-size: .8rem; font-weight: 700; color: var(--ub-brand); background: var(--ub-brand-soft); width: 2.4rem; height: 2.4rem; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; margin-bottom: 1rem; font-variant-numeric: tabular-nums; }
.ub-card__num--img { width: 3.5rem; height: 3.5rem; border-radius: 14px; }
.ub-card__num--img img { width: 2.5rem; height: 2.5rem; object-fit: contain; display: block; }
.ub-card__icon { display: inline-flex; align-items: center; justify-content: center; width: 3rem; height: 3rem; border-radius: 12px; background: var(--ub-pale); color: var(--ub-brand); margin-bottom: 1rem; font-size: 1.25rem; }
.ub-card--static { padding: 2rem; }
.ub-section--dark .ub-card, .ub-section--dark .ub-step { background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.12); color: #fff; }
.ub-section--dark .ub-card__title, .ub-section--dark .ub-card__text { color: #fff; }
.ub-section--dark .ub-card__text { color: rgba(255,255,255,.75); }
.ub-section--dark .ub-card__link { color: var(--ub-mint); }
.ub-section--dark .ub-card__num, .ub-section--dark .ub-card__icon { background: rgba(255,255,255,.1); color: var(--ub-mint); }

/* Cours ------------------------------------------------------------------ */
.ub-course { background: #fff; border: 1px solid var(--ub-border); border-radius: var(--ub-radius); overflow: hidden; display: flex; flex-direction: column; height: 100%; transition: transform .25s var(--ub-ease), box-shadow .25s; }
.ub-course:hover { transform: translateY(-4px); box-shadow: var(--ub-shadow); }
.ub-course__media { position: relative; display: block; aspect-ratio: 16/10; background: var(--ub-pale); overflow: hidden; }
.ub-course__media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .5s var(--ub-ease); }
.ub-course:hover .ub-course__media img { transform: scale(1.04); }
.ub-course__body { padding: 1.25rem 1.4rem 1.4rem; display: flex; flex-direction: column; flex: 1; }
.ub-course__title { font-size: 1.08rem; line-height: 1.3; margin: 0 0 .5rem; }
.ub-course__title a { color: var(--ub-night); }
.ub-course__excerpt { font-size: .9rem; line-height: 1.55; margin: 0 0 1rem; color: var(--ub-muted); }
.ub-course__footer { margin-top: auto; }
.ub-course__meta { list-style: none; margin: 0 0 1rem; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.ub-course__meta li { font-size: .74rem; font-weight: 600; color: var(--ub-night); background: var(--ub-pale); padding: .3em .7em; border-radius: 999px; }
.ub-course__footer { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; border-top: 1px solid var(--ub-border); padding-top: 1rem; }
.ub-course__price { font-family: var(--ub-font-head); font-weight: 700; font-size: 1.2rem; color: var(--ub-night); line-height: 1.1; white-space: nowrap; min-width: 0; }
.ub-course__footer { flex-wrap: wrap; }
.ub-course__footer .ub-btn--sm { flex: 1 0 auto; text-align: center; white-space: nowrap; }
/* 4 colonnes (accueil « Prochaines cohortes ») : prix au-dessus du bouton, bouton pleine largeur. */
.ub-grid--4 .ub-course__footer, .ub-slider[style*="--ub-cols:4"] .ub-course__footer { flex-direction: column; align-items: stretch; gap: .6rem; }
.ub-grid--4 .ub-course__footer .ub-btn--sm, .ub-slider[style*="--ub-cols:4"] .ub-course__footer .ub-btn--sm { width: 100%; }
.ub-grid--4 .ub-course__price small { display: inline; margin-right: .35em; }
.ub-course__price small { display: block; font-family: var(--ub-font-body); font-weight: 500; font-size: .72rem; color: var(--ub-muted); margin-bottom: .2rem; }
.ub-course__price del { color: var(--ub-muted); font-weight: 400; font-size: .85em; margin-right: .3em; }
.ub-course__pending { font-size: .95rem; font-weight: 600; color: var(--ub-brand); }
.ub-courses__item[hidden] { display: none; }
.ub-empty { border: 1.5px dashed var(--ub-border); border-radius: var(--ub-radius); padding: 2.5rem 1.5rem; text-align: center; max-width: 640px; margin: 0 auto; }
.ub-empty__title { margin-bottom: .5rem; }
.ub-empty p { color: var(--ub-muted); margin-bottom: 1.25rem; }
.ub-filters { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.5rem; }
/* !important : le style global de boutons du kit Elementor (.elementor-kit-N button, fond bleu) l'emporte sinon → bleu sur bleu. */
.ub-filter { border: 1.5px solid var(--ub-border) !important; background: #fff !important; color: var(--ub-night) !important; border-radius: 999px !important; padding: .5em 1.05em !important; font: inherit; font-size: .88rem !important; font-weight: 600 !important; line-height: 1.3 !important; cursor: pointer; min-height: 40px; transition: .2s; }
.ub-filter:hover { border-color: var(--ub-brand) !important; color: var(--ub-brand) !important; }
.ub-filter.is-active { background: var(--ub-brand) !important; border-color: var(--ub-brand) !important; color: #fff !important; }
.ub-filters__empty { color: var(--ub-muted); }

/* Slider ----------------------------------------------------------------- */
.ub-slider { position: relative; }
.ub-slider__track { display: flex; gap: 20px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: .5rem; }
.ub-slider__track::-webkit-scrollbar { display: none; }
.ub-slider__item { flex: 0 0 calc((100% - 20px * (var(--ub-cols, 3) - 1)) / var(--ub-cols, 3)); scroll-snap-align: start; min-width: 0; }
.ub-courses__item { min-width: 0; }
.ub-slider__nav { display: flex; gap: .5rem; justify-content: flex-end; margin-top: 1rem; }
.ub-slider__btn { width: 44px; height: 44px; border-radius: 50%; border: 1.5px solid var(--ub-border); background: #fff; color: var(--ub-night); font-size: 1.1rem; cursor: pointer; }
.ub-slider__btn:hover { border-color: var(--ub-brand); color: var(--ub-brand); }

/* Étapes ----------------------------------------------------------------- */
.ub-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 1.25rem; counter-reset: step; }
.ub-steps--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
/* Colonnes explicites : avec auto-fit, 6 étapes donnaient 5 + 1 orpheline et 5 étapes 4 + 1 sur tablette. */
.ub-steps--5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
/* Liste à icônes sur 2 colonnes avec un nombre impair d'éléments : le dernier occupe toute la largeur (pas d'orphelin). */
.ub-iconlist--2 > :last-child:nth-child(odd) { grid-column: 1 / -1; }
.ub-steps--6 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ub-step { padding: 1.5rem 1.4rem; border-radius: var(--ub-radius); background: #fff; border: 1px solid var(--ub-border); position: relative; }
.ub-step__num { --ub-num-bg: var(--ub-brand); --ub-num-fg: #fff; display: inline-flex; width: 2.6rem; height: 2.6rem; align-items: center; justify-content: center; border-radius: 50%; background: var(--ub-num-bg); color: var(--ub-num-fg); font-family: var(--ub-font-head); font-weight: 700; margin-bottom: 1rem; font-variant-numeric: tabular-nums; }
.ub-step__title { font-size: 1.05rem; margin: 0 0 .4rem; }
.ub-step__text { font-size: .9rem; line-height: 1.5; margin: 0; color: var(--ub-muted); }
.ub-steps__closing { margin-top: 1.5rem; color: var(--ub-muted); font-style: italic; }
.ub-section--dark .ub-step__title { color: #fff; }
.ub-section--dark .ub-step__text, .ub-section--dark .ub-steps__closing { color: rgba(255,255,255,.72); }
.ub-section--dark .ub-step__num { --ub-num-bg: var(--ub-mint); --ub-num-fg: var(--ub-night); }

/* Liste à icônes --------------------------------------------------------- */
.ub-iconlist { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem 2rem; grid-template-columns: repeat(var(--ub-cols, 2), minmax(0, 1fr)); }
.ub-iconlist--1 { --ub-cols: 1; } .ub-iconlist--2 { --ub-cols: 2; } .ub-iconlist--3 { --ub-cols: 3; }
.ub-iconlist__item { display: flex; gap: .9rem; align-items: flex-start; }
.ub-iconlist__icon { flex: 0 0 auto; width: 2.1rem; height: 2.1rem; border-radius: 50%; background: var(--ub-brand-soft); color: var(--ub-brand); display: inline-flex; align-items: center; justify-content: center; font-size: .85rem; margin-top: .1rem; }
.ub-iconlist__title { display: block; font-family: var(--ub-font-head); font-size: 1rem; color: var(--ub-night); margin-bottom: .2rem; }
.ub-iconlist__text { font-size: .92rem; color: var(--ub-muted); margin: 0; line-height: 1.5; }
.ub-section--dark .ub-iconlist__icon { background: rgba(255,255,255,.12); color: var(--ub-mint); }
.ub-section--dark .ub-iconlist__title { color: #fff; }
.ub-section--dark .ub-iconlist__text { color: rgba(255,255,255,.72); }
.ub-split .ub-iconlist { margin: 1.25rem 0 0; }
/* 3.8.1 : puces sans sous-texte (bullets des sections split) en texte courant, pas en titre gras. */
.ub-el-split .ub-iconlist__title, .ub-split .ub-iconlist__title { font-family: var(--ub-font-body); font-weight: 500; font-size: .98rem; line-height: 1.55; color: var(--ub-night); }
.ub-el-split .ub-iconlist, .ub-split .ub-iconlist { gap: .8rem 2rem; }

/* FAQ -------------------------------------------------------------------- */
.ub-section--faq .ub-container { max-width: 900px; }
.ub-faq { display: grid; gap: .6rem; }
.ub-faq__item, .wp-block-details.ub-faq__item { border: 1px solid var(--ub-border); border-radius: var(--ub-radius-sm); background: #fff; padding: 0; }
.ub-faq__item[open], .wp-block-details.ub-faq__item[open] { border-color: var(--ub-brand-soft); box-shadow: var(--ub-shadow); }
.ub-faq__q, .wp-block-details.ub-faq__item > summary { list-style: none; cursor: pointer; padding: 1rem 3rem 1rem 1.25rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; position: relative; font-family: var(--ub-font-head); font-weight: 600; font-size: 1rem; color: var(--ub-night); min-height: 44px; }
.ub-faq__q::-webkit-details-marker, .wp-block-details.ub-faq__item > summary::-webkit-details-marker { display: none; }
.ub-faq__q h3 { font-size: 1rem; margin: 0; font-weight: 600; }
.ub-faq__chevron, .wp-block-details.ub-faq__item > summary::after { content: ""; position: absolute; right: 1.25rem; top: 50%; width: 9px; height: 9px; border-right: 2px solid var(--ub-brand); border-bottom: 2px solid var(--ub-brand); transform: translateY(-70%) rotate(45deg); transition: transform .25s; }
.ub-faq__item[open] .ub-faq__chevron, .wp-block-details.ub-faq__item[open] > summary::after { transform: translateY(-30%) rotate(-135deg); }
.ub-faq__a, .wp-block-details.ub-faq__item > :not(summary) { padding: 0 1.25rem 1.25rem; color: var(--ub-muted); font-size: .97rem; }
.ub-faq__a p:last-child { margin-bottom: 0; }
.ub-el-faq .elementor-accordion-item { border: 1px solid var(--ub-border) !important; border-radius: var(--ub-radius-sm); margin-bottom: .6rem; overflow: hidden; }
.ub-el-faq .elementor-tab-title { font-family: var(--ub-font-head); font-weight: 600; color: var(--ub-night); }

/* Tableau ---------------------------------------------------------------- */
.ub-table-wrap { overflow-x: auto; }
.ub-table { width: 100%; border-collapse: separate; border-spacing: 0; border: 1px solid var(--ub-border); border-radius: var(--ub-radius); overflow: hidden; background: #fff; font-size: .95rem; }
.ub-table th, .ub-table td { text-align: left; padding: .9rem 1.1rem; border-bottom: 1px solid var(--ub-border); vertical-align: top; }
.ub-table thead th { background: var(--ub-pale); font-family: var(--ub-font-head); font-size: .8rem; letter-spacing: .06em; text-transform: uppercase; color: var(--ub-night); }
.ub-table tbody th { font-weight: 700; color: var(--ub-night); width: 22%; }
.ub-table tbody tr:last-child th, .ub-table tbody tr:last-child td { border-bottom: 0; }
.ub-table td { color: var(--ub-muted); }

/* Formulaire ------------------------------------------------------------- */
.ub-section--form .ub-container { max-width: 860px; }
.ub-form { background: #fff; border: 1px solid var(--ub-border); border-radius: var(--ub-radius); padding: 2rem; box-shadow: var(--ub-shadow); }
.ub-form__intro { color: var(--ub-muted); margin-bottom: 1.25rem; }
.ub-form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1.25rem; }
.ub-form__field { display: flex; flex-direction: column; gap: .35rem; margin: 0; }
.ub-form__field--full { grid-column: 1 / -1; }
.ub-form label { font-weight: 600; font-size: .9rem; color: var(--ub-night); }
.ub-form input:not([type="checkbox"]), .ub-form select, .ub-form textarea { width: 100%; padding: .75em 1em; border: 1.5px solid var(--ub-border); border-radius: var(--ub-radius-sm); font: inherit; font-size: .95rem; color: var(--ub-night); background: #fff; min-height: 44px; }
.ub-form input:focus, .ub-form select:focus, .ub-form textarea:focus { border-color: var(--ub-brand); outline: 3px solid rgba(0,82,204,.18); outline-offset: 0; }
.ub-form__consent { flex-direction: row; align-items: flex-start; gap: .6rem; }
.ub-form__consent input { width: 20px; height: 20px; margin-top: .2rem; flex: 0 0 auto; }
.ub-form__consent label { font-weight: 400; font-size: .88rem; color: var(--ub-muted); }
.ub-form__submit { margin: 1.5rem 0 .75rem; }
.ub-form__note { font-size: .82rem; color: var(--ub-muted); margin: 0; }
.ub-form__hp { position: absolute; left: -9999px; }
.ub-form__turnstile { margin: 0 0 1rem; }
.ub-form__files { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1.25rem; padding: 1rem 1.25rem; background: var(--ub-pale); border-radius: var(--ub-radius-sm); }
.ub-form__files[hidden] { display: none; }
.ub-form__files .ub-form__hint { grid-column: 1 / -1; margin: 0; font-size: .85rem; color: var(--ub-muted); }
.ub-form input[type="file"] { padding: .55em .75em; font-size: .9rem; cursor: pointer; }
.ub-form input[type="file"]::file-selector-button { font: inherit; font-weight: 600; color: var(--ub-brand); background: #fff; border: 1.5px solid var(--ub-brand); border-radius: 999px; padding: .3em .9em; margin-right: .75em; cursor: pointer; }
.ub-form__error { background: #fde8e8; border-left: 4px solid #d33; padding: .9rem 1.1rem; border-radius: var(--ub-radius-sm); color: #7a1d1d; }
.ub-form--sent { border-color: var(--ub-mint); background: #e6faf1; box-shadow: none; }
.ub-form--sent p { margin: 0; color: var(--ub-mint-dark); font-weight: 600; }
.ub-req { color: var(--ub-brand); }

/* Split (2 colonnes) ----------------------------------------------------- */
.ub-split, .wp-block-columns.ub-split { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: center; }
.ub-split--img-right .ub-split__media { order: 2; }
.ub-el-img figure { margin: 0; }
.ub-split__media img, .ub-split__img img, .ub-el-split .elementor-widget-image img { border-radius: 24px; box-shadow: var(--ub-shadow-lg); width: 100%; aspect-ratio: 4/3; object-fit: cover; display: block; }
.ub-split__title, h2.ub-split__title { font-size: clamp(1.7rem, 3.2vw, 2.3rem); margin: 0 0 1rem; }
.ub-split__text, .ub-split__text p { color: var(--ub-muted); }
.ub-section--dark .ub-split__text p { color: rgba(255,255,255,.78); }
.wp-block-columns.ub-split .wp-block-column { flex-basis: auto; }

/* Prose / texte ---------------------------------------------------------- */
.ub-prose { max-width: 860px; }
.ub-prose--narrow { max-width: 720px; }
.ub-prose--center { margin-left: auto; margin-right: auto; text-align: center; }
.ub-prose p { color: var(--ub-muted); }
.ub-prose p strong { color: var(--ub-night); }
.ub-section--dark .ub-prose p { color: rgba(255,255,255,.78); }

/* CTA -------------------------------------------------------------------- */
.ub-cta { background: linear-gradient(135deg, var(--ub-night) 0%, var(--ub-night-2) 60%, var(--ub-brand) 100%); padding: var(--ub-section) 0; position: relative; overflow: hidden; }
.ub-cta::after { content: ""; position: absolute; right: -10%; top: -40%; width: 50%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(closest-side, rgba(0,208,132,.25), transparent 70%); pointer-events: none; }
.ub-cta__inner { text-align: center; max-width: 48rem; position: relative; z-index: 1; }
.ub-cta__title, h2.ub-cta__title, .ub-el-cta .ub-cta__title { color: #fff; font-size: clamp(2rem, 4.5vw, 3rem); line-height: 1.1; margin: 0 0 1rem; }
.ub-cta__text, .ub-cta__text p, p.ub-cta__text { color: rgba(255,255,255,.78); font-size: 1.1rem; }
.ub-cta__micro, p.ub-cta__micro { color: rgba(255,255,255,.62); font-size: .85rem; margin-top: 1.25rem; }
.ub-cta .wp-block-buttons { justify-content: center; }
.ub-el-cta .elementor-widget-container { text-align: center; }

/* Pages, blog, entrées --------------------------------------------------- */
.ub-page-header { background: linear-gradient(135deg, #f4f8fd, #fff); padding: clamp(2.5rem, 5vw, 4rem) 0; border-bottom: 1px solid var(--ub-border); }
.ub-page-header--inline { background: none; border: 0; padding: 1.5rem 0; }
.ub-page-header__title { margin: 0; }
.ub-page-header__desc, .ub-page-header__meta { color: var(--ub-muted); margin-top: .75rem; max-width: 40rem; }
.ub-breadcrumb { font-size: .82rem; color: var(--ub-muted); display: flex; gap: .5rem; align-items: center; padding: 1.25rem 0 0; }
.ub-layout { display: grid; gap: 3rem; padding: 3rem 1.25rem 4rem; }
.ub-layout--sidebar { grid-template-columns: minmax(0, 1fr) 300px; }
.ub-layout__sidebar .widget { margin-bottom: 2rem; }
.widget-title { font-size: .85rem; text-transform: uppercase; letter-spacing: .1em; margin-bottom: .75rem; }
.ub-entry { padding: 3rem 1.25rem 4rem; }
.ub-entry__thumb { max-width: 900px; margin: 0 auto 2rem; border-radius: var(--ub-radius); overflow: hidden; }
.ub-entry__content { max-width: 760px; margin: 0 auto; }
.ub-entry__content > .alignwide { max-width: var(--ub-container); margin-left: calc(50% - min(50vw, var(--ub-container) / 2) + 1.25rem); width: calc(min(100vw, var(--ub-container)) - 2.5rem); }
.ub-entry__content > .alignfull { width: 100vw; max-width: 100vw; margin-left: calc(50% - 50vw); }
.ub-entry__content img { border-radius: var(--ub-radius-sm); }
.ub-entry__content blockquote { border-left: 4px solid var(--ub-gold); margin: 1.5rem 0; padding: .5rem 1.25rem; color: var(--ub-muted); font-style: italic; }
.ub-entry__content pre { background: var(--ub-night); color: #fff; padding: 1rem; border-radius: var(--ub-radius-sm); overflow-x: auto; }
.ub-entry__content table { width: 100%; border-collapse: collapse; }
.ub-entry__content th, .ub-entry__content td { border: 1px solid var(--ub-border); padding: .6em .8em; text-align: left; }
.ub-tags a { display: inline-block; font-size: .78rem; background: var(--ub-pale); color: var(--ub-brand); padding: .3em .8em; border-radius: 999px; margin: .2em .2em 0 0; }
.ub-post-nav { max-width: 760px; margin: 3rem auto 0; display: flex; justify-content: space-between; gap: 1rem; border-top: 1px solid var(--ub-border); padding-top: 1.5rem; font-weight: 600; }
.ub-post-card { background: #fff; border: 1px solid var(--ub-border); border-radius: var(--ub-radius); overflow: hidden; display: flex; flex-direction: column; transition: transform .25s, box-shadow .25s; }
.ub-post-card:hover { transform: translateY(-4px); box-shadow: var(--ub-shadow); }
.ub-post-card__media { aspect-ratio: 16/10; overflow: hidden; background: var(--ub-pale); display: block; }
.ub-post-card__media img { width: 100%; height: 100%; object-fit: cover; }
.ub-post-card__body { padding: 1.25rem 1.4rem 1.4rem; display: flex; flex-direction: column; flex: 1; }
.ub-post-card__title { font-size: 1.15rem; margin: 0 0 .5rem; }
.ub-post-card__title a { color: var(--ub-night); }
.ub-post-card__excerpt { font-size: .9rem; color: var(--ub-muted); flex: 1; }
.navigation.pagination { margin-top: 2.5rem; }
.nav-links { display: flex; gap: .4rem; flex-wrap: wrap; justify-content: center; }
.nav-links .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; height: 44px; padding: 0 .8em; border-radius: 999px; border: 1.5px solid var(--ub-border); color: var(--ub-night); font-weight: 600; font-size: .9rem; }
.nav-links .page-numbers.current { background: var(--ub-brand); border-color: var(--ub-brand); color: #fff; }
.ub-search { display: flex; gap: .5rem; max-width: 520px; margin-top: 1rem; }
.ub-search__input { flex: 1; padding: .7em 1.1em; border: 1.5px solid var(--ub-border); border-radius: 999px; font: inherit; font-size: .95rem; min-height: 44px; }
.ub-404, .ub-none { padding: 5rem 1.25rem; text-align: center; max-width: 640px; margin: 0 auto; }
.ub-404 .ub-search, .ub-none .ub-search { margin: 1.5rem auto; }
.ub-404 .ub-actions { justify-content: center; }

/* Commentaires ----------------------------------------------------------- */
.ub-comments { max-width: 760px; margin: 3rem auto 0; }
.ub-comments__list { list-style: none; padding: 0; margin: 0 0 2rem; }
.ub-comments__list .comment { border-top: 1px solid var(--ub-border); padding: 1.25rem 0; }
.ub-comments__list .children { list-style: none; padding-left: 2rem; }
.comment-form label { display: block; font-weight: 600; font-size: .9rem; margin-bottom: .3rem; }
.comment-form input:not([type="submit"]):not([type="checkbox"]), .comment-form textarea { width: 100%; padding: .7em 1em; border: 1.5px solid var(--ub-border); border-radius: var(--ub-radius-sm); font: inherit; }
.comment-form .submit, input[type="submit"] { background: var(--ub-brand); color: #fff; border: 0; border-radius: 999px; padding: .8em 1.6em; font-weight: 600; cursor: pointer; }

/* Footer ----------------------------------------------------------------- */
.ub-footer { position: relative; overflow: hidden; isolation: isolate; background: radial-gradient(55% 70% at 100% 0%, rgba(0,208,132,.16), transparent 65%), radial-gradient(45% 60% at 0% 100%, rgba(0,82,204,.45), transparent 65%), var(--ub-night); color: rgba(255,255,255,.75); padding: clamp(3.5rem, 7vw, 5.5rem) 0 1.5rem; }
/* Trame de points fondue vers le bas + filet dégradé en tête (bleu → or → menthe). */
.ub-footer::before { content: ""; position: absolute; inset: 0; background-image: radial-gradient(rgba(255,255,255,.09) 1px, transparent 1.5px); background-size: 26px 26px; -webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,.9), transparent 70%); mask-image: linear-gradient(180deg, rgba(0,0,0,.9), transparent 70%); pointer-events: none; z-index: -1; }
.ub-footer::after { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px; background: linear-gradient(90deg, var(--ub-brand), var(--ub-gold) 55%, var(--ub-mint)); }
.ub-footer__glow { position: absolute; right: -12%; top: -30%; width: 44%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(closest-side, rgba(0,208,132,.22), transparent 70%); pointer-events: none; z-index: -1; }
/* Couleurs forcées : le kit global Elementor / Thim impose sinon un bleu nuit invisible sur le fond nuit. */
.ub-footer a, .ub-footer .ub-footer__menu a, .ub-footer__legal a, .ub-footer__legal-menu a, .ub-footer__top, .ub-footer .widget a { color: #fff !important; text-decoration: none !important; }
.ub-footer a:hover, .ub-footer .ub-footer__menu a:hover, .ub-footer__legal a:hover, .ub-footer__top:hover { color: var(--ub-gold) !important; }
.ub-footer, .ub-footer p, .ub-footer li { color: rgba(255,255,255,.78); }
.ub-footer .widget-title, .ub-footer h3, .ub-footer .ub-footer__title { font-family: var(--ub-font-head); font-size: .74rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--ub-gold) !important; margin: 0 0 1.1rem; }
/* Signature + méthode en cinq temps */
.ub-footer__intro { display: flex; align-items: flex-end; justify-content: space-between; gap: 2rem 3rem; flex-wrap: wrap; padding-bottom: 2.25rem; margin-bottom: 3rem; border-bottom: 1px solid rgba(255,255,255,.12); }
.ub-footer__signature, p.ub-footer__signature { font-family: var(--ub-font-head); font-weight: 800; font-size: clamp(1.7rem, 3.6vw, 2.6rem); line-height: 1.1; letter-spacing: -.02em; color: #fff; margin: 0; text-wrap: balance; }
.ub-footer__signature em { font-style: normal; position: relative; white-space: nowrap; }
.ub-footer__signature em::after { content: ""; position: absolute; left: 0; right: 0; bottom: .04em; height: .16em; background: var(--ub-gold); border-radius: 4px; z-index: -1; transform-origin: left; transform: scaleX(0); transition: transform .7s var(--ub-ease) .35s; }
.ub-footer__intro.is-visible .ub-footer__signature em::after, html:not(.ub-js) .ub-footer__signature em::after { transform: scaleX(1); }
.ub-footer__method { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .9rem; font-family: var(--ub-font-head); font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: rgba(255,255,255,.72); }
.ub-footer__method li { margin: 0; font-size: inherit; color: inherit; display: inline-flex; align-items: center; gap: .9rem; }
.ub-footer__method li + li::before { content: "→"; color: var(--ub-mint); font-weight: 400; letter-spacing: 0; }
/* Colonnes */
.ub-footer__grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1.1fr; gap: 2.5rem; }
.ub-footer__brand p { font-size: .95rem; line-height: 1.6; max-width: 24rem; margin-top: 1.25rem; }
.ub-footer ul { list-style: none; margin: 0; padding: 0; }
.ub-footer li { margin-bottom: .55rem; font-size: .93rem; }
.ub-footer .custom-logo, .ub-logo__img--light { filter: brightness(0) invert(1); }
.ub-footer .ub-logo__img { height: 56px; }
.ub-footer__menu a { position: relative; display: inline-block; padding-left: 0; transition: padding-left .3s var(--ub-ease), color .2s; }
.ub-footer__menu a::before { content: ""; position: absolute; left: 0; top: calc(50% - 1px); width: 0; height: 2px; border-radius: 2px; background: var(--ub-gold); transition: width .3s var(--ub-ease); }
.ub-footer__menu a:hover, .ub-footer__menu a:focus-visible { padding-left: 1rem; }
.ub-footer__menu a:hover::before, .ub-footer__menu a:focus-visible::before { width: .6rem; }
.ub-footer__territory { display: inline-flex; align-items: center; gap: .5rem; font-weight: 600; color: #fff; }
.ub-footer__territory::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--ub-mint); box-shadow: 0 0 0 4px rgba(0,208,132,.18); }
.ub-footer a.ub-footer__cta { margin-top: .75rem; }
.ub-social { display: flex; gap: .5rem; margin-top: 1.25rem; }
.ub-social a { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.1); transition: transform .25s var(--ub-ease), background .2s, border-color .2s; }
.ub-social a:hover, .ub-social a:focus-visible { background: var(--ub-brand); border-color: var(--ub-brand); color: #fff !important; transform: translateY(-3px); }
/* Barre basse */
.ub-footer__bottom { border-top: 1px solid rgba(255,255,255,.12); margin-top: 3.5rem; padding-top: 1.25rem; display: flex; justify-content: space-between; align-items: center; gap: 1rem; font-size: .82rem; flex-wrap: wrap; color: rgba(255,255,255,.6); }
.ub-footer__legal { display: flex; gap: 1.25rem; align-items: center; flex-wrap: wrap; }
.ub-footer__legal-menu { display: flex; gap: 1.25rem; }
.ub-footer__legal-menu li { margin: 0; }
.ub-footer__legal a { color: rgba(255,255,255,.75) !important; }
.ub-footer__top { display: inline-flex; align-items: center; gap: .4rem; font-weight: 600; }
.ub-footer__top svg { transition: transform .25s var(--ub-ease); }
.ub-footer__top:hover svg { transform: translateY(-3px); }

/* =========================================================================
   LearnPress — catalogue, fiche cours, profil
   ========================================================================= */
.ub-lp { padding-bottom: 4rem; }
.lp-archive-courses .learn-press-breadcrumb, .learn-press-breadcrumb { display: none; }
.lp-archive-courses ul.learn-press-courses { gap: 1.25rem; }
.lp-archive-courses ul.learn-press-courses li.course { margin: 0; }
.lp-archive-courses ul.learn-press-courses li.course .course-item { position: relative; background: #fff; border: 1px solid var(--ub-border); border-radius: var(--ub-radius); overflow: hidden; box-shadow: none; transition: transform .25s, box-shadow .25s; height: 100%; display: flex; flex-direction: column; }
.lp-archive-courses ul.learn-press-courses li.course .course-item:hover { transform: translateY(-4px); box-shadow: var(--ub-shadow); }
.lp-archive-courses ul.learn-press-courses li.course .course-thumbnail { aspect-ratio: 16/10; background: var(--ub-pale); }
.lp-archive-courses ul.learn-press-courses li.course .course-thumbnail img { width: 100%; height: 100%; object-fit: cover; }
.lp-archive-courses ul.learn-press-courses li.course .course-content { padding: 1.25rem 1.4rem 1.4rem; display: flex; flex-direction: column; flex: 1; }
.lp-archive-courses ul.learn-press-courses li.course .course-title, .lp-archive-courses ul.learn-press-courses li.course .wap-course-title { font-family: var(--ub-font-head); font-size: 1.08rem; line-height: 1.3; margin: .25rem 0 .5rem; }
.lp-archive-courses ul.learn-press-courses li.course .course-categories a, .lp-archive-courses ul.learn-press-courses li.course .course-instructor-category a { font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--ub-brand); }
.lp-archive-courses ul.learn-press-courses li.course .course-wrap-meta .meta-item { font-size: .78rem; color: var(--ub-muted); }
.lp-archive-courses ul.learn-press-courses li.course .course-info, .lp-archive-courses ul.learn-press-courses li.course .course-footer { margin-top: auto; border-top: 1px solid var(--ub-border); padding-top: 1rem; display: flex; align-items: center; justify-content: space-between; }
.lp-archive-courses .course-price, .course-price .price { font-family: var(--ub-font-head); font-weight: 700; color: var(--ub-night); }
.lp-archive-courses .course-price .origin-price { color: var(--ub-muted); font-weight: 400; }
.ub-price-pending { font-weight: 600; color: var(--ub-brand); font-size: .95rem; }
.ub-price-note { font-size: .82rem; color: var(--ub-muted); margin-top: .75rem; }
.lp-archive-courses .course-readmore a, .course-item .course-readmore a { border-radius: 999px; font-weight: 600; background: var(--ub-brand); color: #fff; padding: .55em 1.2em; font-size: .85rem; }
.courses-top-bar, .lp-courses-bar { border: 1px solid var(--ub-border); border-radius: 999px; padding: .4rem .6rem; margin-bottom: 1.5rem; }
.lp-archive-courses .learn-press-pagination .page-numbers { border-radius: 999px; }
.lp-archive-courses .learn-press-pagination .page-numbers.current { background: var(--ub-brand); color: #fff; }
.lp-single-course .course-title, .lp-single-course h1.course-title { font-family: var(--ub-font-head); font-size: clamp(2rem, 4.5vw, 3rem); line-height: 1.08; }
.lp-single-course .course-meta .meta-item, .lp-single-course .course-meta-primary .meta-item { font-size: .85rem; color: var(--ub-muted); }
.lp-single-course .course-summary-sidebar__inner, .lp-single-course .lp-single-course-sidebar, .lp-single-course .course-sidebar-preview { border: 1px solid var(--ub-border); border-radius: var(--ub-radius); box-shadow: var(--ub-shadow); overflow: hidden; background: #fff; }
.lp-single-course .course-price, .lp-single-course .course-price .price { font-family: var(--ub-font-head); font-size: 1.6rem; font-weight: 700; color: var(--ub-night); }
/* Prix du widget Thim Elementor Kit : préfixe (« À partir de ») et suffixe (devise, subvention) sur leur propre ligne au lieu de trois colonnes étroites. */
.single-lp_course .thim-ekit-single-course__price { display: flex; flex-wrap: wrap; align-items: baseline; gap: .15rem .6rem; }
.single-lp_course .thim-ekit-single-course__price .course-price-prefix, .single-lp_course .thim-ekit-single-course__price .course-price-suffix { flex: 0 0 100%; font-size: .85rem; line-height: 1.4; color: var(--ub-muted); }
.single-lp_course .thim-ekit-single-course__price .course-price-suffix { margin-bottom: .75rem; }
.lp-single-course .lp-button, .lp-single-course button.lp-button, .lp-single-course .lp-course-buttons button { border-radius: 999px !important; background: var(--ub-brand); color: #fff; font-weight: 600; border: 0; padding: .9em 1.6em; width: 100%; text-transform: none; }
.lp-single-course .lp-button:hover { background: var(--ub-brand-dark); }
.lp-single-course .learn-press-nav-tabs { border: 0; gap: .5rem; }
.lp-single-course .learn-press-nav-tabs li a { border-radius: 999px; font-weight: 600; font-size: .9rem; }
.lp-single-course .learn-press-nav-tabs li.active a { background: var(--ub-brand); color: #fff; }
.lp-single-course .course-curriculum .section, .lp-course-curriculum .course-section { border: 1px solid var(--ub-border); border-radius: var(--ub-radius-sm); margin-bottom: .75rem; overflow: hidden; }
.lp-single-course .course-curriculum .section-header, .lp-course-curriculum .course-section__title, .lp-course-curriculum .course-section-header { background: var(--ub-pale); font-family: var(--ub-font-head); font-weight: 600; }
.lp-single-course .course-instructor, .lp-single-course .lp-course-author { border: 1px solid var(--ub-border); border-radius: var(--ub-radius); padding: 1.5rem; }
/* Onglets de la fiche (Thim Elementor Kit) : le gabarit colore le texte avec la couleur globale du kit (bleu lien) ; carte du formateur sans mise en forme. */
body.single-lp_course .elementor .elementor-element .ekits-content-course-tabs [role="tabpanel"] { color: var(--ub-night); }
.single-lp_course .lp-course-author p:empty { display: none; }
.single-lp_course .lp-course-author .instructor-display-name { font-family: var(--ub-font-head); font-size: 1.35rem; font-weight: 700; color: var(--ub-night); }
.single-lp_course .lp-course-author .d-flex { display: flex; flex-wrap: wrap; align-items: center; }
.single-lp_course .lp-course-author .gap-30 { gap: 1.5rem; }
.single-lp_course .lp-course-author .gap-15 { gap: 1rem; }
.single-lp_course .lp-course-author .instructor-avatar img { width: 120px; height: 120px; border-radius: 50%; object-fit: cover; }
.single-lp_course .lp-course-author .instructor-total-students, .single-lp_course .lp-course-author .instructor-total-courses { display: inline-block; padding: .35rem .9rem; margin: 0 .5rem .5rem 0; border-radius: 999px; background: var(--ub-pale); font-size: .85rem; font-weight: 600; color: var(--ub-night); }
.lp-single-course .course-extra-box, .lp-single-course .course-extra-box__title { border-color: var(--ub-border); border-radius: var(--ub-radius-sm); }
.lp-single-course .course-extra-box__title { background: var(--ub-pale); font-family: var(--ub-font-head); }
.ub-course-facts { margin: 2rem 0; border: 1px solid var(--ub-border); border-radius: var(--ub-radius); padding: 1.5rem 1.75rem; background: var(--ub-pale); }
.ub-course-facts__title { font-size: 1.2rem; margin-bottom: 1rem; }
.ub-course-facts__list { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: .9rem 1.5rem; margin: 0 0 1.25rem; }
.ub-course-facts__list dt { font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--ub-brand); }
.ub-course-facts__list dd { margin: .15rem 0 0; font-weight: 600; color: var(--ub-night); }
.ub-course-facts h3 { font-size: 1rem; margin: 1rem 0 .4rem; }
.ub-course-facts__skills { margin: 0; padding-left: 1.2rem; color: var(--ub-night); }
.ub-course-facts p { color: var(--ub-night); }
#learn-press-profile #profile-nav .learn-press-tabs > li > a, .lp-profile-nav-tabs a { border-radius: var(--ub-radius-sm); }
#learn-press-profile #profile-nav .learn-press-tabs > li.active > a { background: var(--ub-brand); }
.learn-press-course-progress .progress-bg .progress-active { background: var(--ub-mint); }

/* =========================================================================
   En-tête / pied de page choisis dans Personnaliser (modèles Thim Elementor ou Elementor)
   ========================================================================= */
.ub-custom-header, .ub-custom-footer { margin: 0; padding: 0; }
.ub-custom-header > .elementor, .ub-custom-footer > .elementor, .ub-custom-footer .elementor-section, .ub-custom-header .elementor-section, .ub-custom-footer .e-con, .ub-custom-header .e-con { margin-top: 0 !important; margin-bottom: 0 !important; }
.ub-custom-footer .elementor-section > .elementor-container, .ub-custom-header .elementor-section > .elementor-container { max-width: var(--ub-container); }
.ub-custom-footer nav ul, .ub-custom-footer .elementor-nav-menu, .ub-custom-footer .thim-ekits-menu__nav { display: flex; flex-wrap: wrap; gap: .25rem 1.25rem; }
.ub-custom-footer nav li, .ub-custom-footer .elementor-nav-menu li { white-space: nowrap; }
.ub-main > :last-child, .ub-main > .ub-fullwidth > :last-child, .ub-main .elementor > :last-child, .ub-main .elementor-section:last-child { margin-bottom: 0 !important; }
.ub-main > .ub-fullwidth { padding-bottom: 0; }
body .ub-main + .ub-custom-footer { margin-top: 0; }
/* Modèle « Pied de page UbSkilled » (sections Elementor .ub-footer--el) : mêmes styles que le pied de page du thème. */
.elementor-section.ub-footer--el { padding: clamp(3.5rem, 7vw, 5.5rem) 0 1.5rem !important; margin: 0 !important; }
.elementor-section.ub-footer--el > .elementor-container, .ub-footer--el .elementor-section.ub-footer__grid--el > .elementor-container { max-width: var(--ub-container); padding-left: 1.25rem; padding-right: 1.25rem; }
.ub-footer--el .elementor-section.ub-footer__grid--el > .elementor-container { padding-left: 0; padding-right: 0; }
.ub-footer--el .elementor-column > .elementor-widget-wrap, .ub-footer--el .elementor-column > .elementor-element-populated { padding: 0 !important; }
.ub-footer--el .elementor-widget { margin-bottom: 0; }
.ub-footer--el .elementor-section.ub-footer__grid--el { margin: 0 !important; padding: 0 !important; }
.ub-footer--el .ub-footer__grid--el .elementor-column:not(:last-child) > .elementor-widget-wrap { padding-right: 2.5rem !important; }
.ub-footer--el .ub-footer__grid--el .elementor-column, .ub-footer--el .ub-footer__grid--el .elementor-widget-wrap { display: block; }
.ub-footer--el .ub-footer__bottom { margin-top: 3.5rem; }
@media (max-width: 767px) {
	.ub-footer--el .ub-footer__grid--el .elementor-column > .elementor-widget-wrap { padding-right: 0 !important; margin-bottom: 2rem; }
}

/* =========================================================================
   Compatibilité Elementor
   ========================================================================= */
/* Le kit global Elementor applique aux sections ET aux conteneurs (e-con) une marge de 10 px et un
   espacement interne de 20 px : c'est la ligne blanche au-dessus du pied de page et sous l'en-tête.
   Les sections du thème imposent leurs propres espacements, quel que soit le type d'élément. */
.elementor .ub-hero, .elementor .ub-section, .elementor .ub-cta, .e-con.ub-hero, .e-con.ub-section, .e-con.ub-cta,
.elementor-section.ub-hero, .elementor-section.ub-section, .elementor-section.ub-cta { margin: 0 !important; padding-left: 0 !important; padding-right: 0 !important; --margin-top: 0; --margin-bottom: 0; --padding-left: 0; --padding-right: 0; }
.elementor .ub-section, .e-con.ub-section { padding-top: var(--ub-section) !important; padding-bottom: var(--ub-section) !important; --padding-top: var(--ub-section); --padding-bottom: var(--ub-section); }
.elementor .ub-section--tight, .e-con.ub-section--tight { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
.elementor .ub-cta, .e-con.ub-cta { padding-top: var(--ub-section) !important; padding-bottom: var(--ub-section) !important; }
.elementor .ub-hero, .e-con.ub-hero { padding-top: clamp(3rem, 6vw, 4.5rem) !important; padding-bottom: clamp(2.5rem, 5vw, 3.5rem) !important; }
.ub-fullwidth > .elementor, .ub-fullwidth .elementor > .elementor-element:first-child { margin-top: 0 !important; }
.ub-fullwidth .elementor > .elementor-element:last-child { margin-bottom: 0 !important; }
/* Conteneurs Elementor (e-con) portant les classes du thème : largeur de lecture et disposition. */
.e-con.ub-section, .e-con.ub-cta, .e-con.ub-section--tight { --content-width: var(--ub-container); align-items: center; }
.e-con.ub-section > .elementor-widget, .e-con.ub-cta > .elementor-widget, .e-con.ub-section > .e-con-inner, .e-con.ub-cta > .e-con-inner { width: 100%; max-width: var(--ub-container); padding-left: 1.25rem; padding-right: 1.25rem; }
.e-con.ub-cta > .elementor-widget { text-align: center; }
.e-con.ub-hero { --flex-direction: row; --flex-wrap: wrap; --align-items: center; --justify-content: center; --gap: 0; }
.e-con.ub-hero > .e-con { --width: 55%; max-width: 660px; }
.e-con.ub-hero > .e-con + .e-con { --width: 45%; max-width: 540px; }
.e-con.ub-el-split { --flex-direction: row; --flex-wrap: wrap; --align-items: center; --gap: 3rem; }
.e-con.ub-el-split > .e-con { --width: calc(50% - 1.5rem); }
.elementor-section.ub-section, .elementor-section.ub-hero, .elementor-section.ub-cta { padding-left: 0; padding-right: 0; }
.elementor-section.ub-hero > .elementor-container, .elementor-section.ub-section > .elementor-container, .elementor-section.ub-cta > .elementor-container { max-width: var(--ub-container); padding-left: 1.25rem; padding-right: 1.25rem; }
.elementor-section.ub-hero > .elementor-container, .elementor-section.ub-el-split > .elementor-container { align-items: center; gap: 0; flex-wrap: wrap; }
/* 3.8.1 : colonne de texte longue → l'image suit le défilement au lieu de flotter au milieu d'un grand vide. */
@media (min-width: 782px) {
	.elementor-section.ub-el-split > .elementor-container { align-items: flex-start; }
	.elementor-section.ub-el-split .elementor-column.ub-split__media { position: sticky; top: 6rem; align-self: flex-start; }
	.ub-split:not(.elementor-section) { align-items: start; }
	.ub-split:not(.elementor-section) > .ub-split__media { position: sticky; top: 6rem; }
}
.elementor-section.ub-el-split .elementor-column > .elementor-widget-wrap { padding: 0 1.5rem; }
.elementor-section.ub-el-split .elementor-column:first-child > .elementor-widget-wrap { padding-left: 0; }
.elementor-section.ub-el-split .elementor-column:last-child > .elementor-widget-wrap { padding-right: 0; }
.elementor-section.ub-hero .elementor-column.ub-hero__media > .elementor-widget-wrap { padding-left: 2rem; }
.elementor-section.ub-hero, .elementor-section.ub-cta, .elementor-section.ub-section { overflow-x: clip; }
.elementor-section.ub-hero .elementor-widget, .elementor-section.ub-el-split .elementor-widget, .elementor-section.ub-cta .elementor-widget { width: 100%; }
.elementor-section.ub-hero .elementor-widget-wrap, .elementor-section.ub-el-split .elementor-widget-wrap { display: block; }
.elementor-section.ub-hero .elementor-widget-heading .ub-hero__title { font-size: clamp(2.5rem, 5.6vw, 4.4rem); line-height: 1.04; font-weight: 800; }
.elementor-section.ub-hero .elementor-widget-text-editor .ub-hero__text p, .elementor-section.ub-hero .ub-hero__text { font-size: 1.12rem; color: var(--ub-muted); max-width: 36rem; }
.elementor-section.ub-hero .elementor-widget:not(:last-child) { margin-bottom: .75rem; }
.elementor-section.ub-hero .elementor-column.ub-hero__content > .elementor-widget-wrap { padding-right: 2rem; }
.elementor-section.ub-hero .elementor-column.ub-hero__media img { width: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: 24px; box-shadow: var(--ub-shadow-lg); }
/* Elementor ne fournit aucune classe de largeur 55/45 : sans ces règles, les deux colonnes du héros généré (page-builders) font 100 % et l'image passe sous le texte. */
@media (min-width: 782px) {
	.elementor-section.ub-hero .elementor-column.elementor-col-55 { width: 55%; }
	.elementor-section.ub-hero .elementor-column.elementor-col-45 { width: 45%; }
}
.elementor-widget-heading .elementor-heading-title { font-family: var(--ub-font-head); color: var(--ub-night); letter-spacing: -.02em; }
.elementor-section.ub-section--dark .elementor-widget-heading .elementor-heading-title, .elementor-section.ub-cta .elementor-widget-heading .elementor-heading-title { color: #fff; }
.elementor-widget-text-editor, .elementor-widget-text-editor p { font-family: var(--ub-font-body); }
.elementor-widget-heading .ub-heading__title, .elementor-widget-heading .ub-hero__title, .elementor-widget-heading .ub-split__title, .elementor-widget-heading .ub-cta__title { margin-bottom: .75rem; }
/* 3.8.1 : dans Elementor la classe est sur le widget, pas sur le h2 → le titre des sections split/CTA était collé au texte (0 px). */
.elementor .elementor-widget.ub-split__title, .elementor .elementor-widget.ub-cta__title { margin-bottom: 1rem; }
.elementor .elementor-widget.ub-hero__title { margin-bottom: 1.25rem; } /* 3.8.5 : même air sous le h1 que dans le rendu natif */
.elementor-widget-heading.ub-split__title .elementor-heading-title { line-height: 1.15; }
/* 3.8.4 : Elementor force line-height:1 sur ses titres ; interlignes du thème rétablis (classe sur le widget → h* interne). */
.elementor-widget-heading.ub-heading__title .elementor-heading-title { line-height: 1.12; }
.elementor-widget-heading.ub-hero__title .elementor-heading-title { line-height: 1.06; }
.elementor-widget-heading.ub-cta__title .elementor-heading-title { line-height: 1.1; }
.elementor-tab-title, .elementor-toggle-title, .elementor-accordion-title { line-height: 1.3; }
/* 3.8.4 : textes secondaires lisibles sur téléphone (≥ 13,5 px). */
@media (max-width: 782px) {
	.ub-course__meta li { font-size: .85rem; }
	.ub-btn--sm, .ub-product .ub-course__footer .ub-btn--sm { font-size: .9rem; }
	.ub-hero__micro, p.ub-hero__micro, .ub-form__note, .ub-card__num { font-size: .875rem; }
	.ub-pill, p.ub-pill, .ub-cta__micro, p.ub-cta__micro { font-size: .9rem; }
}
.elementor-widget .ub-eyebrow { margin-bottom: .6rem; }
.elementor-section.ub-section--dark .elementor-widget-heading .elementor-heading-title, .elementor-section.ub-cta .elementor-widget-heading .elementor-heading-title { color: #fff; }
.elementor-section.ub-section--dark .elementor-widget-text-editor, .elementor-section.ub-cta .elementor-widget-text-editor { color: rgba(255,255,255,.78); }
.elementor-widget-text-editor .ub-notice { margin: 0; }
.ub-el-hero .elementor-widget-image .elementor-widget-container { border-radius: 24px; overflow: hidden; box-shadow: var(--ub-shadow-lg); }

/* =========================================================================
   Responsive
   ========================================================================= */
/* En-tête personnalisé (modèle) : bureau seulement ; l'en-tête du thème le remplace sous 1024 px. */
/* En-tête du thème à partir de 1024 px : le menu reste visible (la feuille inline « ub-header-fix » du site masque .ub-nav jusqu'à 1024 px inclus) ;
   entre 1024 et 1199 px, un seul bouton et pas d'icône de compte pour que rien ne déborde. */
@media (min-width: 1024px) {
	.ub-header .ub-nav:not(.is-open) { opacity: 1 !important; visibility: visible !important; pointer-events: auto !important; transform: none !important; }
}
@media (min-width: 1024px) {
	/* Un seul bouton dans la barre (le menu à cinq entrées ne laisse pas la place à deux, même à 1440 px) ; « Demander une orientation » reste dans le héros et le menu mobile. */
	.ub-header__actions .ub-btn--outline { display: none !important; }
}
@media (min-width: 1024px) and (max-width: 1365px) {
	.ub-header__account { display: none !important; }
	.ub-menu > li > a { padding: .6em .6em; font-size: .9rem; }
	.ub-header__inner { gap: 1rem; }
}
@media (min-width: 1024px) {
	.ub-custom-header ~ .ub-topbar, .ub-custom-header ~ .ub-header { display: none; }
}
@media (max-width: 1023px) {
	.ub-custom-header { display: none; }
	.ub-hide-md { display: none !important; }
	.ub-burger { display: flex; }
	.ub-nav { position: fixed; inset: 0; background: #fff; z-index: 99; padding: 1rem 1.25rem 7rem; overflow-y: auto; transform: translateX(100%); transition: transform .3s var(--ub-ease); }
	.ub-nav.is-open { transform: none; }
	.ub-header { position: sticky; top: 0; z-index: 100; }
	.ub-nav__close { display: none; }
	.ub-nav.is-open .ub-nav__close { display: inline-flex; align-items: center; gap: .4rem; margin: 0 0 .5rem auto; padding: .5em 1em !important; border: 1.5px solid var(--ub-border) !important; border-radius: 999px !important; background: #fff !important; color: var(--ub-night) !important; font: inherit !important; font-weight: 600 !important; font-size: .95rem !important; cursor: pointer; box-shadow: none !important; }
	.ub-nav__close span { font-size: 1.4rem; line-height: 1; }
	.ub-menu > li:first-child > a { border-top: 1px solid var(--ub-border); }
	/* Le panneau est dans l'en-tête : les actions (bouton menu) passent au-dessus pour pouvoir le refermer. */
	.ub-header__actions { position: relative; z-index: 101; }
	.ub-menu { flex-direction: column; gap: 0; }
	.ub-menu > li > a { font-size: 1.15rem; padding: .8em .5em; border-radius: 0; border-bottom: 1px solid var(--ub-border); }
	.ub-menu .sub-menu { position: static; opacity: 1; visibility: visible; transform: none; box-shadow: none; border: 0; display: none; padding: 0 0 .5rem 1rem; }
	.ub-menu li.is-open > .sub-menu { display: block; }
	.ub-nav__mobile-actions { display: flex; flex-direction: column; gap: .6rem; margin-top: 1.5rem; }
	.ub-nav__account { text-align: center; font-weight: 600; padding: .6em; }
	.ub-nav-open { overflow: hidden; }
	.ub-grid--5, .ub-grid--6 { --ub-cols: 3; }
	.ub-steps--5, .ub-steps--6 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.ub-layout--sidebar { grid-template-columns: 1fr; }
	.ub-slider__item { --ub-cols: 2; }
	.ub-footer__grid { grid-template-columns: 1fr 1fr; }
	.ub-footer__brand { grid-column: 1 / -1; }
}
@media (max-width: 781px) {
	.ub-hero__grid { grid-template-columns: 1fr; gap: 2rem; }
	/* Le mot souligné du H1 est en nowrap : sur un petit écran il élargissait la colonne au-delà de la fenêtre et coupait le texte. */
	.ub-hero__grid > * { min-width: 0; }
	.ub-hero__title em { white-space: normal; box-shadow: inset 0 -.16em 0 0 var(--ub-gold); -webkit-box-decoration-break: clone; box-decoration-break: clone; }
	.ub-hero__title em::after { display: none; }
	.ub-search { flex-wrap: wrap; }
	.elementor-section.ub-hero .elementor-column, .elementor-section.ub-el-split .elementor-column { width: 100%; }
	.elementor-section.ub-hero .elementor-column > .elementor-widget-wrap, .elementor-section.ub-el-split .elementor-column > .elementor-widget-wrap { padding: 0 0 1.5rem !important; }
	.ub-grid--3, .ub-grid--4, .ub-grid--5, .ub-grid--6 { --ub-cols: 2; }
	.ub-heading--split { flex-direction: column; align-items: flex-start; }
	.ub-steps--3 { grid-template-columns: 1fr; }
	.ub-steps--5, .ub-steps--6 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ub-course__footer { flex-direction: column; align-items: flex-start; }
	.ub-split, .wp-block-columns.ub-split { grid-template-columns: 1fr; gap: 1.75rem; }
	.ub-split--img-right .ub-split__media { order: 0; }
	.ub-iconlist--2, .ub-iconlist--3 { --ub-cols: 1; }
	.ub-form__grid, .ub-form__files { grid-template-columns: 1fr; }
	.ub-form { padding: 1.5rem; }
	/* Bandeau supérieur compact : texte et lien en ligne, sans le point. */
	.ub-topbar { font-size: .74rem; line-height: 1.4; padding: .45rem 0; }
	.ub-topbar .ub-container { display: block; }
	.ub-topbar__dot { display: none; }
	.ub-topbar a { margin-left: .35em; white-space: nowrap; }
	.ub-table thead { position: absolute; clip: rect(1px,1px,1px,1px); width: 1px; height: 1px; overflow: hidden; }
	.ub-table tr { display: block; border-bottom: 1px solid var(--ub-border); }
	.ub-table th, .ub-table td { display: block; width: auto; border: 0; padding: .6rem 1rem; }
	.ub-table tbody th { padding-top: 1rem; }
	.ub-table td::before { content: attr(data-label); display: block; font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--ub-brand); margin-bottom: .2rem; }
	.ub-slider__item { --ub-cols: 1; }
	.elementor-section.ub-hero > .elementor-container, .elementor-section.ub-el-split > .elementor-container { flex-wrap: wrap; }
}
@media (max-width: 549px) {
	.ub-grid, .ub-grid--2 { --ub-cols: 1; }
	.ub-steps, .ub-steps--5, .ub-steps--6 { grid-template-columns: 1fr; }
	.ub-stats { grid-template-columns: repeat(2, 1fr); }
	.ub-actions .ub-btn, .ub-actions .wp-block-button, .ub-actions .wp-block-button__link { width: 100%; }
	.ub-footer__grid { grid-template-columns: 1fr; gap: 2rem; }
	.ub-footer__intro { padding-bottom: 1.75rem; margin-bottom: 2.25rem; }
	.ub-footer__method { font-size: .64rem; gap: .4rem .6rem; }
	.ub-footer__method li { gap: .6rem; }
	.ub-footer__bottom { flex-direction: column; align-items: flex-start; }
}
@media print {
	.ub-topbar, .ub-header__actions, .ub-burger, .ub-footer__top, .ub-cta, .ub-totop { display: none !important; }
	.ub-reveal { opacity: 1 !important; transform: none !important; }
}

/* Boutique WooCommerce (services et réservations) ------------------------ */
.ub-shop { padding: 2rem 0 var(--ub-section); }
.ub-shop .woocommerce-breadcrumb { display: none; }
.ub-shop .product .product_title { font-size: clamp(1.6rem, 3vw, 2.4rem); }
.ub-shop .price, .ub-shop .woocommerce-Price-amount { color: var(--ub-brand); font-weight: 700; font-family: var(--ub-font-head); }
.ub-shop .ub-unit { font-size: .7em; font-weight: 500; color: var(--ub-muted); }
.ub-shop ul.products li.product { background: #fff; border: 1px solid var(--ub-border); border-radius: var(--ub-radius); padding: 1.25rem; box-shadow: var(--ub-shadow); }
.ub-shop ul.products li.product .woocommerce-loop-product__title { font-size: 1.05rem; min-height: 2.6em; }
.ub-shop .button, .ub-shop button.single_add_to_cart_button, .woocommerce .ub-shop a.button { background: var(--ub-brand) !important; color: #fff !important; border-radius: 999px !important; padding: .8em 1.5em !important; font-weight: 600 !important; border: 1.5px solid var(--ub-brand) !important; }
.ub-shop .button.ub-btn--outline, .woocommerce .ub-shop a.button.ub-btn--outline { background: #fff !important; color: var(--ub-brand) !important; }
.ub-shop form.cart { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 1rem; margin: 1.5rem 0; }
.ub-shop form.cart .quantity { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.ub-shop form.cart .quantity .qty { width: 6em; min-height: 44px; border: 1.5px solid var(--ub-border); border-radius: var(--ub-radius-sm); padding: .5em; font: inherit; }
.ub-qty-label { font-size: .85rem; color: var(--ub-muted); max-width: 22em; }
.ub-wc-fields { flex: 1 1 100%; padding: 1.5rem; margin: 0 0 .5rem; }
.ub-wc-fields .ub-form__field { margin: 0; }
.ub-quote { background: var(--ub-pale); border-radius: var(--ub-radius); padding: 1.25rem 1.5rem; margin: 1rem 0 1.5rem; }
.ub-quote__note { margin: 0 0 1rem; color: var(--ub-muted); font-size: .92rem; }
.ub-shop .woocommerce-tabs ul.tabs li { border-radius: 999px; }
.ub-shop .woocommerce-tabs ul.tabs li.active { background: var(--ub-brand); }
.ub-shop .woocommerce-tabs ul.tabs li.active a { color: #fff; }
.ub-shop .woocommerce-message, .ub-shop .woocommerce-info { border-top-color: var(--ub-brand); }
.ub-shop .woocommerce-error { border-top-color: #d33; }
.ub-shop table.shop_table { border-radius: var(--ub-radius); overflow: hidden; }
.ub-shop table.shop_table dl.variation dt { font-weight: 600; }
@media (max-width: 767px) { .ub-shop form.cart { flex-direction: column; align-items: stretch; } }

/* Panier dans l'en-tête et cartes de services ------------------------------ */
.ub-header__cart { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; border-radius: 50%; color: var(--ub-night); }
.ub-header__cart:hover { background: var(--ub-pale); color: var(--ub-brand); }
.ub-cart-count { position: absolute; top: 2px; right: 0; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: var(--ub-gold); color: var(--ub-night); font-size: .7rem; font-weight: 700; line-height: 18px; text-align: center; }
.ub-cart-count.is-empty { display: none; }
.ub-product .ub-course__price .amount { font-family: var(--ub-font-head); color: var(--ub-brand); font-weight: 700; }
.ub-product .ub-course__price .ub-unit { font-size: .75em; color: var(--ub-muted); font-weight: 500; }
.ub-section__after { max-width: 62ch; margin: 1.5rem auto 0; text-align: center; color: var(--ub-muted); font-size: .95rem; }
.ub-actions--center { justify-content: center; margin-top: 1.5rem; }
.ub-badge--open { background: var(--ub-mint); color: var(--ub-night); }
.woocommerce-products-header__title { font-size: clamp(1.8rem, 3vw, 2.6rem); }
.ub-shop ul.products li.product-category a { display: block; text-align: center; }
.ub-shop ul.products li.product-category h2 { font-size: 1.05rem; padding: .75rem 0 .25rem; }
.ub-shop ul.products li.product-category h2 .count { background: none; color: var(--ub-muted); font-weight: 400; }
.ub-header__cart--float { display: none; }
.ub-header__cart--float.is-placed { display: inline-flex; margin: 0 .25rem; flex: 0 0 auto; }

/* En-tête Elementor/Thim : menu sur une ligne, boutons compacts --------------------------------------- */
.ub-custom-header .thim-ekits-menu__nav > li > a { white-space: nowrap; font-size: .95rem; padding-left: .55rem !important; padding-right: .55rem !important; }
.ub-custom-header .elementor-button.elementor-size-sm { padding: .65em 1.1em !important; font-size: .88rem !important; white-space: nowrap; line-height: 1.2 !important; }
.ub-custom-header .elementor-button .elementor-button-content-wrapper { gap: .4em; }
.ub-custom-header .e-con-inner { gap: .5rem; }
@media (min-width: 1024px) and (max-width: 1279px) { .ub-custom-header .thim-ekits-menu__nav > li > a { font-size: .88rem; padding-left: .4rem !important; padding-right: .4rem !important; } .ub-custom-header .elementor-button.elementor-size-sm { padding: .6em .9em !important; font-size: .82rem !important; } }

/* Fiche de formation (présentiel) : compteurs et mentions « en ligne » masqués, onglet Programme ------------- */
.thim-ekit-single-course__meta__custom, .thim-ekit-single-course__meta__count-student, .thim-ekit-single-course__meta__count-lesson, .thim-ekit-single-course__meta__count-quiz, .thim-ekit-single-course__meta__assessments, .thim-ekit-single-course__meta__students, .instructor-total-students, .instructor-total-courses { display: none !important; }
.ub-course-program ol { padding-left: 1.2rem; display: grid; gap: .6rem; }
.ub-course-program li::marker { color: var(--ub-brand); font-weight: 700; }
.ub-course-program h3 { margin-top: 1.5rem; }
.ub-course-program__sessions { margin-top: 1rem; color: var(--ub-muted); }
.course-review, .lp-course-review, .thim-ekit-single-course__review, .course-rating, .review-stars-rated, .learnpress-course-review, .thim-ekits-course-review { display: none !important; }

/* Menu : séparateurs | entre les entrées de l'en-tête Thim --------------------------------------------- */
.ub-custom-header .thim-ekits-menu__nav > li { position: relative; }
.ub-custom-header .thim-ekits-menu__nav > li + li::before { content: ""; position: absolute; left: 0; top: 50%; height: 1.1em; width: 1px; background: var(--ub-border); transform: translateY(-50%); }
.ub-custom-header .thim-ekits-menu__nav > li > a { padding-left: .7rem !important; padding-right: .7rem !important; }
.ub-custom-header .ub-header__cart--float.is-placed { margin-left: .5rem; }

/* Archives boutique : barre « résultats + tri » sur une ligne, sélecteur stylé ----------------------- */
.ub-shop .woocommerce-notices-wrapper:empty { display: none; }
.ub-shop .woocommerce-result-count, .ub-shop .woocommerce-ordering { margin: 0 0 1.5rem; float: none; }
.ub-shop .woocommerce-result-count { display: inline-block; color: var(--ub-muted); font-size: .92rem; padding: .6em 0; }
.ub-shop .woocommerce-ordering { display: inline-block; float: right; }
.ub-shop .woocommerce-ordering select { appearance: none; -webkit-appearance: none; padding: .6em 2.4em .6em 1em; border: 1.5px solid var(--ub-border); border-radius: 999px; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%230b2347' stroke-width='1.8'/%3E%3C/svg%3E") no-repeat right 1em center; font: inherit; font-size: .9rem; color: var(--ub-night); min-height: 44px; cursor: pointer; }
.ub-shop .woocommerce-products-header { margin-bottom: 1rem; }
.ub-shop .woocommerce-products-header .term-description { color: var(--ub-muted); max-width: 70ch; }
.ub-shop ul.products { clear: both; }
.ub-shop ul.products li.product .price { font-size: 1.05rem; white-space: nowrap; }
.ub-shop ul.products li.product .price .ub-unit { font-size: .75em; }
.ub-shop ul.products li.product .button { margin-top: .75rem; font-size: .88rem !important; padding: .6em 1.2em !important; white-space: nowrap; }
.ub-shop ul.products li.product img { border-radius: var(--ub-radius-sm); aspect-ratio: 8 / 5; object-fit: cover; }
@media (max-width: 600px) { .ub-shop .woocommerce-ordering { float: none; display: block; } }

/* Cartes de services : prix sur une ligne, bouton compact, catégorie sur une ligne -------------------- */
.ub-product .ub-eyebrow { display: block; overflow-wrap: anywhere; }
.ub-product .ub-course__footer { display: flex; align-items: center; justify-content: space-between; gap: .75rem; flex-wrap: wrap; }
.ub-product .ub-course__footer .ub-btn--sm { flex: 1 0 auto; text-align: center; }
/* Cartes étroites (4 colonnes) : prix au-dessus, bouton pleine largeur */
.ub-grid--4 .ub-product .ub-course__footer, .ub-slider[style*="--ub-cols:4"] .ub-product .ub-course__footer { flex-direction: column; align-items: stretch; gap: .6rem; }
.ub-grid--4 .ub-product .ub-course__footer .ub-btn--sm, .ub-slider[style*="--ub-cols:4"] .ub-product .ub-course__footer .ub-btn--sm { width: 100%; }
.ub-product .ub-course__price { display: block; min-width: 0; }
.ub-product .ub-course__price .price { white-space: nowrap; }
.ub-product .ub-course__price .ub-p3d-price { font-size: .88rem; font-weight: 600; line-height: 1.3; }
.ub-product .ub-course__price .amount { white-space: nowrap; font-size: 1.15rem; }
.ub-product .ub-course__price .amount bdi { white-space: nowrap; }
.ub-product .ub-course__footer .ub-btn--sm { white-space: nowrap; padding: .6em 1.05em; font-size: .84rem; flex: 0 0 auto; }
.ub-product .ub-course__meta li { font-size: .8rem; }

/* Catalogue et fiche LearnPress (gabarits Thim) : pas de capitales forcées, repères, filtre ------------------ */
.thim-ekits-course__item, .thim-ekits-course__item *, .thim-ekit-single-course__price *, .ekits-course-tabs .tab-item, .lp-button, .course-filter-submit, .course-filter-reset { text-transform: none !important; }
.ub-lp-tags { list-style: none; display: flex; flex-wrap: wrap; gap: .35rem; margin: .6rem 0 .2rem; padding: 0; }
.ub-lp-tags li { font-size: .74rem; font-weight: 600; color: var(--ub-night); background: var(--ub-pale); border-radius: 999px; padding: .2rem .6rem; line-height: 1.3; }
.lp-form-course-filter .lp-form-course-filter__item:has(input[name="c_rating[]"]), .lp-form-course-filter__item.rating, .lp-form-course-filter__item[data-name="c_rating"] { display: none !important; }
.lp-form-course-filter .course-filter-submit, .lp-form-course-filter .course-filter-reset { border-radius: 999px !important; padding: .6em 1.2em !important; font: inherit !important; font-size: .88rem !important; font-weight: 600 !important; border: 1.5px solid var(--ub-brand) !important; cursor: pointer; margin-right: .5rem; }
.lp-form-course-filter .course-filter-submit { background: var(--ub-brand) !important; color: #fff !important; }
.lp-form-course-filter .course-filter-reset { background: #fff !important; color: var(--ub-brand) !important; }
.lp-form-course-filter__title { font-family: var(--ub-font-head); font-weight: 700; color: var(--ub-night); }
.ub-course-program__section { margin: 1rem 0 .4rem; font-size: 1rem; }
.ub-course-program__lessons { padding-left: 1.2rem; }
.lp-form-course-filter .lp-form-course-filter__item:has(input[name="c_review_star"]) { display: none !important; } /* filtre par étoiles : aucune évaluation publiée */
.ekits-course-tabs .tab-item[aria-controls="panel-reviews"], #panel-reviews, .course-tab-panel-reviews { display: none !important; } /* onglet Avis : masqué tant qu'aucune évaluation n'est publiée */

/* Partage et sections liées (fiches de service : CSS servie par le thème) ---------------------------------- */
.ub-share { display: flex; align-items: center; flex-wrap: wrap; gap: .4rem; margin: 1rem 0; }
.ub-share__label { font-size: .85rem; font-weight: 600; color: var(--ub-muted); margin-right: .25rem; }
.ub-share__btn, button.ub-share__btn, .elementor .ub-share__btn, .elementor button.ub-share__btn { display: inline-flex !important; align-items: center; justify-content: center; width: 38px !important; height: 38px !important; border-radius: 50% !important; border: 1.5px solid var(--ub-border) !important; background: #fff !important; color: var(--ub-night) !important; cursor: pointer; padding: 0 !important; font-size: 0; line-height: 0; box-shadow: none !important; }
.ub-share__btn:hover, .ub-share__btn:focus-visible, .elementor button.ub-share__btn:hover { border-color: var(--ub-brand) !important; color: var(--ub-brand) !important; background: #fff !important; }
.ub-share__done { font-size: .8rem; color: var(--ub-mint-dark); font-weight: 600; }
.ub-related { margin: 3rem 0 1rem; clear: both; }
.ub-related .ub-heading { margin-bottom: 1.25rem; }
.ub-shop .ub-related .ub-course__footer .ub-btn { white-space: nowrap; }

/* Sliders de formations et de services -------------------------------------------------------------- */
.ub-slider__track { padding: 6px 0 1rem; margin: 0; scroll-padding: 0; scroll-snap-type: x mandatory; }
.ub-slider__item { scroll-snap-align: start; scroll-snap-stop: always; }
.ub-slider .ub-course__media img, .ub-products .ub-course__media img { width: 100%; height: auto; aspect-ratio: 8 / 5; object-fit: cover; display: block; }
.ub-slider__item > .ub-course { height: 100%; display: flex; flex-direction: column; }
.ub-slider__item > .ub-course .ub-course__body { flex: 1; display: flex; flex-direction: column; }
.ub-slider__item > .ub-course .ub-course__footer { margin-top: auto; }
.ub-slider__btn:disabled { opacity: .35; cursor: default; }
.ub-slider__btn:disabled:hover { border-color: var(--ub-border); color: var(--ub-night); }
.ub-slider__nav[hidden] { display: none; }

/* Flèches des sliders : style imposé (les boutons globaux Elementor/Thim les recoloraient) ------------------ */
.ub-slider__btn, .elementor .ub-slider__btn, .elementor-widget-container .ub-slider__btn, button.ub-slider__btn { display: inline-flex !important; align-items: center; justify-content: center; width: 44px !important; height: 44px !important; padding: 0 !important; border-radius: 50% !important; border: 1.5px solid var(--ub-brand) !important; background: #fff !important; color: var(--ub-brand) !important; box-shadow: var(--ub-shadow); font-size: 0 !important; line-height: 0 !important; cursor: pointer; transition: background .15s, color .15s; }
.ub-slider__btn svg { width: 20px; height: 20px; display: block; }
.ub-slider__btn:hover, .ub-slider__btn:focus-visible, .elementor .ub-slider__btn:hover { background: var(--ub-brand) !important; color: #fff !important; }
.ub-slider__btn:disabled, .elementor .ub-slider__btn:disabled { background: #fff !important; color: var(--ub-muted) !important; border-color: var(--ub-border) !important; opacity: .55; box-shadow: none; cursor: default; }

/* Mobile : espace sous le contenu pour les boutons flottants, sliders et grilles en une colonne ------------ */
@media (max-width: 767px) {
	.ub-nav.is-open { padding-top: 5.5rem; }
	.ub-course__footer { flex-wrap: wrap; }
	.ub-course__footer .ub-btn--sm { flex: 1 0 auto; text-align: center; }
	.ub-share { gap: .3rem; }
	.ub-share__btn { width: 36px !important; height: 36px !important; }
	.ub-hero__title { font-size: clamp(2rem, 9vw, 2.6rem); }
	.ub-section { padding-top: clamp(2.5rem, 8vw, 3.5rem); padding-bottom: clamp(2.5rem, 8vw, 3.5rem); }
	.ub-slider__nav { justify-content: center; }
	.ub-slider__track { align-items: flex-start; }
	.ub-slider__item > .ub-course { height: auto; }
	.ub-related .ub-heading__title { font-size: 1.4rem; }
	.ub-course-facts { padding: 1rem; }
	.ub-shop ul.products { grid-template-columns: 1fr !important; }
	.ub-wc-fields { padding: 1rem; }
	table.shop_table td, table.shop_table th { padding: .5rem .4rem; font-size: .9rem; }
}

/* Accessibilité : contrastes (menu Thim, paragraphes Elementor, texte des sections sombres) ---------------- */
.ub-custom-header .thim-ekits-menu__nav > li > a, .ub-custom-header .thim-ekits-menu__nav .sub-menu a, .ub-menu > li > a, .ub-menu .sub-menu a { color: var(--ub-brand) !important; }
.elementor-widget-text-editor, .elementor-widget-text-editor p, .elementor-widget-text-editor li { color: var(--ub-muted); }
.ub-section--dark .elementor-widget-text-editor, .ub-section--dark .elementor-widget-text-editor p, .ub-cta .elementor-widget-text-editor p, .ub-section--dark .ub-heading__text, .ub-section--dark .ub-heading__text p { color: rgba(255, 255, 255, .85); }
.ub-section--dark .ub-step__text { color: rgba(255, 255, 255, .85); }

/* =========================================================================
   Motion — CSS d'abord : entrées du héros en keyframes (sans JS), réactions au survol,
   ouverture des FAQ, défilement (animation-timeline) en amélioration progressive.
   Tout est neutralisé par prefers-reduced-motion (règle globale plus haut).
   ========================================================================= */
@keyframes ub-rise { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes ub-settle { from { transform: translateY(16px) scale(1.02); } to { transform: none; } }
@keyframes ub-fade-down { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
@keyframes ub-drift { from { transform: translateY(12%); } to { transform: translateY(-12%); } }
/* Héros : texte en cascade (le titre part presque sans délai pour ne pas retarder le LCP), image sans fondu (transform seul). */
.ub-hero__content > *, .ub-hero__content > .elementor-widget-wrap > .elementor-widget { animation: ub-rise .7s var(--ub-ease) both; }
.ub-hero__content > :nth-child(2), .ub-hero__content > .elementor-widget-wrap > .elementor-widget:nth-child(2) { animation-delay: .06s; }
.ub-hero__content > :nth-child(3), .ub-hero__content > .elementor-widget-wrap > .elementor-widget:nth-child(3) { animation-delay: .16s; }
.ub-hero__content > :nth-child(4), .ub-hero__content > .elementor-widget-wrap > .elementor-widget:nth-child(4) { animation-delay: .26s; }
.ub-hero__content > :nth-child(n+5), .ub-hero__content > .elementor-widget-wrap > .elementor-widget:nth-child(n+5) { animation-delay: .36s; }
.ub-hero__media { animation: ub-settle .9s var(--ub-ease) both; }
.elementor-editor-active .ub-hero__content > *, .elementor-editor-active .ub-hero__media, .elementor-editor-active .ub-hero__content .elementor-widget { animation: none; }
/* Étapes de la méthode : le numéro « pop » après l'apparition de la carte. */
.ub-step__num { transition: transform .5s var(--ub-ease) .2s, opacity .4s .2s; }
.ub-js .ub-step.ub-reveal:not(.is-visible) .ub-step__num { transform: scale(.5); opacity: 0; }
/* Cartes : l'icône et le lien réagissent avec la carte. */
.ub-card__icon, .ub-card__num { transition: transform .3s var(--ub-ease), background .2s; }
a.ub-card:hover .ub-card__icon, a.ub-card:hover .ub-card__num { transform: translateY(-3px) scale(1.06); background: var(--ub-brand-soft); }
a.ub-card:hover .ub-card__link { color: var(--ub-brand-dark); }
.ub-iconlist__icon { transition: transform .3s var(--ub-ease), background .2s, color .2s; }
.ub-iconlist__item:hover .ub-iconlist__icon { transform: scale(1.1); background: var(--ub-brand); color: #fff; }
/* Boutons : léger enfoncement au clic. */
.ub-btn:active, .wp-block-button__link:active { transform: translateY(1px) scale(.98); }
/* FAQ : la réponse glisse en s'ouvrant. */
.ub-faq__item[open] .ub-faq__a, .wp-block-details.ub-faq__item[open] > :not(summary) { animation: ub-fade-down .3s var(--ub-ease) both; }
/* Filtres du catalogue : la pastille s'enfonce au clic (les cartes réapparaissent en cascade via main.js). */
.ub-filter:active { transform: scale(.96); }
.ub-faq__item, .wp-block-details.ub-faq__item { transition: border-color .2s, box-shadow .2s; }
.ub-faq__q:hover, .wp-block-details.ub-faq__item > summary:hover { color: var(--ub-brand); }

/* Héros : la photo se révèle couche par couche. Le cache est posé AU-DESSUS de l'image (l'image est peinte dès la
   première frame : LCP inchangé) et se retire par paliers, comme une pièce qui monte sur le plateau. */
@keyframes ub-layers { from { transform: scaleY(1); } to { transform: scaleY(0); } }
.ub-hero__frame { position: relative; }
/* Plaque « couches » qui recouvrait la photo du héros pendant 1,5 s : retirée le 6 oct. 2026 (la photo est l'élément LCP, elle doit être visible dès son chargement). */
/* Plaque « impression » : tracé dessiné (dashoffset), buse qui balaie, lecture qui passe d'« impression… » à « terminé ». */
@keyframes ub-draw { from { stroke-dashoffset: 120; } to { stroke-dashoffset: 0; } }
@keyframes ub-nozzle { 0% { transform: translateX(-9px); } 20% { transform: translateX(9px); } 40% { transform: translateX(-9px); } 60% { transform: translateX(9px); } 80% { transform: translateX(-5px); } 100% { transform: translateX(0); } }
@keyframes ub-swap-off { to { opacity: 0; visibility: hidden; } }
@keyframes ub-swap-on { from { opacity: 0; visibility: hidden; } to { opacity: 1; visibility: visible; } }
.ub-hero__print { position: absolute; left: 1rem; bottom: 1rem; z-index: 2; display: flex; align-items: center; gap: .6rem; padding: .5rem .95rem .5rem .6rem; border-radius: 999px; background: rgba(11, 35, 71, .92); color: #fff; font-family: var(--ub-font-head); font-size: .8rem; line-height: 1.15; font-weight: 700; box-shadow: var(--ub-shadow); animation: ub-rise .5s var(--ub-ease) .3s both; }
.ub-hero__print svg { width: 34px; height: 34px; flex: none; overflow: visible; }
.ub-hero__print-path { stroke-dasharray: 120; animation: ub-draw 1.3s linear .3s both; }
.ub-hero__print-nozzle { animation: ub-nozzle 1.3s ease-in-out .3s both; }
.ub-hero__print-text { display: grid; }
.ub-hero__print-text > span { grid-area: 2 / 1; white-space: nowrap; }
.ub-hero__print-label { grid-area: 1 / 1; font-size: .62rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; opacity: .65; }
.ub-hero__print-on { animation: ub-swap-off 1ms linear 1.65s both; }
.ub-hero__print-done { animation: ub-swap-on 1ms linear 1.65s both; }
.ub-hero__print-done::before { content: ""; display: inline-block; width: .5em; height: .5em; border-radius: 50%; background: var(--ub-mint); margin-right: .4em; }
.elementor-editor-active .ub-hero__frame::after { display: none; }
/* Éditeur Elementor : les widgets se re-rendent après l'observateur d'apparition ; tout reste visible. */
.elementor-editor-active .ub-reveal, .elementor-editor-active .ub-js .ub-reveal:not(.is-visible) { opacity: 1 !important; transform: none !important; }
.elementor-editor-active .ub-js .ub-step.ub-reveal:not(.is-visible) .ub-step__num { opacity: 1; transform: none; }

/* Démarche en 5 temps : rail doré qui se remplit au défilement, chaque pastille s'allume à son passage.
   L'état normal EST l'état final : sans animation-timeline (ou timeline inactive), tout est simplement allumé. */
@keyframes ub-fill { from { transform: scaleX(0); } to { transform: scaleX(1); } }
/* Les couleurs finales sont celles de la pastille elle-même (bleu, ou menthe en section sombre) via --ub-num-bg/--ub-num-fg. */
@keyframes ub-light { 0% { background: var(--ub-pale); color: var(--ub-muted); box-shadow: 0 0 0 0 rgba(255, 215, 0, 0); } 60% { background: var(--ub-num-bg); color: var(--ub-num-fg); box-shadow: 0 0 0 6px rgba(255, 215, 0, .45); } 100% { background: var(--ub-num-bg); color: var(--ub-num-fg); box-shadow: 0 0 0 0 rgba(255, 215, 0, 0); } }
@keyframes ub-parallax { from { transform: translate3d(0, 5%, 0) scale(1.1); } to { transform: translate3d(0, -5%, 0) scale(1.1); } }
@supports (animation-timeline: view()) {
	/* Halos du CTA et du pied de page glissent avec la page. */
	.ub-footer__glow, .ub-cta::after { animation: ub-drift linear both; animation-timeline: view(); animation-range: entry 0% exit 100%; }
	/* Chaque pastille s'allume quand elle entre à l'écran (toutes largeurs, toutes listes d'étapes). */
	/* .ub-step__num : l'allumage au défilement (fond, ombre, couleur) était une animation non composée signalée par Lighthouse ; retiré. */
	@media (min-width: 1024px) {
		.ub-steps--5 { position: relative; view-timeline-name: --ub-rail; }
		.ub-steps--5::before, .ub-steps--5::after { content: ""; position: absolute; z-index: 1; left: 2.7rem; right: 2.7rem; top: calc(2.8rem - 2px); height: 4px; border-radius: 2px; pointer-events: none; }
		.ub-steps--5::before { background: var(--ub-border); }
		.ub-steps--5::after { background: var(--ub-gold); transform-origin: left; animation: ub-fill linear both; animation-timeline: --ub-rail; animation-range: cover 8% cover 40%; }
		.ub-steps--5 .ub-step__num { position: relative; z-index: 2; animation-timeline: --ub-rail; }
		.ub-steps--5 .ub-step:nth-child(1) .ub-step__num { animation-range: cover 8% cover 12%; }
		.ub-steps--5 .ub-step:nth-child(2) .ub-step__num { animation-range: cover 16% cover 20%; }
		.ub-steps--5 .ub-step:nth-child(3) .ub-step__num { animation-range: cover 24% cover 28%; }
		.ub-steps--5 .ub-step:nth-child(4) .ub-step__num { animation-range: cover 32% cover 36%; }
		.ub-steps--5 .ub-step:nth-child(5) .ub-step__num { animation-range: cover 40% cover 44%; }
	}
	/* Parallaxe discret des photos de section : l'image (agrandie de 10 %) glisse de ±5 % pendant sa traversée de l'écran. */
	/* overflow: clip (et non hidden) : hidden ferait du cadre le conteneur de défilement de view(), et la parallaxe resterait figée. */
	.ub-split__media:not(.elementor-column), .ub-split__img { overflow: clip; border-radius: 24px; box-shadow: var(--ub-shadow-lg); }
	.ub-split__media > figure { margin: 0; }
	.ub-split__media img, .ub-split__img img { box-shadow: none; animation: ub-parallax linear both; animation-timeline: view(); animation-range: entry 0% exit 100%; }
}

/* 3.2.6 — Panier : le modèle d'en-tête Elementor forçait position: static (pastille ancrée au coin de la page) ; largeur mobile : rien ne dépasse du cadre. */
.ub-header__cart, html body .ub-custom-header .ub-header__cart.ub-header__cart.ub-header__cart.ub-header__cart { position: relative !important; flex: 0 0 auto; }
.ub-header__cart .ub-cart-count { position: absolute !important; top: 0; right: 0; transform: translate(25%, -15%); box-shadow: 0 0 0 2px #fff; }
.ub-header__cart svg { display: block; }
.ub-footer { overflow: clip; }
@media (max-width: 1023px) {
	html { max-width: 100%; overflow-x: hidden; }
	body { max-width: 100%; }
	.ub-custom-header, .ub-header, .ub-footer, .ub-main, .ub-main > * { max-width: 100%; }
	img, svg, video, iframe, table { max-width: 100%; }
	.ub-hero__title, .ub-hero__title em, .ub-hero__lead { overflow-wrap: anywhere; }
}

/* 3.2.8 — mise en page : CTA centré, sections texte en deux colonnes, cartes alignées */
.ub-cta__inner, .elementor-column.ub-cta__inner { margin-left: auto !important; margin-right: auto !important; }
}
/* 3.2.9 — carte seule horizontale (la grille des en-têtes de section a été retirée en 3.2.12 : elle perdait contre Elementor dans le bundle ub-speed) */
@media (min-width: 782px) {
	.ub-products.ub-grid--1 .ub-course { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
	.ub-products.ub-grid--1 .ub-course__media img { height: 100%; aspect-ratio: auto; }
}
/* 3.2.13 — respiration sous les titres de section */
.elementor .elementor-widget.ub-heading__title { margin-bottom: 1rem; }
.elementor .elementor-widget.ub-heading__text { margin-bottom: 1.5rem; }
