/* Home V29 (préversion, 2026-10-09) — style « lumière » des maquettes du propriétaire : plans photo ensoleillés plein
   cadre, Cerebri Sans Light pour les titres, accent violet, lecteur du film dédié dans la hero, méga-menu.
   Plan : docs/home-v29/DESIGN.md. Généré par scripts/generate-neoo-home-v29.mjs, piloté par neoo-home-v29.js. */

@font-face { font-family: "Cerebri Sans"; font-style: normal; font-weight: 300; font-display: swap; src: url("/assets/neoo-native/Fonts/Cerebri-Sans/CerebriSans-Light.woff2") format("woff2"); }
@font-face { font-family: "Cerebri Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url("/assets/neoo-native/Fonts/Cerebri-Sans/CerebriSans-Book.woff2") format("woff2"); }
@font-face { font-family: "Cerebri Sans"; font-style: normal; font-weight: 500; font-display: swap; src: url("/assets/neoo-native/Fonts/Cerebri-Sans/CerebriSans-Medium.woff2") format("woff2"); }
@font-face { font-family: "Cerebri Sans"; font-style: normal; font-weight: 700; font-display: swap; src: url("/assets/neoo-native/Fonts/Cerebri-Sans/CerebriSans-Bold.woff2") format("woff2"); }

:root {
  --v29-ink: #15172e;
  --v29-muted: #4a4e69;
  --v29-soft: #6b6f86;
  --v29-cream: #fbf7f1;
  --v29-paper: #fffdf9;
  --v29-accent: #4b2ef2;
  --v29-accent-deep: #3a1fd6;
  --v29-green: #22a565;
  --v29-line: rgba(21, 23, 46, .12);
  --v29-glass: rgba(255, 253, 249, .86);
  --v29-shadow: 0 30px 80px -30px rgba(60, 40, 10, .35), 0 8px 24px -12px rgba(30, 25, 40, .18);
  --v29-ease: cubic-bezier(.2, .8, .2, 1);
  --v29-ease-io: cubic-bezier(.7, 0, .2, 1);
  --v29-gutter: clamp(20px, 5.2vw, 80px);
  --v29-header-h: 96px;
  --v29-font: "Cerebri Sans", "Segoe UI", system-ui, -apple-system, sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body.v29-page { margin: 0; background: var(--v29-cream); color: var(--v29-ink); font-family: var(--v29-font); font-weight: 400; font-size: 18px; line-height: 1.5; -webkit-font-smoothing: antialiased; overflow-x: clip; }
.v29-page img { display: block; max-width: 100%; height: auto; }
.v29-page a { color: inherit; }
.v29-page button { font: inherit; color: inherit; }
.v29-page :focus-visible { outline: 2px solid var(--v29-accent); outline-offset: 3px; border-radius: 4px; }
.v29-page main:focus { outline: none; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.v29-skip { position: fixed; left: 16px; top: -60px; z-index: 100; padding: 10px 16px; background: var(--v29-ink); color: #fff !important; border-radius: 8px; text-decoration: none; transition: top .2s; }
.v29-skip:focus { top: 12px; }
.v29-shell { width: min(100% - 2 * var(--v29-gutter), 1376px); margin-inline: auto; }
.v29-i { width: 1em; height: 1em; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; flex: none; }
.v29-i--fill, .v29-i .v29-fill { fill: currentColor; stroke: none; }

/* ---------- Typographie ---------- */
.v29-display { margin: 0; font-weight: 300; letter-spacing: -.052em; line-height: 1.06; color: var(--v29-ink); text-wrap: balance; }
.v29-line { display: block; overflow: hidden; padding-bottom: .1em; margin-bottom: -.1em; }
.v29-line > span { display: inline-block; }
.v29-micro { margin: 0; font-size: 13px; font-weight: 400; letter-spacing: .18em; text-transform: uppercase; color: var(--v29-muted); }
.v29-kicker { margin: 0 0 22px; font-size: 14px; letter-spacing: .16em; text-transform: uppercase; color: var(--v29-muted); }
.v29-kicker span { color: var(--v29-accent); font-weight: 700; }
.v29-link { display: inline-flex; align-items: center; gap: 10px; padding-bottom: 6px; color: var(--v29-accent) !important; font-size: 20px; text-decoration: none; background: linear-gradient(currentColor, currentColor) 0 100% / 100% 1.5px no-repeat; transition: background-size .45s var(--v29-ease), gap .3s var(--v29-ease); }
.v29-link .v29-i--arrow { font-size: 1.05em; transition: transform .35s var(--v29-ease); }
.v29-link:hover { gap: 14px; }
.v29-link:hover .v29-i--arrow { transform: translateX(3px); }
.v29-link--sm { font-size: 17px; padding-bottom: 4px; background-size: 0 1.5px; }
.v29-link--sm:hover { background-size: 100% 1.5px; }
.v29-btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 52px; padding: 0 26px; border-radius: 8px; font-size: 18px; font-weight: 400; text-decoration: none; cursor: pointer; transition: background-color .25s, color .25s, border-color .25s, transform .25s var(--v29-ease), box-shadow .25s; }
.v29-btn--outline { border: 1.5px solid var(--v29-accent); background: rgba(255, 253, 249, .55); color: var(--v29-ink) !important; }
.v29-btn--outline:hover { background: var(--v29-accent); color: #fff !important; box-shadow: 0 12px 30px -12px rgba(75, 46, 242, .6); transform: translateY(-1px); }
.v29-btn--solid { border: 0; background: var(--v29-accent); color: #fff !important; }
.v29-btn--solid:hover { background: var(--v29-accent-deep); box-shadow: 0 12px 30px -12px rgba(75, 46, 242, .6); transform: translateY(-1px); }
.v29-btn--lg { min-height: 70px; padding: 0 34px; font-size: 24px; color: var(--v29-accent) !important; }
.v29-btn .v29-i--arrow { transition: transform .3s var(--v29-ease); }
.v29-btn:hover .v29-i--arrow { transform: translateX(3px); }

/* ---------- En-tête et navigation (maquette 6) ---------- */
.v29-header { position: fixed; inset: 0 0 auto; z-index: 50; transition: transform .5s var(--v29-ease), opacity .4s, background-color .35s, box-shadow .35s, backdrop-filter .35s; }
.v29-header::before { content: ""; position: absolute; inset: 0; background: linear-gradient(rgba(251, 247, 241, .7), rgba(251, 247, 241, 0)); opacity: 1; pointer-events: none; transition: opacity .35s; }
.v29-header.is-scrolled { background: rgba(251, 247, 241, .82); -webkit-backdrop-filter: blur(18px) saturate(1.3); backdrop-filter: blur(18px) saturate(1.3); box-shadow: 0 1px 0 var(--v29-line); }
.v29-header.is-scrolled::before { opacity: 0; }
.v29-header.is-hidden:not(:focus-within) { transform: translateY(-105%); }
.v29-header.is-cinema { opacity: 0; transform: translateY(-40%); pointer-events: none; }
.v29-header__inner { position: relative; display: flex; align-items: center; gap: 28px; width: min(100% - 2 * var(--v29-gutter), 1388px); height: var(--v29-header-h); margin-inline: auto; transition: height .35s var(--v29-ease); }
.v29-header.is-scrolled .v29-header__inner { height: 74px; }
.v29-brand { display: inline-flex; color: var(--v29-ink) !important; font-size: 40px; font-weight: 700; letter-spacing: -.055em; line-height: 1; text-decoration: none; white-space: nowrap; transition: font-size .35s var(--v29-ease); }
.v29-header.is-scrolled .v29-brand { font-size: 34px; }
.v29-brand__dot { color: var(--v29-accent); }
.v29-nav { position: static; display: flex; margin-left: auto; }
.v29-nav__list { display: flex; align-items: center; gap: clamp(18px, 2.6vw, 40px); margin: 0; padding: 0; list-style: none; }
.v29-nav__item--drop { position: relative; }
.v29-nav__link, .v29-nav__trigger { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0; border: 0; background: none; color: var(--v29-ink) !important; font-size: 17px; text-decoration: none; cursor: pointer; transition: color .2s; }
.v29-nav__link:hover, .v29-nav__trigger:hover, .v29-nav__trigger[aria-expanded="true"] { color: var(--v29-accent) !important; }
.v29-nav__trigger .v29-i--chev { font-size: 15px; transition: transform .3s var(--v29-ease); }
.v29-nav__trigger[aria-expanded="true"] .v29-i--chev { transform: rotate(180deg); }
.v29-nav__indicator { position: absolute; left: 0; top: calc(50% + 20px); width: var(--w, 0); height: 2px; border-radius: 2px; background: var(--v29-accent); transform: translateX(var(--x, 0)); opacity: 0; pointer-events: none; transition: transform .45s var(--v29-ease), width .45s var(--v29-ease), opacity .25s; }
.v29-nav__indicator.is-on { opacity: 1; }
.v29-header__tools { display: flex; align-items: center; gap: 26px; }
.v29-header__tools::before { content: ""; width: 1px; height: 30px; background: rgba(75, 46, 242, .35); order: -1; }
.v29-header__login { color: var(--v29-ink) !important; font-size: 17px; text-decoration: none; }
.v29-header__login:hover { color: var(--v29-accent) !important; }
.v29-header__cta { min-height: 54px; padding: 0 28px; font-size: 18px; }
.v29-burger { display: none; width: 46px; height: 46px; border: 1px solid var(--v29-line); border-radius: 10px; background: rgba(255, 253, 249, .7); font-size: 22px; place-items: center; cursor: pointer; }

/* Méga-menu Plateforme et menu Ressources */
.v29-mega, .v29-drop { position: absolute; z-index: 5; top: calc(100% - 8px); visibility: hidden; opacity: 0; transform: translateY(-10px) scale(.985); transform-origin: 50% 0; background: var(--v29-paper); border: 1px solid rgba(21, 23, 46, .08); border-radius: 6px; box-shadow: var(--v29-shadow); transition: opacity .28s var(--v29-ease), transform .38s var(--v29-ease), visibility 0s linear .38s; }
.v29-mega { left: 50%; width: min(1228px, 100vw - 48px); margin-left: calc(min(1228px, 100vw - 48px) / -2); overflow: hidden; }
.v29-drop { left: -24px; width: 330px; padding: 14px; }
.v29-nav__item.is-open > .v29-mega, .v29-nav__item.is-open > .v29-drop,
html:not(.v29-js) .v29-nav__item:hover > .v29-mega, html:not(.v29-js) .v29-nav__item:focus-within > .v29-mega,
html:not(.v29-js) .v29-nav__item:hover > .v29-drop, html:not(.v29-js) .v29-nav__item:focus-within > .v29-drop { visibility: visible; opacity: 1; transform: none; transition-delay: 0s; }
.v29-mega__grid { display: grid; grid-template-columns: repeat(3, 1fr); padding: 40px 50px 34px; }
.v29-mega__col { padding: 0 44px; border-left: 1px solid var(--v29-line); opacity: 0; transform: translateY(8px); transition: opacity .4s var(--v29-ease), transform .5s var(--v29-ease); }
.v29-mega__col:first-child { padding-left: 0; border-left: 0; }
.v29-mega__col:nth-child(2) { transition-delay: .05s; }
.v29-mega__col:nth-child(3) { transition-delay: .1s; }
.is-open .v29-mega__col, html:not(.v29-js) .v29-mega__col { opacity: 1; transform: none; }
.v29-mega__col ul, .v29-drop ul { margin: 18px 0 0; padding: 0; list-style: none; }
.v29-drop ul { margin: 0; }
.v29-mega__col li a, .v29-drop li a { display: flex; flex-direction: column; padding: 7px 0; color: var(--v29-ink) !important; font-size: 19px; line-height: 1.3; text-decoration: none; transition: color .2s, transform .25s var(--v29-ease); }
.v29-mega__col li a:hover, .v29-drop li a:hover { color: var(--v29-accent) !important; transform: translateX(3px); }
.v29-mega__col small, .v29-drop small { margin-top: 2px; color: var(--v29-soft); font-size: 15px; }
.v29-mega__col > .v29-link { margin-top: 26px; }
.v29-drop li a { padding: 10px 14px; border-radius: 6px; font-size: 17px; }
.v29-drop li a:hover { background: rgba(75, 46, 242, .06); transform: none; }
.v29-mega__foot { display: flex; align-items: center; gap: 28px; padding: 22px 50px; background: #f6f1ea; border-top: 1px solid var(--v29-line); }
.v29-mega__foot p { margin: 0 auto 0 0; font-size: 20px; font-weight: 500; }
.v29-mega__foot .v29-link--sm { background-size: 0 1.5px; }
.v29-mega__rule { width: 1px; height: 28px; background: var(--v29-line); }

/* Langue */
.v29-lang { position: relative; }
.v29-lang summary { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; font-size: 17px; cursor: pointer; list-style: none; }
.v29-lang summary::-webkit-details-marker { display: none; }
.v29-lang summary .v29-i--chev { font-size: 15px; transition: transform .3s var(--v29-ease); }
.v29-lang[open] summary .v29-i--chev { transform: rotate(180deg); }
.v29-lang ul { position: absolute; right: -12px; top: calc(100% + 6px); z-index: 6; min-width: 170px; margin: 0; padding: 8px; list-style: none; background: var(--v29-paper); border: 1px solid rgba(21, 23, 46, .08); border-radius: 8px; box-shadow: var(--v29-shadow); animation: v29-pop .25s var(--v29-ease); }
.v29-lang--up ul { top: auto; bottom: calc(100% + 6px); }
.v29-lang li a { display: block; padding: 9px 12px; border-radius: 6px; color: var(--v29-ink) !important; text-decoration: none; }
.v29-lang li a:hover { background: rgba(75, 46, 242, .07); }
.v29-lang li a[aria-current="true"] { color: var(--v29-accent) !important; }
@keyframes v29-pop { from { opacity: 0; transform: translateY(-6px); } }

/* Menu mobile */
.v29-sheet { position: fixed; inset: 74px 0 auto; height: calc(100vh - 74px); height: calc(100dvh - 74px); z-index: 40; overflow-y: auto; overscroll-behavior: contain; background: var(--v29-cream); border-top: 1px solid var(--v29-line); }
.v29-sheet:not([hidden]) { animation: v29-sheet .45s var(--v29-ease); }
@keyframes v29-sheet { from { opacity: 0; clip-path: inset(0 0 100% 0); } to { opacity: 1; clip-path: inset(0); } }
.v29-sheet__inner { display: grid; gap: 4px; width: min(100% - 40px, 640px); margin: 0 auto; padding: 18px 0 40px; }
.v29-sheet__section summary, .v29-sheet__link { display: flex; align-items: center; justify-content: space-between; min-height: 58px; border-bottom: 1px solid var(--v29-line); color: var(--v29-ink) !important; font-size: 24px; font-weight: 300; letter-spacing: -.03em; text-decoration: none; cursor: pointer; list-style: none; }
.v29-sheet__section summary::-webkit-details-marker { display: none; }
.v29-sheet__section[open] summary .v29-i--chev { transform: rotate(180deg); }
.v29-sheet__section summary .v29-i--chev { font-size: 18px; transition: transform .3s; }
.v29-sheet__group { display: grid; gap: 2px; padding: 14px 0 16px; }
.v29-sheet__group .v29-micro { margin: 6px 0 4px; }
.v29-sheet__group a { padding: 8px 0; color: var(--v29-ink) !important; font-size: 18px; text-decoration: none; }
.v29-sheet__foot { display: grid; gap: 18px; justify-items: start; padding-top: 26px; }
.v29-sheet__foot .v29-btn { width: 100%; }
.v29-sheet__langs { display: flex; gap: 8px; margin: 0; padding: 0; list-style: none; }
.v29-sheet__langs a { display: inline-flex; padding: 8px 14px; border: 1px solid var(--v29-line); border-radius: 999px; color: var(--v29-ink) !important; font-size: 15px; text-decoration: none; }
.v29-sheet__langs a[aria-current="true"] { border-color: var(--v29-accent); color: var(--v29-accent) !important; }

/* ---------- Mouvement d’entrée (uniquement avec JavaScript) ---------- */
.v29-js .v29-line > span { transform: translateY(108%); transition: transform 1.1s var(--v29-ease) calc(var(--i, 0) * .12s + .05s); }
.v29-js .v29-reveal, .v29-js .v29-rise { opacity: 0; transform: translateY(18px); transition: opacity .9s var(--v29-ease) var(--d, 0s), transform 1s var(--v29-ease) var(--d, 0s); }
.v29-js .is-in .v29-line > span, .v29-js .is-in.v29-line > span { transform: none; }
.v29-js .is-in .v29-reveal, .v29-js .is-in .v29-rise, .v29-js .is-in.v29-reveal { opacity: 1; transform: none; }

/* ---------- Hero et lecteur du film (maquette 1) ---------- */
.v29-hero { position: relative; display: flex; flex-direction: column; min-height: max(100svh, 680px); overflow: hidden; isolation: isolate; background: #efe6d8; }
.v29-hero > .v29-plate { position: absolute; inset: -4% 0; z-index: -3; transform: translate3d(0, calc(var(--p, 0) * 5%), 0); }
.v29-hero > .v29-plate img { width: 100%; height: 100%; object-fit: cover; object-position: 62% 50%; }
.v29-js .v29-hero > .v29-plate img { animation: v29-settle 2.8s var(--v29-ease) both; }
@keyframes v29-settle { from { transform: scale(1.09); filter: brightness(1.12) saturate(.9); } }
.v29-hero__wash { position: absolute; inset: 0; z-index: -2; background: linear-gradient(96deg, rgba(251, 247, 241, .9) 0%, rgba(251, 247, 241, .74) 26%, rgba(251, 247, 241, .2) 50%, rgba(251, 247, 241, 0) 62%), linear-gradient(180deg, rgba(251, 247, 241, .55) 0, rgba(251, 247, 241, 0) 22%), linear-gradient(0deg, rgba(42, 28, 12, .42) 0, rgba(42, 28, 12, 0) 20%); transition: opacity .6s; }
.v29-hero__sun { position: absolute; z-index: -2; left: -10%; top: -20%; width: 70%; height: 90%; background: radial-gradient(closest-side, rgba(255, 236, 196, .75), rgba(255, 236, 196, 0)); mix-blend-mode: screen; pointer-events: none; animation: v29-sun 11s ease-in-out infinite alternate; }
@keyframes v29-sun { from { opacity: .55; transform: translate3d(0, 0, 0) scale(1); } to { opacity: .95; transform: translate3d(4%, 3%, 0) scale(1.08); } }
.v29-hero__copy { position: relative; z-index: 2; padding-top: clamp(150px, 26vh, 270px); padding-bottom: 150px; transition: opacity .6s var(--v29-ease), transform .8s var(--v29-ease); }
.v29-hero__title { max-width: 11.5em; font-size: clamp(46px, 5.4vw, 84px); }
.v29-hero__lead { margin: 26px 0 0; color: #3b3f5c; font-size: clamp(20px, 1.75vw, 27px); line-height: 1.35; }
.v29-watch { display: inline-flex; align-items: center; gap: 22px; margin-top: 54px; color: var(--v29-ink) !important; text-decoration: none; }
.v29-watch__ring { position: relative; display: grid; place-items: center; width: 76px; height: 76px; border: 1.5px solid var(--v29-ink); border-radius: 50%; background: rgba(255, 253, 249, .35); color: var(--v29-accent); font-size: 30px; transition: transform .45s var(--v29-ease), background-color .3s, border-color .3s; }
.v29-watch__ring .v29-i { margin-left: 4px; }
.v29-watch__ring::after { content: ""; position: absolute; inset: -1.5px; border: 1.5px solid var(--v29-accent); border-radius: 50%; opacity: 0; animation: v29-ripple 2.8s var(--v29-ease) 1.6s infinite; }
@keyframes v29-ripple { 0% { opacity: .7; transform: scale(1); } 70%, 100% { opacity: 0; transform: scale(1.55); } }
.v29-watch:hover .v29-watch__ring { transform: scale(1.08); background: var(--v29-accent); border-color: var(--v29-accent); color: #fff; }
.v29-watch__text { display: grid; gap: 2px; }
.v29-watch__text strong { font-size: 22px; font-weight: 400; }
.v29-watch__text small { color: var(--v29-muted); font-size: 14px; letter-spacing: .04em; }

.v29-player { position: absolute; inset: 0; z-index: 1; display: grid; place-items: center; background: #0b0c14; clip-path: circle(0 at var(--ox, 9%) var(--oy, 62%)); transition: clip-path 1s var(--v29-ease-io); }
.v29-player[hidden] { display: none; }
.v29-player__video { width: 100%; height: 100%; object-fit: contain; background: #0b0c14; }
.v29-player__video::cue { font-family: var(--v29-font); font-size: clamp(16px, 1.6vw, 26px); line-height: 1.35; color: #fff; background: rgba(11, 12, 20, .62); }
.v29-player__loading { position: absolute; left: 50%; top: 50%; margin: 0; transform: translate(-50%, -50%); color: rgba(255, 255, 255, .8); font-size: 15px; letter-spacing: .08em; }
.v29-hero.is-cinema .v29-player { clip-path: circle(150% at var(--ox, 9%) var(--oy, 62%)); }
.v29-hero.is-cinema .v29-hero__copy { opacity: 0; transform: translateY(-24px); pointer-events: none; }
.v29-hero.is-cinema .v29-hero__sun { opacity: 0; }

.v29-bar { position: absolute; inset: auto 0 0; z-index: 3; padding: 26px 0 30px; color: #fff; transition: opacity .45s, transform .45s var(--v29-ease); }
.v29-hero.is-cinema .v29-bar { background: linear-gradient(0deg, rgba(5, 6, 12, .78), rgba(5, 6, 12, 0)); padding-top: 70px; }
.v29-hero.is-cinema.is-idle .v29-bar { opacity: 0; transform: translateY(10px); }
.v29-hero.is-cinema.is-idle { cursor: none; }
.v29-bar__inner { display: flex; align-items: center; gap: 22px; }
.v29-bar__label { margin: 0; font-size: 13px; letter-spacing: .26em; text-transform: uppercase; white-space: nowrap; text-shadow: 0 1px 8px rgba(0, 0, 0, .35); }
.v29-bar__track { flex: 1; display: flex; align-items: center; min-width: 60px; }
.v29-bar__seek { width: 100%; height: 24px; margin: 0; background: transparent; cursor: pointer; -webkit-appearance: none; appearance: none; }
.v29-bar__seek::-webkit-slider-runnable-track { height: 2px; border-radius: 2px; background: linear-gradient(90deg, #fff var(--v), rgba(255, 255, 255, .45) var(--v)); }
.v29-bar__seek::-moz-range-track { height: 2px; border-radius: 2px; background: rgba(255, 255, 255, .45); }
.v29-bar__seek::-moz-range-progress { height: 2px; background: #fff; }
.v29-bar__seek::-webkit-slider-thumb { width: 13px; height: 13px; margin-top: -5.5px; border: 0; border-radius: 50%; background: #fff; box-shadow: 0 0 0 4px rgba(255, 255, 255, .18); -webkit-appearance: none; appearance: none; transition: transform .2s; }
.v29-bar__seek::-moz-range-thumb { width: 13px; height: 13px; border: 0; border-radius: 50%; background: #fff; }
.v29-bar__seek:hover::-webkit-slider-thumb { transform: scale(1.25); }
.v29-bar__time { margin: 0; font-size: 14px; font-variant-numeric: tabular-nums; white-space: nowrap; opacity: .9; }
.v29-bar__btn { position: relative; display: grid; place-items: center; width: 40px; height: 40px; padding: 0; border: 0; border-radius: 50%; background: none; color: #fff; font-size: 22px; cursor: pointer; transition: background-color .2s, transform .2s; }
.v29-bar__btn:hover { background: rgba(255, 255, 255, .14); }
.v29-bar__btn .v29-i { filter: drop-shadow(0 1px 4px rgba(0, 0, 0, .35)); }
.v29-bar__toggle .v29-i--fill:last-of-type, .v29-hero.is-playing .v29-bar__toggle .v29-i--fill:first-of-type { display: none; }
.v29-hero.is-playing .v29-bar__toggle .v29-i--fill:last-of-type { display: block; }
.v29-bar__sound .v29-i--muted, .v29-bar__sound[aria-pressed="true"] .v29-i--sound { display: none; }
.v29-bar__sound[aria-pressed="true"] .v29-i--muted { display: block; }
.v29-bar__full .v29-i--exit, .v29-hero.is-fullscreen .v29-bar__full .v29-i--full { display: none; }
.v29-hero.is-fullscreen .v29-bar__full .v29-i--exit { display: block; }
.v29-bar__cc[aria-pressed="false"] { opacity: .55; }
.v29-js .v29-hero:not(.has-started) .v29-bar__toggle, .v29-js .v29-hero:not(.has-started) .v29-bar__time, .v29-js .v29-hero:not(.has-started) .v29-bar__cc { display: none; }
html:not(.v29-js) .v29-bar { display: none; }
.v29-bar__close[hidden] { display: none; }
.v29-hero.is-fullscreen { min-height: 100vh; }

/* ---------- Scènes photo (01 activité, 02 Forge) ---------- */
.v29-scene { position: relative; display: flex; flex-direction: column; min-height: max(100svh, 760px); overflow: hidden; isolation: isolate; }
.v29-scene__media { position: absolute; inset: 0; z-index: -2; overflow: hidden; container-type: size; }
.v29-stage { --sw: max(100cqw, 150cqh); position: absolute; left: calc((100cqw - var(--sw)) * var(--fx, .5)); top: calc((100cqh - var(--sw) / 1.5) * var(--fy, .5)); width: var(--sw); aspect-ratio: 3 / 2; container-type: inline-size; transform: translate3d(0, calc(var(--p, 0) * -34px), 0); will-change: transform; }
.v29-stage > .v29-plate, .v29-stage > .v29-plate img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.v29-activity { --fx: .62; --fy: .62; }
.v29-forge { --fx: .3; --fy: 0; }
.v29-forge .v29-scene__copy { padding-top: clamp(84px, 9.5vh, 120px); }
.v29-scene::before { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.v29-activity::before { background: linear-gradient(100deg, rgba(251, 247, 241, .92) 0%, rgba(251, 247, 241, .72) 34%, rgba(251, 247, 241, 0) 56%), linear-gradient(0deg, rgba(30, 22, 14, .45) 0, rgba(30, 22, 14, 0) 18%); }
.v29-forge::before { background: linear-gradient(-100deg, rgba(251, 247, 241, .92) 0%, rgba(251, 247, 241, .7) 32%, rgba(251, 247, 241, 0) 52%), linear-gradient(0deg, rgba(30, 22, 14, .36) 0, rgba(30, 22, 14, 0) 16%); }
.v29-scene__copy { position: relative; padding-top: clamp(110px, 13vh, 150px); }
.v29-scene__copy--left > * { max-width: 640px; }
.v29-scene__copy--left .v29-scene__text { max-width: 30ch; }
.v29-scene__copy--right { display: flex; flex-direction: column; align-items: flex-end; }
.v29-scene__copy--right > * { width: min(100%, 600px); }
.v29-scene__title { font-size: clamp(40px, 4.1vw, 66px); }
.v29-scene__text { margin: 24px 0 26px; color: #3b3f5c; font-size: clamp(19px, 1.55vw, 25px); line-height: 1.42; }
.v29-scene__foot { position: relative; margin-top: auto; padding: 40px 0 34px; }
.v29-scene__foot--right { display: flex; justify-content: flex-end; }
.v29-modules { display: flex; flex-wrap: wrap; gap: 0; margin: 0; padding: 0; list-style: none; color: #fff; font-size: 15px; letter-spacing: .06em; text-shadow: 0 1px 10px rgba(0, 0, 0, .45); }
.v29-modules li { transition: color .4s, opacity .4s; }
.v29-modules li + li::before { content: "·"; margin: 0 12px; opacity: .75; }
.v29-modules.is-cycling li { opacity: .62; }
.v29-modules.is-cycling li.is-on { opacity: 1; }
.v29-caption { margin: 0; color: #fff; font-size: 16px; letter-spacing: .08em; text-shadow: 0 1px 10px rgba(0, 0, 0, .45); }
.v29-forge-lockup { margin: 0 0 18px; color: var(--v29-accent); font-size: clamp(36px, 3vw, 48px); font-weight: 400; letter-spacing: -.03em; line-height: 1; }
.v29-forge-lockup b { color: var(--v29-ink); font-weight: 700; letter-spacing: -.055em; }
.v29-forge-lockup b span, .v29-forge-mark b span, .v29-app__brand span { color: var(--v29-accent); }
.v29-forge-lockup--sm { margin: 0; font-size: 40px; }

/* Interfaces projetées sur les écrans des portables */
.v29-screen { --k: tan(atan2(100cqw, 1536px)); position: absolute; left: 0; top: 0; transform-origin: 0 0; transform: scale(var(--k)) var(--v29-matrix); overflow: hidden; border-radius: 6px; background: #fbfbfd; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .04); color: var(--v29-ink); }
.v29-app { position: absolute; inset: 0; display: flex; flex-direction: column; font-family: var(--v29-font); }
.v29-app--record { padding: 42px 52px 0; }
.v29-app__top { display: flex; align-items: center; justify-content: space-between; }
.v29-app__brand { font-size: 34px; font-weight: 700; letter-spacing: -.055em; }
.v29-app__tabs { display: flex; gap: 46px; font-size: 18px; color: #5f6377; }
.v29-app__tabs .is-active { color: var(--v29-ink); box-shadow: 0 9px 0 -7px var(--v29-accent); }
.v29-app__client { margin: 52px 0 0; font-size: 50px; font-weight: 400; letter-spacing: -.03em; }
.v29-steps { position: relative; display: grid; grid-template-columns: repeat(3, 1fr); margin: 44px 0 0; padding: 0; list-style: none; }
.v29-steps__rail { position: absolute; left: 30px; right: 60px; top: 15px; height: 2px; background: #d9dbe6; }
.v29-steps__rail span { position: absolute; inset: 0 auto 0 0; width: var(--fill, 100%); background: var(--v29-accent); transition: width 1s var(--v29-ease); }
.v29-steps__item { position: relative; display: grid; justify-items: start; gap: 10px; font-size: 22px; }
.v29-steps__item--1 { justify-items: center; text-align: center; }
.v29-steps__item--2 { justify-items: end; text-align: right; }
.v29-steps__dot { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: #fbfbfd; box-shadow: inset 0 0 0 2px #c9ccd8; color: #fff; font-size: 20px; transition: background-color .4s, box-shadow .4s, transform .5s var(--v29-ease); }
.v29-steps__item--0 .v29-steps__dot { background: var(--v29-green); box-shadow: none; }
.v29-steps__item--1 .v29-steps__dot { box-shadow: inset 0 0 0 2.5px #8d91a6; }
.v29-steps__item--2 .v29-steps__dot { background: var(--v29-accent); box-shadow: 0 0 0 7px rgba(75, 46, 242, .14); }
.v29-steps__meta { margin-top: -6px; color: #6b6f86; font-size: 18px; }
.v29-app__foot { display: flex; align-items: center; gap: 16px; margin: auto -52px 0; padding: 26px 52px 30px; border-top: 1px solid #e6e7ee; color: #5f6377; font-size: 20px; }
.v29-app__foot .v29-i { font-size: 30px; }
[data-step="0"] .v29-steps__rail span { --fill: 0%; }
[data-step="1"] .v29-steps__rail span { --fill: 50%; }
[data-step="0"] .v29-steps__dot, [data-step="1"] .v29-steps__item--1 .v29-steps__dot, [data-step="1"] .v29-steps__item--2 .v29-steps__dot, [data-step="2"] .v29-steps__item--2 .v29-steps__dot { background: #fbfbfd; box-shadow: inset 0 0 0 2px #c9ccd8; transform: scale(.9); }
[data-step="0"] .v29-steps__dot .v29-i { opacity: 0; }
[data-step="0"] .v29-steps__meta, [data-step="1"] .v29-steps__meta { opacity: 0; }
[data-step="0"] .v29-app__foot, [data-step="1"] .v29-app__foot, [data-step="2"] .v29-app__foot { opacity: .35; }
.v29-steps__meta, .v29-app__foot, .v29-steps__dot .v29-i { transition: opacity .5s; }

.v29-app--forge { padding: 30px 40px 0; }
.v29-forge-mark { font-size: 28px; color: var(--v29-accent); letter-spacing: -.02em; }
.v29-forge-mark b { color: var(--v29-ink); font-weight: 700; letter-spacing: -.055em; }
.v29-app__dots { color: #8d91a6; font-size: 26px; letter-spacing: .1em; }
.v29-app__head { display: flex; align-items: center; justify-content: space-between; margin: 34px 0 30px; }
.v29-app__title { margin: 0; font-size: 38px; letter-spacing: -.03em; }
.v29-app__add { display: inline-flex; align-items: center; gap: 8px; padding: 12px 18px; border-radius: 8px; background: var(--v29-accent); color: #fff; font-size: 17px; }
.v29-app__body { display: grid; grid-template-columns: 190px 1fr; gap: 22px; }
.v29-app__nav { margin: 0; padding: 0; list-style: none; display: grid; gap: 6px; align-content: start; }
.v29-app__nav li { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 8px; color: #5f6377; font-size: 18px; }
.v29-app__nav li .v29-i { font-size: 22px; }
.v29-app__nav li.is-active { background: #efedff; color: var(--v29-accent); }
.v29-table { border: 1px solid #e6e7ee; border-radius: 10px; background: #fff; }
.v29-table__head { display: grid; grid-template-columns: 1.4fr 1fr .8fr 36px; margin: 0; padding: 16px 22px; border-bottom: 1px solid #e6e7ee; color: #6b6f86; font-size: 16px; }
.v29-table ul { margin: 0; padding: 0; list-style: none; }
.v29-table__row { display: grid; grid-template-columns: 1.4fr 1fr .8fr 36px; align-items: center; padding: 16px 22px; border-bottom: 1px solid #eef0f4; font-size: 17px; transition: opacity .35s var(--v29-ease) calc(var(--i) * .09s), transform .4s var(--v29-ease) calc(var(--i) * .09s); }
.v29-table__client { display: grid; }
.v29-table__client strong { font-weight: 500; font-size: 19px; }
.v29-table__client small { color: #6b6f86; font-size: 15px; }
.v29-table__tech { display: flex; align-items: center; gap: 10px; }
.v29-avatar { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: #e9e4dc; color: #6b5a44; font-size: 13px; font-weight: 700; }
.v29-pill { justify-self: start; padding: 7px 14px; border-radius: 999px; font-size: 15px; transition: transform .35s var(--v29-ease) calc(var(--i, 0) * .09s + .18s); }
.v29-pill--ok { background: #e3f6ea; color: #17804a; }
.v29-pill--run { background: #e8ebff; color: #3a1fd6; }
.v29-pill--todo { background: #fff2dc; color: #93600a; }
.v29-table__more { color: #8d91a6; }
.v29-connector { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; }
.v29-connector path { fill: none; stroke: var(--v29-accent); stroke-width: 2.4; stroke-dasharray: 1; stroke-dashoffset: 0; transition: stroke-dashoffset .5s var(--v29-ease); }
.v29-connector circle { fill: var(--v29-accent); transition: opacity .2s .4s; }
.v29-prompt { display: flex; align-items: center; gap: 18px; margin: 0; padding: 14px 14px 14px 22px; border-radius: 6px; background: rgba(255, 255, 255, .94); box-shadow: 0 18px 40px -18px rgba(60, 40, 10, .45); color: var(--v29-ink); }
.v29-prompt--forge { position: absolute; left: 25.6%; top: 33.3%; width: max(300px, 26.4cqw); font-size: max(13px, 1.12cqw); }
.v29-prompt__send { display: grid; place-items: center; flex: none; width: 2.4em; height: 2.4em; margin-left: auto; border-radius: 50%; background: var(--v29-accent); color: #fff; font-size: 1.1em; transition: transform .3s var(--v29-ease), box-shadow .3s; }
.v29-prompt.is-sent .v29-prompt__send { animation: v29-send .6s var(--v29-ease); }
@keyframes v29-send { 40% { transform: scale(.82); box-shadow: 0 0 0 10px rgba(75, 46, 242, .18); } }
.v29-typed { display: inline; }
.v29-typed__caret { display: none; width: 1.5px; height: 1.1em; margin-left: 2px; vertical-align: -.15em; background: var(--v29-accent); }
.is-typing .v29-typed__caret { display: inline-block; animation: v29-caret .8s steps(1) infinite; }
@keyframes v29-caret { 50% { opacity: 0; } }
/* États de la séquence Forge (data-step posé par le pilote ; sans attribut : état final) */
[data-step="0"] .v29-prompt--forge, [data-step="0"] .v29-connector, [data-step="0"] .v29-app--forge > *, [data-step="1"] .v29-app--forge > *, [data-step="2"] .v29-app--forge > * { opacity: 0; }
[data-step="0"] .v29-prompt--forge { transform: translateY(14px) scale(.96); }
[data-step="0"] .v29-connector path, [data-step="1"] .v29-connector path { stroke-dashoffset: 1; }
[data-step="0"] .v29-connector circle, [data-step="1"] .v29-connector circle { opacity: 0; }
.v29-prompt--forge, .v29-app--forge > * { transition: opacity .4s var(--v29-ease), transform .4s var(--v29-ease); }
.v29-app--forge > :nth-child(2) { transition-delay: .05s; }
.v29-app--forge > :nth-child(3) { transition-delay: .1s; }
[data-step="0"] .v29-table__row, [data-step="1"] .v29-table__row, [data-step="2"] .v29-table__row, [data-step="3"] .v29-table__row { opacity: 0; transform: translateX(-14px); }
[data-step="0"] .v29-pill, [data-step="1"] .v29-pill, [data-step="2"] .v29-pill, [data-step="3"] .v29-pill { transform: scale(.4); }

/* ---------- Site web (maquette 4) ---------- */
.v29-site { position: relative; overflow: hidden; isolation: isolate; padding: clamp(110px, 14vh, 150px) 0 56px; }
.v29-plate--soft { position: absolute; inset: 0; z-index: -2; }
.v29-plate--soft img { width: 100%; height: 100%; object-fit: cover; }
.v29-site > .v29-plate--soft { transform: translate3d(0, calc(var(--p, 0) * 3%), 0) scale(1.06); }
.v29-site__head { width: min(100%, 760px); margin: 0 auto; }
.v29-site__title { font-size: clamp(42px, 4.9vw, 78px); }
.v29-site__title .v29-line { display: inline-block; }
.v29-dot { color: var(--v29-accent); }
.v29-site__sub { margin: 14px 0 34px; color: #3b3f5c; font-size: clamp(20px, 1.6vw, 26px); }
.v29-prompt--site { padding: 16px 16px 16px 26px; font-size: 19px; }
.v29-site__demo { position: relative; display: grid; grid-template-columns: minmax(0, 280px) minmax(0, 1fr) 180px; align-items: start; gap: clamp(30px, 6vw, 110px) clamp(24px, 2.6vw, 34px); margin-top: 48px; }
.v29-versions { display: grid; gap: 36px; margin: 32px 0 0; padding: 0; list-style: none; }
.v29-version { display: grid; gap: 10px; transition: opacity .35s var(--v29-ease), transform .4s var(--v29-ease); }
.v29-version--2 { transition-delay: .07s; }
.v29-version__card { position: relative; display: block; padding: 8px; border-radius: 4px; background: #fffdf9; box-shadow: 0 16px 34px -20px rgba(60, 40, 10, .5); transition: box-shadow .4s, transform .4s var(--v29-ease); }
.v29-version--2 .v29-version__card { box-shadow: 0 0 0 1.5px var(--v29-accent), 0 18px 40px -20px rgba(75, 46, 242, .5); }
.v29-version__check { position: absolute; right: -11px; top: -11px; display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--v29-accent); color: #fff; font-size: 16px; transition: transform .3s var(--v29-ease); }
.v29-version__label { color: #3b3f5c; font-size: 15px; }
.v29-site__link-line { position: absolute; left: calc(min(280px, 100%) + 0px); top: 220px; width: clamp(30px, 6vw, 110px); height: 90px; overflow: visible; pointer-events: none; }
.v29-site__link-line path { fill: none; stroke: var(--v29-accent); stroke-width: 1.6; vector-effect: non-scaling-stroke; stroke-dasharray: 1; transition: stroke-dashoffset .4s var(--v29-ease); }
.v29-browser { position: relative; overflow: hidden; border-radius: 6px; background: #fdfbf7; box-shadow: var(--v29-shadow); transition: opacity .45s var(--v29-ease), transform .5s var(--v29-ease); }
.v29-browser__bar { display: flex; gap: 7px; padding: 12px 16px; background: #f4efe7; }
.v29-browser__bar span { width: 9px; height: 9px; border-radius: 50%; background: #d6cfc4; }
.v29-browser__bar span:first-child { background: #8f3045; }
/* Site de démonstration : The Boiler Whisperer, le site créé dans le film (remotion/src/website/boiler.tsx). Mise en page
   à l'échelle du conteneur (cqi, maquette 1440 px pour le navigateur, 390 px pour le téléphone). */
.v29-bw { --bw-navy: #172333; --bw-rust: #b5432f; --bw-coral: #f4735a; container-type: inline-size; position: relative; overflow: hidden; background: #f7f6f3; color: #fff; font-family: var(--v29-font); line-height: 1.3; }
.v29-bw p { margin: 0; }
.v29-bw__logo { display: flex; align-items: center; gap: .9cqi; margin-right: auto; }
.v29-bw__mark { flex: none; width: 3.2cqi; height: 3.2cqi; }
.v29-bw__mark rect { fill: #b5432f; }
.v29-bw__mark path { fill: none; stroke: #fff; stroke-width: 3.2; stroke-linecap: round; }
.v29-bw__logo b { font-size: 1.3cqi; font-weight: 700; line-height: .98; letter-spacing: -.04em; text-transform: uppercase; }
.v29-bw__arrow { flex: none; width: 1.1em; height: 1.1em; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.v29-bw__hero { position: relative; aspect-ratio: 1440 / 830; overflow: hidden; background: var(--bw-navy); }
.v29-bw__hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(23, 35, 51, .94) 0%, rgba(23, 35, 51, .8) 36%, rgba(23, 35, 51, .18) 62%, rgba(23, 35, 51, .04) 100%), linear-gradient(180deg, rgba(23, 35, 51, .45) 0%, rgba(23, 35, 51, 0) 22%, rgba(23, 35, 51, 0) 74%, rgba(23, 35, 51, .7) 100%); }
.v29-bw__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 70% 40%; transition: opacity .6s var(--v29-ease), filter .8s var(--v29-ease), transform 1s var(--v29-ease); }
.v29-bw__nav, .v29-bw__intro, .v29-bw__tag { position: absolute; z-index: 1; transition: opacity .45s var(--v29-ease), transform .5s var(--v29-ease); }
.v29-bw__nav { left: 5.5cqi; right: 5.5cqi; top: 0; display: flex; align-items: center; gap: 2.1cqi; height: 7cqi; border-bottom: 1px solid rgba(255, 255, 255, .18); font-size: 1.25cqi; font-weight: 500; transition-delay: .15s; }
.v29-bw__links { display: flex; gap: 2.1cqi; white-space: nowrap; }
.v29-bw__lang { display: flex; padding: .2cqi; border: 1px solid rgba(255, 255, 255, .35); font-size: 1cqi; }
.v29-bw__lang span { padding: .35cqi .6cqi; color: rgba(255, 255, 255, .75); }
.v29-bw__lang .is-on { background: #fff; color: var(--bw-navy); }
.v29-bw__btn { display: flex; align-items: center; gap: 2cqi; height: 3.6cqi; padding: 0 1.5cqi; background: var(--bw-rust); white-space: nowrap; }
.v29-bw__burger { display: none; }
.v29-bw__intro { left: 5.5cqi; top: 14cqi; width: 62cqi; transition-delay: .28s; }
.v29-bw__eye, .v29-bw__tag { font-size: 1.05cqi; font-weight: 500; letter-spacing: .2em; text-transform: uppercase; }
.v29-bw__title { display: grid; margin-top: 2cqi !important; font-size: 5.8cqi; font-weight: 500; line-height: .98; letter-spacing: -.055em; }
.v29-bw__title em { color: var(--bw-coral); font-style: normal; }
.v29-bw__title > * { white-space: nowrap; }
.v29-bw--phone .v29-bw__title > * { white-space: normal; }
.v29-bw__lead { width: 40cqi; margin-top: 2.4cqi !important; color: rgba(255, 255, 255, .86); font-size: 1.55cqi; line-height: 1.5; }
.v29-bw__ctas { display: flex; align-items: center; gap: 2.4cqi; margin-top: 3cqi !important; font-size: 1.25cqi; font-weight: 500; white-space: nowrap; }
.v29-bw__cta { display: flex; align-items: center; gap: 3.2cqi; height: 4cqi; padding: 0 1.7cqi; background: var(--bw-rust); }
.v29-bw__ghost { display: flex; align-items: center; gap: 1.5cqi; padding-bottom: .8cqi; border-bottom: 1.5px solid rgba(255, 255, 255, .8); }
.v29-bw__tag { left: 5.5cqi; right: 5.5cqi; bottom: 0; display: flex; justify-content: space-between; gap: 2cqi; padding: 1.6cqi 0 2.4cqi; border-top: 1px solid rgba(255, 255, 255, .18); transition-delay: .4s; }
.v29-bw__strip { display: grid; grid-template-columns: repeat(3, 1fr); margin: 0; padding: 0 5.5cqi; list-style: none; background: #fff; color: var(--bw-navy); transition: opacity .45s var(--v29-ease) .5s, transform .5s var(--v29-ease) .5s; }
.v29-bw__strip li { display: grid; align-content: start; gap: .6cqi; padding: 2.4cqi 2.6cqi 2.6cqi; border-left: 1px solid #eceae6; }
.v29-bw__strip li:first-child { padding-left: 0; border-left: 0; }
.v29-bw__strip small { color: var(--bw-rust); font-size: 1cqi; font-weight: 500; letter-spacing: .2em; text-transform: uppercase; }
.v29-bw__strip strong { font-size: 1.9cqi; font-weight: 500; letter-spacing: -.03em; }
.v29-bw__strip span { color: #6b7280; font-size: 1.3cqi; }
.v29-phone { position: relative; margin-top: 40px; overflow: hidden; border: 7px solid #fdfbf7; border-radius: 22px; background: #fdfbf7; box-shadow: var(--v29-shadow); transition: opacity .45s var(--v29-ease), transform .5s var(--v29-ease); }
.v29-phone .v29-bw { border-radius: 15px; }
.v29-bw--phone .v29-bw__hero { aspect-ratio: 390 / 660; }
.v29-bw--phone .v29-bw__hero::after { background: linear-gradient(180deg, rgba(23, 35, 51, .55) 0%, rgba(23, 35, 51, .62) 50%, rgba(23, 35, 51, .94) 100%); }
.v29-bw--phone .v29-bw__img { object-position: 50% 0; }
.v29-bw--phone .v29-bw__nav { left: 4.6cqi; right: 4.6cqi; height: 21cqi; gap: 2.6cqi; }
.v29-bw--phone .v29-bw__mark { width: 9.8cqi; height: 9.8cqi; }
.v29-bw--phone .v29-bw__logo { gap: 2.4cqi; }
.v29-bw--phone .v29-bw__logo b { font-size: 3.7cqi; }
.v29-bw--phone .v29-bw__links, .v29-bw--phone .v29-bw__btn { display: none; }
.v29-bw--phone .v29-bw__lang { padding: .6cqi; font-size: 3.2cqi; }
.v29-bw--phone .v29-bw__lang span { padding: 1cqi 1.8cqi; }
.v29-bw--phone .v29-bw__burger { display: block; width: 10cqi; height: 10cqi; border: 1px solid rgba(255, 255, 255, .4); background: linear-gradient(#fff 0 0) 50% 33% / 50% 1.5px no-repeat, linear-gradient(#fff 0 0) 50% 50% / 50% 1.5px no-repeat, linear-gradient(#fff 0 0) 50% 67% / 50% 1.5px no-repeat; }
.v29-bw--phone .v29-bw__intro { left: 4.6cqi; right: 4.6cqi; top: 44cqi; width: auto; }
.v29-bw--phone .v29-bw__eye, .v29-bw--phone .v29-bw__tag { font-size: 2.8cqi; }
.v29-bw--phone .v29-bw__title { margin-top: 3.4cqi !important; font-size: 11.2cqi; }
.v29-bw--phone .v29-bw__lead { width: auto; margin-top: 5cqi !important; font-size: 4.2cqi; }
.v29-bw--phone .v29-bw__ctas { flex-direction: column; align-items: flex-start; gap: 6cqi; margin-top: 7cqi !important; font-size: 4cqi; }
.v29-bw--phone .v29-bw__cta { gap: 9cqi; height: 13cqi; padding: 0 4.6cqi; }
.v29-bw--phone .v29-bw__ghost { gap: 4cqi; padding-bottom: 2.4cqi; }
.v29-bw--phone .v29-bw__tag { left: 4.6cqi; right: 4.6cqi; padding: 3.6cqi 0 5cqi; }
.v29-bw--phone .v29-bw__tag span + span { display: none; }
.v29-bw--phone .v29-bw__strip { grid-template-columns: 1fr; padding: 0 4.6cqi; }
.v29-bw--phone .v29-bw__strip li { gap: 1.6cqi; padding: 6cqi 0 7cqi; }
.v29-bw--phone .v29-bw__strip li + li { display: none; }
.v29-bw--phone .v29-bw__strip small { font-size: 2.8cqi; }
.v29-bw--phone .v29-bw__strip strong { font-size: 5.6cqi; }
.v29-bw--phone .v29-bw__strip span { font-size: 3.8cqi; }
/* Les deux propositions de Forge en vignettes (16:10) : 1 claire à image en arche, 2 marine plein cadre (choisie). */
.v29-thumb { --bw-navy: #172333; --bw-rust: #b5432f; container-type: inline-size; position: relative; display: block; aspect-ratio: 16 / 10; overflow: hidden; background: #f7f6f3; color: var(--bw-navy); line-height: 1; }
.v29-thumb img { position: absolute; object-fit: cover; }
.v29-thumb__nav { position: absolute; z-index: 2; left: 6cqi; right: 6cqi; top: 4.5cqi; display: flex; align-items: center; }
.v29-thumb .v29-bw__logo { gap: 1.6cqi; }
.v29-thumb .v29-bw__mark { width: 6.4cqi; height: 6.4cqi; }
.v29-thumb .v29-bw__logo b { font-size: 2.5cqi; }
.v29-thumb__nav i { width: 14cqi; height: 4.6cqi; background: var(--bw-navy); }
.v29-thumb__copy { position: absolute; z-index: 2; left: 6cqi; top: 22cqi; display: grid; justify-items: start; gap: 3.6cqi; width: 46cqi; }
.v29-thumb__title { display: grid; font-size: 7.4cqi; font-weight: 500; line-height: 1; letter-spacing: -.055em; }
.v29-thumb__title em { color: var(--bw-rust); font-style: normal; }
.v29-thumb__bar { width: 36cqi; height: 1.6cqi; background: rgba(23, 35, 51, .16); }
.v29-thumb__cta { width: 22cqi; height: 5.4cqi; background: var(--bw-rust); }
.v29-thumb--1 img { right: 6cqi; top: 15cqi; width: 40cqi; height: 47.5cqi; border-radius: 20cqi 20cqi 0 0; object-position: 50% 10%; }
.v29-thumb--2 { background: var(--bw-navy); color: #fff; }
.v29-thumb--2 img { inset: 0; width: 100%; height: 100%; object-position: 70% 40%; }
.v29-thumb--2::after { content: ""; position: absolute; z-index: 1; inset: 0; background: linear-gradient(90deg, rgba(23, 35, 51, .92) 0%, rgba(23, 35, 51, .72) 40%, rgba(23, 35, 51, .1) 70%); }
.v29-thumb--2 .v29-thumb__nav { padding-bottom: 2.4cqi; border-bottom: 1px solid rgba(255, 255, 255, .18); }
.v29-thumb--2 .v29-thumb__nav i { width: 16cqi; background: var(--bw-rust); }
.v29-thumb--2 .v29-thumb__title em { color: #f4735a; }
.v29-thumb--2 .v29-thumb__bar { background: rgba(255, 255, 255, .3); }
.v29-demo-label { position: absolute; right: 0; bottom: -34px; margin: 0; color: var(--v29-soft); font-size: 13px; letter-spacing: .12em; text-transform: uppercase; }
.v29-site__foot { display: flex; align-items: center; gap: 34px; margin-top: 88px; }
.v29-site__foot > div { display: grid; gap: 8px; padding-left: 34px; border-left: 1px solid rgba(21, 23, 46, .2); }
.v29-site__foot p:not(.v29-forge-lockup) { margin: 0; font-size: 20px; }
.v29-site__foot .v29-link { justify-self: start; }
[data-step="0"] .v29-version, [data-step="1"] .v29-version { opacity: 0; transform: translateY(16px); }
[data-step="0"] .v29-version__check, [data-step="1"] .v29-version__check, [data-step="2"] .v29-version__check { transform: scale(0); }
[data-step="0"] .v29-version--2 .v29-version__card, [data-step="1"] .v29-version--2 .v29-version__card, [data-step="2"] .v29-version--2 .v29-version__card { box-shadow: 0 16px 34px -20px rgba(60, 40, 10, .5); }
[data-step="0"] .v29-site__link-line path, [data-step="1"] .v29-site__link-line path, [data-step="2"] .v29-site__link-line path { stroke-dashoffset: 1; }
[data-step="0"] .v29-browser, [data-step="1"] .v29-browser, [data-step="2"] .v29-browser, [data-step="3"] .v29-browser { opacity: 0; transform: translateY(26px) scale(.98); }
[data-step="0"] .v29-bw__intro, [data-step="1"] .v29-bw__intro, [data-step="2"] .v29-bw__intro, [data-step="3"] .v29-bw__intro,
[data-step="0"] .v29-bw__tag, [data-step="1"] .v29-bw__tag, [data-step="2"] .v29-bw__tag, [data-step="3"] .v29-bw__tag,
[data-step="0"] .v29-bw__strip, [data-step="1"] .v29-bw__strip, [data-step="2"] .v29-bw__strip, [data-step="3"] .v29-bw__strip { opacity: 0; transform: translateY(2cqi); }
[data-step="0"] .v29-bw__nav, [data-step="1"] .v29-bw__nav, [data-step="2"] .v29-bw__nav, [data-step="3"] .v29-bw__nav { opacity: 0; transform: translateY(-2cqi); }
[data-step="0"] .v29-bw__img, [data-step="1"] .v29-bw__img, [data-step="2"] .v29-bw__img, [data-step="3"] .v29-bw__img { opacity: 0; filter: blur(14px); transform: scale(1.08); }
[data-step="0"] .v29-phone, [data-step="1"] .v29-phone, [data-step="2"] .v29-phone, [data-step="3"] .v29-phone, [data-step="4"] .v29-phone { opacity: 0; transform: translateX(40px) rotate(2deg); }

/* ---------- Commander (maquette 5) ---------- */
.v29-commander { position: relative; overflow: hidden; isolation: isolate; min-height: max(100svh, 820px); padding: clamp(100px, 12vh, 140px) 0 70px; text-align: center; }
.v29-commander > .v29-plate--soft img { object-position: 50% 60%; }
.v29-commander > .v29-plate--soft { transform: translate3d(0, calc(var(--p, 0) * 3%), 0) scale(1.05); }
.v29-commander__inner { display: grid; justify-items: center; }
.v29-micro--center { color: var(--v29-ink); letter-spacing: .3em; }
.v29-commander__title { margin-top: 26px; font-size: clamp(40px, 4.6vw, 74px); }
.v29-commander__sub { margin: 18px 0 44px; color: #3b3f5c; font-size: clamp(19px, 1.55vw, 25px); }
.v29-brief { width: min(100%, 900px); text-align: left; border-radius: 10px; background: var(--v29-glass); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); box-shadow: 0 30px 70px -36px rgba(60, 40, 10, .5), 0 0 0 1px rgba(21, 23, 46, .05); }
.v29-brief__ask { display: flex; align-items: center; gap: 20px; margin: 0; padding: 30px 34px 24px 52px; font-size: clamp(19px, 1.7vw, 27px); }
.v29-brief__ask .v29-typed { flex: 1; padding-bottom: 10px; border-bottom: 1.5px solid rgba(75, 46, 242, .55); }
.v29-brief__ask .v29-prompt__send { width: 46px; height: 46px; font-size: 22px; }
.v29-brief__rows { margin: 0 26px; }
.v29-brief__row { display: grid; grid-template-columns: 240px 1fr; gap: 24px; padding: 26px 26px; border-top: 1px solid var(--v29-line); transition: opacity .6s var(--v29-ease) calc(var(--i) * .35s), transform .7s var(--v29-ease) calc(var(--i) * .35s); }
.v29-brief__row dt { color: #3b3f5c; font-size: 21px; }
.v29-brief__row dd { display: grid; gap: 6px; margin: 0; font-size: 19px; }
.v29-brief__row dd small { color: var(--v29-soft); font-size: 15px; }
.v29-tasks { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.v29-tasks label { display: inline-flex; align-items: center; gap: 14px; cursor: pointer; }
.v29-tasks input { width: 22px; height: 22px; margin: 0; accent-color: var(--v29-accent); cursor: pointer; }
.v29-brief__foot { display: flex; align-items: center; gap: 24px; padding: 18px 34px 18px 52px; border-top: 1px solid var(--v29-line); }
.v29-brief__foot p { margin: 0 auto 0 0; color: var(--v29-soft); font-size: 15px; }
.v29-brief__approve { min-height: 46px; padding: 0 22px; font-size: 16px; }
.v29-brief__approve.is-done { background: var(--v29-green); }
.v29-brief__mark { color: var(--v29-soft); font-size: 14px; }
.v29-brief__status { margin: 0; padding: 0 52px; color: var(--v29-green); font-size: 14px; }
.v29-brief__status:not(:empty) { padding-bottom: 16px; }
.v29-commander__inner > .v29-reveal:last-child { margin-top: 50px; }
[data-step="0"] .v29-brief__row, [data-step="1"] .v29-brief__row { opacity: 0; transform: translateY(14px); }
[data-step="0"] .v29-brief__foot, [data-step="1"] .v29-brief__foot, [data-step="2"] .v29-brief__foot { opacity: .3; }
.v29-brief__foot { transition: opacity .6s; }

/* ---------- Appel final et pied de page (maquette 7) ---------- */
.v29-footer { position: relative; overflow: hidden; isolation: isolate; padding: clamp(110px, 14vh, 160px) 0 40px; background: var(--v29-cream); }
.v29-plate--footer { position: absolute; inset: 0 0 auto; height: 520px; z-index: -1; opacity: .7; -webkit-mask-image: linear-gradient(#000, transparent); mask-image: linear-gradient(#000, transparent); }
.v29-plate--footer img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 0; }
.v29-final { display: flex; align-items: center; justify-content: space-between; gap: 40px; padding-bottom: 46px; border-bottom: 1px solid var(--v29-line); }
.v29-final__title { font-size: clamp(36px, 3.7vw, 60px); }
.v29-final p { margin: 12px 0 0; color: var(--v29-muted); font-size: clamp(19px, 1.5vw, 24px); }
.v29-prices { padding: 30px 0 34px; border-bottom: 1px solid var(--v29-line); }
.v29-prices ul { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px 40px; margin: 0; padding: 0; list-style: none; }
.v29-prices li { display: grid; gap: 4px; }
.v29-prices strong { font-size: clamp(30px, 2.6vw, 40px); font-weight: 300; letter-spacing: -.04em; line-height: 1.05; color: var(--v29-ink); }
.v29-prices span { color: var(--v29-muted); font-size: 16px; line-height: 1.4; }
.v29-prices p { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 18px; margin: 22px 0 0; color: var(--v29-soft); font-size: 15px; }
@media (max-width: 860px) { .v29-prices ul { grid-template-columns: 1fr; } }
.v29-footer__brand { display: flex; align-items: flex-end; justify-content: space-between; gap: 30px; padding: 42px 0 52px; }
.v29-brand--lg { font-size: 56px; }
.v29-footer__brand p { margin: 8px 0 0; color: var(--v29-muted); font-size: 20px; }
.v29-footer__cols { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 32px; padding-bottom: 50px; border-bottom: 1px solid var(--v29-line); }
.v29-footer__cols h3 { margin: 0 0 20px; font-size: 22px; font-weight: 500; letter-spacing: -.01em; }
.v29-footer__cols ul { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.v29-footer__cols a { color: var(--v29-muted) !important; font-size: 18px; text-decoration: none; transition: color .2s; }
.v29-footer__cols a:hover { color: var(--v29-accent) !important; }
.v29-footer__legal { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 28px 0 8px; font-size: 16px; color: var(--v29-muted); }
.v29-footer__legal p { margin: 0; }
.v29-footer__legal ul { display: flex; flex-wrap: wrap; gap: 8px 32px; margin: 0; padding: 0; list-style: none; }
.v29-footer__legal a, .v29-footer__legal button { padding: 0; border: 0; background: none; color: var(--v29-muted) !important; font-size: 16px; text-decoration: none; cursor: pointer; }
.v29-footer__legal a:hover, .v29-footer__legal button:hover { color: var(--v29-accent) !important; }
.v29-footer__legal .v29-lang summary { font-size: 17px; color: var(--v29-muted); }
.v29-footer__note { margin: 18px 0 0; color: var(--v29-soft); font-size: 13px; }

/* ---------- Adaptatif ---------- */
@media (max-width: 1180px) {
  .v29-nav, .v29-header__login, .v29-header__tools > .v29-lang, .v29-header__tools::before { display: none; }
  .v29-burger { display: grid; }
  .v29-header__tools { margin-left: auto; gap: 14px; }
  .v29-header__cta { min-height: 46px; padding: 0 18px; font-size: 16px; }
  .v29-site__demo { grid-template-columns: minmax(0, 220px) minmax(0, 1fr); }
  .v29-phone { display: none; }
  .v29-footer__cols { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 44px; }
}
@media (min-width: 1181px) { .v29-sheet { display: none !important; } }
@media (max-width: 860px) {
  :root { --v29-header-h: 72px; }
  body.v29-page { font-size: 17px; }
  .v29-brand { font-size: 32px; }
  .v29-hero { min-height: max(100svh, 620px); }
  .v29-hero > .v29-plate img { object-position: 72% 50%; }
  .v29-hero__wash { background: linear-gradient(180deg, rgba(251, 247, 241, .94) 0%, rgba(251, 247, 241, .82) 34%, rgba(251, 247, 241, .1) 58%, rgba(251, 247, 241, 0) 70%), linear-gradient(0deg, rgba(42, 28, 12, .5) 0, rgba(42, 28, 12, 0) 22%); }
  .v29-hero__copy { padding-top: 112px; padding-bottom: 120px; }
  .v29-watch { margin-top: 30px; }
  .v29-watch__ring { width: 64px; height: 64px; font-size: 26px; }
  .v29-bar { padding: 18px 0 20px; }
  .v29-bar__inner { gap: 10px; }
  .v29-bar__label { display: none; }
  .v29-bar__btn { width: 38px; height: 38px; font-size: 20px; }
  .v29-js .v29-hero:not(.has-started) .v29-bar__label { display: block; font-size: 11px; letter-spacing: .2em; }
  .v29-scene { min-height: 0; }
  .v29-scene::before { display: none; }
  .v29-scene__media { position: relative; order: 2; z-index: 0; width: 100%; aspect-ratio: 1 / 1; }
  .v29-stage { --sw: 180cqw; left: calc(100cqw * var(--mx)); top: calc(100cqh * var(--my)); }
  .v29-activity { --mx: -.735; --my: -.315; }
  .v29-forge { --mx: -.42; --my: -.3; }
  .v29-scene__copy { order: 1; padding-top: 84px; padding-bottom: 34px; }
  .v29-scene__copy--right { align-items: flex-start; }
  .v29-scene__foot { order: 3; margin-top: 0; padding: 16px 0 6px; }
  .v29-modules, .v29-caption { color: var(--v29-muted); text-shadow: none; }
  .v29-modules.is-cycling li.is-on { color: var(--v29-accent); }
  .v29-scene__foot--right { justify-content: flex-start; }
  .v29-modules { font-size: 13px; }
  .v29-modules li + li::before { margin: 0 8px; }
  .v29-caption { font-size: 13px; }
  .v29-prompt--forge { left: 24.5%; width: 51cqw; font-size: max(12px, 1.85cqw); }
  .v29-site { padding-top: 84px; }
  .v29-site__demo { grid-template-columns: 1fr; gap: 26px; }
  .v29-versions { grid-template-columns: 1fr 1fr; gap: 14px; margin: 0; }
  .v29-version__card { padding: 6px; }
  .v29-site__link-line { display: none; }
  /* Navigateur à ~350 px : on garde la hero lisible, la navigation se replie comme sur le site réel. */
  .v29-bw--desktop .v29-bw__links, .v29-bw--desktop .v29-bw__lang { display: none; }
  .v29-bw--desktop .v29-bw__nav { font-size: 2.6cqi; }
  .v29-bw--desktop .v29-bw__mark { width: 6cqi; height: 6cqi; }
  .v29-bw--desktop .v29-bw__logo b { font-size: 2.4cqi; }
  .v29-bw--desktop .v29-bw__btn { height: 7cqi; padding: 0 2.6cqi; }
  .v29-bw--desktop .v29-bw__hero { aspect-ratio: 1440 / 1080; }
  .v29-bw--desktop .v29-bw__intro { top: 16cqi; width: 86cqi; }
  .v29-bw--desktop .v29-bw__eye, .v29-bw--desktop .v29-bw__tag { font-size: 2.2cqi; }
  .v29-bw--desktop .v29-bw__title { font-size: 7.4cqi; }
  .v29-bw--desktop .v29-bw__lead { width: 56cqi; font-size: 2.9cqi; }
  .v29-bw--desktop .v29-bw__ctas { font-size: 2.7cqi; }
  .v29-bw--desktop .v29-bw__cta { height: 8.4cqi; padding: 0 3cqi; }
  .v29-bw--desktop .v29-bw__strip { grid-template-columns: 1fr 1fr; }
  .v29-bw--desktop .v29-bw__strip li:nth-child(3) { display: none; }
  .v29-bw--desktop .v29-bw__strip small { font-size: 2.2cqi; }
  .v29-bw--desktop .v29-bw__strip strong { font-size: 3.6cqi; }
  .v29-bw--desktop .v29-bw__strip span { font-size: 2.7cqi; }
  .v29-demo-label { position: static; margin-top: -10px; }
  .v29-site__foot { flex-direction: column; align-items: flex-start; gap: 16px; margin-top: 50px; }
  .v29-site__foot > div { padding-left: 0; border-left: 0; }
  .v29-commander { padding-top: 84px; min-height: 0; }
  .v29-brief__ask { padding: 22px 18px 18px 22px; }
  .v29-brief__rows { margin: 0 8px; }
  .v29-brief__row { grid-template-columns: 1fr; gap: 8px; padding: 18px 14px; }
  .v29-brief__row dt { font-size: 15px; letter-spacing: .1em; text-transform: uppercase; }
  .v29-brief__foot { flex-wrap: wrap; padding: 16px 22px; }
  .v29-brief__mark { display: none; }
  .v29-brief__status { padding: 0 22px; }
  .v29-final { flex-direction: column; align-items: flex-start; }
  .v29-btn--lg { min-height: 60px; font-size: 20px; }
  .v29-footer__brand { flex-direction: column; align-items: flex-start; }
  .v29-brand--lg { font-size: 44px; }
  .v29-footer__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 36px 20px; }
  .v29-footer__cols a { font-size: 16px; }
  .v29-footer__legal { flex-direction: column; align-items: flex-start; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .v29-page *, .v29-page *::before, .v29-page *::after { animation: none !important; transition-duration: .01ms !important; transition-delay: 0s !important; }
  .v29-js .v29-line > span, .v29-js .v29-reveal, .v29-js .v29-rise { opacity: 1; transform: none; }
  .v29-stage, .v29-hero > .v29-plate, .v29-plate--soft { transform: none !important; }
  .v29-player { clip-path: none; }
}

/* Ancres historiques de la home (V24/V25) conservées pour les liens existants (/#creer, /#offres…). */
.v29-anchor { position: absolute; top: -90px; left: 0; width: 1px; height: 1px; overflow: hidden; pointer-events: none; }
.v29-final { position: relative; }
