/* /demarrer dans le style de la home V29 « lumière » et de /solutions/crm-ventes (2026-10-10).
   Se charge après neoo-home-v29.css (jetons, en-tête, pied de page, boutons, titres, entrées) et neoo-solutions-v29.css
   (hero, notes, FAQ, appel final). Préfixe gs29-. Plan : docs/get-started-v29/DESIGN.md.
   Généré par scripts/generate-neoo-get-started.mjs ; entrées pilotées par neoo-home-v29.js (.is-in sur [data-v29-scene]),
   séquence Forge et lecteur du film par neoo-get-started-v29.js ([data-gs29-seq][data-step]).
   Motion : chaque état caché n’existe que sous .v29-js …:not(.is-in) ou [data-gs29-seq][data-step] ; sans JavaScript ou
   en mouvement réduit, tout est dans son état final. Seules les impulsions du schéma Forge se répètent, trois fois. */

.gs29-page [id] { scroll-margin-top: 90px; }
.gs29-split { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: end; gap: clamp(32px, 5vw, 96px); }
.gs29-split .v29s-lead { margin: 0; max-width: 46ch; font-size: clamp(18px, 1.35vw, 21px); }

/* ---------- Hero ---------- */
.gs29-hero > .v29-plate img { object-position: 68% 40%; }
.gs29-hero__title { max-width: 12.5em; font-size: clamp(40px, 3.9vw, 62px); }
.gs29-hero .v29-hero__wash { background: linear-gradient(96deg, rgba(251, 247, 241, .95) 0%, rgba(251, 247, 241, .86) 32%, rgba(251, 247, 241, .45) 50%, rgba(251, 247, 241, 0) 64%), linear-gradient(180deg, rgba(251, 247, 241, .55) 0, rgba(251, 247, 241, 0) 22%), linear-gradient(0deg, rgba(251, 247, 241, .72) 0, rgba(251, 247, 241, 0) 16%); }
.gs29-hero .v29s-actions .v29-i--arrow { transform: none; }
.gs29-hero .v29s-actions a:hover .v29-i--arrow { transform: translateY(3px); }

/* ---------- 01 Les deux parcours ---------- */
.gs29-paths__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; margin-top: 64px; }
.gs29-path { display: flex; flex-direction: column; overflow: hidden; border-radius: 14px; background: var(--v29-paper); box-shadow: 0 30px 70px -40px rgba(60, 40, 10, .45), 0 0 0 1px var(--v29-line); }
.gs29-path__body { display: flex; flex: 1; flex-direction: column; padding: 34px 38px 36px; }
.gs29-path__kicker { color: var(--v29-accent); font-size: 12px; font-weight: 500; }
.gs29-path__title { margin: 12px 0 0; font-size: clamp(28px, 2.4vw, 38px); font-weight: 300; letter-spacing: -.04em; line-height: 1.1; }
.gs29-path__text { margin: 16px 0 0; color: var(--v29-muted); font-size: 17px; line-height: 1.55; }
.gs29-path__terms { display: flex; align-items: flex-start; gap: 12px; margin: 22px 0 0; padding: 16px 18px; border-radius: 10px; background: rgba(34, 165, 101, .08); color: var(--v29-ink); font-size: 16px; line-height: 1.45; }
.gs29-path__terms .v29-i { flex: none; width: 24px; height: 24px; padding: 5px; border-radius: 50%; background: rgba(34, 165, 101, .16); color: #17804a; stroke-width: 2.4; }
.gs29-path__modules { display: flex; align-items: flex-start; gap: 12px; margin: 14px 0 0; color: var(--v29-muted); font-size: 16px; line-height: 1.5; }
.gs29-path__modules .v29-i { flex: none; width: 24px; height: 24px; padding: 4px; border-radius: 7px; background: rgba(75, 46, 242, .1); color: var(--v29-accent); }
.gs29-path__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 26px; margin-top: auto; padding-top: 30px; }
.gs29-path__actions .v29-btn { min-height: 54px; }
.gs29-path__link { font-size: 18px; }
.gs29-path__more { margin: 18px 0 0; }
.v29-link--sm { font-size: 16px; }
.gs29-plans { display: grid; gap: 0; margin: 24px 0 0; padding: 0; list-style: none; border-top: 1px solid var(--v29-line); }
.gs29-plan { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 2px 16px; padding: 14px 4px; border-bottom: 1px solid var(--v29-line); color: var(--v29-ink) !important; text-decoration: none; transition: background-color .25s, padding .3s var(--v29-ease); }
.gs29-plan:hover { padding-inline: 12px; background: rgba(75, 46, 242, .05); }
.gs29-plan__name { font-size: 19px; font-weight: 400; }
.gs29-plan__text { grid-column: 1; color: var(--v29-muted); font-size: 15px; }
.gs29-plan__forge { grid-column: 1; justify-self: start; margin-top: 6px; padding: 3px 10px; border-radius: 999px; background: rgba(75, 46, 242, .1); color: var(--v29-accent); font-size: 13px; font-weight: 500; }
.gs29-plan .v29-i--arrow { grid-column: 2; grid-row: 1 / span 3; color: var(--v29-accent); font-size: 20px; transition: transform .3s var(--v29-ease); }
.gs29-plan:hover .v29-i--arrow { transform: translateX(4px); }

