/* Pages intérieures v2 (scripts/pages-v2.mjs, assets/js/v2-pages.js) — équipe Pages, docs/DESIGN-V2.md étape 2.
   Chargé seulement en v2, sur les pages du gabarit generic (hors outils, catalogues et glossaire : assets/css/v2-tools.css).
   Rythme : en-tête nuit (plan de Fès + dessin) · « En bref » (prestations) · sections claires alternées papier / sable · frise et appel final de nuit. */
.v2 { --v2-body: #2f3250; --v2-card: #fff; --v2-hair: rgba(25, 27, 51, .14); }
:root.v2[data-theme="dark"] { --v2-body: #d6d5ea; --v2-card: #181b44; --v2-hair: rgba(233, 230, 255, .16); }
@media (prefers-color-scheme: dark) { :root.v2:not([data-theme="light"]) { --v2-body: #d6d5ea; --v2-card: #181b44; --v2-hair: rgba(233, 230, 255, .16); } }
.v2.a11y-hc { --v2-body: #14152a; }
.v2.a11y-hc[data-theme="dark"] { --v2-body: #f4f3fb; }
@media (prefers-color-scheme: dark) { .v2.a11y-hc:not([data-theme="light"]) { --v2-body: #f4f3fb; } }

/* ── En-tête : nuit, plan de Fès estompé (chargé par JS), grande illustration dans un cadre de plan ── */
.v2-head { --s: .9; --ax: 74%; --ay: 46%; padding-block: clamp(7.4rem, 6.5rem + 2.5vw, 9rem) clamp(2.6rem, 2rem + 2vw, 4rem);
  background: radial-gradient(90% 120% at 78% 20%, #191c50 0%, #0b0d22 62%); }
[dir="rtl"] .v2-head { --ax: 26%; background: radial-gradient(90% 120% at 22% 20%, #191c50 0%, #0b0d22 62%); }
.v2-head-plan { position: absolute; inset: 0; z-index: -2; overflow: hidden; pointer-events: none; }
.v2-head-plan svg { position: absolute; max-width: none; width: calc(3000px * var(--s)); height: calc(2300px * var(--s));
  left: calc(var(--ax) - (1500px + var(--mx, 0px)) * var(--s)); top: calc(var(--ay) - (1000px + var(--my, 0px)) * var(--s)); opacity: 0; transition: opacity 1.4s var(--ease); }
.v2-head-plan.on svg { opacity: .8; }
/* Voile sous le texte (jamais par-dessus) */
.v2-head::before { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: linear-gradient(to bottom, rgba(11, 13, 34, .7), transparent 22%, transparent 70%, rgba(11, 13, 34, .85)),
    linear-gradient(to right, rgba(11, 13, 34, .96) 0%, rgba(11, 13, 34, .82) 42%, rgba(11, 13, 34, .2) 70%, rgba(11, 13, 34, .45) 100%); }
[dir="rtl"] .v2-head::before { background: linear-gradient(to bottom, rgba(11, 13, 34, .7), transparent 22%, transparent 70%, rgba(11, 13, 34, .85)),
    linear-gradient(to left, rgba(11, 13, 34, .96) 0%, rgba(11, 13, 34, .82) 42%, rgba(11, 13, 34, .2) 70%, rgba(11, 13, 34, .45) 100%); }
.v2-head-in { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2rem clamp(2rem, 5vw, 5rem); align-items: center; }
.v2-head-txt { min-width: 0; max-width: 50rem; }
.v2-head .crumbs { margin-bottom: 1.6rem; color: rgba(236, 234, 255, .72); font-size: .86rem; flex-wrap: wrap; }
.v2-head .crumbs a { text-decoration: underline; text-decoration-color: rgba(236, 234, 255, .3); text-underline-offset: .2em; }
.v2-head h1 { font-size: clamp(2.3rem, 1.5rem + 3vw, 4.1rem); line-height: 1.05; letter-spacing: -.035em; font-weight: 790; max-width: 18ch; margin-bottom: .45em; overflow-wrap: break-word; hyphens: auto; }
[dir="rtl"] .v2-head h1 { font-size: clamp(2.1rem, 1.4rem + 2.8vw, 3.7rem); line-height: 1.3; letter-spacing: 0; }
.v2-head h1 em { font-style: normal; background: linear-gradient(90deg, var(--copper-l), #f2c79d); -webkit-background-clip: text; background-clip: text; color: transparent; }
.v2-head .lead { color: rgba(236, 234, 255, .86); font-size: clamp(1.06rem, 1rem + .3vw, 1.2rem); max-width: 44rem; margin-bottom: 0; }
.v2-head .lead a { color: #f2c79d; }
/* Cadre du dessin : feuille de plan avec repères d'angle */
.v2-head-fig { width: clamp(13rem, 9rem + 9vw, 19rem); }
.v2-head-sheet { position: relative; aspect-ratio: 1; display: grid; place-items: center; border-radius: 22px; color: #c9c6f4; --illu-acc: var(--copper-l);
  background: radial-gradient(70% 60% at 65% 25%, rgba(224, 153, 92, .16), transparent 65%), rgba(255, 255, 255, .03); box-shadow: inset 0 0 0 1px rgba(201, 198, 244, .16);
  -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
.v2-head-sheet::before { content: ""; position: absolute; inset: 10px; border-radius: 14px; opacity: .4;
  background-image: linear-gradient(rgba(201, 198, 244, .12) 1px, transparent 1px), linear-gradient(90deg, rgba(201, 198, 244, .12) 1px, transparent 1px); background-size: 24px 24px; background-position: center; }
.v2-head-sheet .illu { position: relative; width: 86%; height: auto; }
.v2-head-k { position: absolute; width: 14px; height: 14px; border: 0 solid var(--copper-l); }
.v2-head-k.k1 { top: -1px; left: -1px; border-width: 2px 0 0 2px; border-top-left-radius: 8px; } .v2-head-k.k2 { top: -1px; right: -1px; border-width: 2px 2px 0 0; border-top-right-radius: 8px; }
.v2-head-k.k3 { bottom: -1px; left: -1px; border-width: 0 0 2px 2px; border-bottom-left-radius: 8px; } .v2-head-k.k4 { bottom: -1px; right: -1px; border-width: 0 2px 2px 0; border-bottom-right-radius: 8px; }
.v2-head-hud { display: block; margin-top: .7rem; text-align: center; font-family: var(--mono); font-size: .68rem; letter-spacing: .14em; text-transform: uppercase; color: rgba(236, 234, 255, .62); }
.v2-head-osm { position: relative; margin: 1.6rem auto 0; font-size: .74rem; color: rgba(236, 234, 255, .66); text-align: end; }
.v2-head-osm a { color: #f2c79d; }
/* Le dessin se trace à l'apparition (état final = état sans animation) */
.v2-head-fig.anim .illu [pathLength], .v2-svc-art.anim .illu [pathLength] { stroke-dasharray: 1; stroke-dashoffset: 1; }
.v2-head-fig.anim.in .illu [pathLength], .v2-svc-art.anim.in .illu [pathLength] { stroke-dashoffset: 0; transition: stroke-dashoffset 1.8s var(--ease) .15s; }
.v2-head-fig.anim .illu .dash, .v2-head-fig.anim .illu .tint, .v2-head-fig.anim .illu .dot { opacity: 0; }
.v2-head-fig.anim.in .illu .dash, .v2-head-fig.anim.in .illu .tint, .v2-head-fig.anim.in .illu .dot { opacity: 1; transition: opacity 1s 1.2s; }
.v2-head-fig.anim .illu .dash { opacity: 0; } .v2-head-fig.anim.in .illu g[opacity] .dash { opacity: 1; }
.v2-head-fig.done .illu [pathLength], .v2-svc-art.done .illu [pathLength] { stroke-dasharray: none; transition: none; }
/* Une frise de nuit juste sous l'en-tête : fond légèrement plus clair pour bien séparer les deux */
.v2-head + .v2-b-steps, .v2-head + .v2-b-cta { background: #13163f; border-top: 1px solid rgba(201, 198, 244, .12); }
/* Pages juridiques : en-tête compact, sans dessin */
.v2-head-legal { padding-bottom: 2.4rem; }
.v2-head-legal h1 { font-size: clamp(2.1rem, 1.5rem + 2.2vw, 3.3rem); }
/* Prestations : l'encadré « En bref » vient chevaucher le bas de l'en-tête */
.v2-head-service { padding-bottom: clamp(5.5rem, 4.5rem + 3vw, 7.5rem); }
@media (max-width: 900px) {
  .v2-head, [dir="rtl"] .v2-head { --s: .62; --ax: 62%; --ay: 120px; }
  .v2-head::before, [dir="rtl"] .v2-head::before { background: linear-gradient(to bottom, rgba(11, 13, 34, .55) 0, rgba(11, 13, 34, .35) 120px, rgba(11, 13, 34, .9) 280px, rgba(11, 13, 34, .94) 100%); }
  .v2-head-in { grid-template-columns: minmax(0, 1fr); }
  /* Petit dessin en haut, au bout de la ligne du fil d'Ariane : il ne passe jamais sur le texte */
  .v2-head-fig { position: absolute; inset-block-start: -.4rem; inset-inline-end: 0; width: 84px; }
  .v2-head-sheet { border-radius: 14px; }
  .v2-head-sheet::before, .v2-head-k, .v2-head-hud { display: none; }
  .v2-head-art .crumbs, .v2-head-art .v2-head-txt > .eyebrow { padding-inline-end: 96px; }
  .v2-head-art .v2-head-txt > .eyebrow { min-height: 2.6rem; align-items: flex-end; }
  .v2-head .crumbs { margin-bottom: 1rem; }
  .v2-head-osm { margin-top: 1rem; font-size: .7rem; }
}
@media (max-width: 480px) {
  .v2-head { padding-top: 6.4rem; }
  .v2-head h1 { font-size: min(2.45rem, 10.6vw); }
  [dir="rtl"] .v2-head h1 { font-size: min(2.2rem, 10vw); }
  .v2-head .lead { font-size: 1rem; line-height: 1.6; }
  .v2-head-service { padding-bottom: 5rem; }
}

/* ── « En bref » (prestations) ── */
.v2-brief { position: relative; z-index: 2; margin-top: clamp(-6rem, -4rem - 2vw, -3.5rem); background: linear-gradient(to bottom, transparent clamp(3.5rem, 4rem + 2vw, 6rem), var(--v2-paper) 0); }
.v2-brief-card { background: var(--v2-card); color: var(--text); border-radius: 26px; padding: clamp(1.4rem, 1rem + 2vw, 2.4rem); border: 1px solid var(--v2-hair);
  box-shadow: 0 40px 80px -40px rgba(11, 13, 34, .45), 0 2px 0 rgba(11, 13, 34, .03); }
.v2-brief-t { display: flex; align-items: center; gap: .7rem; margin: 0 0 1.4rem; font-family: var(--mono); font-size: .8rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--copper-ink); }
[dir="rtl"] .v2-brief-t { font-family: var(--sans); letter-spacing: 0; font-size: 1.05rem; font-weight: 700; }
.v2 main .v2-brief-t { font-size: .8rem; } .v2[dir="rtl"] main .v2-brief-t { font-size: 1.05rem; }
.v2-brief-ic { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; background: var(--v2-sand); color: var(--n-text); --illu-acc: var(--copper); flex: none; }
.v2-brief-ic svg { width: 30px; height: 30px; }
.v2-brief-g { display: grid; grid-template-columns: 1fr 1fr 1.15fr; grid-template-rows: auto 1fr; gap: 0; }
.v2-brief-c:nth-child(2), .v2-brief-c:nth-child(3) { grid-row: 1 / 3; }
.v2-brief-c:nth-child(2) { grid-column: 2; } .v2-brief-c:nth-child(3) { grid-column: 3; }
.v2-brief-c { padding-inline: clamp(1rem, 2vw, 1.8rem); border-inline-start: 1px solid var(--v2-hair); min-width: 0; display: flex; flex-direction: column; align-items: flex-start; }
.v2-brief-c:first-child { padding-inline-start: 0; border: 0; }
.v2-brief-c:last-child { padding-inline-end: 0; }
.v2-brief-c h3 { font-size: 1.08rem; margin: 0 0 .7rem; color: var(--n-text); letter-spacing: -.01em; }
.v2-brief-c > p { font-size: 1.02rem; line-height: 1.6; color: var(--v2-body); margin: 0; }
.v2-brief-l { list-style: none; margin: 0 0 .8rem; padding: 0; display: grid; gap: .35rem; }
.v2-brief-l li { display: flex; gap: .55rem; font-size: 1rem; line-height: 1.45; color: var(--v2-body); }
.v2-brief-l svg, .v2-checks svg { flex: none; width: 1.1rem; height: 1.1rem; margin-top: .2em; color: var(--g-text); }
.v2-chips { list-style: none; margin: 0 0 .8rem; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.v2-chips li { font-size: .9rem; line-height: 1.35; padding: .35rem .75rem; border-radius: 999px; background: var(--v2-sand); color: var(--text); }
.v2-brief-n { margin: .1rem 0 .8rem; font-size: .9rem; line-height: 1.5; color: var(--muted); }
.v2-brief-c .v2-link { margin-top: auto; }
.v2-brief-cta { grid-column: 1; grid-row: 2; align-self: end; margin: 1.4rem 0 0; padding-inline-end: clamp(1rem, 2vw, 1.8rem); }
@media (max-width: 700px) {
  .v2-brief-card { border-radius: 22px; padding: 1.2rem 1.2rem 1.3rem; }
  .v2-brief-t { margin-bottom: 1rem; }
  .v2-brief-c h3 { font-size: 1rem; margin-bottom: .5rem; }
  .v2-brief-c > p { font-size: .98rem; line-height: 1.55; }
  .v2-brief-l { display: flex; flex-wrap: wrap; gap: .3rem 1rem; }
  .v2-brief-l li { font-size: .97rem; }
  .v2-chips { gap: .3rem; } .v2-chips li { font-size: .85rem; padding: .28rem .65rem; }
  .v2-brief-n { font-size: .88rem; }
  .v2 .v2-brief-c .v2-link { font-size: .95rem; }
  .qbar ~ * .v2-brief-cta, .v2-brief-cta { display: none !important; }   /* la barre d'actions du bas propose déjà le devis */
}
@media (max-width: 980px) {
  .v2-brief-g { grid-template-columns: minmax(0, 1fr); gap: 1.3rem; }
  .v2-brief-c, .v2-brief-c:first-child { padding: 0; border: 0; }
  .v2-brief-c + .v2-brief-c { padding-top: 1.3rem; border-top: 1px solid var(--v2-hair); }
  .v2-brief-c:nth-child(n), .v2-brief-cta { grid-column: auto; grid-row: auto; }
  .v2-brief-cta { margin: .2rem 0 0; padding: 0; display: flex; } .v2-brief-cta .btn { flex: 1; justify-content: center; }
}

/* ── Sections : alternance franche papier / sable / nuit ── */
.v2-t-paper { background: var(--v2-paper); }
.v2-t-sand { background: var(--v2-sand); }
.v2-t-night { background: var(--v2-night); color: #eeecff; }
.v2-t-night .eyebrow { color: var(--copper-l); }
.v2 .v2-b.sec { padding-block: clamp(4.2rem, 3rem + 4vw, 7rem); }
.v2-bh { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1rem 3rem; margin-bottom: clamp(1.8rem, 1.4rem + 1.5vw, 2.8rem); }
.v2-bh > div:first-child { max-width: 44rem; min-width: 0; }
.v2-bh h2 { margin: 0; }
.v2-bh > p, .v2-bh > div + div { margin: 0; max-width: 32rem; color: var(--v2-body); }
.v2-bh > div + div p { margin: 0; color: var(--v2-body); }
.v2-t-night .v2-bh > p, .v2-t-night .v2-bh > div + div p { color: rgba(236, 234, 255, .82); }
.v2-bh a, .v2-split-t a, .v2-card a:not(.more), .v2-f dd a, .v2-faq a, .v2-prose a, .v2-need a, .v2-tl a { color: var(--g-text); text-underline-offset: 3px; }
.v2-t-night .v2-bh a { color: #f2c79d; }
.v2-go, .v2-link { display: inline-flex; align-items: center; gap: .45rem; font-weight: 700; text-decoration: none; }
.v2-go { color: var(--g-text); margin-top: auto; }
.v2-link { color: var(--copper-ink); }
.v2-link:hover { text-decoration: underline; text-underline-offset: .2em; }
.v2-go svg, .v2-link svg { width: 17px; height: 17px; flex: none; transition: transform .3s var(--ease); }
[dir="rtl"] .v2-go svg, [dir="rtl"] .v2-link svg { transform: scaleX(-1); }
a:hover > .v2-go svg, .v2-go:hover svg { transform: translateX(3px); } [dir="rtl"] a:hover > .v2-go svg, [dir="rtl"] .v2-go:hover svg { transform: scaleX(-1) translateX(3px); }
.v2-num { font-family: var(--mono); font-size: .74rem; letter-spacing: .06em; color: var(--copper-ink); }
.v2-checks { list-style: none; margin: 0 0 1.2em; padding: 0; display: grid; gap: .55rem; }
.v2-checks li { display: flex; gap: .65rem; color: var(--v2-body); }
.v2-checks li > span { min-width: 0; }

/* Texte en deux colonnes : titre collant à gauche, texte à droite */
.v2-split { display: grid; grid-template-columns: minmax(0, .82fr) minmax(0, 1.18fr); gap: 2rem clamp(2.5rem, 6vw, 6rem); align-items: start; }
.v2-split-h { position: sticky; top: 110px; }
.v2-split-h h2 { font-size: clamp(1.75rem, 1.2rem + 1.9vw, 2.75rem); margin-bottom: .5em; }
.v2-split-h > p { color: var(--v2-body); }
.v2-split-t { max-width: 68ch; }
.v2-split-t p, .v2-prose p { color: var(--v2-body); }
.v2-split-t strong, .v2-prose strong { color: var(--text); }
.v2-note { position: relative; background: var(--v2-card); border: 1px solid var(--v2-hair); border-inline-start: 4px solid var(--copper); border-radius: 14px; padding: 1.1rem 1.3rem; font-size: 1rem; color: var(--v2-body); margin-top: 1.4rem; }
[dir="rtl"] .v2-note { border-radius: 14px; }
.v2-t-sand .v2-note { background: var(--v2-paper); }
@media (max-width: 900px) { .v2-split { grid-template-columns: minmax(0, 1fr); gap: .4rem; } .v2-split-h { position: static; } }

/* Cartes : grille (mosaïque pour deux colonnes) sur grand écran, carrousel sur téléphone */
.v2-card { position: relative; background: var(--v2-card); border: 1px solid var(--v2-hair); border-radius: 22px; padding: clamp(1.4rem, 1.1rem + 1vw, 2rem); display: flex; flex-direction: column; min-width: 0; height: 100%;
  transition: transform .35s var(--ease), box-shadow .35s, border-color .35s; }
.v2-t-sand .v2-card { background: var(--v2-paper); }
:root.v2[data-theme="dark"] .v2-t-sand .v2-card { background: var(--v2-card); }
@media (prefers-color-scheme: dark) { :root.v2:not([data-theme="light"]) .v2-t-sand .v2-card { background: var(--v2-card); } }
.v2-card .v2-num { position: absolute; top: 1.2rem; inset-inline-end: 1.3rem; }
.v2-card .tag { padding-inline-end: 2.4rem; font-size: .74rem; }
[dir="rtl"] .v2-card .tag { font-size: .95rem; }
.v2-card h3, .v2-card h2.ct { font-size: clamp(1.2rem, 1.1rem + .35vw, 1.4rem); line-height: 1.25; margin: 0 0 .55rem; padding-inline-end: 2rem; }
.v2-card p { font-size: 1.04rem; line-height: 1.62; color: var(--v2-body); }
.v2-card p:last-of-type { margin-bottom: 0; }
.v2-card .v2-checks { margin: .3rem 0 0; font-size: 1rem; line-height: 1.5; gap: .45rem; }
.v2-card .more { padding-top: 1.2rem; }
.v2-card-ic { display: block; margin-bottom: 1rem; } .v2-card-ic .ic { width: 52px; height: 52px; color: var(--n-text); margin: 0; } .v2-card-ic .ic .acc { color: var(--copper); }
.v2-card-il { width: 56px; height: 56px; border-radius: 16px; display: grid; place-items: center; background: var(--v2-sand); color: var(--n-text); --illu-acc: var(--copper); }
.v2-t-sand .v2-card-il { background: var(--v2-card); }
:root.v2[data-theme="dark"] .v2-card-il { --illu-acc: var(--copper-l); background: rgba(255, 255, 255, .06); }
@media (prefers-color-scheme: dark) { :root.v2:not([data-theme="light"]) .v2-card-il { --illu-acc: var(--copper-l); background: rgba(255, 255, 255, .06); } }
.v2-card-il svg { width: 40px; height: 40px; }
.v2-card-go:hover { transform: translateY(-3px); border-color: rgba(156, 90, 42, .45); box-shadow: 0 26px 50px -32px rgba(21, 17, 90, .45); }
.v2-card[id] { scroll-margin-top: 100px; }
.v2-grid { display: grid; gap: 1.2rem; }
.v2-grid.v2-n2, .v2-grid.v2-bento { grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); }
.v2-grid.v2-one { grid-template-columns: minmax(0, 1fr); max-width: 52rem; }
@media (min-width: 701px) {
  .v2-pcar .v2-car-vp { overflow: visible; border-radius: 0; }
  .v2-pcar .v2-car-list { grid-auto-flow: row; grid-auto-columns: auto; gap: 1.2rem; padding: 0; }
  .v2-pcar.v2-c3 .v2-car-list, .v2-pcar.v2-svcs .v2-car-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .v2-pcar.v2-c2 .v2-car-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .v2-pcar.v2-mini .v2-car-list { grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: .9rem; }
  /* Mosaïque : largeurs alternées 3/2 puis 2/3 */
  .v2-pcar.v2-bento .v2-car-list { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .v2-bento .v2-car-list > li:nth-child(4n + 1), .v2-bento .v2-car-list > li:nth-child(4n) { grid-column: span 3; }
  .v2-bento .v2-car-list > li:nth-child(4n + 2), .v2-bento .v2-car-list > li:nth-child(4n + 3) { grid-column: span 2; }
  .v2-bento .v2-car-list > li:last-child:nth-child(odd) { grid-column: 1 / -1; }
  .v2-bento .v2-car-list > li:nth-child(4n + 1) .v2-card { background: var(--v2-night); color: #eeecff; border-color: transparent; }
  .v2-bento .v2-car-list > li:nth-child(4n + 1) .v2-card p, .v2-bento .v2-car-list > li:nth-child(4n + 1) .v2-checks li { color: rgba(236, 234, 255, .84); }
  .v2-bento .v2-car-list > li:nth-child(4n + 1) .v2-card .tag, .v2-bento .v2-car-list > li:nth-child(4n + 1) .v2-num { color: var(--copper-l); }
  .v2-bento .v2-car-list > li:nth-child(4n + 1) .v2-card .v2-go, .v2-bento .v2-car-list > li:nth-child(4n + 1) .v2-checks svg { color: #8fe196; }
  .v2-bento .v2-car-list > li:nth-child(4n + 1) .v2-card a:not(.more) { color: #f2c79d; }
  .v2-bento .v2-car-list > li:nth-child(4n + 1) .v2-card-ic .ic { color: #c9c6f4; }
  .v2-bento .v2-car-list > li:nth-child(4n + 1) .v2-card-ic .ic .acc { color: var(--copper-l); }
}
@media (min-width: 701px) and (max-width: 980px) {
  .v2-pcar.v2-c3 .v2-car-list, .v2-pcar.v2-svcs .v2-car-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .v2-pcar.v2-bento .v2-car-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .v2-bento .v2-car-list > li:nth-child(n) { grid-column: auto; }
  .v2-bento .v2-car-list > li:last-child:nth-child(odd) { grid-column: 1 / -1; }
}
@media (max-width: 700px) {
  .v2-pcar { --car-wm: 84%; }
  .v2-pcar .v2-car-list { padding-bottom: .2rem; }
  .v2-pcar .v2-car-nav { margin-top: .8rem; }
  .v2-card { padding: 1.3rem 1.3rem 1.4rem; }
  .v2-card p { font-size: 1rem; line-height: 1.58; }
}
/* Petites fiches nombreuses (ex. l'équipe) */
.v2-mini .v2-card { padding: 1.1rem 1.25rem 1.2rem; border-radius: 18px; }
.v2-mini .v2-card h3 { font-size: 1.15rem; margin-bottom: .25rem; }
.v2-mini .v2-card p { font-size: .98rem; }
.v2-mini .v2-card .v2-num { top: 1rem; }
@media (max-width: 700px) { .v2-mini { --car-wm: 62%; } }
/* Chiffres (cartes sans titre de section, ex. Références) */
.v2-kpis { grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); }
.v2-kpis .v2-card { border: 0; border-top: 3px solid var(--copper); border-radius: 4px 4px 20px 20px; }
.v2-kpis .v2-card h2.ct { font-size: clamp(1.8rem, 1.3rem + 1.8vw, 2.6rem); letter-spacing: -.03em; line-height: 1.05; color: var(--n-text); margin-bottom: .6rem; padding: 0; }
[dir="rtl"] .v2-kpis .v2-card h2.ct { letter-spacing: 0; line-height: 1.25; }

/* ── Frise des étapes (nuit) ── */
.v2-b-steps .steps h3 { font-size: 1.14rem; }
.v2-b-steps .steps p { font-size: 1rem; line-height: 1.6; color: rgba(236, 234, 255, .8); }
.v2-b-steps .steps p a { color: #f2c79d; }
.v2-b-steps .v2-steps.many { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.2rem; }
.v2-b-steps .v2-steps.many li { padding: 1.4rem 1.4rem 1.5rem; padding-inline-start: calc(45px + 2.2rem); border-radius: 20px; background: rgba(255, 255, 255, .04); border: 1px solid rgba(201, 198, 244, .12); }
.v2-b-steps .v2-steps.many li::before { top: 1.3rem; inset-inline-start: 1.3rem; }
.v2-b-steps .v2-steps.many li::after { top: 1.3rem !important; inset-inline-start: 1.3rem !important; }
.v2-b-steps { overflow: hidden; }
.v2-b-steps::before { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .5;
  background-image: linear-gradient(rgba(201, 198, 244, .05) 1px, transparent 1px), linear-gradient(90deg, rgba(201, 198, 244, .05) 1px, transparent 1px); background-size: 40px 40px;
  -webkit-mask-image: radial-gradient(80% 70% at 80% 0%, #000, transparent 70%); mask-image: radial-gradient(80% 70% at 80% 0%, #000, transparent 70%); }
.v2-b-steps > .wrap { position: relative; }
.v2-steps-vp:focus-visible { outline: 2px solid var(--copper-l); outline-offset: 6px; border-radius: 8px; }
@media (max-width: 980px) and (min-width: 701px) { .v2-b-steps .v2-steps.many { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 700px) {
  .v2-steps-vp { overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; margin-inline: -1.25rem; padding: 0 1.25rem .5rem; scroll-padding-inline: 1.25rem; }
  .v2-steps-vp::-webkit-scrollbar { display: none; }
  .v2-b-steps .steps, .v2-b-steps .steps.fx, .v2-b-steps .v2-steps.many { display: grid; grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 78%; gap: 1.1rem; }
  .v2-b-steps .steps li, .v2-b-steps .v2-steps.many li { padding: 4.2rem 0 0; scroll-snap-align: start; background: none; border: 0; border-radius: 0; }
  .v2-b-steps .v2-steps.many li::before, .v2-b-steps .v2-steps.many li::after { top: 0 !important; inset-inline-start: 0 !important; }
  .v2-b-steps .steps p { font-size: .95rem; line-height: 1.55; }
}

/* ── Fiche (livrables, identité du cabinet, mentions) : tableau de cartouche ── */
.v2-fiche { margin: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); gap: 1px; background: var(--v2-hair); border: 1px solid var(--v2-hair); border-radius: 20px; overflow: hidden; }
.v2-f { background: var(--v2-card); padding: 1.25rem 1.4rem 1.35rem; min-width: 0; }
.v2-t-sand .v2-f { background: var(--v2-paper); }
:root.v2[data-theme="dark"] .v2-t-sand .v2-f { background: var(--v2-card); }
@media (prefers-color-scheme: dark) { :root.v2:not([data-theme="light"]) .v2-t-sand .v2-f { background: var(--v2-card); } }
.v2-f dt { display: flex; align-items: baseline; gap: .6rem; font-weight: 750; font-size: 1.05rem; color: var(--text); margin-bottom: .35rem; }
.v2-f-n { font-family: var(--mono); font-size: .72rem; font-weight: 500; color: var(--copper-ink); }
.v2-f dd { margin: 0; font-size: 1rem; line-height: 1.55; color: var(--v2-body); overflow-wrap: break-word; }
.v2-fn12 .v2-f dd, .v2-fn9 .v2-f dd, .v2-fn15 .v2-f dd { font-size: .98rem; }
.v2-need { margin: 1rem 0 0; border-radius: 20px; padding: 1.3rem 1.5rem; background: color-mix(in srgb, var(--copper) 10%, var(--v2-card)); border: 1px dashed color-mix(in srgb, var(--copper) 55%, transparent); }
.v2-need div { display: grid; grid-template-columns: minmax(0, 14rem) minmax(0, 1fr); gap: .4rem 2rem; }
.v2-need dt { font-weight: 750; font-size: 1.05rem; color: var(--copper-ink); }
.v2-need dd { margin: 0; color: var(--text); line-height: 1.6; }
@media (max-width: 700px) { .v2-need div { grid-template-columns: minmax(0, 1fr); } .v2-f { padding: 1rem 1.15rem 1.1rem; } }

/* ── Questions fréquentes : accordéon en cartes ── */
.v2-faq { display: grid; gap: .7rem; }
.v2 .v2-faq details { border: 1px solid var(--v2-hair); border-radius: 16px; background: var(--v2-card); padding: 0; transition: border-color .3s, box-shadow .3s; }
.v2-t-sand .v2-faq details { background: var(--v2-paper); }
:root.v2[data-theme="dark"] .v2-t-sand .v2-faq details { background: var(--v2-card); }
@media (prefers-color-scheme: dark) { :root.v2:not([data-theme="light"]) .v2-t-sand .v2-faq details { background: var(--v2-card); } }
.v2 .v2-faq details:last-child { border-bottom: 1px solid var(--v2-hair); }
.v2 .v2-faq details[open] { border-color: color-mix(in srgb, var(--copper) 45%, transparent); box-shadow: 0 20px 44px -34px rgba(21, 17, 90, .5); }
.v2 .v2-faq summary { padding: 1.05rem 1.25rem; align-items: center; font-size: 1.06rem; line-height: 1.4; border-radius: 16px; }
.v2 .v2-faq summary::after { content: none; }
.v2-faq summary > span { min-width: 0; }
.v2-faq summary i { position: relative; flex: none; width: 30px; height: 30px; border-radius: 50%; background: var(--v2-sand); }
.v2-faq summary i::before, .v2-faq summary i::after { content: ""; position: absolute; left: 50%; top: 50%; width: 12px; height: 1.8px; margin: -.9px 0 0 -6px; background: var(--copper-ink); border-radius: 2px; transition: transform .3s var(--ease); }
.v2-faq summary i::after { transform: rotate(90deg); }
.v2-faq details[open] summary i::after { transform: rotate(0); }
.v2 .v2-faq details > div { padding: 0 1.25rem 1.1rem; color: var(--v2-body); }
.v2 .v2-faq details > div p:last-child { margin-bottom: 0; }

/* ── Textes juridiques : sommaire collant + sections numérotées ── */
.v2-prosew { display: grid; grid-template-columns: 15rem minmax(0, 1fr); gap: 2rem clamp(2.5rem, 6vw, 5.5rem); align-items: start; }
.v2-prosew > .v2-prose:only-child { grid-column: 1 / -1; margin-inline: auto; }
.v2-toc { position: sticky; top: 110px; font-size: .92rem; }
.v2-toc-t { font-family: var(--mono); font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--copper-ink); margin-bottom: .8rem; }
[dir="rtl"] .v2-toc-t { font-family: var(--sans); letter-spacing: 0; font-size: .95rem; }
.v2-toc ol { list-style: none; margin: 0; padding: 0; border-inline-start: 1px solid var(--v2-hair); }
.v2-toc a { display: block; padding: .38rem 0; padding-inline-start: 1rem; text-decoration: none; color: var(--muted); line-height: 1.4; }
.v2-toc a:hover { color: var(--text); }
.v2-prose { max-width: 70ch; }
.v2-prose h2 { display: flex; gap: .8rem; align-items: baseline; font-size: clamp(1.35rem, 1.1rem + .9vw, 1.8rem); margin: 2.4em 0 .7em; scroll-margin-top: 100px; }
.v2-prose h2:first-child { margin-top: 0; }
.v2-sn { flex: none; font-family: var(--mono); font-size: .8rem; font-weight: 500; color: var(--copper-ink); padding: .2rem .45rem; border: 1px solid currentColor; border-radius: 6px; transform: translateY(-.15em); }
@media (max-width: 900px) { .v2-prosew { grid-template-columns: minmax(0, 1fr); } .v2-toc { display: none; } }

/* ── Vitrine des prestations (page Expertises) ── */
.v2-svc { position: relative; display: flex; flex-direction: column; height: 100%; text-decoration: none; color: var(--text); background: var(--v2-card); border: 1px solid var(--v2-hair); border-radius: 22px; padding: 1.2rem 1.5rem 1.5rem;
  --illu-acc: var(--copper); transition: transform .35s var(--ease), box-shadow .35s, border-color .35s; }
.v2-t-sand .v2-svc { background: var(--v2-paper); }
:root.v2[data-theme="dark"] .v2-svc { --illu-acc: var(--copper-l); }
@media (prefers-color-scheme: dark) { :root.v2:not([data-theme="light"]) .v2-svc { --illu-acc: var(--copper-l); } }
.v2-svc:hover { transform: translateY(-4px); border-color: rgba(156, 90, 42, .45); box-shadow: 0 26px 52px -32px rgba(21, 17, 90, .45); }
.v2-svc-art { display: block; width: 100%; max-width: 168px; aspect-ratio: 1; margin: 0 auto .4rem; color: var(--n-text); }
.v2-svc-art svg { width: 100%; height: 100%; }
.v2-svc-art .ic { width: 64px; height: 64px; margin: 3rem auto; }
.v2-svc .v2-num { position: absolute; top: 1.1rem; inset-inline-start: 1.3rem; }
.v2-svc h3 { font-size: 1.25rem; line-height: 1.25; margin: 0 0 .45rem; }
.v2-svc p { font-size: 1rem; line-height: 1.58; color: var(--v2-body); margin: 0 0 1rem; }
@media (max-width: 700px) { .v2-svcs { --car-wm: 76%; } .v2-svc-art { max-width: 120px; } .v2-svc p { font-size: .97rem; } }

/* ── Actualités : la plus récente en grand ── */
.v2-news { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.2rem; }
.v2-nw { position: relative; display: flex; flex-direction: column; text-decoration: none; color: var(--text); background: var(--v2-card); border: 1px solid var(--v2-hair); border-radius: 22px; padding: 1.6rem;
  transition: transform .35s var(--ease), box-shadow .35s, border-color .35s; min-width: 0; }
.v2-nw:hover { transform: translateY(-3px); border-color: rgba(156, 90, 42, .45); box-shadow: 0 26px 52px -32px rgba(21, 17, 90, .45); }
.v2-nw .tag { font-family: var(--mono); font-size: .74rem; letter-spacing: .1em; text-transform: uppercase; color: var(--g-text); margin-bottom: .7rem; }
[dir="rtl"] .v2-nw .tag { font-family: var(--sans); letter-spacing: 0; font-size: .92rem; }
.v2-nw .ct { font-size: 1.3rem; line-height: 1.28; margin: 0 0 .6rem; }
.v2-nw p { color: var(--v2-body); font-size: 1rem; line-height: 1.6; margin: 0 0 1.1rem; }
.v2-nw-1 { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 1fr) 14rem; grid-template-rows: auto auto auto 1fr; column-gap: 3rem; padding: clamp(1.6rem, 1.2rem + 1.5vw, 2.6rem);
  background: var(--v2-night); color: #eeecff; border-color: transparent; }
.v2-nw-1 > :not(.v2-nw-art) { grid-column: 1; }
.v2-nw-1 .ct { font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.3rem); letter-spacing: -.02em; }
.v2-nw-1 p { color: rgba(236, 234, 255, .84); font-size: 1.08rem; max-width: 60ch; }
.v2-nw-1 .tag { color: var(--copper-l); }
.v2-nw-1 .v2-go { color: #8fe196; }
.v2-nw-art { grid-column: 2; grid-row: 1 / -1; align-self: center; color: #c9c6f4; --illu-acc: var(--copper-l); }
.v2-nw-art svg { width: 100%; height: auto; }
.v2 .v2-nw .ct { font-size: 1.3rem; } .v2 .v2-nw-1 .ct { font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.3rem); }
@media (max-width: 900px) { .v2-news { grid-template-columns: minmax(0, 1fr); } .v2-nw-1 { grid-template-columns: minmax(0, 1fr) 6.5rem; column-gap: 1.2rem; } }
@media (max-width: 480px) { .v2-nw-1 { grid-template-columns: minmax(0, 1fr); } .v2-nw-art { display: none; } }

/* ── Références année par année ── */
.v2 .v2-tl > li { grid-template-columns: 11rem minmax(0, 1fr); gap: 1.5rem 2.5rem; padding: 2rem 0; border-top: 1px solid var(--v2-hair); }
.v2 .v2-tl .y { font-size: clamp(1.25rem, 1.1rem + .6vw, 1.6rem); color: var(--copper-ink); position: sticky; top: 100px; align-self: start; }
.v2-tl .v2-tl-e { display: grid; gap: .9rem; }
.v2 .v2-tl .entry { margin: 0; padding: 1.2rem 1.4rem; border: 1px solid var(--v2-hair); border-radius: 16px; background: var(--v2-card); }
.v2 .v2-tl .entry + .entry { margin: 0; padding-top: 1.2rem; border-top: 1px solid var(--v2-hair); }
.v2-t-sand .v2-tl .entry { background: var(--v2-paper); }
.v2 .v2-tl .entry[tabindex] { cursor: pointer; }
.v2 .v2-tl .entry[tabindex]:focus-visible { outline: 2px solid var(--copper-ink); outline-offset: 3px; }
.v2 .v2-tl h3 { font-size: 1.12rem; line-height: 1.35; }
.v2 .v2-tl .entry p { color: var(--v2-body); margin: .2rem 0 0; }
.v2-more-tl { margin-top: .5rem; border-top: 1px solid var(--v2-hair); }
.v2-more-tl > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 1rem; padding: 1.3rem 0; font-weight: 700; font-size: 1.1rem; }
.v2-more-tl > summary::-webkit-details-marker { display: none; }
.v2-more-tl > summary .v2-cnt { font-family: var(--mono); font-size: .85rem; font-weight: 500; color: var(--muted); }
.v2-more-tl > summary i { margin-inline-start: auto; position: relative; flex: none; width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--v2-hair); }
.v2-more-tl > summary i::before, .v2-more-tl > summary i::after { content: ""; position: absolute; left: 50%; top: 50%; width: 12px; height: 1.8px; margin: -.9px 0 0 -6px; background: var(--copper-ink); }
.v2-more-tl > summary i::after { transform: rotate(90deg); transition: transform .3s; }
.v2-more-tl[open] > summary i::after { transform: none; }
.v2-more-tl > summary:focus-visible { outline: 2px solid var(--copper); outline-offset: 4px; border-radius: 8px; }
@media (max-width: 700px) {
  .v2 .v2-tl > li { grid-template-columns: minmax(0, 1fr); gap: .6rem; padding: 1.4rem 0; }
  .v2 .v2-tl .y { position: static; }
  .v2 .v2-tl .entry { padding: 1rem 1.1rem; }
}

/* ── Formulaire (devis, contact) ── */
.v2-b-form .form { border-radius: 24px; border-color: var(--v2-hair); box-shadow: 0 40px 80px -50px rgba(11, 13, 34, .45); background: var(--v2-card); }
.v2-b-form .form label, .v2-b-form .form legend { font-size: .98rem; }
.v2-b-form .form input:not([type=checkbox]):not([type=radio]):not([type=file]), .v2-b-form .form select, .v2-b-form .form textarea { min-height: 52px; font-size: 1.04rem; border-radius: 12px; background: var(--v2-paper); }
@media (min-width: 901px) { .v2-b-form .split { grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); } }
.v2-b-form .split > div:first-child > p:not(.guided) { color: var(--v2-body); }
.v2-b-form .split .contact-card { border-radius: 22px; background: var(--v2-night); }
.v2-b-form .guided a { color: var(--copper-ink); font-weight: 700; display: inline-flex; gap: .4rem; align-items: center; }
.v2-b-form .guided svg { width: 17px; height: 17px; } [dir="rtl"] .v2-b-form .guided svg { transform: scaleX(-1); }

/* ── Appel final (nuit) : papier millimétré et halo cuivre, sous le texte ── */
.v2-b-cta { isolation: isolate; }
.v2-cta-plan { position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: radial-gradient(50% 70% at 85% 30%, rgba(224, 153, 92, .14), transparent 70%),
    linear-gradient(rgba(201, 198, 244, .06) 1px, transparent 1px) 0 0 / 32px 32px, linear-gradient(90deg, rgba(201, 198, 244, .06) 1px, transparent 1px) 0 0 / 32px 32px;
  -webkit-mask-image: linear-gradient(to bottom, transparent, #000 30%, #000 80%, transparent); mask-image: linear-gradient(to bottom, transparent, #000 30%, #000 80%, transparent); }
[dir="rtl"] .v2-cta-plan { background: radial-gradient(50% 70% at 15% 30%, rgba(224, 153, 92, .14), transparent 70%),
    linear-gradient(rgba(201, 198, 244, .06) 1px, transparent 1px) 0 0 / 32px 32px, linear-gradient(90deg, rgba(201, 198, 244, .06) 1px, transparent 1px) 0 0 / 32px 32px; }
.v2-b-cta .lead { color: rgba(236, 234, 255, .82); }
.v2-b-cta .contact-card { border-radius: 22px; background: rgba(255, 255, 255, .04); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.v2-b-cta .guided a { color: var(--copper-l); }
.v2 .v2-b-cta h2 { font-size: clamp(2rem, 1.3rem + 2.6vw, 3.4rem); }

/* ── Bloc « Et maintenant ? » (assets/css/flow.css) : même rythme ── */
.v2 .v2-head ~ .flow { background: var(--v2-paper); }

/* ── Téléphone : pages plus courtes ── */
@media (max-width: 700px) {
  .v2 .v2-b.sec { padding-block: 3.4rem; }
  .v2 main .v2-b h2 { font-size: 1.7rem; }
  .v2 main .v2-b .v2-card h2.ct, .v2 main .v2-b .v2-nw .ct { font-size: 1.25rem; }
  .v2 main .v2-kpis .v2-card h2.ct { font-size: 1.9rem; }
  .v2-bh { margin-bottom: 1.4rem; gap: .7rem; }
  .v2-bh > p, .v2-bh > div + div { font-size: 1rem; line-height: 1.6; }
  .v2-split-h h2 { margin-bottom: .3em; }
  .v2-b-cta .contact-card { padding: 1.3rem; }
  .v2-b-cta .contact-card dl { grid-template-columns: 1fr 1fr; gap: .9rem 1rem; }
  .v2-b-cta .contact-card dl > div:first-child, .v2-b-cta .contact-card dl > div:last-child { grid-column: 1 / -1; }
  .v2-b-cta .cta-row .btn { flex: 1 1 auto; justify-content: center; }
}

/* Mouvements réduits : rien ne bouge, tout est dessiné */
@media (prefers-reduced-motion: reduce) { .v2-head-plan svg { transition: none; } }
.a11y-rm .v2-head-fig .illu [pathLength] { stroke-dashoffset: 0 !important; }
.a11y-hc .v2-head .lead, .a11y-hc .v2-b-steps .steps p, .a11y-hc .v2-b-cta .lead { color: #fff; }

/* Carte des références (page Références) : sur téléphone, le détail A (nord du Maroc) suffit, comme sur l'accueil */
@media (max-width: 700px) {
  .v2 .refs-map.v2-t-paper, .v2 .refs-map.v2-t-sand { padding-block: 3.4rem; }
  .v2 .refs-map .rm-col-main { display: none; }
  .v2 .refs-map .rm-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .v2 .refs-map .rm-stats > div { display: block; padding: .5rem .6rem; }
  .v2 .refs-map .rm-stats b { font-size: 1.45rem; } .v2 .refs-map .rm-stats span { font-size: .78rem; line-height: 1.3; margin-top: .25rem; }
  .v2 .refs-map .rm-hud { display: grid; grid-template-columns: 1fr 1fr; column-gap: 1rem; }
  .v2 .refs-map .rm-card { min-height: 0; }
  .v2 .refs-map .rm-list { max-height: 10.5rem; }
}

/* Texte très agrandi (175 %) ou écran étroit : rien ne déborde */
.v2-prose h2 > span:last-child { min-width: 0; overflow-wrap: break-word; hyphens: auto; }
.v2 .v2-faq details > div, .v2-faq summary > span, .v2-card, .v2-f dd, .v2-brief-c, .v2-need dd { overflow-wrap: break-word; hyphens: auto; }
.v2 .v2-faq details > div a, .v2-f dd a { overflow-wrap: anywhere; }
.v2-head .eyebrow { flex-wrap: wrap; max-width: 100%; overflow-wrap: anywhere; }
.v2-split > *, .v2-faq > *, .v2-prosew > *, .v2-bh > *, .v2-facts > *, .v2-news > * { min-width: 0; }
