/* DoMyGSAP — 20 sections ScrollTrigger */
:root { --dmg-accent:#f59e0b; --dmg-dark:#0f172a; --dmg-light:#f8fafc; --dmg-radius:1rem; --dmg-gap:2rem; }
*,*::before,*::after { box-sizing:border-box; }
.dmg-section-title { font-size:clamp(1.75rem,4vw,2.75rem); font-weight:800; line-height:1.15; margin:0 0 1rem; }
.dmg-section-subtitle { font-size:1.1rem; line-height:1.7; opacity:.7; max-width:600px; margin:0 auto; }
.dmg-section-header { text-align:center; margin-bottom:3rem; padding:4rem 2rem 0; }
.dmg-btn { display:inline-flex; align-items:center; gap:.5rem; padding:.875rem 2rem; border-radius:.5rem; font-weight:700; font-size:.95rem; text-decoration:none; transition:transform .2s,box-shadow .2s; }
.dmg-btn--primary { background:var(--dmg-accent,#f59e0b); color:#fff; box-shadow:0 4px 15px rgba(245,158,11,.3); }
.dmg-btn--primary:hover { transform:translateY(-2px); box-shadow:0 8px 25px rgba(245,158,11,.4); }

/* ── GUARD — éléments visibles si GSAP rate ─────────────────────── */
.anima-target,.anima-stagger-item { visibility:visible; opacity:1; }

/* ── Layout Controls — overlay image de fond ────────────────────── */
/* Activé quand --dmg-overlay-color est défini via Layout_Controls   */
[style*="--dmg-overlay-color"]::before {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--dmg-overlay-color, transparent);
    opacity: var(--dmg-overlay-opacity, 0.4);
    pointer-events: none;
    z-index: 1;
}
@media(prefers-reduced-motion:reduce) { .anima-target,.anima-stagger-item { opacity:1!important; transform:none!important; visibility:visible!important; } }

/* ════════════════════════════════════════════════════════════
   1. CINÉMATIQUE
   ════════════════════════════════════════════════════════════ */
.dmg-cinematic { position:relative; width:100%; height:100vh; overflow:hidden; display:flex; align-items:center; justify-content:center; }
.elementor-widget-dmgsap-cinematic { height:100vh; }
.dmg-cinematic__bg { position:absolute; inset:-10%; background-size:cover; background-position:center; background-color:#0f172a; }
.dmg-cinematic__overlay { position:absolute; inset:0; z-index:1; }
.dmg-cinematic__inner { position:relative; z-index:2; text-align:center; padding:2rem; max-width:1100px; width:100%; }
.dmg-cinematic__title { font-size:clamp(2.5rem,7vw,6.5rem); font-weight:900; line-height:1.05; color:#fff; margin:0 0 1.5rem; letter-spacing:-.02em; }
.dmg-cinematic__title .dmg-word { display:inline-block; margin-right:.25em; }
.dmg-cinematic__title .dmg-word--accent { color:var(--dmg-accent,#f59e0b); }
.dmg-cinematic__subtitle { font-size:clamp(1rem,2.2vw,1.35rem); color:rgba(255,255,255,.7); margin:0 auto; max-width:55ch; }
.dmg-cinematic__scroll-hint { margin-top:3rem; display:flex; justify-content:center; }
.dmg-cinematic__mouse { display:flex; align-items:flex-start; justify-content:center; width:26px; height:42px; border:2px solid rgba(255,255,255,.5); border-radius:13px; padding-top:6px; }
.dmg-cinematic__wheel { width:3px; height:8px; background:rgba(255,255,255,.8); border-radius:2px; animation:dmg-wheel 1.6s ease-in-out infinite; }
@keyframes dmg-wheel { 0%{transform:translateY(0);opacity:1} 80%{transform:translateY(10px);opacity:0} 100%{transform:translateY(0);opacity:0} }
.dmg-cinematic__progress-wrap { position:absolute; bottom:0; left:0; right:0; height:4px; background:rgba(255,255,255,.15); z-index:10; }
.dmg-cinematic__progress-bar { height:100%; width:0; background:var(--dmg-accent,#f59e0b); }

/* ════════════════════════════════════════════════════════════
   2. HORIZONTAL SCROLL
   ════════════════════════════════════════════════════════════ */
.dmg-horizontal { position:relative; height:100vh; overflow:hidden; background:#0f172a; }
.elementor-widget-dmgsap-horizontal { height:100vh; }
.dmg-h__label { position:absolute; top:2rem; left:3rem; z-index:10; font-size:.75rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:rgba(255,255,255,.4); }
.dmg-h__track { display:flex; align-items:center; height:100%; padding:0 5vw; gap:2.5vw; }
.dmg-h__slide { flex:0 0 auto; width:420px; height:75vh; max-height:600px; background:#1e293b; border-radius:1.25rem; overflow:hidden; display:flex; flex-direction:column; position:relative; transition:transform .3s; }
.dmg-h__slide:hover { transform:translateY(-8px); }
.dmg-h__img-wrap { flex:1; overflow:hidden; }
.dmg-h__img-wrap img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s ease; }
.dmg-h__slide:hover .dmg-h__img-wrap img { transform:scale(1.05); }
.dmg-h__info { padding:1.75rem 2rem; background:#1e293b; }
.dmg-h__meta { display:flex; justify-content:space-between; align-items:center; margin-bottom:.75rem; }
.dmg-h__tag { font-size:.75rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--dmg-accent,#f59e0b); }
.dmg-h__year { font-size:.75rem; color:rgba(255,255,255,.35); }
.dmg-h__title { font-size:1.25rem; font-weight:800; color:#fff; margin:0 0 .5rem; }
.dmg-h__desc { font-size:.875rem; color:rgba(255,255,255,.55); margin:0; line-height:1.6; }
.dmg-h__progress-wrap { position:absolute; bottom:0; left:0; right:0; height:3px; background:rgba(255,255,255,.1); }
.dmg-h__progress-bar { height:100%; width:0; background:var(--dmg-accent,#f59e0b); }
@media(max-width:768px) { .dmg-horizontal { height:auto; } .dmg-h__track { flex-direction:column; padding:2rem; } .dmg-h__slide { width:100%; height:auto; } }

/* ════════════════════════════════════════════════════════════
   3. STACK CARDS
   ════════════════════════════════════════════════════════════ */
.dmg-stack { padding:5rem 2rem 8rem; min-height:80vh; display:flex; align-items:center; justify-content:center; background:var(--dmg-dark,#0f172a); }
.dmg-stack__cards { position:relative; width:min(600px,90vw); height:380px; }
.dmg-stack__card { position:absolute; inset:0; border-radius:1.25rem; padding:2.5rem; display:flex; flex-direction:column; justify-content:space-between; box-shadow:0 20px 60px rgba(0,0,0,.3); }
.dmg-stack__num { font-size:.8rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--dmg-accent,#f59e0b); }
.dmg-stack__icon { font-size:2rem; line-height:1; color:var(--dmg-accent,#f59e0b); margin:auto 0; font-variant-emoji:text; overflow:hidden; max-height:3rem; }
.dmg-stack__icon svg, .dmg-stack__icon i { width:2rem; height:2rem; max-width:2rem; max-height:2rem; display:block; }
.dmg-stack__title { font-size:2rem; font-weight:900; color:#fff; margin:0 0 .75rem; }
.dmg-stack__desc { font-size:.95rem; color:rgba(255,255,255,.6); margin:0; line-height:1.7; }

/* ════════════════════════════════════════════════════════════
   4. TEXT SCRUB
   ════════════════════════════════════════════════════════════ */
/* padding et background gérés via style inline (configurable dans le widget) */
.dmg-text-scrub { padding:0; }
.dmg-ts__text { font-size:var(--dmg-fs,3.5vw); font-weight:700; line-height:1.55; max-width:1000px; margin:0 auto; text-align:center; color:var(--dmg-lit,#ffffff); font-family:var(--dmg-font,inherit); }
.dmg-ts__word { display:inline-block; transition:none; }
@media(max-width:768px) { .dmg-ts__text { font-size:clamp(1.25rem,5vw,2rem); } }

/* ════════════════════════════════════════════════════════════
   5. TICKER
   ════════════════════════════════════════════════════════════ */
.dmg-ticker { overflow:hidden; padding:2rem 0; white-space:nowrap; background:var(--dmg-dark,#0f172a); border-top:1px solid rgba(245,158,11,.25); border-bottom:1px solid rgba(245,158,11,.25); }
.dmg-ticker__track { display:inline-flex; align-items:center; gap:1rem; }
.dmg-ticker__item { font-size:var(--dmg-ticker-fs,2.5rem); font-weight:800; letter-spacing:-.01em; color:var(--dmg-ticker-color,#fff); text-transform:uppercase; }
.dmg-ticker__sep { font-size:1.2rem; color:var(--dmg-ticker-accent,#f59e0b); padding:0 .5rem; }

/* ════════════════════════════════════════════════════════════
   6. PULL QUOTE
   ════════════════════════════════════════════════════════════ */
.dmg-pull-quote { padding:7rem 2rem; display:flex; align-items:center; justify-content:center; min-height:60vh; background:var(--dmg-dark,#0f172a); position:relative; }
.dmg-pq__inner { max-width:900px; text-align:center; position:relative; }
.dmg-pq__quote { font-size:clamp(1.5rem,4vw,3rem); font-weight:300; font-style:italic; line-height:1.4; color:var(--dmg-txt,#fff); margin:0 0 2rem; position:relative; }
.dmg-pq__quote::before { content:'\201C'; position:absolute; top:-.25em; left:-.3em; font-size:6rem; font-family:Georgia,'Times New Roman',serif; font-variant-emoji:text; font-weight:900; font-style:normal; color:var(--dmg-accent,#f59e0b); opacity:.2; line-height:1; pointer-events:none; }
.dmg-pq__author { font-size:1rem; font-weight:600; color:var(--dmg-accent,#f59e0b); letter-spacing:.1em; text-transform:uppercase; font-style:normal; }

/* ════════════════════════════════════════════════════════════
   7. PARALLAX DEPTH
   ════════════════════════════════════════════════════════════ */
.dmg-parallax-depth { position:relative; min-height:80vh; overflow:hidden; display:flex; align-items:center; justify-content:center; }
.dmg-pd__layer { position:absolute; inset:-20%; background-size:cover; background-position:center; }
.dmg-pd__overlay { position:absolute; inset:0; }
.dmg-pd__content { position:relative; z-index:2; text-align:center; padding:2rem; }
.dmg-pd__title { font-size:clamp(2rem,6vw,5rem); font-weight:900; color:#fff; margin:0 0 1rem; }
.dmg-pd__subtitle { font-size:1.25rem; color:rgba(255,255,255,.7); }

/* ════════════════════════════════════════════════════════════
   8. TIMELINE
   ════════════════════════════════════════════════════════════ */
.dmg-timeline { padding:5rem 2rem; background:#f8fafc; }
.dmg-tl__header { font-size:clamp(1.75rem,4vw,2.75rem); font-weight:800; text-align:center; margin:0 0 4rem; }
.dmg-tl__track { position:relative; max-width:700px; margin:0 auto; padding-left:3rem; }
.dmg-tl__line { position:absolute; left:8px; top:0; bottom:0; width:2px; background:rgba(0,0,0,.08); border-radius:2px; }
.dmg-tl__line-fill { position:absolute; top:0; left:0; right:0; height:0%; background:var(--dmg-accent,#f59e0b); transform-origin:top; }
.dmg-tl__item { position:relative; padding:0 0 3rem 1rem; }
.dmg-tl__dot { position:absolute; left:-2.35rem; top:6px; width:16px; height:16px; border-radius:50%; background:var(--dmg-accent,#f59e0b); box-shadow:0 0 0 4px rgba(245,158,11,.2); }
.dmg-tl__date { font-size:.8rem; font-weight:700; letter-spacing:.15em; text-transform:uppercase; color:var(--dmg-accent,#f59e0b); }
.dmg-tl__title { font-size:1.35rem; font-weight:800; margin:.35rem 0 .5rem; }
.dmg-tl__text { font-size:.95rem; color:#64748b; line-height:1.7; margin:0; }

/* ════════════════════════════════════════════════════════════
   9. SKILLS
   ════════════════════════════════════════════════════════════ */
.dmg-skills { padding:5rem 2rem; background:#f8fafc; }
.dmg-skills__header { text-align:center; margin-bottom:3rem; }
.dmg-skills__list { max-width:700px; margin:0 auto; display:flex; flex-direction:column; gap:1.75rem; }
.dmg-skill__head { display:flex; justify-content:space-between; margin-bottom:.6rem; }
.dmg-skill__label { font-weight:700; font-size:.95rem; }
.dmg-skill__pct { font-weight:800; color:var(--dmg-accent,#f59e0b); font-size:.95rem; }
.dmg-skill__track { height:6px; background:rgba(0,0,0,.08); border-radius:3px; overflow:hidden; }
.dmg-skill__fill { height:100%; width:0; border-radius:3px; background:linear-gradient(90deg, var(--dmg-accent,#f59e0b), #f97316); }

/* ════════════════════════════════════════════════════════════
   10. STICKY FEATURES
   ════════════════════════════════════════════════════════════ */
.dmg-sticky-features { display:grid; grid-template-columns:1fr 1fr; min-height:100vh; background:var(--dmg-dark,#0f172a); }
.dmg-sf__sticky-col { position:sticky; top:0; height:100vh; display:flex; align-items:center; justify-content:center; padding:3rem; }
.dmg-sf__sticky-inner { max-width:360px; }
.dmg-sf__title { font-size:clamp(1.5rem,3vw,2.25rem); font-weight:900; color:#fff; margin:0 0 2rem; }
.dmg-sf__counter { font-size:1rem; color:rgba(255,255,255,.5); margin-bottom:1rem; }
.dmg-sf__progress { height:3px; background:rgba(255,255,255,.15); border-radius:2px; overflow:hidden; }
.dmg-sf__progress-fill { height:100%; width:0; background:var(--dmg-accent,#f59e0b); transition:width .4s ease; }
.dmg-sf__scroll-col { padding:4rem 3rem; }
.dmg-sf__item { min-height:60vh; display:flex; flex-direction:column; justify-content:center; padding:3rem 0; border-bottom:1px solid rgba(255,255,255,.06); opacity:.35; transition:opacity .3s; }
.dmg-sf__item.is-active { opacity:1; }
.dmg-sf__icon { font-size:2.5rem; margin-bottom:1.25rem; }
.dmg-sf__item-title { font-size:2rem; font-weight:900; margin:0 0 1rem; }
.dmg-sf__item-content { font-size:1.1rem; line-height:1.8; color:rgba(255,255,255,.6); margin:0; }
@media(max-width:768px) { .dmg-sticky-features { grid-template-columns:1fr; } .dmg-sf__sticky-col { position:relative; height:auto; padding:2rem; } .dmg-sf__item { min-height:auto; padding:2rem 0; } .dmg-sf__scroll-col { padding:2rem 1.5rem; } }

/* ════════════════════════════════════════════════════════════
   11. MOSAIC
   ════════════════════════════════════════════════════════════ */
.dmg-mosaic { padding:4rem 2rem; background:#f8fafc; }
.dmg-mosaic__grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; max-width:1200px; margin:0 auto; }
.dmg-mosaic__item { position:relative; overflow:hidden; border-radius:.75rem; aspect-ratio:1; background:#e2e8f0; }
.dmg-mosaic__item--wide { grid-column:span 2; aspect-ratio:2/1; }
.dmg-mosaic__item img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s ease; }
.dmg-mosaic__item:hover img { transform:scale(1.06); }
.dmg-mosaic__caption { position:absolute; bottom:0; left:0; right:0; padding:1rem 1.25rem; background:linear-gradient(transparent,rgba(0,0,0,.7)); color:#fff; font-weight:600; font-size:.85rem; transform:translateY(100%); transition:transform .3s; }
.dmg-mosaic__item:hover .dmg-mosaic__caption { transform:translateY(0); }
@media(max-width:768px) { .dmg-mosaic__grid { grid-template-columns:1fr; } .dmg-mosaic__item--wide { grid-column:span 1; aspect-ratio:1; } }

/* ════════════════════════════════════════════════════════════
   12. COUNTER SCRUB
   ════════════════════════════════════════════════════════════ */
.dmg-counter-scrub { padding:6rem 2rem; display:flex; flex-wrap:wrap; justify-content:center; gap:3rem 5rem; background:var(--dmg-dark,#0f172a); }
.dmg-cs__item { text-align:center; }
.dmg-cs__number { display:flex; align-items:baseline; justify-content:center; gap:.1rem; color:var(--color,currentColor); }
.dmg-cs__val { font-size:clamp(3rem,8vw,6rem); font-weight:900; line-height:1; font-variant-numeric:tabular-nums; color:var(--dmg-accent,#f59e0b); }
.dmg-cs__suffix { font-size:2rem; font-weight:700; }
.dmg-cs__label { margin:.75rem 0 0; font-size:.85rem; text-transform:uppercase; letter-spacing:.1em; opacity:.6; color:#fff; }

/* ════════════════════════════════════════════════════════════
   13. COLOR JOURNEY — sticky stack, zéro conflit GSAP
   ════════════════════════════════════════════════════════════ */

/* Le wrapper ne fait rien de spécial — la hauteur est donnée
   par la somme des slides (chacune 100vh). */
.dmg-color-journey { position:relative; }

/* Chaque slide est sticky : elle colle au sommet du viewport
   pendant que la suivante arrive par-dessous et la recouvre.
   z-index croissant = empilement naturel sans GSAP pin. */
.dmg-cj__step {
  position: sticky;
  top: 0;
  height: 100vh;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  /* z-index injecté par JS (i + 1) */
}

/* Léger effet de scale sur la slide qui "descend" sous la suivante */
.dmg-cj__step::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0);
  pointer-events: none;
  z-index: 10;
  transition: background .4s;
}

.dmg-cj__inner {
  position: relative;
  z-index: 2;
  max-width: 700px;
  padding: 3rem 2rem;
  text-align: center;
}
.dmg-cj__eyebrow { font-size:.75rem; font-weight:700; letter-spacing:.25em; text-transform:uppercase; opacity:.5; display:block; margin-bottom:.5rem; }
.dmg-cj__title   { font-size:clamp(2.5rem,6vw,5rem); font-weight:900; margin:.5rem 0 1.5rem; line-height:1.05; }
.dmg-cj__text    { font-size:1.15rem; line-height:1.75; opacity:.75; max-width:50ch; margin:0 auto; }

/* Indicateur de slide en bas à droite */
.dmg-cj__indicator {
  position: absolute;
  bottom: 2rem;
  right: 2.5rem;
  z-index: 20;
  display: flex;
  flex-direction: column;
  gap: .5rem;
  align-items: center;
}
.dmg-cj__dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(255,255,255,.3);
  transition: background .3s, transform .3s;
}
.dmg-cj__dot.is-active {
  background: var(--dmg-accent, #f59e0b);
  transform: scale(1.5);
}

/* Mobile : sticky reste mais on réduit la hauteur du texte */
@media(max-width:600px) {
  .dmg-cj__title { font-size:clamp(2rem,8vw,3rem); }
}

/* ════════════════════════════════════════════════════════════
   14. CARD SCATTER
   ════════════════════════════════════════════════════════════ */
.dmg-card-scatter { padding:5rem 2rem; background:#f8fafc; }
.dmg-scatter__grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1.5rem; max-width:1100px; margin:0 auto; }
.dmg-scatter__card { background:#fff; border-radius:1rem; padding:2rem; box-shadow:0 4px 20px rgba(0,0,0,.07); border-top:3px solid var(--card-accent,#f59e0b); transition:box-shadow .3s; }
.dmg-scatter__card:hover { box-shadow:0 12px 35px rgba(0,0,0,.12); }
.dmg-scatter__icon { font-size:1.75rem; color:var(--card-accent,#f59e0b); margin-bottom:1rem; }
.dmg-scatter__title { font-size:1.1rem; font-weight:800; margin:0 0 .6rem; }
.dmg-scatter__text { font-size:.9rem; color:#64748b; line-height:1.7; margin:0; }
@media(max-width:768px) { .dmg-scatter__grid { grid-template-columns:1fr 1fr; } }
@media(max-width:480px) { .dmg-scatter__grid { grid-template-columns:1fr; } }

/* ════════════════════════════════════════════════════════════
   15. ZOOM GALLERY
   ════════════════════════════════════════════════════════════ */
.dmg-zoom-gallery { padding:4rem 2rem; background:#f8fafc; }
.dmg-zg__grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:1.25rem; max-width:1200px; margin:0 auto; }
.dmg-zg__item { position:relative; border-radius:1rem; overflow:hidden; cursor:pointer; }
.dmg-zg__img-wrap { aspect-ratio:4/3; overflow:hidden; }
.dmg-zg__img-wrap img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s ease; }
.dmg-zg__overlay { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.75),transparent 50%); display:flex; flex-direction:column; justify-content:flex-end; padding:1.5rem; opacity:0; transition:opacity .3s; }
.dmg-zg__item:hover .dmg-zg__overlay { opacity:1; }
.dmg-zg__tag { font-size:.7rem; font-weight:700; letter-spacing:.15em; text-transform:uppercase; color:var(--dmg-accent,#f59e0b); margin-bottom:.4rem; }
.dmg-zg__title { font-size:1.1rem; font-weight:800; color:#fff; margin:0; }

/* ════════════════════════════════════════════════════════════
   16. TYPEWRITER
   ════════════════════════════════════════════════════════════ */
.dmg-typewriter { display:flex; align-items:center; justify-content:center; min-height:50vh; padding:4rem 2rem; background:var(--dmg-dark,#0f172a); }
.dmg-tw__inner { font-size:clamp(1.75rem,5vw,4rem); font-weight:900; color:var(--dmg-txt,#fff); text-align:center; line-height:1.2; }
.dmg-tw__typed { color:var(--dmg-typed,#f59e0b); }
.dmg-tw__cursor { color:var(--dmg-typed,#f59e0b); animation:dmg-blink .8s ease-in-out infinite; }
@keyframes dmg-blink { 0%,100%{opacity:1} 50%{opacity:0} }

/* ════════════════════════════════════════════════════════════
   17. FADE GALLERY
   ════════════════════════════════════════════════════════════ */
.dmg-fade-gallery { position:relative; height:100vh; overflow:hidden; }
.elementor-widget-dmgsap-fade-gallery { height:100vh; }
.dmg-fg__slide { position:absolute; inset:0; }
.dmg-fg__bg { position:absolute; inset:-5%; background-size:cover; background-position:center; }
.dmg-fg__overlay { position:absolute; inset:0; background:rgba(0,0,0,.45); }
.dmg-fg__content { position:relative; z-index:2; height:100%; display:flex; flex-direction:column; justify-content:flex-end; padding:4rem; }
@media(max-width:768px) { .dmg-fg__content { padding:1.5rem; } .dmg-fg__title { font-size:clamp(1.5rem,6vw,2.5rem); } }
.dmg-fg__label { font-size:.75rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--dmg-accent,#f59e0b); margin-bottom:.75rem; }
.dmg-fg__title { font-size:clamp(2rem,6vw,4.5rem); font-weight:900; color:#fff; margin:0 0 .75rem; line-height:1.05; }
.dmg-fg__text { font-size:1rem; color:rgba(255,255,255,.7); max-width:50ch; line-height:1.7; margin:0; }
.dmg-fg__dots { position:absolute; bottom:2rem; left:50%; transform:translateX(-50%); display:flex; gap:.5rem; z-index:10; }
.dmg-fg__dot { width:8px; height:8px; border-radius:50%; background:rgba(255,255,255,.4); transition:background .3s,transform .3s; }
.dmg-fg__dot.active { background:var(--dmg-accent,#f59e0b); transform:scale(1.3); }

/* ════════════════════════════════════════════════════════════
   18. NUMBER HERO
   ════════════════════════════════════════════════════════════ */
.dmg-number-hero { display:flex; flex-direction:column; align-items:center; justify-content:center; min-height:100vh; padding:4rem 2rem; text-align:center; color:var(--dmg-txt-color,#fff); background:var(--dmg-dark,#0f172a); }
.elementor-widget-dmgsap-number-hero { min-height:100vh; }
.dmg-nh__number { display:flex; align-items:baseline; justify-content:center; gap:.1rem; margin-bottom:1rem; position:relative; }
.dmg-nh__number::before { content:''; position:absolute; inset:-40% -20%; background:radial-gradient(ellipse at center, rgba(245,158,11,.15) 0%, transparent 70%); pointer-events:none; z-index:0; }
.dmg-nh__digits, .dmg-nh__suffix { position:relative; z-index:1; }
.dmg-nh__digits { font-size:clamp(5rem,18vw,14rem); font-weight:900; line-height:1; color:var(--dmg-num-color,#f59e0b); font-variant-numeric:tabular-nums; }
.dmg-nh__suffix { font-size:3rem; font-weight:700; color:var(--dmg-num-color,#f59e0b); }
.dmg-nh__context { font-size:clamp(1rem,2.5vw,1.5rem); font-weight:700; letter-spacing:.05em; opacity:.9; margin:0 0 1.5rem; text-transform:uppercase; }
.dmg-nh__desc { font-size:1rem; max-width:50ch; line-height:1.8; opacity:.6; margin:0; }

/* ════════════════════════════════════════════════════════════
   19. CURTAIN
   ════════════════════════════════════════════════════════════ */
.dmg-curtain { position:relative; min-height:100vh; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.dmg-cu__bg { position:absolute; inset:0; background-size:cover; background-position:center; }
.dmg-cu__panel { position:absolute; top:0; bottom:0; width:50%; z-index:2; }
.dmg-cu__left { left:0; }
.dmg-cu__right { right:0; }
.dmg-cu__content { position:relative; z-index:3; text-align:center; padding:3rem 2rem; max-width:700px; }
.dmg-cu__title { font-size:clamp(2rem,5vw,4rem); font-weight:900; color:#fff; margin:0 0 1.25rem; line-height:1.1; }
.dmg-cu__subtitle { font-size:1.1rem; color:rgba(255,255,255,.7); margin:0 0 2rem; }

/* ════════════════════════════════════════════════════════════
   20. SPLIT REVEAL
   ════════════════════════════════════════════════════════════ */
.dmg-split-reveal { display:grid; grid-template-columns:1fr 1fr; min-height:80vh; position:relative; overflow:hidden; }
.dmg-sr__half { position:relative; overflow:hidden; display:flex; align-items:flex-end; padding:2.5rem; background:#1e293b; }
.dmg-sr__half img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.dmg-sr__label { position:relative; z-index:2; font-size:.75rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--dmg-accent,#f59e0b); background:rgba(0,0,0,.4); padding:.4rem .75rem; border-radius:100px; }
.dmg-sr__center { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; z-index:4; pointer-events:none; }
.dmg-sr__title { font-size:clamp(1.5rem,4vw,3.5rem); font-weight:900; color:#fff; text-align:center; padding:.5rem 1.5rem; background:rgba(0,0,0,.5); backdrop-filter:blur(8px); border-radius:.5rem; }
@media(max-width:768px) { .dmg-split-reveal { grid-template-columns:1fr; min-height:auto; } .dmg-sr__half { min-height:55vw; } .dmg-sr__center { position:relative; inset:auto; padding:1.5rem 2rem; background:rgba(0,0,0,.6); backdrop-filter:blur(8px); pointer-events:auto; } .dmg-sr__title { font-size:clamp(1.25rem,5vw,2rem); } }

/* ════════════════════════════════════════════════════════════
   21. MAGNETIC HERO
   ════════════════════════════════════════════════════════════ */
.dmg-magnetic { position:relative; min-height:90vh; display:flex; align-items:center; justify-content:center; overflow:hidden; padding:4rem 2rem; background:var(--dmg-dark,#0f172a); }
.elementor-widget-dmgsap-magnetic { min-height:90vh; }
.dmg-mag__inner { position:relative; z-index:2; text-align:center; max-width:800px; }
.dmg-mag__eyebrow { display:inline-block; font-size:.75rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--dmg-accent,#f59e0b); margin-bottom:1.25rem; border:1px solid currentColor; padding:.3rem .75rem; border-radius:100px; }
.dmg-mag__title { font-size:clamp(2.5rem,7vw,6rem); font-weight:900; color:#fff; margin:0 0 1.5rem; line-height:1.05; }
.dmg-mag__subtitle { font-size:1.15rem; color:rgba(255,255,255,.65); margin:0 0 2.5rem; max-width:50ch; margin-left:auto; margin-right:auto; }
.dmg-mag__floats { position:absolute; inset:0; pointer-events:none; overflow:hidden; }
.dmg-mag__float { position:absolute; font-weight:900; letter-spacing:-.02em; user-select:none; pointer-events:none; }
.dmg-mag__float:nth-child(1) { top:15%; left:8%; }
.dmg-mag__float:nth-child(2) { top:20%; right:10%; }
.dmg-mag__float:nth-child(3) { bottom:25%; left:12%; }
.dmg-mag__float:nth-child(4) { bottom:20%; right:8%; }
@media(max-width:768px) { .dmg-mag__title { font-size:clamp(2rem,8vw,3.5rem); } .dmg-mag__subtitle { font-size:1rem; } }

/* ════════════════════════════════════════════════════════════
   22. REVEAL TEXT
   ════════════════════════════════════════════════════════════ */
.dmg-reveal-text { padding:6rem 4rem; overflow:hidden; background:var(--dmg-dark,#0f172a); }
.dmg-rt__line { font-size:var(--dmg-rt-size,4vw); font-weight:900; line-height:1.1; color:var(--dmg-txt,#fff); display:block; padding:.3rem 0; }
@media(max-width:768px) { .dmg-reveal-text { padding:4rem 2rem; } .dmg-rt__line { font-size:clamp(1.5rem,7vw,3rem); } }

/* ════════════════════════════════════════════════════════════
   23. SHOWCASE ÉPINGLÉ
   ════════════════════════════════════════════════════════════ */
.dmg-showcase { display:grid; grid-template-columns:1fr 1fr; min-height:100vh; overflow:hidden; background:var(--dmg-dark,#0f172a); }
.elementor-widget-dmgsap-showcase { min-height:100vh; }
.dmg-show__sticky { position:sticky; top:0; height:100vh; overflow:hidden; }
.dmg-show__imgs { position:relative; height:100%; }
.dmg-show__img { position:absolute; inset:0; }
.dmg-show__img img { width:100%; height:100%; object-fit:cover; display:block; }
.dmg-show__panels { padding:4rem 3rem; display:flex; flex-direction:column; justify-content:center; }
.dmg-show__panel { padding:3rem 0; border-bottom:1px solid rgba(255,255,255,.08); opacity:.3; transition:opacity .4s; }
.dmg-show__panel.is-active { opacity:1; }
.dmg-show__tag { font-size:.7rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--dmg-accent,#f59e0b); }
.dmg-show__title { font-size:clamp(1.5rem,3vw,2.5rem); font-weight:900; color:#fff; margin:.5rem 0 1rem; }
.dmg-show__text { font-size:1rem; color:rgba(255,255,255,.6); line-height:1.8; margin:0; }
@media(max-width:768px) { .dmg-showcase { grid-template-columns:1fr; } .dmg-show__sticky { position:relative; height:max(56vw,240px); } .dmg-show__panels { padding:2rem 1.5rem; } .dmg-show__panel { border-bottom-color:rgba(255,255,255,.12); } }

/* ════════════════════════════════════════════════════════════
   24. WORD FLOW
   ════════════════════════════════════════════════════════════ */
.dmg-word-flow { position:relative; width:100%; min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center; overflow:hidden; background:var(--dmg-dark,#0f172a); }
.dmg-word-flow::before { content:''; position:absolute; inset:0; background:radial-gradient(ellipse 80% 60% at 50% 50%, rgba(245,158,11,.06) 0%, transparent 70%); pointer-events:none; }
.dmg-wf__stage { display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:.25em .4em; max-width:1000px; padding:2rem; }
.dmg-wf__word { font-size:var(--dmg-wf-size,4.5rem); font-weight:900; line-height:1.1; color:var(--dmg-wf-color,#fff); display:inline-block; }
.dmg-wf__word--accent { color:var(--dmg-accent,#f59e0b); }
@media(max-width:768px) { .dmg-wf__word { font-size:clamp(2rem,8vw,4rem); } }

/* ════════════════════════════════════════════════════════════
   25. CARD DECK
   ════════════════════════════════════════════════════════════ */
.dmg-card-deck { position:relative; min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center; overflow:hidden; padding:4rem 2rem; background:var(--dmg-dark,#0f172a); }
.dmg-cd__wrapper { position:relative; width:min(380px,88vw); height:280px; }
.dmg-cd__card { position:absolute; inset:0; border-radius:1.25rem; padding:2rem 2.5rem; display:flex; flex-direction:column; justify-content:space-between; box-shadow:0 20px 60px rgba(0,0,0,.4); cursor:pointer; }
.dmg-cd__emoji { font-size:2.2rem; line-height:1; }
.dmg-cd__title { font-size:1.6rem; font-weight:900; color:#fff; margin:0; }
.dmg-cd__desc  { font-size:.9rem; color:rgba(255,255,255,.6); margin:0; line-height:1.6; }

/* ════════════════════════════════════════════════════════════
   26. BENTO REVEAL
   ════════════════════════════════════════════════════════════ */
.dmg-bento-reveal { padding:5rem 2rem; background:var(--dmg-dark,#0f172a); }
.dmg-br__grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; max-width:1200px; margin:0 auto; }
.dmg-br__item { border-radius:1.25rem; padding:2.5rem 2rem; display:flex; flex-direction:column; gap:.75rem; min-height:200px; transition:box-shadow .3s, transform .3s; overflow:hidden; position:relative; border:1px solid rgba(255,255,255,.07); }
.dmg-br__item:hover { box-shadow:0 20px 50px rgba(0,0,0,.4); transform:translateY(-3px); }
.dmg-br__item--wide { grid-column:span 2; }
.dmg-br__emoji { font-size:2.5rem; line-height:1; }
.dmg-br__title { font-size:1.35rem; font-weight:800; color:#fff; margin:0; }
.dmg-br__desc  { font-size:.9rem; color:rgba(255,255,255,.55); margin:0; line-height:1.65; }
@media(max-width:900px) { .dmg-br__grid { grid-template-columns:repeat(2,1fr); } .dmg-br__item--wide { grid-column:span 2; } }
@media(max-width:600px) { .dmg-br__grid { grid-template-columns:1fr; } .dmg-br__item--wide { grid-column:span 1; } }

/* ════════════════════════════════════════════════════════════
   27. LETTER REVEAL
   ════════════════════════════════════════════════════════════ */
.dmg-letter-reveal { padding:6rem 4rem; overflow:hidden; background:var(--dmg-dark,#0f172a); }
.dmg-lr__wrap { margin:0; line-height:1.1; font-weight:900; }
.dmg-ler__line { display:block; overflow:hidden; }
.dmg-ler__cw   { display:inline-block; overflow:hidden; vertical-align:bottom; }
.dmg-ler__ch   { display:inline-block; color:var(--dmg-lr-color,#fff); font-size:var(--dmg-lr-size,8vw); }
.dmg-ler__sp   { display:inline-block; width:.3em; }
.dmg-ler__line:last-child .dmg-ler__ch { color:var(--dmg-accent,#f59e0b); }
@media(max-width:768px) { .dmg-letter-reveal { padding:4rem 2rem; } .dmg-ler__ch { font-size:clamp(2.5rem,10vw,6rem); } }

/* ════════════════════════════════════════════════════════════
   28. DEPTH ZOOM
   ════════════════════════════════════════════════════════════ */
.dmg-depth-zoom { position:relative; height:100vh; overflow:hidden; display:flex; align-items:center; justify-content:center; background:var(--dmg-dark,#0f172a); }
.elementor-widget-dmgsap-depth-zoom { height:100vh; }
.dmg-dz__bg { position:absolute; inset:-15%; background-size:cover; background-position:center; background-color:#0f172a; }
.dmg-dz__overlay { position:absolute; inset:0; z-index:1; }
.dmg-dz__content { position:relative; z-index:2; text-align:center; padding:2rem; max-width:900px; width:100%; }
.dmg-dz__title { font-size:clamp(2rem,6vw,5rem); font-weight:900; color:#fff; margin:0 0 1.5rem; line-height:1.1; }
.dmg-dz__subtitle { font-size:clamp(1rem,2vw,1.3rem); color:rgba(255,255,255,.75); max-width:55ch; margin:0 auto 2rem; }

/* ════════════════════════════════════════════════════════════
   29. MARQUEE DUO
   ════════════════════════════════════════════════════════════ */
.dmg-marquee-duo { overflow:hidden; padding:3rem 0; display:flex; flex-direction:column; gap:1.5rem; background:var(--dmg-dark,#0f172a); }
.dmg-md__row   { overflow:hidden; white-space:nowrap; }
.dmg-md__track { display:inline-flex; align-items:center; gap:1rem; }
.dmg-md__item  { font-size:var(--dmg-md-size,3rem); font-weight:900; text-transform:uppercase; letter-spacing:-.01em; color:var(--dmg-md-color,rgba(255,255,255,.18)); }
.dmg-md__row:last-child .dmg-md__item { opacity:.5; }
.dmg-md__sep   { color:var(--dmg-accent,#f59e0b); font-size:var(--dmg-md-size,3rem); opacity:.6; }
@media(max-width:768px) { .dmg-md__item, .dmg-md__sep { font-size:clamp(1.5rem,6vw,2.5rem); } }
@media(max-width:768px) { .dmg-ticker__item { font-size:clamp(1.25rem,5vw,2rem); } .dmg-ticker__sep { font-size:.9rem; } }

/* ════════════════════════════════════════════════════════════
   30. STAT WALL
   ════════════════════════════════════════════════════════════ */
.dmg-stat-wall { padding:6rem 2rem; background:var(--dmg-dark,#0f172a); }
.dmg-sw__grid  { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:2rem; max-width:1200px; margin:0 auto; }
.dmg-sw__item  { background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.1); border-radius:1.25rem; padding:2.5rem 2rem; text-align:center; transition:background .3s, border-color .3s; }
.dmg-sw__item:hover { background:rgba(255,255,255,.07); border-color:rgba(245,158,11,.4); }
.dmg-sw__num   { font-size:clamp(3rem,7vw,5.5rem); font-weight:900; line-height:1; font-variant-numeric:tabular-nums; margin-bottom:.5rem; color:var(--dmg-accent,#f59e0b); }
.dmg-sw__label { font-size:1.1rem; font-weight:700; color:var(--dmg-sw-text,#fff); opacity:.9; }
.dmg-sw__sub   { font-size:.8rem; color:var(--dmg-sw-text,#fff); opacity:.4; margin-top:.3rem; text-transform:uppercase; letter-spacing:.1em; }

/* ════════════════════════════════════════════════════════════
   31. CLIP WIPE
   ════════════════════════════════════════════════════════════ */
.dmg-clip-wipe { position:relative; height:100vh; overflow:hidden; }
.elementor-widget-dmgsap-clip-wipe { height:100vh; }
.dmg-cw__back  { position:absolute; inset:0; background-size:cover; background-position:center; }
.dmg-cw__back::before { content:''; position:absolute; inset:0; background:radial-gradient(ellipse at 30% 50%, rgba(245,158,11,.18) 0%, transparent 65%); pointer-events:none; }
.dmg-cw__front { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; background-size:cover; background-position:center; }
.dmg-cw__front::before { content:''; position:absolute; inset:0; background:radial-gradient(ellipse at 70% 50%, rgba(109,40,217,.25) 0%, transparent 65%); pointer-events:none; }
.dmg-cw__content { position:relative; z-index:2; text-align:center; padding:3rem 2rem; max-width:900px; }
.dmg-cw__title    { font-size:clamp(2rem,5vw,4.5rem); font-weight:900; color:#fff; margin:0 0 1.5rem; line-height:1.1; }
.dmg-cw__subtitle { font-size:clamp(1rem,2vw,1.3rem); color:rgba(255,255,255,.7); max-width:55ch; margin:0 auto 2rem; }

/* ════════════════════════════════════════════════════════════
   32. PANEL STACK
   ════════════════════════════════════════════════════════════ */
.dmg-panel-stack { position:relative; }
.dmg-ps__panel { position:sticky; top:0; height:100vh; overflow:hidden; display:grid; grid-template-columns:55% 45%; transform-origin:top center; }
.dmg-ps__img   { background-size:cover; background-position:center; }
.dmg-ps__inner { padding:5rem 3.5rem; display:flex; flex-direction:column; justify-content:center; gap:1.5rem; color:var(--dmg-ps-text,#fff); overflow-y:auto; }
.dmg-ps__tag   { font-size:.75rem; font-weight:700; letter-spacing:.25em; text-transform:uppercase; color:var(--dmg-accent,#f59e0b); }
.dmg-ps__title { font-size:clamp(2rem,4vw,3.5rem); font-weight:900; margin:0; line-height:1.1; color:var(--dmg-ps-text,#fff); }
.dmg-ps__desc  { font-size:1.05rem; line-height:1.8; opacity:.7; margin:0; color:var(--dmg-ps-text,#fff); }
@media(max-width:768px) { .dmg-ps__panel { grid-template-columns:1fr; height:auto; min-height:80vh; } .dmg-ps__img { height:40vw; } .dmg-ps__inner { padding:3rem 2rem; } }

/* ════════════════════════════════════════════════════════════
   33. GRID CASCADE
   ════════════════════════════════════════════════════════════ */
.dmg-grid-cascade { padding:5rem 2rem; background:var(--dmg-dark,#0f172a); }
.dmg-gc__grid  { display:grid; grid-template-columns:repeat(var(--dmg-gc-cols,3),1fr); gap:1.5rem; max-width:1400px; margin:0 auto; }
.dmg-gc__item  { position:relative; border-radius:1rem; overflow:hidden; aspect-ratio:4/3; cursor:pointer; text-decoration:none; display:block; background:#1e293b; }
.dmg-gc__img   { position:absolute; inset:0; background-size:cover; background-position:center; transition:transform .5s ease; }
.dmg-gc__item:hover .dmg-gc__img { transform:scale(1.06); }
.dmg-gc__overlay { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,.75) 0%,transparent 60%); display:flex; flex-direction:column; justify-content:flex-end; padding:1.5rem; gap:.4rem; opacity:0; transition:opacity .3s; }
.dmg-gc__item:hover .dmg-gc__overlay { opacity:1; }
.dmg-gc__tag   { font-size:.7rem; font-weight:700; letter-spacing:.15em; text-transform:uppercase; color:var(--dmg-accent,#f59e0b); }
.dmg-gc__title { font-size:1.1rem; font-weight:800; color:#fff; }
@media(max-width:900px) { .dmg-gc__grid { grid-template-columns:repeat(2,1fr); } }
@media(max-width:600px) { .dmg-gc__grid { grid-template-columns:1fr; } }