/* Espace Neoo qui se met en place (à l’entrée de la carte). */
.gs29-ws, .gs29-forge { position: relative; margin: 0; padding: 22px 22px 20px; background: linear-gradient(160deg, #f7f1e8, #efe6d8); border-bottom: 1px solid var(--v29-line); }
.gs29-ws__bar { display: flex; align-items: center; gap: 7px; padding: 10px 14px; border-radius: 10px 10px 0 0; background: #fff; box-shadow: 0 0 0 1px rgba(21, 23, 46, .06); }
.gs29-ws__bar > span:not(.gs29-ws__url) { width: 9px; height: 9px; border-radius: 50%; background: #d6cfc4; }
.gs29-ws__bar > span:first-child { background: var(--v29-accent); opacity: .75; }
.gs29-ws__url { margin-left: 12px; padding: 3px 12px; border-radius: 999px; background: #f4efe7; color: var(--v29-muted); font-size: 12px; letter-spacing: .02em; }
.gs29-ws__body { padding: 18px 18px 16px; border-radius: 0 0 10px 10px; background: var(--v29-paper); box-shadow: 0 0 0 1px rgba(21, 23, 46, .06), 0 24px 50px -30px rgba(60, 40, 10, .45); }
.gs29-ws__title { margin: 0 0 14px; font-size: 15px; font-weight: 500; }
.gs29-ws__tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 0; padding: 0; list-style: none; }
.gs29-ws__tiles li { display: flex; align-items: center; gap: 10px; min-width: 0; padding: 12px; border-radius: 9px; background: #fff; box-shadow: 0 0 0 1px rgba(21, 23, 46, .08); color: var(--v29-ink); font-size: 14px; white-space: nowrap; transition: opacity .45s var(--v29-ease) calc(var(--i) * .2s + .45s), transform .55s cubic-bezier(.3, 1.4, .5, 1) calc(var(--i) * .2s + .45s); }
.gs29-ws__tiles li > span:last-child { overflow: hidden; text-overflow: ellipsis; }
.gs29-ws__glyph { flex: none; width: 22px; height: 22px; border-radius: 6px; background: linear-gradient(135deg, var(--v29-accent), #8a74ff); opacity: .85; }
.gs29-ws__tiles li:nth-child(3n + 2) .gs29-ws__glyph { background: linear-gradient(135deg, #22a565, #6fd3a0); }
.gs29-ws__tiles li:nth-child(3n) .gs29-ws__glyph { background: linear-gradient(135deg, #e08a3c, #f2c37f); }
.gs29-ws__foot { display: flex; align-items: center; gap: 16px; margin-top: 16px; }
.gs29-ws__meter { position: relative; flex: 1; height: 6px; overflow: hidden; border-radius: 6px; background: #efe8dd; }
.gs29-ws__meter > span { position: absolute; inset: 0; border-radius: inherit; background: linear-gradient(90deg, var(--v29-accent), var(--v29-green)); transform-origin: 0 50%; transition: transform 1.6s var(--v29-ease-io) .5s; }
.gs29-ws__ready { display: inline-flex; align-items: center; gap: 8px; color: #17804a; font-size: 14px; font-weight: 500; white-space: nowrap; transition: opacity .5s var(--v29-ease) 1.85s, transform .6s cubic-bezier(.3, 1.4, .5, 1) 1.85s; }
.gs29-ws__ready .v29-i { width: 22px; height: 22px; padding: 5px; border-radius: 50%; background: var(--v29-green); color: #fff; stroke-width: 2.6; }
.v29-js .gs29-path--manage:not(.is-in) .gs29-ws__tiles li { opacity: 0; transform: translateY(10px) scale(.86); }
.v29-js .gs29-path--manage:not(.is-in) .gs29-ws__meter > span { transform: scaleX(0); }
.v29-js .gs29-path--manage:not(.is-in) .gs29-ws__ready { opacity: 0; transform: scale(.7); }

/* Forge assemble un site (séquence [data-gs29-seq="forge"] : 0 attente, 1 saisie, 2 envoi, 3 page, 4 blocs, 5 en ligne). */
.gs29-forge__prompt { display: flex; align-items: center; gap: 12px; padding: 12px 12px 12px 16px; border-radius: 12px; background: #fff; box-shadow: 0 0 0 1px rgba(75, 46, 242, .22), 0 18px 40px -26px rgba(75, 46, 242, .6); font-size: 15px; }
.gs29-forge__prompt > .v29-i { flex: none; width: 20px; height: 20px; color: var(--v29-accent); }
.gs29-forge__text { flex: 1; min-width: 0; min-height: 1.4em; color: var(--v29-ink); }
.gs29-forge__send { display: grid; flex: none; place-items: center; width: 34px; height: 34px; border-radius: 9px; background: var(--v29-accent); color: #fff; font-size: 16px; }
.gs29-forge__canvas { display: grid; gap: 10px; margin-top: 14px; padding: 14px; border-radius: 10px; background: var(--v29-paper); box-shadow: 0 0 0 1px rgba(21, 23, 46, .06); }
.gs29-forge__nav { display: flex; align-items: center; gap: 10px; transition: opacity .4s var(--v29-ease), transform .5s var(--v29-ease); }
.gs29-forge__nav b { width: 54px; height: 10px; border-radius: 4px; background: var(--v29-ink); opacity: .8; }
.gs29-forge__nav i { width: 34px; height: 6px; border-radius: 4px; background: #ddd5c8; }
.gs29-forge__nav i:first-of-type { margin-left: auto; }
.gs29-forge__heroblock { display: grid; gap: 7px; padding: 16px; border-radius: 8px; background: linear-gradient(120deg, #2a1c4a, #4b2ef2 70%, #8a74ff); transition: opacity .45s var(--v29-ease), transform .6s var(--v29-ease), clip-path .8s var(--v29-ease-io); clip-path: inset(0 0 0 0 round 8px); }
.gs29-forge__heroblock b { width: 62%; height: 12px; border-radius: 4px; background: rgba(255, 255, 255, .92); }
.gs29-forge__heroblock i { width: 46%; height: 6px; border-radius: 4px; background: rgba(255, 255, 255, .5); }
.gs29-forge__heroblock span { width: 70px; height: 18px; margin-top: 4px; border-radius: 5px; background: #fff; }
.gs29-forge__blocks { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 0; padding: 0; list-style: none; }
.gs29-forge__blocks li { display: grid; gap: 8px; min-width: 0; padding: 10px; border-radius: 8px; background: #fff; box-shadow: 0 0 0 1px rgba(21, 23, 46, .08); color: var(--v29-muted); font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: opacity .4s var(--v29-ease) calc(var(--i) * .16s), transform .5s cubic-bezier(.3, 1.4, .5, 1) calc(var(--i) * .16s); }
.gs29-forge__blocks li span { height: 34px; border-radius: 5px; background: linear-gradient(135deg, #efe6d8, #e4d8c6); }
.gs29-forge__status { display: flex; align-items: center; min-height: 28px; margin: 14px 0 0; font-size: 14px; }
.gs29-forge__building { display: none; align-items: center; gap: 10px; color: var(--v29-accent); }
.gs29-forge__spinner { width: 14px; height: 14px; border: 2px solid rgba(75, 46, 242, .25); border-top-color: var(--v29-accent); border-radius: 50%; animation: gs29-spin .8s linear infinite; }
.gs29-forge__live { display: inline-flex; align-items: center; gap: 8px; color: #17804a; font-weight: 500; }
.gs29-forge__live .v29-i { width: 22px; height: 22px; padding: 5px; border-radius: 50%; background: var(--v29-green); color: #fff; stroke-width: 2.6; }
@keyframes gs29-spin { to { transform: rotate(360deg); } }
@keyframes gs29-caret { 50% { opacity: 0; } }
@keyframes gs29-pop { 0% { transform: scale(.6); } 60% { transform: scale(1.12); } 100% { transform: scale(1); } }
[data-gs29-seq][data-step="1"] .gs29-forge__text::after { content: ""; display: inline-block; width: 2px; height: 1.1em; margin-left: 2px; vertical-align: -3px; background: var(--v29-accent); animation: gs29-caret .9s steps(1) infinite; }
[data-gs29-seq][data-step="0"] .gs29-forge__nav, [data-gs29-seq][data-step="1"] .gs29-forge__nav, [data-gs29-seq][data-step="2"] .gs29-forge__nav { opacity: 0; transform: translateY(-6px); }
[data-gs29-seq][data-step="0"] .gs29-forge__heroblock, [data-gs29-seq][data-step="1"] .gs29-forge__heroblock, [data-gs29-seq][data-step="2"] .gs29-forge__heroblock { opacity: 0; clip-path: inset(0 100% 0 0 round 8px); }
[data-gs29-seq][data-step]:not([data-step="4"]):not([data-step="5"]) .gs29-forge__blocks li { opacity: 0; transform: translateY(10px) scale(.9); }
[data-gs29-seq][data-step="2"] .gs29-forge__send { animation: gs29-pop .45s var(--v29-ease); }
[data-gs29-seq][data-step="2"] .gs29-forge__building, [data-gs29-seq][data-step="3"] .gs29-forge__building, [data-gs29-seq][data-step="4"] .gs29-forge__building { display: inline-flex; }
[data-gs29-seq][data-step]:not([data-step="5"]) .gs29-forge__live { display: none; }
[data-gs29-seq][data-step="5"] .gs29-forge__live { animation: gs29-pop .5s var(--v29-ease); }

/* ---------- 02 Forge, avec ou sans Neoo ---------- */
.gs29-uses { overflow: hidden; }
.gs29-uses__head { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: end; gap: clamp(32px, 5vw, 96px); }
.gs29-uses__head .v29s-lead { margin: 0; max-width: 46ch; font-size: clamp(18px, 1.35vw, 21px); }
.gs29-map { display: grid; grid-template-columns: minmax(0, 1fr) minmax(40px, 110px) auto minmax(40px, 110px) minmax(0, 1fr); align-items: center; margin: 64px 0 0; padding: clamp(28px, 4vw, 52px); border-radius: 16px; background: radial-gradient(ellipse at 50% 50%, rgba(75, 46, 242, .08), rgba(75, 46, 242, 0) 60%), var(--v29-paper); box-shadow: 0 30px 70px -40px rgba(60, 40, 10, .45), 0 0 0 1px var(--v29-line); }
.gs29-map__side { display: grid; gap: 10px; min-width: 0; padding: 26px 24px; border-radius: 12px; background: #fff; box-shadow: 0 0 0 1px rgba(21, 23, 46, .08); transition: opacity .6s var(--v29-ease) 1.1s, transform .7s var(--v29-ease) 1.1s; }
.gs29-map__side--inside { box-shadow: 0 0 0 1.5px rgba(75, 46, 242, .35), 0 24px 50px -32px rgba(75, 46, 242, .55); }
.gs29-map__side .v29-micro { color: var(--v29-accent); font-size: 12px; font-weight: 500; }
.gs29-map__title { margin: 0; font-size: clamp(22px, 1.8vw, 27px); font-weight: 300; letter-spacing: -.035em; line-height: 1.15; }
.gs29-map__items { display: grid; gap: 8px; margin: 8px 0 0; padding: 0; list-style: none; }
.gs29-map__items li { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 9px; background: #f7f2ea; font-size: 16px; transition: opacity .45s var(--v29-ease) calc(var(--i) * .14s + 1.5s), transform .5s var(--v29-ease) calc(var(--i) * .14s + 1.5s); }
.gs29-map__items .v29-i { flex: none; width: 22px; height: 22px; color: var(--v29-accent); }
.gs29-map__module { display: grid; gap: 10px; margin-top: 8px; padding: 14px; border-radius: 10px; background: linear-gradient(180deg, rgba(75, 46, 242, .07), rgba(75, 46, 242, .02)); box-shadow: inset 0 0 0 1px rgba(75, 46, 242, .14); }
.gs29-map__chip { display: inline-flex; justify-self: start; align-items: center; gap: 10px; padding: 8px 14px; border-radius: 999px; background: var(--v29-accent); color: #fff; font-size: 15px; box-shadow: 0 10px 22px -12px rgba(75, 46, 242, .8); }
.gs29-map__chip .v29-i { width: 18px; height: 18px; }
.gs29-map__module ul { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.gs29-map__module li { position: relative; padding: 6px 12px 6px 22px; border-radius: 999px; background: #fff; box-shadow: 0 0 0 1px rgba(21, 23, 46, .1); color: var(--v29-muted); font-size: 14px; transition: opacity .45s var(--v29-ease) calc(var(--i) * .14s + 1.6s), transform .5s var(--v29-ease) calc(var(--i) * .14s + 1.6s); }
.gs29-map__module li::before { content: ""; position: absolute; left: 10px; top: 50%; width: 6px; height: 6px; margin-top: -3px; border-radius: 50%; background: var(--v29-green); }
.gs29-map__foot { margin: 6px 0 0; color: var(--v29-soft); font-size: 14px; }
.gs29-map__core { position: relative; display: grid; justify-items: center; gap: 6px; width: clamp(150px, 15vw, 190px); padding: 26px 14px 22px; border-radius: 50%; aspect-ratio: 1; align-content: center; background: var(--v29-ink); color: #fff; text-align: center; box-shadow: 0 30px 60px -26px rgba(21, 23, 46, .7); transition: opacity .6s var(--v29-ease) .2s, transform .8s cubic-bezier(.3, 1.4, .5, 1) .2s; }
.gs29-map__mark .v29-i { width: 30px; height: 30px; color: #b9abff; }
.gs29-map__core strong { font-size: 18px; font-weight: 500; letter-spacing: -.01em; }
.gs29-map__core small { color: rgba(255, 255, 255, .7); font-size: 12.5px; line-height: 1.3; }
.gs29-map__halo { position: absolute; inset: -14px; z-index: -1; border-radius: 50%; border: 1.5px solid rgba(75, 46, 242, .3); opacity: 0; }
.gs29-map__wire { position: relative; height: 2px; border-radius: 2px; background: rgba(75, 46, 242, .3); transition: transform .7s var(--v29-ease-io) .7s; }
.gs29-map__wire--open { transform-origin: 100% 50%; }
.gs29-map__wire--inside { transform-origin: 0 50%; }
.gs29-map__wire::after { content: ""; position: absolute; inset: -2px 0; border-radius: 3px; background: linear-gradient(90deg, transparent 0, var(--v29-accent) 50%, transparent 100%) no-repeat; background-size: 36% 100%; background-position: -60% 0; opacity: 0; }
.gs29-map__wire--open::after { background-position: 160% 0; }
.v29-js .gs29-uses.is-in .gs29-map__wire--inside::after { animation: gs29-pulse-right 1.7s cubic-bezier(.5, 0, .5, 1) 2.1s 3; }
.v29-js .gs29-uses.is-in .gs29-map__wire--open::after { animation: gs29-pulse-left 1.7s cubic-bezier(.5, 0, .5, 1) 2.3s 3; }
.v29-js .gs29-uses.is-in .gs29-map__halo { animation: gs29-ring 1.7s ease-out 2s 3; }
@keyframes gs29-pulse-right { 0% { opacity: 0; background-position: -60% 0; } 15%, 85% { opacity: 1; } 100% { opacity: 0; background-position: 160% 0; } }
@keyframes gs29-pulse-left { 0% { opacity: 0; background-position: 160% 0; } 15%, 85% { opacity: 1; } 100% { opacity: 0; background-position: -60% 0; } }
@keyframes gs29-ring { 0% { opacity: .9; transform: scale(.92); } 100% { opacity: 0; transform: scale(1.3); } }
.v29-js .gs29-uses:not(.is-in) .gs29-map__core { opacity: 0; transform: scale(.7); }
.v29-js .gs29-uses:not(.is-in) .gs29-map__wire { transform: scaleX(0); }
.v29-js .gs29-uses:not(.is-in) .gs29-map__side--open { opacity: 0; transform: translateX(-18px); }
.v29-js .gs29-uses:not(.is-in) .gs29-map__side--inside { opacity: 0; transform: translateX(18px); }
.v29-js .gs29-uses:not(.is-in) .gs29-map__items li, .v29-js .gs29-uses:not(.is-in) .gs29-map__module li { opacity: 0; transform: translateY(8px); }

.gs29-matrix { margin-top: 40px; overflow-x: auto; }
.gs29-matrix table { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 17px; }
.gs29-matrix caption { padding: 0 0 18px; color: var(--v29-muted); font-size: 14px; letter-spacing: .16em; text-align: left; text-transform: uppercase; }
.gs29-matrix th, .gs29-matrix td { padding: 18px 16px; border-bottom: 1px solid var(--v29-line); text-align: center; vertical-align: middle; }
.gs29-matrix thead th { color: var(--v29-muted); font-size: 15px; font-weight: 400; line-height: 1.35; }
.gs29-matrix th:first-child { width: 38%; padding-left: 0; text-align: left; }
.gs29-matrix tbody th { font-weight: 400; }
.gs29-matrix tbody th small { display: block; margin-top: 4px; color: var(--v29-accent); font-size: 14px; }
.gs29-yes, .gs29-no { display: inline-grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; transition: opacity .4s var(--v29-ease) calc(var(--i, 0) * .14s + .5s), transform .5s cubic-bezier(.3, 1.4, .5, 1) calc(var(--i, 0) * .14s + .5s); }
.gs29-yes { background: rgba(34, 165, 101, .14); color: #17804a; }
.gs29-yes .v29-i { width: 18px; height: 18px; stroke-width: 2.6; }
.gs29-no { background: #f1ebe2; color: var(--v29-soft); }
.gs29-no .v29-i { width: 16px; height: 16px; stroke-width: 2.2; }
.v29-js .gs29-uses:not(.is-in) .gs29-yes, .v29-js .gs29-uses:not(.is-in) .gs29-no { opacity: 0; transform: scale(.5); }
.gs29-uses__more { margin: 34px 0 0; }

/* ---------- 03 Le guide : film et chapitres ---------- */
.gs29-guide__head { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: end; gap: clamp(32px, 5vw, 96px); }
.gs29-guide__aside .v29s-lead { margin: 0; max-width: 46ch; font-size: clamp(18px, 1.35vw, 21px); }
.gs29-guide__aside .v29s-actions { margin-top: 28px; }
.gs29-theatre { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 360px); align-items: start; gap: 24px; margin-top: 56px; }
.gs29-stage { margin: 0; }
.gs29-stage__frame { overflow: hidden; border-radius: 14px; background: #0d0e1a; box-shadow: var(--v29-shadow), 0 0 0 1px rgba(21, 23, 46, .08); }
.gs29-video { display: block; width: 100%; height: auto; aspect-ratio: 16 / 9; background: #0d0e1a; }
.gs29-stage figcaption { margin-top: 16px; color: var(--v29-soft); font-size: 13px; letter-spacing: .04em; }
.gs29-chapters { display: flex; flex-direction: column; min-height: 0; padding: 24px 22px 14px; border-radius: 14px; background: var(--v29-paper); box-shadow: 0 0 0 1px var(--v29-line); }
.gs29-chapters__film { margin: 0; font-size: 21px; font-weight: 300; letter-spacing: -.03em; line-height: 1.2; }
.gs29-chapters__meta { margin: 6px 0 16px; color: var(--v29-soft); font-size: 13px; line-height: 1.4; }
.gs29-chapters h3 { margin: 0 0 8px; font-size: 12px; font-weight: 500; }
.gs29-chapters ol { flex: 1; max-height: 330px; margin: 0 -8px; padding: 0; overflow-y: auto; list-style: none; }
.gs29-chapter { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: 10px; padding: 9px 8px; border-radius: 8px; color: var(--v29-ink) !important; font-size: 15px; line-height: 1.35; text-decoration: none; transition: background-color .2s, color .2s; }
.gs29-chapter:hover { background: rgba(75, 46, 242, .06); color: var(--v29-accent) !important; }
.gs29-chapter__time { color: var(--v29-soft); font-variant-numeric: tabular-nums; }
.gs29-chapter[aria-current="true"] { background: rgba(75, 46, 242, .1); color: var(--v29-accent) !important; }
.gs29-chapter[aria-current="true"] .gs29-chapter__time { color: var(--v29-accent); }

/* ---------- 04 Ce qu’il faut préparer ---------- */
.gs29-needs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; margin: 56px 0 0; padding: 0; list-style: none; }
.gs29-need { padding: 30px 28px 32px; border-radius: 14px; background: var(--v29-paper); box-shadow: 0 0 0 1px var(--v29-line); }
.gs29-need__icon { position: relative; display: grid; place-items: center; width: 56px; height: 56px; border-radius: 14px; background: rgba(75, 46, 242, .08); color: var(--v29-accent); }
.gs29-need__icon > .v29-i { width: 26px; height: 26px; stroke-width: 1.7; }
.gs29-need__tick { position: absolute; right: -8px; bottom: -8px; display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; background: var(--v29-green); box-shadow: 0 0 0 3px var(--v29-paper); color: #fff; transition: opacity .35s var(--v29-ease) calc(var(--i) * .45s + .7s), transform .5s cubic-bezier(.3, 1.6, .5, 1) calc(var(--i) * .45s + .7s); }
.gs29-need__tick .v29-i { width: 15px; height: 15px; stroke-width: 3; }
.gs29-need h3 { margin: 22px 0 0; font-size: 22px; font-weight: 400; letter-spacing: -.02em; }
.gs29-need p { margin: 10px 0 0; color: var(--v29-muted); font-size: 16px; line-height: 1.55; }
.gs29-meter { display: flex; align-items: center; gap: 20px; margin: 34px 0 0; }
.gs29-meter__track { position: relative; flex: 1; height: 6px; overflow: hidden; border-radius: 6px; background: #efe8dd; }
.gs29-meter__track > span { position: absolute; inset: 0; border-radius: inherit; background: linear-gradient(90deg, var(--v29-accent), var(--v29-green)); transform-origin: 0 50%; transition: transform 1.5s var(--v29-ease-io) .6s; }
.gs29-meter__label { display: inline-flex; align-items: center; gap: 8px; color: #17804a; font-size: 15px; font-weight: 500; white-space: nowrap; transition: opacity .5s var(--v29-ease) 2s; }
.gs29-meter__label .v29-i { width: 20px; height: 20px; padding: 4px; border-radius: 50%; background: rgba(34, 165, 101, .16); stroke-width: 2.6; }
.v29-js .gs29-prepare:not(.is-in) .gs29-need__tick { opacity: 0; transform: scale(.3); }
.v29-js .gs29-prepare:not(.is-in) .gs29-meter__track > span { transform: scaleX(0); }
.v29-js .gs29-prepare:not(.is-in) .gs29-meter__label { opacity: 0; }

/* ---------- 05 Les quatre étapes ---------- */
.gs29-rail { position: relative; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin-top: 56px; }
.gs29-rail::before, .gs29-rail__fill { content: ""; position: absolute; top: 19px; left: 20px; right: calc(25% - 20px); height: 2px; border-radius: 2px; background: rgba(75, 46, 242, .18); }
.gs29-rail__fill { background: var(--v29-accent); transform-origin: 0 50%; transition: transform 2.2s var(--v29-ease-io) .4s; }
.gs29-rail__node { position: relative; display: grid; align-content: start; justify-items: start; gap: 12px; padding-right: 16px; color: var(--v29-ink); font-size: 15px; line-height: 1.3; }
.gs29-rail__node b { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; border: 1.5px solid var(--v29-accent); background: var(--v29-accent); color: #fff; font-size: 16px; font-weight: 500; transition: background-color .35s calc(var(--i) * .55s + .45s), color .35s calc(var(--i) * .55s + .45s), transform .5s cubic-bezier(.3, 1.5, .5, 1) calc(var(--i) * .55s + .45s); }
.v29-js .gs29-steps:not(.is-in) .gs29-rail__fill { transform: scaleX(0); }
.v29-js .gs29-steps:not(.is-in) .gs29-rail__node b { background: var(--v29-paper); color: var(--v29-accent); transform: scale(.86); }
.gs29-step-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 56px 40px; margin: 48px 0 0; padding: 0; list-style: none; }
.gs29-step { display: flex; flex-direction: column; }
.gs29-shot { position: relative; margin: 0; }
.gs29-shot__frame { overflow: hidden; border-radius: 12px; background: #fff; box-shadow: var(--v29-shadow), 0 0 0 1px rgba(21, 23, 46, .06); transition: transform .5s var(--v29-ease), box-shadow .5s var(--v29-ease); }
.gs29-step:hover .gs29-shot__frame { transform: translateY(-4px); }
.gs29-shot__bar { display: flex; gap: 7px; padding: 11px 16px; background: #f4efe7; border-bottom: 1px solid rgba(21, 23, 46, .06); }
.gs29-shot__bar span { width: 9px; height: 9px; border-radius: 50%; background: #d6cfc4; }
.gs29-shot__bar span:first-child { background: var(--v29-accent); opacity: .75; }
.gs29-shot__frame img { display: block; width: 100%; height: auto; }
.gs29-shot__label { position: absolute; left: 14px; bottom: 14px; padding: 6px 12px; border-radius: 999px; background: rgba(21, 23, 46, .82); color: #fff; font-size: 13px; }
.gs29-step__kicker { display: flex; align-items: center; gap: 12px; margin: 26px 0 0; color: var(--v29-muted); font-size: 13px; letter-spacing: .16em; text-transform: uppercase; }
.gs29-step__num { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: rgba(75, 46, 242, .1); color: var(--v29-accent); font-size: 14px; font-weight: 700; letter-spacing: 0; }
.gs29-step h3 { margin: 12px 0 0; font-size: clamp(24px, 2vw, 30px); font-weight: 300; letter-spacing: -.035em; line-height: 1.15; }
.gs29-step__text { margin: 10px 0 0; color: var(--v29-muted); font-size: 17px; line-height: 1.55; }
.gs29-watch { display: inline-flex; align-self: flex-start; align-items: center; gap: 10px; margin-top: 16px; padding: 8px 14px 8px 8px; border-radius: 999px; background: rgba(75, 46, 242, .08); color: var(--v29-accent) !important; font-size: 15px; text-decoration: none; transition: background-color .25s, color .25s; }
.gs29-watch .v29-i { width: 26px; height: 26px; padding: 7px; border-radius: 50%; background: var(--v29-accent); color: #fff; }
.gs29-watch:hover { background: var(--v29-accent); color: #fff !important; }
.gs29-watch__time { color: var(--v29-soft); font-variant-numeric: tabular-nums; }
.gs29-watch:hover .gs29-watch__time { color: rgba(255, 255, 255, .8); }

/* ---------- 06 Mise en service ---------- */
.gs29-setup__body { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: start; gap: clamp(32px, 5vw, 80px); margin-top: 56px; }
.gs29-setup__media { position: sticky; top: 110px; }
.gs29-timeline { position: relative; margin: 0; padding: 0; list-style: none; }
.gs29-timeline::before { content: ""; position: absolute; left: 7px; top: 22px; bottom: 22px; width: 2px; border-radius: 2px; background: linear-gradient(180deg, var(--v29-accent), rgba(75, 46, 242, .2)); transform-origin: 50% 0; transition: transform 2.4s var(--v29-ease-io) .3s; }
.gs29-timeline__link { display: grid; grid-template-columns: 16px 46px minmax(0, 1fr) 26px; align-items: start; gap: 14px; padding: 14px 10px 14px 0; border-radius: 10px; color: var(--v29-ink) !important; text-decoration: none; transition: background-color .2s; }
.gs29-timeline__link:hover { background: rgba(75, 46, 242, .05); }
.gs29-timeline__dot { position: relative; z-index: 1; width: 16px; height: 16px; margin-top: 4px; border-radius: 50%; border: 2px solid var(--v29-accent); background: var(--v29-accent); box-shadow: 0 0 0 4px var(--v29-cream); transition: background-color .35s calc(var(--i) * .26s + .5s), transform .45s cubic-bezier(.3, 1.6, .5, 1) calc(var(--i) * .26s + .5s); }
.gs29-timeline__time { padding-top: 2px; color: var(--v29-soft); font-size: 14px; font-variant-numeric: tabular-nums; }
.gs29-timeline__body { display: grid; gap: 4px; }
.gs29-timeline__title { font-size: 19px; line-height: 1.3; }
.gs29-timeline__text { color: var(--v29-muted); font-size: 15px; line-height: 1.5; }
.gs29-timeline__link > .v29-i { width: 26px; height: 26px; padding: 7px; border-radius: 50%; background: rgba(75, 46, 242, .08); color: var(--v29-accent); transition: background-color .2s, color .2s; }
.gs29-timeline__link:hover > .v29-i { background: var(--v29-accent); color: #fff; }
.v29-js .gs29-setup:not(.is-in) .gs29-timeline::before { transform: scaleY(0); }
.v29-js .gs29-setup:not(.is-in) .gs29-timeline__dot { background: var(--v29-paper); transform: scale(.6); }

/* ---------- FAQ et appel final ---------- */
.gs29-faq .v29s-faq__item p:has(+ .gs29-faq__link) { padding-bottom: 14px; }
.gs29-faq .v29s-faq__item .gs29-faq__link { padding: 0 0 26px; }
.gs29-final__forge a { font-weight: 500; white-space: nowrap; }

/* ---------- Adaptatif ---------- */
@media (max-width: 1180px) {
  .gs29-map { grid-template-columns: minmax(0, 1fr) 34px auto 34px minmax(0, 1fr); padding: 26px; }
  .gs29-map__core { width: 140px; }
  .gs29-theatre { grid-template-columns: 1fr; }
  .gs29-chapters ol { max-height: none; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 16px; }
}
@media (max-width: 960px) {
  .gs29-paths__grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 860px) {
  .gs29-hero > .v29-plate img { object-position: 64% 38%; }
  .gs29-split, .gs29-uses__head, .gs29-guide__head { grid-template-columns: minmax(0, 1fr); gap: 22px; }
  .gs29-paths__grid { margin-top: 40px; gap: 22px; }
  .gs29-path__body { padding: 26px 22px 28px; }
  .gs29-ws, .gs29-forge { padding: 16px; }
  .gs29-ws__tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gs29-path__actions .v29-btn { flex: 1 1 100%; }
  .gs29-map { grid-template-columns: minmax(0, 1fr); justify-items: stretch; margin-top: 40px; padding: 20px; }
  .gs29-map__core { justify-self: center; width: 150px; }
  .gs29-map__wire { justify-self: center; width: 2px; height: 40px; }
  .gs29-map__wire--open { transform-origin: 50% 100%; }
  .gs29-map__wire--inside { transform-origin: 50% 0; }
  .gs29-map__wire--inside::after, .gs29-map__wire--open::after { inset: 0 -2px; background-image: linear-gradient(180deg, transparent 0, var(--v29-accent) 50%, transparent 100%); background-size: 100% 36%; background-position: 0 -60%; }
  .gs29-map__wire--open::after { background-position: 0 160%; }
  .v29-js .gs29-uses.is-in .gs29-map__wire--inside::after { animation-name: gs29-pulse-down; }
  .v29-js .gs29-uses.is-in .gs29-map__wire--open::after { animation-name: gs29-pulse-up; }
  .v29-js .gs29-uses:not(.is-in) .gs29-map__wire { transform: scaleY(0); }
  .v29-js .gs29-uses:not(.is-in) .gs29-map__side--open, .v29-js .gs29-uses:not(.is-in) .gs29-map__side--inside { transform: translateY(14px); }
  .gs29-matrix table { font-size: 15px; }
  .gs29-matrix th, .gs29-matrix td { padding: 14px 6px; }
  .gs29-matrix thead th { font-size: 13px; }
  .gs29-matrix th:first-child { width: 42%; }
  .gs29-theatre { margin-top: 36px; }
  .gs29-chapters ol { grid-template-columns: minmax(0, 1fr); }
  .gs29-needs { grid-template-columns: minmax(0, 1fr); gap: 16px; margin-top: 36px; }
  .gs29-rail { margin-top: 36px; }
  .gs29-rail__node { padding-right: 6px; font-size: 12.5px; }
  .gs29-rail__node b { width: 34px; height: 34px; font-size: 14px; }
  .gs29-rail::before, .gs29-rail__fill { top: 16px; left: 17px; right: calc(25% - 17px); }
  .gs29-step-grid { grid-template-columns: minmax(0, 1fr); gap: 44px; margin-top: 32px; }
  .gs29-setup__body { grid-template-columns: minmax(0, 1fr); margin-top: 36px; }
  .gs29-setup__media { position: static; }
  .gs29-timeline__link { grid-template-columns: 16px 42px minmax(0, 1fr) 26px; gap: 10px; }
}
@keyframes gs29-pulse-up { 0% { opacity: 0; background-position: 0 160%; } 15%, 85% { opacity: 1; } 100% { opacity: 0; background-position: 0 -60%; } }
@keyframes gs29-pulse-down { 0% { opacity: 0; background-position: 0 -60%; } 15%, 85% { opacity: 1; } 100% { opacity: 0; background-position: 0 160%; } }

@media (prefers-reduced-motion: reduce) {
  .v29-js .gs29-path--manage:not(.is-in) .gs29-ws__tiles li, .v29-js .gs29-path--manage:not(.is-in) .gs29-ws__ready,
  .v29-js .gs29-uses:not(.is-in) .gs29-map__core, .v29-js .gs29-uses:not(.is-in) .gs29-map__side--open, .v29-js .gs29-uses:not(.is-in) .gs29-map__side--inside,
  .v29-js .gs29-uses:not(.is-in) .gs29-map__items li, .v29-js .gs29-uses:not(.is-in) .gs29-map__module li,
  .v29-js .gs29-uses:not(.is-in) .gs29-yes, .v29-js .gs29-uses:not(.is-in) .gs29-no,
  .v29-js .gs29-prepare:not(.is-in) .gs29-need__tick, .v29-js .gs29-prepare:not(.is-in) .gs29-meter__label { opacity: 1; transform: none; }
  .v29-js .gs29-path--manage:not(.is-in) .gs29-ws__meter > span, .v29-js .gs29-uses:not(.is-in) .gs29-map__wire,
  .v29-js .gs29-prepare:not(.is-in) .gs29-meter__track > span, .v29-js .gs29-steps:not(.is-in) .gs29-rail__fill,
  .v29-js .gs29-setup:not(.is-in) .gs29-timeline::before { transform: none; }
  .v29-js .gs29-steps:not(.is-in) .gs29-rail__node b, .v29-js .gs29-setup:not(.is-in) .gs29-timeline__dot { background: var(--v29-accent); color: #fff; transform: none; }
  .gs29-forge__spinner { animation: none; }
}
