/* =====================================================================
   SITE PUBLIC — feuille de style principale
   Les couleurs, polices, arrondis et ombres proviennent du thème actif
   (variables CSS générées par core/theme.php, en clair et en sombre).
   Responsive : smartphone → tablette → ordinateur → grand écran / TV.
   ===================================================================== */

/* ---------- 1. Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 96px; font-size: 16px; }
@media (min-width: 1920px) { html { font-size: 18px; } }
@media (min-width: 2560px) { html { font-size: 21px; } }
@media (min-width: 3400px) { html { font-size: 26px; } }
body {
  margin: 0; min-height: 100vh; background: var(--c-bg); color: var(--c-text);
  font-family: var(--font-body); font-size: 1rem; line-height: 1.65; font-weight: 400;
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility;
  overflow-x: hidden; transition: background-color .35s ease, color .35s ease;
}
img, picture, video, svg, iframe { max-width: 100%; }
img { height: auto; display: block; }
picture { display: block; }
a { color: var(--c-primary); text-decoration: none; transition: color .2s ease; }
a:hover { color: var(--c-hover); }
button { font: inherit; color: inherit; cursor: pointer; }
input, select, textarea { font: inherit; color: inherit; }
h1, h2, h3, h4, h5 { font-family: var(--font-heading); color: var(--c-text); line-height: 1.15; margin: 0 0 .5em; font-weight: 700; letter-spacing: -.015em; text-wrap: balance; }
h1 { font-size: clamp(2.1rem, 1.4rem + 3.2vw, 4.2rem); }
h2 { font-size: clamp(1.7rem, 1.25rem + 2vw, 2.9rem); }
h3 { font-size: clamp(1.12rem, 1.02rem + .45vw, 1.38rem); letter-spacing: -.01em; }
p { margin: 0 0 1em; text-wrap: pretty; }
strong { font-weight: 700; }
hr { border: 0; border-top: 1px solid var(--c-border); margin: 2rem 0; }
::selection { background: rgba(var(--c-primary-rgb), .22); color: var(--c-text); }
:focus-visible { outline: 2.5px solid var(--c-primary); outline-offset: 3px; border-radius: 6px; }
main { display: block; outline: none; }
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.skip-link { position: fixed; left: 16px; top: 16px; transform: translateY(calc(-100% - 40px)); z-index: 1000; background: var(--c-primary); color: var(--c-on-primary); padding: 10px 18px; border-radius: 999px; font-weight: 700; transition: transform .2s; }
.skip-link:focus { transform: none; color: var(--c-on-primary); }
.hp-field { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; opacity: 0; pointer-events: none; }
.text-center { text-align: center; }
.icon { width: 1.35em; height: 1.35em; flex: none; display: inline-block; vertical-align: middle; stroke-width: var(--icon-stroke, 1.8); }
.icon-fill { stroke: none; }
.icon-xs { width: .95em; height: .95em; }
.icon-sm { width: 1.1em; height: 1.1em; }
mark { background: var(--c-accent-soft); color: inherit; border-radius: 4px; padding: 0 .15em; }

/* ---------- 2. Mise en page ---------- */
.container { width: 100%; max-width: 76rem; margin-inline: auto; padding-inline: clamp(1.1rem, 4vw, 2.5rem); }
.container-narrow { max-width: 50rem; }
.container-wide { max-width: 92rem; }
.container-full { max-width: none; }
.blk { position: relative; }
.pad-none { padding-block: 0; }
.pad-sm { padding-block: clamp(1.75rem, 3vw, 2.75rem); }
.pad-md { padding-block: clamp(3rem, 6vw, 5.5rem); }
.pad-lg { padding-block: clamp(4rem, 8vw, 7.5rem); }
.pad-xl { padding-block: clamp(5rem, 11vw, 10rem); }
.bg-soft { background: var(--c-surface); }
.bg-alt { background: var(--c-surface-2); }
.bg-primary { background: var(--c-primary); color: var(--c-on-primary); }
.bg-dark { background: var(--c-secondary); color: #fff; }
.bg-gradient { background: var(--gradient); color: #fff; }
.bg-image { background: var(--c-secondary) var(--bg-image) center / cover no-repeat; color: #fff; isolation: isolate; }
.bg-image::before { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, var(--overlay, .45)); z-index: -1; }
@media (min-width: 900px) { .bg-image { background-attachment: fixed; } }
.is-inverse, .is-inverse h1, .is-inverse h2, .is-inverse h3, .is-inverse h4 { color: #fff; }
.is-inverse .sec-intro, .is-inverse p { color: rgba(255, 255, 255, .86); }
.is-inverse .eyebrow { color: #fff; background: rgba(255, 255, 255, .14); border-color: rgba(255, 255, 255, .22); }
.is-inverse a:not(.btn):not(.chip):not(.card-link) { color: #fff; }
.grid { display: grid; gap: clamp(1rem, 2.2vw, 1.75rem); grid-template-columns: 1fr; }
@media (min-width: 640px) { .grid.cols-2, .grid.cols-3, .grid.cols-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .grid.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .grid.cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 760px) and (max-width: 999px) { .grid.cols-3.features, .grid.cols-4.features { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Masquage selon l'écran (réglage « Masquer sur… » des blocs) */
@media (max-width: 640px) { .hide-mobile { display: none !important; } }
@media (min-width: 641px) and (max-width: 1024px) { .hide-tablet { display: none !important; } }
@media (min-width: 1025px) and (max-width: 1919px) { .hide-desktop { display: none !important; } }
@media (min-width: 1920px) { .hide-tv { display: none !important; } }

/* ---------- 3. Boutons, puces, éléments communs ---------- */
.btn {
  --b-bg: var(--gradient-btn); --b-fg: var(--c-on-primary);
  position: relative; display: inline-flex; align-items: center; justify-content: center; gap: .55em; min-height: 3rem; padding: .78rem 1.45rem;
  border: 1.5px solid transparent; border-radius: var(--btn-radius); background: var(--b-bg); color: var(--b-fg); font-weight: 650; font-size: .97rem; line-height: 1.2;
  letter-spacing: .005em; text-decoration: none; white-space: nowrap; cursor: pointer; isolation: isolate; overflow: hidden;
  box-shadow: 0 8px 22px rgba(var(--c-primary-rgb), .24), inset 0 1px 0 rgba(255, 255, 255, .16);
  transition: transform .25s var(--anim-ease), box-shadow .25s ease, background-color .2s ease, color .2s ease, border-color .2s ease;
}
.btn::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(110deg, transparent 20%, rgba(255, 255, 255, .28) 45%, transparent 70%); transform: translateX(-120%); transition: transform .7s ease; }
.btn:hover { color: var(--b-fg); transform: translateY(-2px); box-shadow: 0 14px 34px rgba(var(--c-primary-rgb), .32), inset 0 1px 0 rgba(255, 255, 255, .2); }
.btn:hover::after { transform: translateX(120%); }
.btn:active { transform: translateY(0) scale(.98); }
.btn .icon { transition: transform .25s var(--anim-ease); }
.btn:hover .icon:last-child:not(:first-child) { transform: translateX(3px); }
.btn-lg { min-height: 3.5rem; padding: .95rem 1.8rem; font-size: 1.03rem; }
.btn-small { min-height: 2.5rem; padding: .55rem 1.1rem; font-size: .9rem; }
.btn-block { display: flex; width: 100%; }
.btn-grow { flex: 1; }
.btn-ghost { --b-bg: transparent; --b-fg: var(--c-text); border-color: var(--c-border); box-shadow: none; background: color-mix(in srgb, var(--c-surface) 60%, transparent); }
.btn-ghost:hover { --b-fg: var(--c-primary); border-color: rgba(var(--c-primary-rgb), .45); background: var(--c-primary-soft); box-shadow: 0 10px 26px rgba(var(--c-primary-rgb), .12); }
.btn-light { --b-bg: #fff; --b-fg: var(--c-secondary); box-shadow: 0 12px 34px rgba(0, 0, 0, .18); }
.btn-light:hover { --b-fg: var(--c-primary); }
.btn-outline-light { --b-bg: transparent; --b-fg: #fff; border-color: rgba(255, 255, 255, .55); box-shadow: none; }
.btn-outline-light:hover { --b-fg: #fff; border-color: #fff; background: rgba(255, 255, 255, .12); }
.is-inverse .btn-ghost, .hero-dark .btn-ghost { --b-fg: #fff; border-color: rgba(255, 255, 255, .45); background: rgba(255, 255, 255, .06); }
.is-inverse .btn-ghost:hover, .hero-dark .btn-ghost:hover { background: rgba(255, 255, 255, .16); border-color: #fff; }
.btn-whatsapp { --b-bg: linear-gradient(135deg, #1ebe5d, #128c4a); --b-fg: #fff; box-shadow: 0 10px 26px rgba(18, 140, 74, .3); }
.btn-whatsapp:hover { --b-fg: #fff; box-shadow: 0 16px 34px rgba(18, 140, 74, .38); }
.btn[disabled], .btn.is-loading { pointer-events: none; opacity: .75; }
.btn-spinner { display: none; width: 1.05em; height: 1.05em; border-radius: 50%; border: 2px solid currentColor; border-right-color: transparent; animation: spin .7s linear infinite; }
.is-loading .btn-spinner { display: inline-block; }
.is-loading .icon { display: none; }
.btn-row { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1.75rem; }
.btn-row-center { display: flex; justify-content: center; flex-wrap: wrap; gap: .75rem; margin-top: 2.5rem; }
@keyframes spin { to { transform: rotate(360deg); } }

.eyebrow {
  display: inline-flex; align-items: center; gap: .5em; font-family: var(--font-body); font-size: .76rem; font-weight: 700; letter-spacing: .14em;
  text-transform: uppercase; color: var(--c-primary); background: var(--c-primary-soft); border: 1px solid rgba(var(--c-primary-rgb), .14); border-radius: 999px; padding: .38em .95em; margin-bottom: 1rem;
}
.eyebrow .dot { width: .45em; height: .45em; border-radius: 50%; background: var(--c-accent); box-shadow: 0 0 0 4px var(--c-accent-soft); animation: pulse-dot 2.4s ease-in-out infinite; }
@keyframes pulse-dot { 50% { box-shadow: 0 0 0 7px transparent; } }
.script-accent { font-family: var(--font-script); font-weight: 400; color: var(--c-accent); letter-spacing: 0; }
.chip { display: inline-flex; align-items: center; gap: .35em; font-size: .78rem; font-weight: 650; line-height: 1; padding: .48em .8em; border-radius: 999px; background: var(--c-surface-2); color: var(--c-text); border: 1px solid var(--c-border); white-space: nowrap; }
.chip-accent { background: var(--c-accent); color: var(--c-secondary); border-color: transparent; }
.chip-soft { background: var(--c-primary-soft); color: var(--c-primary); border-color: transparent; }
.chip-muted { color: var(--c-muted); }
.chip-glass { background: rgba(255, 255, 255, .14); color: inherit; border-color: rgba(255, 255, 255, .22); backdrop-filter: blur(8px); }
.page-hero:not(.has-image) .chip-glass { background: var(--c-surface); color: var(--c-text); border-color: var(--c-border); }
.chip-time { background: rgba(220, 38, 38, .1); color: #c2262b; border-color: transparent; }
.chip-btn { display: inline-flex; align-items: center; min-height: 2.4rem; padding: .5rem 1.05rem; border-radius: 999px; border: 1px solid var(--c-border); background: var(--c-surface); color: var(--c-text); font-size: .9rem; font-weight: 600; transition: all .22s ease; }
.chip-btn:hover { border-color: rgba(var(--c-primary-rgb), .5); color: var(--c-primary); }
.chip-btn.is-active { background: var(--c-primary); border-color: var(--c-primary); color: var(--c-on-primary); box-shadow: 0 8px 20px rgba(var(--c-primary-rgb), .25); }
.empty-state { display: grid; justify-items: center; gap: .6rem; text-align: center; padding: clamp(2.5rem, 6vw, 4.5rem) 1.5rem; border: 1.5px dashed var(--c-border); border-radius: var(--radius-lg); color: var(--c-muted); background: var(--c-surface); }
.empty-state > .icon { width: 2.6rem; height: 2.6rem; color: var(--c-primary); opacity: .75; }
.empty-state h2 { margin: .2rem 0 0; font-size: 1.5rem; }
.empty-state p { margin: 0; max-width: 34rem; }
.empty-state .btn { margin-top: .75rem; }
.admin-maint-bar { position: relative; z-index: 95; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .35rem .9rem; padding: .5rem 1rem; background: #1f1300; color: #ffd28a; font-size: .84rem; line-height: 1.35; text-align: center; }
.admin-maint-bar strong { color: #fff; }
.admin-maint-bar a { color: #fff; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.preview-banner { position: sticky; top: 0; z-index: 90; display: flex; align-items: center; justify-content: center; gap: .5rem; padding: .45rem 1rem; background: repeating-linear-gradient(-45deg, #f59e0b, #f59e0b 12px, #f7ab2b 12px, #f7ab2b 24px); color: #3b2300; font-size: .85rem; font-weight: 700; }
.img-ph { width: 100%; height: 100%; min-height: 12rem; display: grid; place-content: center; justify-items: center; gap: .6rem; background: radial-gradient(circle at 30% 20%, var(--c-primary-soft), transparent 60%), linear-gradient(135deg, var(--c-surface-2), var(--c-surface)); color: var(--c-primary); }
.img-ph-icon { width: 3.6rem; height: 3.6rem; display: grid; place-items: center; border-radius: 1.2rem; background: var(--c-bg); box-shadow: var(--shadow-sm); }
.img-ph-icon .icon { width: 1.6rem; height: 1.6rem; }
.img-ph-label { font-family: var(--font-heading); font-size: .95rem; color: var(--c-muted); text-align: center; padding-inline: 1rem; }

/* ---------- 4. Barre d'annonce, barre d'infos ---------- */
.announce { position: relative; z-index: 60; background: var(--gradient); color: #fff; font-size: .9rem; font-weight: 550; }
.announce-inner { display: flex; align-items: center; justify-content: center; gap: .6rem; min-height: 2.6rem; padding-block: .45rem; padding-right: 3rem; text-align: center; }
.announce a { color: #fff; display: inline-flex; align-items: center; gap: .4rem; text-decoration: underline; text-decoration-color: rgba(255, 255, 255, .45); text-underline-offset: 3px; }
.announce-close { position: absolute; right: clamp(.6rem, 3vw, 2rem); top: 50%; translate: 0 -50%; width: 1.9rem; height: 1.9rem; display: grid; place-items: center; border: 0; border-radius: 50%; background: rgba(255, 255, 255, .16); color: #fff; }
.announce-close:hover { background: rgba(255, 255, 255, .28); }
.topbar { background: var(--c-secondary); color: rgba(255, 255, 255, .82); font-size: .82rem; }
.topbar-inner { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 2.4rem; }
.topbar-info { display: flex; flex-wrap: wrap; gap: .4rem 1.4rem; }
.topbar-info a, .topbar-info span { display: inline-flex; align-items: center; gap: .4rem; color: inherit; }
.topbar-info a:hover { color: #fff; }
.topbar-social { display: flex; gap: .2rem; }
.topbar-social a { width: 1.9rem; height: 1.9rem; display: grid; place-items: center; border-radius: 50%; color: inherit; }
.topbar-social a:hover { color: #fff; background: rgba(255, 255, 255, .12); }
@media (max-width: 760px) { .topbar-info span, .topbar-info a + a { display: none; } }

/* ---------- 5. En-tête & navigation ---------- */
.site-header { position: sticky; top: 0; z-index: 80; transition: transform .45s var(--anim-ease), background-color .3s ease, box-shadow .3s ease, border-color .3s ease; border-bottom: 1px solid transparent; }
[data-header-behavior="static"] .site-header { position: relative; }
[data-header-style="glass"] .site-header { background: var(--c-header); backdrop-filter: saturate(1.8) blur(18px); -webkit-backdrop-filter: saturate(1.8) blur(18px); }
[data-header-style="solid"] .site-header { background: var(--c-bg); }
[data-header-style="minimal"] .site-header { background: var(--c-bg); border-bottom-color: var(--c-border); }
.site-header.is-scrolled { box-shadow: 0 10px 30px rgba(var(--c-text-rgb), .07); border-bottom-color: var(--c-border); }
.site-header.is-hidden { transform: translateY(-110%); }
[data-header-style="transparent"].is-home .site-header { position: fixed; left: 0; right: 0; background: transparent; }
[data-header-style="transparent"].is-home .site-header.is-scrolled { background: var(--c-header); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); }
[data-header-style="transparent"].is-home .site-header:not(.is-scrolled):not(.nav-open) .menu-link,
[data-header-style="transparent"].is-home .site-header:not(.is-scrolled):not(.nav-open) .tool-btn { color: #fff; }
[data-header-style="transparent"].is-home .site-header:not(.is-scrolled):not(.nav-open) .brand-text { color: #fff; }
.header-inner { display: flex; align-items: center; gap: 1rem; min-height: 4.75rem; }
.brand { display: inline-flex; align-items: center; flex: none; margin-right: auto; color: var(--c-text); }
.brand img { height: var(--logo-h, 56px); width: auto; max-width: min(240px, 46vw); object-fit: contain; transition: transform .3s var(--anim-ease); }
.brand:hover img { transform: scale(1.03); }
.brand-text { font-family: var(--font-heading); font-size: 1.4rem; font-weight: 800; letter-spacing: -.02em; color: var(--c-text); }
.logo-dark { display: none !important; }
html[data-theme="dark"] .logo-dark { display: block !important; }
html[data-theme="dark"] .logo-dark + .logo-light, html[data-theme="dark"] .logo-light:has(+ .logo-dark) { display: none !important; }
.main-nav { display: flex; align-items: center; }
.menu { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: .15rem; }
.menu-item { position: relative; display: flex; align-items: center; }
.menu-link { position: relative; display: inline-flex; align-items: center; gap: .45rem; white-space: nowrap; padding: .6rem .85rem; border-radius: 999px; color: var(--c-text); font-weight: 600; font-size: .95rem; transition: color .2s ease, background-color .2s ease; }
.menu > .menu-item > .menu-link::after { content: ""; position: absolute; left: .85rem; right: .85rem; bottom: .35rem; height: 2px; border-radius: 2px; background: var(--c-accent); transform: scaleX(0); transform-origin: left; transition: transform .35s var(--anim-ease); }
.menu > .menu-item > .menu-link:hover::after, .menu > .menu-item.is-active > .menu-link::after { transform: scaleX(1); }
.menu-link:hover, .menu-item.is-active > .menu-link { color: var(--c-primary); }
.submenu-toggle { display: inline-grid; place-items: center; width: 1.6rem; height: 1.6rem; margin-left: -.5rem; border: 0; background: none; color: var(--c-muted); border-radius: 50%; transition: transform .25s ease; }
.submenu { list-style: none; margin: 0; padding: .5rem; position: absolute; top: calc(100% + .5rem); left: 50%; min-width: 16rem; translate: -50% 8px; opacity: 0; visibility: hidden; background: var(--c-bg); border: 1px solid var(--c-border); border-radius: var(--radius); box-shadow: var(--shadow-lg); transition: opacity .25s ease, translate .3s var(--anim-ease), visibility .25s; z-index: 5; }
.submenu::before { content: ""; position: absolute; left: 0; right: 0; top: -.6rem; height: .6rem; }
.submenu .menu-link { display: grid; grid-template-columns: auto 1fr; column-gap: .65rem; width: 100%; padding: .65rem .8rem; border-radius: calc(var(--radius) - 6px); }
.submenu .menu-link span { grid-column: 2; }
.submenu .menu-link .icon { grid-row: span 2; align-self: center; color: var(--c-primary); width: 1.25rem; height: 1.25rem; }
.submenu .menu-link small { grid-column: 2; display: block; color: var(--c-muted); font-weight: 450; font-size: .8rem; line-height: 1.35; }
.submenu .menu-link:hover { background: var(--c-primary-soft); }
.submenu .submenu { top: -.5rem; left: 100%; translate: 8px 0; }
@media (hover: hover) and (min-width: 1081px) {
  .menu-item.has-children:hover > .submenu, .menu-item.has-children:focus-within > .submenu { opacity: 1; visibility: visible; translate: -50% 0; }
  .submenu .menu-item.has-children:hover > .submenu { translate: 0 0; }
  .menu-item.has-children:hover > .submenu-toggle { transform: rotate(180deg); }
}
.menu-item.is-open > .submenu { opacity: 1; visibility: visible; translate: -50% 0; }
.header-tools { display: flex; align-items: center; gap: .3rem; }
.tool-btn { position: relative; width: 2.75rem; height: 2.75rem; display: inline-grid; place-items: center; border: 0; border-radius: 50%; background: transparent; color: var(--c-text); transition: background-color .2s ease, color .2s ease, transform .2s ease; }
.tool-btn:hover { background: var(--c-primary-soft); color: var(--c-primary); }
.tool-btn .icon { width: 1.3rem; height: 1.3rem; }
.theme-toggle .tt-moon, html[data-theme="dark"] .theme-toggle .tt-sun { display: none; }
html[data-theme="dark"] .theme-toggle .tt-moon { display: inline; }
.theme-toggle .icon { transition: transform .5s var(--anim-ease); }
.theme-toggle:hover .icon { transform: rotate(-25deg) scale(1.08); }
.cart-count { position: absolute; top: .2rem; right: .1rem; min-width: 1.15rem; height: 1.15rem; padding: 0 .3rem; border-radius: 999px; background: var(--c-accent); color: var(--c-secondary); font-size: .68rem; font-weight: 800; line-height: 1.15rem; text-align: center; box-shadow: 0 0 0 2px var(--c-bg); }
.cart-count.is-bump { animation: bump .5s var(--anim-ease); }
@keyframes bump { 40% { transform: scale(1.45); } }
.header-cta { margin-left: .35rem; }
.burger { display: none; }
.burger span { position: absolute; left: 50%; width: 1.25rem; height: 2px; border-radius: 2px; background: currentColor; translate: -50% 0; transition: transform .35s var(--anim-ease), opacity .2s; }
.burger span:nth-child(1) { top: calc(50% - 6px); } .burger span:nth-child(2) { top: calc(50% - 1px); } .burger span:nth-child(3) { top: calc(50% + 4px); }
.nav-open .burger span:nth-child(1) { transform: translateY(5px) rotate(45deg); }
.nav-open .burger span:nth-child(2) { opacity: 0; }
.nav-open .burger span:nth-child(3) { transform: translateY(-5px) rotate(-45deg); }
.nav-mobile-extra { display: none; }
@media (min-width: 1081px) and (max-width: 1360px) {
  .menu-link { padding: .55rem .6rem; font-size: .9rem; }
  .menu > .menu-item > .menu-link::after { left: .6rem; right: .6rem; }
  .header-tools { gap: .1rem; }
  .tool-btn { width: 2.5rem; height: 2.5rem; }
}
@media (min-width: 1081px) and (max-width: 1200px) { .header-cta { display: none; } }
@media (max-width: 1080px) {
  .burger { display: inline-grid; }
  .header-cta { display: none; }
  .main-nav { position: fixed; inset: 0; top: var(--header-bottom, 4.75rem); z-index: 70; display: flex; flex-direction: column; align-items: stretch; gap: 1.5rem; padding: 1.25rem clamp(1.1rem, 4vw, 2.5rem) calc(2rem + env(safe-area-inset-bottom)); background: var(--c-bg); overflow-y: auto; overscroll-behavior: contain; opacity: 0; visibility: hidden; transform: translateY(-12px); transition: opacity .3s ease, transform .35s var(--anim-ease), visibility .3s; }
  .nav-open .main-nav { opacity: 1; visibility: visible; transform: none; }
  .menu { flex-direction: column; align-items: stretch; gap: 0; }
  .menu-item { flex-wrap: wrap; border-bottom: 1px solid var(--c-border); }
  .menu > .menu-item > .menu-link { flex: 1; padding: 1rem .25rem; font-size: 1.12rem; border-radius: 0; }
  .menu > .menu-item > .menu-link::after { display: none; }
  .submenu-toggle { width: 2.6rem; height: 2.6rem; margin: 0; }
  .menu-item.is-open > .submenu-toggle { transform: rotate(180deg); }
  .submenu, .submenu .submenu { position: static; translate: none !important; min-width: 0; width: 100%; padding: 0 0 .75rem .5rem; border: 0; box-shadow: none; background: transparent; display: none; opacity: 1; visibility: visible; }
  .menu-item.is-open > .submenu { display: block; }
  .nav-mobile-extra { display: grid; gap: 1.25rem; }
  .nav-mobile-social { display: flex; flex-wrap: wrap; gap: .5rem; }
  .nav-mobile-social a { width: 2.9rem; height: 2.9rem; display: grid; place-items: center; border-radius: 50%; background: var(--c-surface-2); color: var(--c-text); }
  .nav-open { overflow: hidden; }
  .menu-item { opacity: 0; transform: translateY(10px); transition: opacity .35s ease, transform .4s var(--anim-ease); transition-delay: calc(var(--i, 0) * 45ms + 80ms); }
  .nav-open .menu-item { opacity: 1; transform: none; }
}
/* Navigation trop large pour l'écran (beaucoup de liens) : bascule automatique en menu compact */
html.nav-tight .menu-link { padding: .5rem .5rem; font-size: .86rem; }
html.nav-tight .menu > .menu-item > .menu-link::after { left: .5rem; right: .5rem; }
html.nav-tight2 .header-cta { display: none; }
html.nav-tight .header-inner { gap: .6rem; }
html.nav-collapsed .burger { display: inline-grid; }
html.nav-collapsed .header-cta { display: none; }
html.nav-collapsed .main-nav { position: fixed; inset: 0; top: var(--header-bottom, 4.75rem); z-index: 70; display: flex; flex-direction: column; align-items: stretch; gap: 1.5rem; padding: 1.25rem clamp(1.1rem, 4vw, 2.5rem) calc(2rem + env(safe-area-inset-bottom)); background: var(--c-bg); overflow-y: auto; overscroll-behavior: contain; opacity: 0; visibility: hidden; transform: translateY(-12px); transition: opacity .3s ease, transform .35s var(--anim-ease), visibility .3s; }
html.nav-collapsed .nav-open .main-nav { opacity: 1; visibility: visible; transform: none; }
html.nav-collapsed .menu { flex-direction: column; align-items: stretch; gap: 0; }
html.nav-collapsed .menu-item { flex-wrap: wrap; border-bottom: 1px solid var(--c-border); }
html.nav-collapsed .menu > .menu-item > .menu-link { flex: 1; padding: 1rem .25rem; font-size: 1.12rem; border-radius: 0; }
html.nav-collapsed .menu > .menu-item > .menu-link::after { display: none; }
html.nav-collapsed .submenu-toggle { width: 2.6rem; height: 2.6rem; margin: 0; }
html.nav-collapsed .menu-item.is-open > .submenu-toggle { transform: rotate(180deg); }
html.nav-collapsed .submenu, html.nav-collapsed .submenu .submenu { position: static; translate: none !important; min-width: 0; width: 100%; padding: 0 0 .75rem .5rem; border: 0; box-shadow: none; background: transparent; display: none; opacity: 1; visibility: visible; }
html.nav-collapsed .menu-item.is-open > .submenu { display: block; }
html.nav-collapsed .nav-mobile-extra { display: grid; gap: 1.25rem; }
html.nav-collapsed .nav-mobile-social { display: flex; flex-wrap: wrap; gap: .5rem; }
html.nav-collapsed .nav-mobile-social a { width: 2.9rem; height: 2.9rem; display: grid; place-items: center; border-radius: 50%; background: var(--c-surface-2); color: var(--c-text); }
html.nav-collapsed .nav-open { overflow: hidden; }
html.nav-collapsed .menu-item { opacity: 0; transform: translateY(10px); transition: opacity .35s ease, transform .4s var(--anim-ease); transition-delay: calc(var(--i, 0) * 45ms + 80ms); }
html.nav-collapsed .nav-open .menu-item { opacity: 1; transform: none; }
html.nav-collapsed .menu-item.has-children:hover > .submenu { opacity: 1; visibility: visible; }

@media (max-width: 420px) { .header-inner { gap: .4rem; } .tool-btn { width: 2.5rem; height: 2.5rem; } }

/* ---------- 6. Barre de progression, préchargement, curseur ---------- */
.scroll-progress { position: fixed; top: 0; left: 0; right: 0; z-index: 120; height: 3px; pointer-events: none; }
.scroll-progress span { display: block; height: 100%; width: 100%; background: linear-gradient(90deg, var(--c-primary), var(--c-accent)); transform: scaleX(0); transform-origin: left; }
.preloader { position: fixed; inset: 0; z-index: 2000; display: grid; place-items: center; background: var(--c-bg); transition: opacity .6s ease, visibility .6s; }
.preloader.is-done { opacity: 0; visibility: hidden; }
.preloader-inner { display: grid; justify-items: center; gap: 1.4rem; }
.preloader-inner img { height: 64px; width: auto; animation: float 2.4s ease-in-out infinite; }
.preloader-bar { width: 160px; height: 3px; border-radius: 3px; background: var(--c-surface-2); overflow: hidden; }
.preloader-bar span { display: block; height: 100%; width: 40%; background: var(--gradient); border-radius: 3px; animation: loadbar 1.1s ease-in-out infinite; }
@keyframes loadbar { 0% { transform: translateX(-100%); } 100% { transform: translateX(260%); } }
@keyframes float { 50% { transform: translateY(-8px); } }
.cursor-dot, .cursor-ring { position: fixed; top: 0; left: 0; z-index: 3000; pointer-events: none; border-radius: 50%; translate: -50% -50%; }
.cursor-dot { width: 7px; height: 7px; background: var(--c-primary); }
.cursor-ring { width: 36px; height: 36px; border: 1.5px solid rgba(var(--c-primary-rgb), .55); transition: width .25s ease, height .25s ease, background-color .25s ease; }
.cursor-ring.is-hover { width: 58px; height: 58px; background: rgba(var(--c-primary-rgb), .08); }
@media (hover: none) { .cursor-dot, .cursor-ring { display: none; } }

/* ---------- 7. Pied de page ---------- */
.share-bar { border-top: 1px solid var(--c-border); background: var(--c-surface); }
.share-inner { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 1rem 2rem; padding-block: 1.6rem; }
.share-copy { display: grid; }
.share-copy .eyebrow { margin: 0 0 .35rem; justify-self: start; }
.share-copy strong { font-family: var(--font-heading); font-size: 1.25rem; }
.share-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.share-btn { width: 2.8rem; height: 2.8rem; display: grid; place-items: center; border-radius: 50%; border: 1px solid var(--c-border); background: var(--c-bg); color: var(--c-text); transition: transform .25s var(--anim-ease), background-color .2s, color .2s, border-color .2s; }
.share-btn:hover { transform: translateY(-3px); color: #fff; border-color: transparent; background: var(--c-primary); }
.sb-whatsapp:hover { background: #25d366; } .sb-facebook:hover { background: #1877f2; } .sb-telegram:hover { background: #26a5e4; }
.sb-linkedin:hover { background: #0a66c2; } .sb-x:hover { background: #111; } .sb-mail:hover { background: #ea4335; }
.sb-accent { background: var(--c-accent-soft); border-color: transparent; color: var(--c-primary); }
.site-footer { position: relative; overflow: hidden; background: var(--c-secondary); color: rgba(255, 255, 255, .78); padding-top: clamp(3.5rem, 7vw, 6rem); isolation: isolate; }
html[data-theme="dark"] .site-footer { background: color-mix(in srgb, var(--c-bg) 70%, #000); border-top: 1px solid var(--c-border); }
.footer-glow { position: absolute; inset: auto -10% -45% -10%; height: 70%; z-index: -1; background: radial-gradient(ellipse at 30% 0, rgba(var(--c-primary-rgb), .45), transparent 60%), radial-gradient(ellipse at 85% 30%, rgba(var(--c-accent-rgb, 152, 201, 60), .2), transparent 55%); filter: blur(20px); opacity: .7; }
.footer-grid { display: grid; gap: 2.5rem 2rem; grid-template-columns: 1fr; padding-bottom: 3rem; }
@media (min-width: 640px) { .footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .footer-grid { grid-template-columns: 1.5fr repeat(auto-fit, minmax(10rem, 1fr)); } }
.footer-brand p { max-width: 24rem; font-size: .95rem; line-height: 1.7; }
.footer-logo { display: inline-block; margin-bottom: 1.2rem; -webkit-touch-callout: none; user-select: none; }
.footer-logo img { height: 52px; width: auto; filter: brightness(0) invert(1); opacity: .95; }
.footer-logo .brand-text { color: #fff; }
.footer-signature { font-size: 1.7rem; margin: .5rem 0 1rem; color: var(--c-accent); }
.footer-social { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1.2rem; }
.footer-social a { width: 2.6rem; height: 2.6rem; display: grid; place-items: center; border-radius: 50%; background: rgba(255, 255, 255, .08); color: #fff; transition: background-color .2s, transform .25s var(--anim-ease); }
.footer-social a:hover { background: var(--c-primary); transform: translateY(-3px); color: #fff; }
.footer-col h3 { color: #fff; font-family: var(--font-body); font-size: .8rem; letter-spacing: .14em; text-transform: uppercase; margin-bottom: 1.1rem; }
.footer-col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .65rem; }
.footer-col li { display: flex; gap: .6rem; align-items: flex-start; font-size: .95rem; }
.footer-col li .icon { margin-top: .2rem; color: var(--c-accent); }
.footer-col a { color: rgba(255, 255, 255, .78); transition: color .2s, padding .25s ease; }
.footer-col:not(.footer-contact) a:hover { color: #fff; padding-left: .25rem; }
.footer-contact a:hover { color: #fff; }
.footer-newsletter p { font-size: .92rem; }
.footer-newsletter .nl-inline { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .14); }
.footer-newsletter .nl-inline input { color: #fff; }
.footer-newsletter .nl-inline input::placeholder { color: rgba(255, 255, 255, .55); }
.footer-bottom { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1.5rem; padding-block: 1.4rem calc(1.4rem + env(safe-area-inset-bottom)); border-top: 1px solid rgba(255, 255, 255, .1); font-size: .85rem; color: rgba(255, 255, 255, .6); }
.footer-legal { opacity: .85; }
.copy-mark { color: inherit !important; cursor: default; text-decoration: none; }
.footer-theme { display: inline-flex; align-items: center; gap: .4rem; border: 1px solid rgba(255, 255, 255, .16); background: transparent; color: rgba(255, 255, 255, .75); border-radius: 999px; padding: .4rem .85rem; font-size: .8rem; }
.footer-theme:hover { color: #fff; border-color: rgba(255, 255, 255, .35); }
.app-badges { display: flex; flex-wrap: wrap; gap: .65rem; margin-top: 1.5rem; }
.store-badge { display: inline-flex; align-items: center; gap: .65rem; padding: .55rem 1.1rem .55rem .85rem; border-radius: .9rem; background: #0b0b0c; color: #fff; border: 1px solid rgba(255, 255, 255, .16); line-height: 1.1; font-weight: 700; transition: transform .25s var(--anim-ease), box-shadow .25s; }
.store-badge:hover { color: #fff; transform: translateY(-2px); box-shadow: 0 12px 26px rgba(0, 0, 0, .25); }
.store-badge .icon { width: 1.7rem; height: 1.7rem; }
.store-badge small { display: block; font-size: .66rem; font-weight: 500; opacity: .8; letter-spacing: .03em; }
.app-badges-sm .store-badge { padding: .45rem .9rem .45rem .7rem; }
.app-badges-sm .store-badge .icon { width: 1.35rem; height: 1.35rem; }

/* ---------- 8. Éléments flottants ---------- */
.float-contact { position: fixed; right: max(1rem, env(safe-area-inset-right)); bottom: max(1rem, env(safe-area-inset-bottom)); z-index: 85; display: grid; justify-items: end; gap: .6rem; }
.fc-toggle { position: relative; width: 3.7rem; height: 3.7rem; display: grid; place-items: center; border: 0; border-radius: 50%; background: var(--gradient-btn); color: var(--c-on-primary); box-shadow: 0 14px 34px rgba(var(--c-primary-rgb), .38); transition: transform .3s var(--anim-ease); }
.fc-toggle:hover { transform: scale(1.06); }
.fc-toggle .icon { width: 1.55rem; height: 1.55rem; transition: transform .35s var(--anim-ease), opacity .2s; }
.fc-open, .fc-close { grid-area: 1 / 1; display: grid; }
.fc-close { opacity: 0; transform: rotate(-90deg) scale(.6); }
.float-contact.is-open .fc-open { opacity: 0; transform: rotate(90deg) scale(.6); }
.float-contact.is-open .fc-close { opacity: 1; transform: none; }
.fc-pulse { position: absolute; inset: 0; border-radius: 50%; border: 2px solid rgba(var(--c-primary-rgb), .55); animation: ring 2.6s ease-out infinite; pointer-events: none; }
.float-contact.is-open .fc-pulse { display: none; }
@keyframes ring { 0% { transform: scale(1); opacity: .9; } 80%, 100% { transform: scale(1.7); opacity: 0; } }
.fc-menu { display: grid; justify-items: end; gap: .55rem; pointer-events: none; }
.fc-item { display: inline-flex; align-items: center; gap: .65rem; opacity: 0; transform: translateY(14px) scale(.9); transition: opacity .25s ease, transform .35s var(--anim-ease); transition-delay: calc(var(--i) * 35ms); }
.float-contact.is-open .fc-menu { pointer-events: auto; }
.float-contact.is-open .fc-item { opacity: 1; transform: none; }
.fc-label { padding: .45rem .85rem; border-radius: 999px; background: var(--c-bg); color: var(--c-text); font-size: .85rem; font-weight: 650; box-shadow: var(--shadow); }
.fc-icon { width: 3rem; height: 3rem; display: grid; place-items: center; border-radius: 50%; background: var(--c-primary); color: #fff; box-shadow: var(--shadow); }
.fc-wa .fc-icon, .fc-whatsapp .fc-icon { background: #25d366; } .fc-tg .fc-icon, .fc-telegram .fc-icon { background: #26a5e4; }
.fc-messenger .fc-icon { background: #0084ff; } .fc-call .fc-icon { background: var(--c-secondary); } .fc-mail .fc-icon { background: #ea4335; }
.fc-instagram .fc-icon { background: linear-gradient(45deg, #f58529, #dd2a7b 50%, #8134af); } .fc-facebook .fc-icon { background: #1877f2; }
.to-top { position: fixed; left: max(1rem, env(safe-area-inset-left)); bottom: max(1rem, env(safe-area-inset-bottom)); z-index: 84; width: 3rem; height: 3rem; display: grid; place-items: center; border: 0; border-radius: 50%; background: var(--c-bg); color: var(--c-text); box-shadow: var(--shadow); opacity: 0; visibility: hidden; transform: translateY(16px); transition: opacity .3s, transform .35s var(--anim-ease), visibility .3s; }
.to-top.is-visible { opacity: 1; visibility: visible; transform: none; }
.to-top:hover { color: var(--c-primary); }
.to-top > .icon { grid-area: 1 / 1; }
.to-top-ring { grid-area: 1 / 1; width: 100%; height: 100%; transform: rotate(-90deg); fill: none; stroke: var(--c-primary); stroke-width: 2.5; stroke-linecap: round; stroke-dasharray: 138.2; stroke-dashoffset: calc(138.2 - 138.2 * var(--p, 0)); transition: stroke-dashoffset .1s linear; }
.search-overlay { position: fixed; inset: 0; z-index: 150; display: grid; align-items: start; justify-items: center; padding: clamp(4rem, 12vh, 9rem) 1rem 2rem; }
.search-overlay[hidden] { display: none; }
.search-backdrop { position: absolute; inset: 0; background: rgba(var(--c-text-rgb), .35); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); animation: fade-in .25s ease; }
.search-box { position: relative; width: min(46rem, 100%); background: var(--c-bg); border: 1px solid var(--c-border); border-radius: calc(var(--radius) + 4px); box-shadow: var(--shadow-lg); display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: .5rem; padding: .5rem .5rem .5rem 1.2rem; animation: pop-in .35s var(--anim-ease); }
.search-box > .icon { color: var(--c-primary); }
.search-box input { border: 0; outline: 0; background: transparent; font-size: 1.15rem; padding: .9rem .25rem; min-width: 0; }
.search-close { width: 2.6rem; height: 2.6rem; display: grid; place-items: center; border: 0; border-radius: 50%; background: var(--c-surface-2); }
.search-results { grid-column: 1 / -1; max-height: min(60vh, 32rem); overflow-y: auto; }
.search-results:empty { display: none; }
.search-results h4 { margin: 1rem .6rem .4rem; font-family: var(--font-body); font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; color: var(--c-muted); }
.search-results a { display: grid; grid-template-columns: 2.6rem 1fr; gap: .8rem; align-items: center; padding: .6rem; border-radius: var(--radius-sm); color: var(--c-text); }
.search-results a:hover, .search-results a.is-focus { background: var(--c-primary-soft); }
.search-results .sr-media { width: 2.6rem; height: 2.6rem; border-radius: .7rem; overflow: hidden; display: grid; place-items: center; background: var(--c-surface-2); color: var(--c-primary); }
.search-results .sr-media img { width: 100%; height: 100%; object-fit: cover; }
.search-results strong { display: block; font-size: .96rem; line-height: 1.3; }
.search-results small { display: block; color: var(--c-muted); font-size: .82rem; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }
.search-results .sr-empty { padding: 1.25rem; text-align: center; color: var(--c-muted); }
.search-results .sr-all { display: block; text-align: center; padding: .9rem; font-weight: 650; color: var(--c-primary); border-top: 1px solid var(--c-border); margin-top: .4rem; }
.qr-modal, .nl-popup { position: fixed; inset: 0; z-index: 160; display: grid; place-items: center; padding: 1rem; }
.qr-modal[hidden], .nl-popup[hidden] { display: none; }
.qr-backdrop, .nl-backdrop { position: absolute; inset: 0; background: rgba(var(--c-text-rgb), .45); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); animation: fade-in .25s ease; }
.qr-dialog, .nl-dialog { position: relative; width: min(26rem, 100%); background: var(--c-bg); border-radius: var(--radius-lg); padding: 2.2rem 1.8rem 1.8rem; text-align: center; box-shadow: var(--shadow-lg); animation: pop-in .4s var(--anim-ease); }
.qr-dialog h2, .nl-dialog h2 { font-size: 1.55rem; }
.qr-close { position: absolute; top: .9rem; right: .9rem; width: 2.4rem; height: 2.4rem; display: grid; place-items: center; border: 0; border-radius: 50%; background: var(--c-surface-2); }
.qr-code { width: 220px; height: 220px; margin: 1.2rem auto; padding: 12px; background: #fff; border-radius: 1rem; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .06); }
.qr-code svg, .qr-code img { width: 100%; height: 100%; display: block; }
.qr-url { font-size: .8rem; color: var(--c-muted); word-break: break-all; margin: 0; }
.nl-icon { width: 4rem; height: 4rem; margin: 0 auto 1rem; display: grid; place-items: center; border-radius: 1.3rem; background: var(--gradient); color: #fff; box-shadow: 0 14px 30px rgba(var(--c-primary-rgb), .3); }
.nl-icon .icon { width: 1.8rem; height: 1.8rem; }
.nl-dialog p { color: var(--c-muted); }
.cookie-banner { position: fixed; left: 50%; bottom: max(1rem, env(safe-area-inset-bottom)); z-index: 140; translate: -50% 0; width: min(46rem, calc(100% - 2rem)); display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .8rem 1.2rem; padding: 1rem 1.2rem; border-radius: var(--radius); background: var(--c-bg); border: 1px solid var(--c-border); box-shadow: var(--shadow-lg); animation: slide-up .45s var(--anim-ease); }
.cookie-banner[hidden] { display: none; }
.cookie-banner p { margin: 0; display: flex; gap: .6rem; align-items: flex-start; font-size: .92rem; flex: 1 1 18rem; }
.cookie-banner p .icon { color: var(--c-primary); margin-top: .15rem; }
.cookie-banner > div { display: flex; gap: .5rem; }
@keyframes fade-in { from { opacity: 0; } }
@keyframes pop-in { from { opacity: 0; transform: translateY(14px) scale(.97); } }
@keyframes slide-up { from { opacity: 0; transform: translateY(24px); } }

/* Notifications temporaires */
.toasts { position: fixed; top: max(1rem, env(safe-area-inset-top)); right: max(1rem, env(safe-area-inset-right)); z-index: 3000; display: grid; gap: .6rem; width: min(24rem, calc(100% - 2rem)); pointer-events: none; }
.toast { position: relative; display: grid; grid-template-columns: auto 1fr auto; gap: .75rem; align-items: start; padding: .95rem 1rem; border-radius: var(--radius); background: var(--c-bg); color: var(--c-text); border: 1px solid var(--c-border); box-shadow: var(--shadow-lg); overflow: hidden; pointer-events: auto; animation: toast-in .45s var(--anim-ease); }
.toast.is-leaving { animation: toast-out .35s ease forwards; }
.toast-icon { width: 2rem; height: 2rem; display: grid; place-items: center; border-radius: .7rem; background: var(--c-primary-soft); color: var(--c-primary); }
.toast-success .toast-icon { background: rgba(22, 163, 74, .12); color: #15803d; }
.toast-error .toast-icon { background: rgba(220, 38, 38, .12); color: #dc2626; }
.toast-warning .toast-icon { background: rgba(217, 119, 6, .14); color: #b45309; }
.toast-msg { font-size: .92rem; line-height: 1.45; padding-top: .2rem; }
.toast-close { width: 1.8rem; height: 1.8rem; display: grid; place-items: center; border: 0; background: none; border-radius: 50%; color: var(--c-muted); }
.toast-close:hover { background: var(--c-surface-2); }
.toast-bar { position: absolute; left: 0; bottom: 0; height: 3px; width: 100%; background: currentColor; opacity: .35; transform-origin: left; animation: toast-bar linear forwards; animation-duration: var(--t, 4500ms); }
.toast-success .toast-bar { color: #16a34a; } .toast-error .toast-bar { color: #dc2626; } .toast-warning .toast-bar { color: #d97706; } .toast-info .toast-bar { color: var(--c-primary); }
.toast:hover .toast-bar { animation-play-state: paused; }
@keyframes toast-in { from { opacity: 0; transform: translateX(30px) scale(.96); } }
@keyframes toast-out { to { opacity: 0; transform: translateX(30px) scale(.96); } }
@keyframes toast-bar { from { transform: scaleX(1); } to { transform: scaleX(0); } }
@media (max-width: 640px) { .toasts { top: auto; bottom: max(5.5rem, calc(env(safe-area-inset-bottom) + 5rem)); left: 1rem; right: 1rem; width: auto; } }

/* ---------- 9. En-tête des pages, fil d'Ariane, titres de section ---------- */
.page-hero { position: relative; overflow: hidden; padding: clamp(3.5rem, 8vw, 6.5rem) 0 clamp(2.5rem, 6vw, 4.5rem); background: radial-gradient(ellipse at 10% 0, var(--c-primary-soft), transparent 55%), radial-gradient(ellipse at 95% 100%, var(--c-accent-soft), transparent 50%), var(--c-surface); border-bottom: 1px solid var(--c-border); isolation: isolate; }
.page-hero.has-image { color: #fff; background: var(--c-secondary); border: 0; }
.page-hero.has-image .page-title, .page-hero.has-image .page-intro { color: #fff; }
.page-hero.has-image .breadcrumbs a, .page-hero.has-image .breadcrumbs span { color: rgba(255, 255, 255, .85); }
.page-hero-bg { position: absolute; inset: 0; z-index: -2; }
.page-hero-bg img { width: 100%; height: 100%; object-fit: cover; }
.page-hero.has-image::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(0, 0, 0, .45), rgba(0, 0, 0, .62)); }
.page-hero-deco span { position: absolute; z-index: -1; border-radius: 50%; filter: blur(2px); }
.page-hero-deco span:first-child { width: 22rem; height: 22rem; right: -6rem; top: -8rem; border: 1px solid rgba(var(--c-primary-rgb), .14); }
.page-hero-deco span:last-child { width: 12rem; height: 12rem; right: 12%; bottom: -5rem; background: radial-gradient(circle, var(--c-accent-soft), transparent 70%); }
.page-title { margin: .4rem 0 .6rem; max-width: 20ch; }
.page-intro { max-width: 46rem; font-size: clamp(1.02rem, .98rem + .3vw, 1.22rem); color: var(--c-muted); margin: 0; }
.page-hero-detail .page-title { max-width: 26ch; }
.hero-chips { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1.4rem; }
.breadcrumbs ol { list-style: none; margin: 0 0 1rem; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .5rem; font-size: .84rem; }
.breadcrumbs li { display: inline-flex; align-items: center; gap: .5rem; color: var(--c-muted); }
.breadcrumbs li + li::before { content: ""; width: .35rem; height: .35rem; border-top: 1.5px solid currentColor; border-right: 1.5px solid currentColor; transform: rotate(45deg); opacity: .6; }
.breadcrumbs a { color: var(--c-muted); }
.breadcrumbs a:hover { color: var(--c-primary); }
.breadcrumbs [aria-current] { color: var(--c-text); font-weight: 600; max-width: 26ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sec-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem 2rem; flex-wrap: wrap; margin-bottom: clamp(2rem, 4vw, 3.25rem); }
.sec-head-center { justify-content: center; text-align: center; }
.sec-head-center .sec-head-text { margin-inline: auto; }
.sec-head-text { max-width: 46rem; }
.sec-title { margin: 0; }
.sec-intro { margin: .9rem 0 0; color: var(--c-muted); font-size: clamp(1rem, .96rem + .25vw, 1.16rem); }
.sec-link { display: inline-flex; align-items: center; gap: .45rem; font-weight: 650; padding: .55rem 1rem; border-radius: 999px; border: 1px solid var(--c-border); color: var(--c-text); transition: all .25s var(--anim-ease); }
.sec-link:hover { border-color: var(--c-primary); color: var(--c-primary); gap: .7rem; }
.sec-head-center + .sec-link { margin: 0 auto; }

/* ---------- 10. Bannière d'accueil (Hero) ---------- */
.hero { position: relative; overflow: hidden; isolation: isolate; display: flex; align-items: center; }
.hero-h-medium { min-height: clamp(26rem, 62vh, 40rem); }
.hero-h-large { min-height: clamp(32rem, 82vh, 56rem); }
.hero-h-full { min-height: 100vh; min-height: 100svh; }
.hero-h-auto { min-height: 0; }
.hero > .container, .hero-slider { width: 100%; }
.hero-split, .hero-minimal, .hero-centered { padding-block: clamp(4rem, 9vw, 7.5rem); background: radial-gradient(ellipse at 0 0, var(--c-primary-soft), transparent 50%), radial-gradient(ellipse at 100% 90%, var(--c-accent-soft), transparent 45%), var(--c-bg); }
[data-header-style="transparent"].is-home .hero:first-child { padding-top: calc(clamp(4rem, 9vw, 7.5rem) + 4.75rem); }
.hero-grid { display: grid; gap: clamp(2.5rem, 6vw, 4.5rem); align-items: center; }
@media (min-width: 960px) { .hero-grid:not(.hero-grid-single) { grid-template-columns: 1.08fr .92fr; } }
.hero-grid-single .hero-content { max-width: 52rem; }
.hero-align-center .hero-grid-single, .hero-centered .hero-grid-single { justify-items: center; text-align: center; }
.hero-align-center .hero-content, .hero-centered .hero-content { margin-inline: auto; }
.hero-align-center .hero-actions, .hero-centered .hero-actions, .hero-align-center .hero-badges, .hero-centered .hero-badges { justify-content: center; }
.hero-title { font-size: clamp(2.35rem, 1.5rem + 4.2vw, 5.1rem); line-height: 1.04; letter-spacing: -.03em; margin: 0 0 1.2rem; }
.hero-minimal .hero-title { font-size: clamp(2.1rem, 1.4rem + 3vw, 3.9rem); }
.hero-script { display: block; font-size: clamp(1.7rem, 1.2rem + 2vw, 2.8rem); margin: -.2rem 0 .25rem; line-height: 1.1; }
.hero-text { font-size: clamp(1.05rem, .98rem + .4vw, 1.3rem); color: var(--c-muted); max-width: 40rem; margin-bottom: 2rem; }
.hero-actions { display: flex; flex-wrap: wrap; gap: .8rem; }
.hero-badges { list-style: none; margin: 2.25rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .6rem 1.4rem; }
.hero-badges li { display: inline-flex; align-items: center; gap: .5rem; font-size: .92rem; font-weight: 600; color: var(--c-text); }
.hero-badges .icon { color: var(--c-primary); }
.rotator { position: relative; display: inline-grid; vertical-align: bottom; color: var(--c-primary); }
.rotator::after { content: ""; position: absolute; left: 0; right: 0; bottom: .06em; height: .18em; border-radius: .1em; background: var(--c-accent-soft); z-index: -1; }
.rotator-word { grid-area: 1 / 1; opacity: 0; transform: translateY(.45em); filter: blur(4px); transition: opacity .5s ease, transform .6s var(--anim-ease), filter .5s ease; white-space: nowrap; }
.rotator-word.is-active { opacity: 1; transform: none; filter: none; }
.rotator-word.is-out { opacity: 0; transform: translateY(-.45em); filter: blur(4px); }
.hero-visual { position: relative; }
.hero-visual-frame { position: relative; z-index: 1; border-radius: calc(var(--radius-lg) * 1.3); overflow: hidden; box-shadow: var(--shadow-lg); aspect-ratio: 4 / 4.4; transform-style: preserve-3d; }
.hero-visual-frame img { width: 100%; height: 100%; object-fit: cover; }
.hero-visual-frame picture { height: 100%; }
.hero-visual-frame.is-transparent { box-shadow: none; overflow: visible; aspect-ratio: auto; }
.hero-visual-frame.is-transparent img { object-fit: contain; filter: drop-shadow(0 30px 40px rgba(0, 0, 0, .18)); }
.hero-visual-brand { display: grid; place-items: center; }
.hero-visual-brand .hero-visual-frame { width: min(100%, 440px); margin-inline: auto; }
.hero-visual-brand .hero-visual-frame img { width: 100%; height: auto; }
.hero-ring { position: absolute; inset: -6% -5% auto auto; width: 70%; aspect-ratio: 1; border-radius: 50%; border: 1.5px dashed rgba(var(--c-primary-rgb), .3); animation: spin 60s linear infinite; z-index: 0; }
.hero-deco { position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.blob { position: absolute; border-radius: 50%; filter: blur(60px); opacity: .5; }
.blob.b1 { width: 28rem; height: 28rem; left: -8rem; top: -8rem; background: rgba(var(--c-primary-rgb), .3); }
.blob.b2 { width: 22rem; height: 22rem; right: -6rem; bottom: -6rem; background: rgba(var(--c-accent-rgb), .32); }
.grid-dots { position: absolute; inset: 0; background-image: radial-gradient(rgba(var(--c-text-rgb), .09) 1px, transparent 1px); background-size: 24px 24px; mask-image: radial-gradient(ellipse at 70% 40%, #000 0, transparent 65%); -webkit-mask-image: radial-gradient(ellipse at 70% 40%, #000 0, transparent 65%); }
.hero-bg { position: absolute; inset: -4% 0; z-index: -2; }
.hero-bg img, .hero-bg video, .hero-bg iframe, .hero-bg picture { width: 100%; height: 100%; object-fit: cover; border: 0; }
.hero-bg iframe { position: absolute; top: 50%; left: 50%; width: 177.78vh; min-width: 100%; height: 56.25vw; min-height: 100%; translate: -50% -50%; pointer-events: none; }
.hero-shade { position: absolute; inset: 0; z-index: -1; background: linear-gradient(105deg, rgba(0, 0, 0, calc(var(--overlay) + .18)) 0%, rgba(0, 0, 0, var(--overlay)) 45%, rgba(0, 0, 0, calc(var(--overlay) * .55)) 100%); }
.hero-align-center .hero-shade { background: rgba(0, 0, 0, var(--overlay)); }
.hero-dark { color: #fff; padding-block: clamp(5rem, 11vw, 8rem); }
.hero-dark .hero-title, .hero-dark .hero-badges li { color: #fff; }
.hero-dark .hero-text { color: rgba(255, 255, 255, .88); }
.hero-dark .hero-badges .icon { color: var(--c-accent); }
.hero-dark .eyebrow { color: #fff; background: rgba(255, 255, 255, .14); border-color: rgba(255, 255, 255, .25); backdrop-filter: blur(6px); }
.hero-dark .rotator { color: var(--c-accent); }
.hero-dark .rotator::after { background: rgba(255, 255, 255, .14); }
.kenburns img { animation: kenburns 22s ease-in-out infinite alternate; }
@keyframes kenburns { from { transform: scale(1.02); } to { transform: scale(1.14) translate(-1.5%, -1%); } }
.hero-slider { position: relative; min-height: inherit; display: grid; align-self: stretch; }
.hero-slide { grid-area: 1 / 1; position: relative; display: flex; align-items: center; isolation: isolate; opacity: 0; visibility: hidden; transition: opacity 1.1s ease, visibility 1.1s; padding-block: clamp(5rem, 11vw, 8rem) clamp(6rem, 12vw, 9rem); }
.hero-slide.is-active { opacity: 1; visibility: visible; }
.hero-slide .hero-bg { inset: 0; }
.hero-slide-content { max-width: 76rem; }
.hero-slide-content > * { max-width: 46rem; }
.hero-slide .hero-title, .hero-slide .hero-text, .hero-slide .hero-actions, .hero-slide .eyebrow { opacity: 0; transform: translateY(26px); transition: opacity .8s ease, transform .9s var(--anim-ease); }
.hero-slide.is-active .hero-title, .hero-slide.is-active .hero-text, .hero-slide.is-active .hero-actions, .hero-slide.is-active .eyebrow { opacity: 1; transform: none; }
.hero-slide.is-active .hero-title { transition-delay: .25s; } .hero-slide.is-active .hero-text { transition-delay: .4s; } .hero-slide.is-active .hero-actions { transition-delay: .55s; }
.slider-ui { position: absolute; left: 0; right: 0; bottom: clamp(1.5rem, 4vw, 2.5rem); margin-inline: auto; display: flex; align-items: center; justify-content: space-between; gap: 1rem; z-index: 3; }
.slider-dots { display: flex; gap: .55rem; }
.slider-dots button { width: 2.6rem; height: 1.4rem; padding: 0; border: 0; background: none; display: grid; align-items: center; }
.slider-dots button span { display: block; height: 3px; border-radius: 3px; background: rgba(255, 255, 255, .35); overflow: hidden; position: relative; }
.slider-dots button span::after { content: ""; position: absolute; inset: 0; background: #fff; transform: scaleX(0); transform-origin: left; }
.slider-dots button.is-active span::after { animation: dot-fill var(--slide-ms, 6500ms) linear forwards; }
.slider-dots button.is-done span::after { transform: scaleX(1); }
@keyframes dot-fill { to { transform: scaleX(1); } }
.slider-arrows { display: flex; gap: .5rem; }
.slider-arrows button { width: 3rem; height: 3rem; display: grid; place-items: center; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .35); background: rgba(255, 255, 255, .08); color: #fff; backdrop-filter: blur(8px); transition: background-color .2s; }
.slider-arrows button:hover { background: rgba(255, 255, 255, .22); }
@media (max-width: 899px), (max-height: 640px) { .scroll-hint { display: none !important; } }
.scroll-hint { position: absolute; left: 50%; bottom: 1.6rem; translate: -50% 0; width: 1.7rem; height: 2.7rem; border-radius: 1rem; border: 2px solid currentColor; color: var(--c-muted); opacity: .8; z-index: 2; }
.hero-dark .scroll-hint { color: #fff; }
.scroll-hint span { position: absolute; left: 50%; top: .45rem; width: 4px; height: 8px; border-radius: 2px; background: currentColor; translate: -50% 0; animation: scroll-hint 1.8s ease-in-out infinite; }
@keyframes scroll-hint { 0% { opacity: 0; transform: translateY(0); } 30% { opacity: 1; } 100% { opacity: 0; transform: translateY(14px); } }
#after-hero { position: absolute; bottom: 0; }
@media (max-width: 959px) { .hero-visual { max-width: 30rem; margin-inline: auto; width: 100%; } .hero-visual-frame { aspect-ratio: 4 / 3.4; } }

/* ---------- 11. Texte riche ---------- */
.prose { font-size: 1.06rem; line-height: 1.78; color: var(--c-text); max-width: 72ch; }
.sec-head-center ~ .prose, .text-center .prose { margin-inline: auto; }
.prose > :first-child { margin-top: 0; }
.prose > :last-child { margin-bottom: 0; }
.prose h2 { font-size: clamp(1.45rem, 1.2rem + 1vw, 2rem); margin: 2.2rem 0 .8rem; }
.prose h3 { margin: 1.8rem 0 .6rem; }
.prose ul, .prose ol { padding-left: 1.3rem; margin: 0 0 1.2rem; }
.prose li { margin: .35rem 0; }
.prose ul li::marker { color: var(--c-primary); }
.prose a { text-decoration: underline; text-decoration-color: rgba(var(--c-primary-rgb), .4); text-underline-offset: 3px; text-decoration-thickness: 1.5px; }
.prose a:hover { text-decoration-color: currentColor; }
.prose blockquote { margin: 1.6rem 0; padding: 1rem 1.4rem; border-left: 4px solid var(--c-accent); background: var(--c-surface); border-radius: 0 var(--radius-sm) var(--radius-sm) 0; font-family: var(--font-heading); font-size: 1.15rem; font-style: italic; }
.prose img { border-radius: var(--radius); margin: 1.5rem 0; }
.prose table { width: 100%; border-collapse: collapse; margin: 1.5rem 0; font-size: .95rem; display: block; overflow-x: auto; }
.prose th, .prose td { padding: .7rem .9rem; border-bottom: 1px solid var(--c-border); text-align: left; }
.prose th { background: var(--c-surface); font-weight: 700; }
.prose-cols-2 { max-width: none; }
@media (min-width: 900px) { .prose-cols-2 { columns: 2; column-gap: 3.5rem; } .prose-cols-2 > * { break-inside: avoid; } }
.prose-article { font-size: 1.12rem; max-width: none; }
.prose-article > p:first-of-type::first-letter { font-family: var(--font-heading); float: left; font-size: 3.6em; line-height: .85; padding: .05em .12em 0 0; color: var(--c-primary); font-weight: 700; }
.is-inverse .prose, .is-inverse .prose h2, .is-inverse .prose h3 { color: #fff; }
.is-inverse .prose blockquote { background: rgba(255, 255, 255, .08); }

/* ---------- 12. Cartes, tuiles, listes de contenus ---------- */
.items { position: relative; }
.card { position: relative; display: flex; flex-direction: column; background: var(--c-bg); border: 1px solid var(--c-border); border-radius: var(--radius-lg); overflow: hidden; transition: transform .45s var(--anim-ease), box-shadow .45s var(--anim-ease), border-color .3s; transform-style: preserve-3d; }
.bg-soft .card, .bg-alt .card { background: var(--c-bg); }
.card:hover { box-shadow: var(--shadow-lg); border-color: transparent; transform: translateY(-6px); }
.card-media { position: relative; display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--c-surface-2); }
.card-media img, .card-media picture { width: 100%; height: 100%; object-fit: cover; transition: transform 1.1s var(--anim-ease); }
.card:hover .card-media img { transform: scale(1.07); }
.card-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 55%, rgba(0, 0, 0, .22)); opacity: 0; transition: opacity .4s; }
.card:hover .card-media::after { opacity: 1; }
.card-chips { position: absolute; top: .85rem; left: .85rem; right: .85rem; display: flex; flex-wrap: wrap; gap: .4rem; z-index: 1; }
.card-chips .chip-soft { background: rgba(255, 255, 255, .92); color: var(--c-secondary); backdrop-filter: blur(6px); }
html[data-theme="dark"] .card-chips .chip-soft { background: rgba(0, 0, 0, .55); color: #fff; }
.card-body { display: flex; flex-direction: column; flex: 1; gap: .55rem; padding: 1.35rem 1.4rem 1.3rem; }
.card-meta { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; font-size: .82rem; color: var(--c-muted); }
.card-meta-text { display: inline-flex; align-items: center; gap: .35rem; }
.card-title { font-size: 1.2rem; margin: 0; line-height: 1.3; }
.card-title a { color: var(--c-text); background: linear-gradient(currentColor, currentColor) 0 100% / 0 1.5px no-repeat; transition: background-size .45s var(--anim-ease), color .2s; }
.card-title a::before { content: ""; position: absolute; inset: 0; z-index: 0; }
.card:hover .card-title a { color: var(--c-primary); background-size: 100% 1.5px; }
.card-text { margin: 0; color: var(--c-muted); font-size: .95rem; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.card-foot { margin-top: auto; padding-top: .9rem; display: flex; align-items: center; justify-content: space-between; gap: .75rem; border-top: 1px dashed var(--c-border); }
.card-price { font-weight: 750; color: var(--c-text); font-size: 1.02rem; }
.card-price s { color: var(--c-muted); font-weight: 500; font-size: .85em; margin-right: .25rem; }
.card-link { position: relative; z-index: 1; width: 2.5rem; height: 2.5rem; display: grid; place-items: center; border-radius: 50%; background: var(--c-primary-soft); color: var(--c-primary); transition: transform .35s var(--anim-ease), background-color .25s, color .25s; }
.card:hover .card-link { background: var(--c-primary); color: var(--c-on-primary); transform: rotate(-45deg); }
.list-cards { display: grid; gap: 1.25rem; }
.list-cards .card { flex-direction: row; }
.list-cards .card-media { flex: 0 0 min(38%, 20rem); aspect-ratio: auto; min-height: 13rem; }
@media (max-width: 640px) { .list-cards .card { flex-direction: column; } .list-cards .card-media { flex: none; aspect-ratio: 16 / 10; min-height: 0; } }
.tile { position: relative; display: block; border-radius: var(--radius-lg); overflow: hidden; color: #fff; background: var(--c-secondary); isolation: isolate; transform-style: preserve-3d; }
.tile-media { aspect-ratio: 4 / 5; }
.tile-media img, .tile-media picture, .tile-media .img-ph { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--anim-ease); }
.tile:hover .tile-media img { transform: scale(1.08); }
.tile-overlay { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; gap: .45rem; padding: 1.4rem; background: linear-gradient(180deg, rgba(0, 0, 0, 0) 35%, rgba(0, 0, 0, .78)); }
.tile-chips { position: absolute; top: 1rem; left: 1rem; display: flex; flex-wrap: wrap; gap: .4rem; }
.tile-chips .chip-soft { background: rgba(255, 255, 255, .9); color: var(--c-secondary); }
.tile-title { color: #fff; margin: 0; font-size: 1.3rem; transform: translateY(.6rem); transition: transform .5s var(--anim-ease); }
.tile-meta { font-size: .85rem; color: rgba(255, 255, 255, .85); transform: translateY(.6rem); transition: transform .5s var(--anim-ease) .03s; }
.tile-cta { display: inline-flex; align-items: center; gap: .4rem; font-weight: 650; font-size: .9rem; color: var(--c-accent); opacity: 0; transform: translateY(.8rem); transition: opacity .4s, transform .5s var(--anim-ease) .06s; }
.tile:hover .tile-title, .tile:hover .tile-meta, .tile:focus-visible .tile-title { transform: none; }
.tile:hover .tile-cta, .tile:focus-visible .tile-cta { opacity: 1; transform: none; }
@media (hover: none) { .tile-cta { opacity: 1; transform: none; } .tile-title, .tile-meta { transform: none; } }
.masonry { columns: 1; column-gap: clamp(1rem, 2vw, 1.5rem); }
.masonry > * { break-inside: avoid; margin-bottom: clamp(1rem, 2vw, 1.5rem); display: block; }
@media (min-width: 640px) { .masonry { columns: 2; } }
@media (min-width: 1000px) { .masonry.mcols-3 { columns: 3; } .masonry.mcols-4 { columns: 4; } }
.masonry .tile:nth-child(3n + 1) .tile-media { aspect-ratio: 4 / 5.2; }
.masonry .tile:nth-child(3n + 2) .tile-media { aspect-ratio: 4 / 3.4; }
.masonry .tile:nth-child(3n) .tile-media { aspect-ratio: 1; }
.list-tools { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 2rem; }
.filter-chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.list-search { position: relative; flex: 0 1 20rem; }
.list-search .icon { position: absolute; left: 1rem; top: 50%; translate: 0 -50%; color: var(--c-muted); }
.list-search input { width: 100%; min-height: 2.75rem; padding: .6rem 1rem .6rem 2.7rem; border-radius: 999px; border: 1px solid var(--c-border); background: var(--c-surface); outline: none; transition: border-color .2s, box-shadow .2s; }
.list-search input:focus { border-color: var(--c-primary); box-shadow: 0 0 0 4px var(--c-primary-soft); }
[data-filter-target] > .is-filtered-out { display: none !important; }
.pager { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: .4rem; margin-top: 3rem; }
.pager-btn, .pager-num { min-width: 2.75rem; height: 2.75rem; padding: 0 .7rem; display: inline-grid; place-items: center; border-radius: 999px; border: 1px solid var(--c-border); color: var(--c-text); font-weight: 650; background: var(--c-bg); transition: all .2s; }
.pager-btn:hover, a.pager-num:hover { border-color: var(--c-primary); color: var(--c-primary); }
.pager-num.is-active { background: var(--c-primary); color: var(--c-on-primary); border-color: var(--c-primary); }
.pager-btn.is-disabled { opacity: .35; pointer-events: none; }
.pager-gap { color: var(--c-muted); padding: 0 .3rem; }

/* ---------- 13. Cartes à icônes, chiffres, étapes, frise ---------- */
.feature { position: relative; display: flex; flex-direction: column; gap: 1rem; padding: clamp(1.4rem, 2.5vw, 1.9rem); border-radius: var(--radius-lg); background: var(--c-bg); border: 1px solid var(--c-border); color: var(--c-text); transition: transform .45s var(--anim-ease), box-shadow .45s var(--anim-ease), border-color .3s; overflow: hidden; isolation: isolate; }
a.feature:hover { color: var(--c-text); }
.feature::before { content: ""; position: absolute; inset: auto -30% -60% auto; width: 14rem; height: 14rem; border-radius: 50%; background: radial-gradient(circle, var(--c-primary-soft), transparent 70%); opacity: 0; transition: opacity .5s; z-index: -1; }
.feature:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); border-color: transparent; }
.feature:hover::before { opacity: 1; }
.feature-icon { width: 3.4rem; height: 3.4rem; display: grid; place-items: center; border-radius: 1.1rem; background: var(--c-primary-soft); color: var(--c-primary); transition: transform .5s var(--anim-ease), background-color .3s, color .3s; }
.feature-icon .icon { width: 1.6rem; height: 1.6rem; }
.feature:hover .feature-icon { transform: rotate(-8deg) scale(1.06); background: var(--c-primary); color: var(--c-on-primary); }
.feature-num { font-family: var(--font-heading); font-size: 2.6rem; font-weight: 800; line-height: 1; background: var(--gradient); -webkit-background-clip: text; background-clip: text; color: transparent; }
.feature-body h3 { margin: 0 0 .45rem; }
.feature-body p { margin: 0; color: var(--c-muted); font-size: .97rem; }
.feature-more { display: inline-flex; align-items: center; gap: .35rem; margin-top: .9rem; font-weight: 650; font-size: .9rem; color: var(--c-primary); }
.features-minimal .feature { background: transparent; border: 0; padding: .5rem 0; }
.features-minimal .feature:hover { box-shadow: none; transform: none; }
.features-glass .feature { background: color-mix(in srgb, var(--c-bg) 55%, transparent); backdrop-filter: blur(14px); border-color: rgba(255, 255, 255, .25); }
.is-inverse .features-glass .feature { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .16); color: #fff; }
.is-inverse .features-glass .feature-body p { color: rgba(255, 255, 255, .82); }
.features-icon-left .feature { flex-direction: row; align-items: flex-start; }
.features-numbered .feature { border-top: 3px solid var(--c-primary); }
.is-inverse .feature:not(.features-glass .feature) { color: var(--c-text); }
.stats { display: grid; gap: clamp(1rem, 2vw, 1.5rem); grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 900px) { .stats.cols-3 { grid-template-columns: repeat(3, 1fr); } .stats.cols-4 { grid-template-columns: repeat(4, 1fr); } }
.stats.cols-1 { grid-template-columns: 1fr; }
.stat { display: grid; justify-items: center; text-align: center; gap: .35rem; padding: clamp(1.4rem, 3vw, 2.2rem) 1rem; border-radius: var(--radius-lg); background: var(--c-bg); border: 1px solid var(--c-border); }
.stats-plain .stat { background: transparent; border: 0; }
.stats-plain .stat + .stat { border-left: 1px solid var(--c-border); }
@media (max-width: 899px) { .stats-plain .stat:nth-child(2n + 1) { border-left: 0; } }
.is-inverse .stat { background: rgba(255, 255, 255, .07); border-color: rgba(255, 255, 255, .14); }
.is-inverse .stats-plain .stat { background: transparent; }
.stat-icon { width: 3rem; height: 3rem; display: grid; place-items: center; border-radius: 1rem; background: var(--c-primary-soft); color: var(--c-primary); margin-bottom: .3rem; }
.is-inverse .stat-icon { background: rgba(255, 255, 255, .12); color: var(--c-accent); }
.stat-value { font-family: var(--font-heading); font-size: clamp(2.3rem, 1.6rem + 2.8vw, 3.8rem); line-height: 1; font-weight: 800; letter-spacing: -.03em; background: var(--gradient); -webkit-background-clip: text; background-clip: text; color: transparent; font-variant-numeric: tabular-nums; }
.is-inverse .stat-value { background: none; color: #fff; }
.stat-suffix { font-size: .55em; margin-left: .05em; }
.stat-label { color: var(--c-muted); font-weight: 550; font-size: .95rem; }
.is-inverse .stat-label { color: rgba(255, 255, 255, .8); }
.steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 2rem 1.5rem; counter-reset: step; }
@media (min-width: 760px) { .steps.cols-2 { grid-template-columns: repeat(2, 1fr); } .steps.cols-3 { grid-template-columns: repeat(3, 1fr); } .steps.cols-4 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1100px) { .steps.cols-4 { grid-template-columns: repeat(4, 1fr); } }
.step { position: relative; text-align: center; padding: 0 .5rem; }
.step-badge { position: relative; width: 5rem; height: 5rem; margin: 0 auto 1.2rem; display: grid; place-items: center; border-radius: 50%; background: var(--c-bg); border: 1.5px solid var(--c-border); color: var(--c-primary); box-shadow: var(--shadow-sm); z-index: 1; transition: transform .45s var(--anim-ease), box-shadow .45s; }
.step:hover .step-badge { transform: scale(1.07); box-shadow: var(--shadow); }
.step-badge .icon { width: 1.8rem; height: 1.8rem; }
.step-n { position: absolute; top: -.35rem; right: -.35rem; width: 1.75rem; height: 1.75rem; display: grid; place-items: center; border-radius: 50%; background: var(--gradient-btn); color: var(--c-on-primary); font-size: .8rem; font-weight: 800; box-shadow: 0 0 0 4px var(--c-bg); }
.step-badge:not(:has(.icon)) .step-n { position: static; width: 100%; height: 100%; font-size: 1.6rem; font-family: var(--font-heading); box-shadow: none; }
.step h3 { margin-bottom: .45rem; }
.step p { color: var(--c-muted); font-size: .96rem; margin: 0; }
@media (min-width: 760px) { .step:not(:last-child)::after { content: ""; position: absolute; top: 2.5rem; left: calc(50% + 3.2rem); right: calc(-50% + 3.2rem); height: 2px; background: repeating-linear-gradient(90deg, var(--c-border) 0 8px, transparent 8px 14px); } .steps.cols-4 .step:nth-child(2n)::after { display: none; } }
@media (min-width: 1100px) { .steps.cols-4 .step:nth-child(2n):not(:last-child)::after { display: block; } }
.timeline { position: relative; max-width: 56rem; margin-inline: auto; padding: .5rem 0; }
.timeline::before { content: ""; position: absolute; top: 0; bottom: 0; left: 1.1rem; width: 2px; background: linear-gradient(var(--c-primary), var(--c-accent)); border-radius: 2px; opacity: .45; }
.tl-item { position: relative; padding: 0 0 2rem 3.4rem; }
.tl-dot { position: absolute; left: .55rem; top: .9rem; width: 1.15rem; height: 1.15rem; border-radius: 50%; background: var(--c-bg); border: 3px solid var(--c-primary); box-shadow: 0 0 0 5px var(--c-primary-soft); }
.tl-card { padding: 1.25rem 1.4rem; border-radius: var(--radius); background: var(--c-bg); border: 1px solid var(--c-border); box-shadow: var(--shadow-sm); }
.tl-date { display: inline-block; font-size: .8rem; font-weight: 750; letter-spacing: .05em; color: var(--c-primary); margin-bottom: .3rem; text-transform: uppercase; }
.tl-card h3 { margin: 0 0 .35rem; }
.tl-card p { margin: 0; color: var(--c-muted); }
@media (min-width: 860px) {
  .timeline::before { left: 50%; translate: -1px 0; }
  .tl-item { width: 50%; padding: 0 3rem 2.5rem 0; }
  .tl-item:nth-child(even) { margin-left: 50%; padding: 0 0 2.5rem 3rem; }
  .tl-item .tl-dot { left: auto; right: -.58rem; }
  .tl-item:nth-child(even) .tl-dot { left: -.58rem; right: auto; }
  .tl-item:nth-child(odd) .tl-card { text-align: right; }
}

/* ---------- 14. Onglets, accordéon, tarifs ---------- */
.tabs { max-width: 64rem; margin-inline: auto; }
.tab-list { position: relative; display: flex; gap: .3rem; padding: .35rem; margin: 0 auto 2rem; width: max-content; max-width: 100%; overflow-x: auto; scrollbar-width: none; border-radius: 999px; background: var(--c-surface-2); border: 1px solid var(--c-border); }
.tab-list::-webkit-scrollbar { display: none; }
.tab-list button { position: relative; z-index: 1; display: inline-flex; align-items: center; gap: .45rem; flex: none; border: 0; background: none; padding: .65rem 1.2rem; border-radius: 999px; font-weight: 650; color: var(--c-muted); transition: color .25s; white-space: nowrap; }
.tab-list button[aria-selected="true"] { color: var(--c-on-primary); }
.tab-ink { position: absolute; z-index: 0; top: .35rem; bottom: .35rem; left: 0; width: 0; border-radius: 999px; background: var(--gradient-btn); box-shadow: 0 6px 16px rgba(var(--c-primary-rgb), .3); transition: transform .45s var(--anim-ease), width .45s var(--anim-ease); }
.tab-panel { animation: tab-in .5s var(--anim-ease); }
.tab-panel.has-image { display: grid; gap: 2rem; align-items: center; }
@media (min-width: 900px) { .tab-panel.has-image { grid-template-columns: 1.1fr .9fr; } }
.tab-media { border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow); }
.tab-media img { width: 100%; height: 100%; object-fit: cover; }
@keyframes tab-in { from { opacity: 0; transform: translateY(10px); } }
.accordion { max-width: 52rem; margin-inline: auto; display: grid; gap: .75rem; }
.acc-item { border-radius: var(--radius); background: var(--c-bg); border: 1px solid var(--c-border); transition: box-shadow .3s, border-color .3s; overflow: hidden; }
.acc-item.is-open { box-shadow: var(--shadow); border-color: transparent; }
.acc-h { margin: 0; font-size: 1.05rem; }
.acc-btn { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.15rem 1.35rem; border: 0; background: none; text-align: left; font-family: var(--font-body); font-weight: 650; font-size: 1.02rem; color: var(--c-text); }
.acc-btn:hover { color: var(--c-primary); }
.acc-icon { position: relative; flex: none; width: 2rem; height: 2rem; border-radius: 50%; background: var(--c-primary-soft); transition: background-color .3s, transform .4s var(--anim-ease); }
.acc-icon::before, .acc-icon::after { content: ""; position: absolute; top: 50%; left: 50%; width: .8rem; height: 2px; border-radius: 2px; background: var(--c-primary); translate: -50% -50%; transition: transform .4s var(--anim-ease), background-color .3s; }
.acc-icon::after { transform: rotate(90deg); }
.acc-item.is-open .acc-icon { background: var(--c-primary); transform: rotate(180deg); }
.acc-item.is-open .acc-icon::before, .acc-item.is-open .acc-icon::after { background: var(--c-on-primary); }
.acc-item.is-open .acc-icon::after { transform: rotate(0); }
.acc-panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .45s var(--anim-ease); }
.acc-panel:not([hidden]) { display: grid; }
.acc-item.is-open .acc-panel { grid-template-rows: 1fr; }
.acc-panel > .acc-content { overflow: hidden; padding: 0 1.35rem; color: var(--c-muted); }
.acc-item.is-open .acc-content { padding-bottom: 1.25rem; }
.acc-content > :last-child { margin-bottom: 0; }
.pricing { align-items: stretch; }
.plan { position: relative; display: flex; flex-direction: column; gap: .9rem; padding: 2rem 1.75rem; border-radius: var(--radius-lg); background: var(--c-bg); border: 1px solid var(--c-border); transition: transform .45s var(--anim-ease), box-shadow .45s; }
.plan:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); }
.plan.is-featured { border: 2px solid var(--c-primary); box-shadow: var(--shadow-lg); background: linear-gradient(180deg, var(--c-primary-soft), var(--c-bg) 40%); }
@media (min-width: 1000px) { .plan.is-featured { transform: scale(1.03); } .plan.is-featured:hover { transform: scale(1.03) translateY(-6px); } }
.plan-badge { position: absolute; top: -.85rem; left: 50%; translate: -50% 0; padding: .35rem .95rem; border-radius: 999px; background: var(--gradient-btn); color: var(--c-on-primary); font-size: .75rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; white-space: nowrap; box-shadow: 0 8px 20px rgba(var(--c-primary-rgb), .3); }
.plan-name { margin: 0; font-size: 1.2rem; }
.plan-price { display: flex; align-items: baseline; flex-wrap: wrap; gap: .35rem; }
.plan-price strong { font-family: var(--font-heading); font-size: clamp(1.9rem, 1.5rem + 1.5vw, 2.6rem); letter-spacing: -.03em; line-height: 1.05; }
.plan-price span { color: var(--c-muted); font-size: .92rem; }
.plan-desc { color: var(--c-muted); margin: 0; font-size: .95rem; }
.plan-features { list-style: none; margin: .4rem 0 1rem; padding: 0; display: grid; gap: .6rem; flex: 1; }
.plan-features li { display: flex; gap: .6rem; align-items: flex-start; font-size: .95rem; }
.plan-features .icon { flex: none; margin-top: .15rem; width: 1.2rem; height: 1.2rem; padding: .15rem; border-radius: 50%; background: var(--c-primary-soft); color: var(--c-primary); }

/* ---------- 15. Médias : image, galerie, visionneuse, carrousel, vidéo, avant/après ---------- */
.figure { margin: 0; }
.figure-media { display: block; overflow: hidden; }
.figure-media.rounded { border-radius: var(--radius-lg); box-shadow: var(--shadow); }
.figure-media img { width: 100%; transition: transform 1s var(--anim-ease); }
a.figure-media:hover img { transform: scale(1.03); }
.figure figcaption { margin-top: .8rem; text-align: center; color: var(--c-muted); font-size: .9rem; }
.gallery { display: grid; gap: clamp(.6rem, 1.4vw, 1rem); grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 760px) { .gallery.gcols-3, .gallery.gcols-4, .gallery.gcols-5 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .gallery.gcols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } .gallery.gcols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
.gallery-masonry { display: block; columns: 2; column-gap: clamp(.6rem, 1.4vw, 1rem); }
@media (min-width: 760px) { .gallery-masonry.gcols-3, .gallery-masonry.gcols-4, .gallery-masonry.gcols-5 { columns: 3; } }
@media (min-width: 1100px) { .gallery-masonry.gcols-4 { columns: 4; } .gallery-masonry.gcols-5 { columns: 5; } }
.gallery-masonry .g-item { margin-bottom: clamp(.6rem, 1.4vw, 1rem); break-inside: avoid; }
.gallery-justified { display: flex; flex-wrap: wrap; }
.gallery-justified .g-item { flex: 1 1 14rem; height: 15rem; }
.gallery-justified .g-item img, .gallery-justified .g-item picture { height: 100%; }
.g-item { position: relative; display: block; overflow: hidden; border-radius: var(--radius); background: var(--c-surface-2); isolation: isolate; }
.gallery-grid .g-item { aspect-ratio: 1; }
.g-item img, .g-item picture { width: 100%; height: 100%; object-fit: cover; transition: transform .9s var(--anim-ease), filter .5s; }
.g-item::after { content: ""; position: absolute; inset: 0; background: rgba(var(--c-primary-rgb), .35); opacity: 0; transition: opacity .4s; }
.g-item:hover img { transform: scale(1.08); }
.g-item:hover::after { opacity: 1; }
.g-zoom { position: absolute; z-index: 1; top: 50%; left: 50%; width: 3.2rem; height: 3.2rem; display: grid; place-items: center; border-radius: 50%; background: rgba(255, 255, 255, .95); color: var(--c-secondary); translate: -50% -50%; transform: scale(.6); opacity: 0; transition: opacity .35s, transform .45s var(--anim-ease); }
.g-item:hover .g-zoom, .g-item:focus-visible .g-zoom { opacity: 1; transform: none; }
.g-item.is-video .g-zoom { opacity: 1; transform: none; background: rgba(0, 0, 0, .55); color: #fff; backdrop-filter: blur(6px); }
.lightbox { position: fixed; inset: 0; z-index: 2500; display: grid; grid-template-rows: auto 1fr auto; background: rgba(8, 10, 12, .94); color: #fff; animation: fade-in .25s ease; touch-action: pan-y; }
.lb-bar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .8rem 1rem; }
.lb-count { font-size: .9rem; opacity: .75; font-variant-numeric: tabular-nums; }
.lb-tools { display: flex; gap: .4rem; }
.lb-btn { width: 2.8rem; height: 2.8rem; display: grid; place-items: center; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .1); color: #fff; transition: background-color .2s; }
.lb-btn:hover { background: rgba(255, 255, 255, .22); color: #fff; }
.lb-stage { position: relative; display: grid; place-items: center; min-height: 0; padding: 0 clamp(.5rem, 6vw, 5rem); }
.lb-stage img { max-width: 100%; max-height: calc(100vh - 9rem); max-height: calc(100svh - 9rem); object-fit: contain; border-radius: .6rem; box-shadow: 0 20px 60px rgba(0, 0, 0, .5); animation: lb-in .45s var(--anim-ease); user-select: none; -webkit-user-drag: none; }
.lb-stage iframe, .lb-stage video { width: min(100%, 72rem); aspect-ratio: 16 / 9; height: auto; max-height: calc(100vh - 9rem); border: 0; border-radius: .6rem; background: #000; }
@keyframes lb-in { from { opacity: 0; transform: scale(.96); } }
.lb-prev, .lb-next { position: absolute; top: 50%; translate: 0 -50%; width: 3.2rem; height: 3.2rem; }
.lb-prev { left: clamp(.4rem, 2vw, 1.5rem); } .lb-next { right: clamp(.4rem, 2vw, 1.5rem); }
.lb-caption { text-align: center; padding: .9rem 1rem calc(1.2rem + env(safe-area-inset-bottom)); font-size: .95rem; opacity: .9; min-height: 3rem; }
.lb-spinner { position: absolute; width: 2.4rem; height: 2.4rem; border-radius: 50%; border: 3px solid rgba(255, 255, 255, .25); border-top-color: #fff; animation: spin .8s linear infinite; }
@media (max-width: 640px) { .lb-prev, .lb-next { top: auto; bottom: 4.2rem; translate: none; } }
.carousel { position: relative; }
.carousel-track { display: flex; gap: clamp(1rem, 2vw, 1.5rem); overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; padding: .25rem .25rem 1.5rem; margin: -.25rem -.25rem 0; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; }
.carousel-track::-webkit-scrollbar { display: none; }
.carousel-track.is-dragging { scroll-snap-type: none; scroll-behavior: auto; cursor: grabbing; }
.carousel-slide { flex: 0 0 min(85%, 26rem); scroll-snap-align: start; }
.carousel-slide > a { color: inherit; display: block; }
.carousel-cards .carousel-slide { flex-basis: min(85%, 22rem); }
@media (min-width: 900px) { .carousel-cards .carousel-slide { flex-basis: calc((100% - (var(--cols, 3) - 1) * 1.5rem) / var(--cols, 3)); } }
.cs-media { aspect-ratio: 4 / 3; border-radius: var(--radius-lg); overflow: hidden; background: var(--c-surface-2); }
.cs-media img, .cs-media picture { width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--anim-ease); }
.carousel-slide:hover .cs-media img { transform: scale(1.05); }
.cs-caption { padding: .9rem .2rem 0; display: grid; gap: .2rem; }
.cs-caption strong { font-family: var(--font-heading); font-size: 1.12rem; }
.cs-caption span { color: var(--c-muted); font-size: .93rem; }
.carousel-nav { display: flex; align-items: center; gap: 1rem; justify-content: center; margin-top: .5rem; }
.carousel-nav button { width: 2.9rem; height: 2.9rem; display: grid; place-items: center; border-radius: 50%; border: 1px solid var(--c-border); background: var(--c-bg); color: var(--c-text); transition: all .2s; }
.carousel-nav button:hover:not(:disabled) { background: var(--c-primary); border-color: var(--c-primary); color: var(--c-on-primary); }
.carousel-nav button:disabled { opacity: .35; }
.carousel-progress { flex: 0 1 12rem; height: 3px; border-radius: 3px; background: var(--c-border); overflow: hidden; }
.carousel-progress span { display: block; height: 100%; width: 100%; background: var(--gradient); transform-origin: left; transform: scaleX(var(--p, .2)); transition: transform .3s ease; }
.is-inverse .carousel-nav button { background: rgba(255, 255, 255, .1); border-color: rgba(255, 255, 255, .25); color: #fff; }
.video-frame { position: relative; max-width: 64rem; margin-inline: auto; border-radius: var(--radius-lg); overflow: hidden; background: #000; box-shadow: var(--shadow-lg); }
.video-frame iframe, .video-frame video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; object-fit: cover; }
.video-poster { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; border: 0; background: linear-gradient(135deg, var(--c-secondary), var(--c-primary)); cursor: pointer; }
.video-poster img { width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--anim-ease), filter .4s; }
.video-poster:hover img { transform: scale(1.04); filter: brightness(.85); }
.play-btn { position: absolute; top: 50%; left: 50%; translate: -50% -50%; width: clamp(4.2rem, 8vw, 5.6rem); height: clamp(4.2rem, 8vw, 5.6rem); display: grid; place-items: center; border-radius: 50%; background: rgba(255, 255, 255, .95); color: var(--c-primary); box-shadow: 0 0 0 12px rgba(255, 255, 255, .2); transition: transform .4s var(--anim-ease), box-shadow .4s; }
.play-btn .icon { width: 40%; height: 40%; margin-left: 8%; fill: currentColor; }
.video-poster:hover .play-btn { transform: scale(1.1); box-shadow: 0 0 0 20px rgba(255, 255, 255, .14); }
.ba { margin: 0 auto; max-width: 64rem; }
.ba-stage { position: relative; border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-lg); aspect-ratio: 16 / 10; user-select: none; --pos: 50%; touch-action: pan-y; }
.ba-after, .ba-before { position: absolute; inset: 0; }
.ba-after img, .ba-before img, .ba-after picture, .ba-before picture { width: 100%; height: 100%; object-fit: cover; }
.ba-before { clip-path: inset(0 calc(100% - var(--pos)) 0 0); }
.ba-handle { position: absolute; top: 0; bottom: 0; left: var(--pos); width: 3px; translate: -50% 0; background: #fff; box-shadow: 0 0 12px rgba(0, 0, 0, .35); pointer-events: none; }
.ba-handle span { position: absolute; top: 50%; left: 50%; translate: -50% -50%; width: 3.2rem; height: 3.2rem; display: flex; align-items: center; justify-content: center; border-radius: 50%; background: #fff; color: var(--c-secondary); box-shadow: 0 10px 26px rgba(0, 0, 0, .3); }
.ba-range { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; -webkit-appearance: none; appearance: none; }
.ba-label { position: absolute; top: 1rem; z-index: 1; padding: .35rem .8rem; border-radius: 999px; background: rgba(0, 0, 0, .55); color: #fff; font-size: .78rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; backdrop-filter: blur(6px); pointer-events: none; }
.ba-label-before { left: 1rem; } .ba-label-after { right: 1rem; }
.ba figcaption { text-align: center; color: var(--c-muted); margin-top: .9rem; font-size: .92rem; }
.marquee { overflow: hidden; mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); -webkit-mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); }
.marquee-track { list-style: none; margin: 0; padding: .5rem 0; display: flex; width: max-content; gap: clamp(2.5rem, 5vw, 4.5rem); align-items: center; animation: marquee 38s linear infinite; }
.marquee:hover .marquee-track { animation-play-state: paused; }
@keyframes marquee { to { transform: translateX(-50%); } }
.logo-item img { height: clamp(2.2rem, 3.5vw, 3.2rem); width: auto; max-width: 10rem; object-fit: contain; transition: filter .4s, opacity .4s, transform .4s var(--anim-ease); }
.is-gray .logo-item img { filter: grayscale(1); opacity: .62; }
.is-gray .logo-item:hover img { filter: none; opacity: 1; transform: scale(1.06); }
html[data-theme="dark"] .is-gray .logo-item img { filter: grayscale(1) brightness(1.6); }
.logo-name { display: inline-flex; align-items: center; min-height: clamp(2.2rem, 3.5vw, 3.2rem); font-family: var(--font-heading); font-weight: 700; font-size: clamp(1rem, 1.4vw, 1.25rem); color: var(--c-muted); letter-spacing: .01em; white-space: nowrap; transition: color .3s; }
.logo-item:hover .logo-name { color: var(--c-primary); }
.logos-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: 1rem; }
.logos-grid .logo-item { display: grid; place-items: center; padding: 1.4rem; border-radius: var(--radius); background: var(--c-bg); border: 1px solid var(--c-border); }
html:not(.js) .acc-panel { grid-template-rows: 1fr; }
html:not(.js) .acc-content { padding-bottom: 1.25rem; }

/* ---------- 16. Témoignages, citation, équipe, catégories ---------- */
.testimonials.is-slider .carousel-slide { flex-basis: min(88%, 30rem); }
@media (min-width: 1000px) { .testimonials.is-slider .carousel-slide { flex-basis: calc((100% - 3rem) / 3); } }
.testimonial { position: relative; margin: 0; display: flex; flex-direction: column; gap: 1rem; padding: 1.8rem 1.6rem; border-radius: var(--radius-lg); background: var(--c-bg); border: 1px solid var(--c-border); height: 100%; transition: box-shadow .4s, transform .4s var(--anim-ease); }
.testimonial:hover { box-shadow: var(--shadow); transform: translateY(-4px); }
.testimonial::before { content: "“"; position: absolute; top: .6rem; right: 1.3rem; font-family: Georgia, serif; font-size: 5rem; line-height: 1; color: var(--c-primary); opacity: .1; }
.t-stars { display: flex; gap: .1rem; color: var(--c-border); }
.t-stars .on { color: #f5b301; }
.t-stars .on .icon { fill: currentColor; }
.testimonial blockquote { margin: 0; flex: 1; font-size: 1.02rem; line-height: 1.7; color: var(--c-text); }
.testimonial figcaption { display: flex; align-items: center; gap: .8rem; }
.testimonial figcaption strong { display: block; font-size: .98rem; }
.testimonial figcaption small { color: var(--c-muted); font-size: .84rem; }
.t-avatar { width: 3rem; height: 3rem; flex: none; border-radius: 50%; object-fit: cover; }
picture:has(.t-avatar) { flex: none; }
.t-initials { display: grid; place-items: center; background: var(--gradient); color: #fff; font-weight: 800; font-size: 1.1rem; }
.t-summary { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 1rem; margin-top: 1.5rem; }
.t-avg { display: inline-flex; align-items: center; gap: .4rem; font-size: .95rem; color: var(--c-muted); }
.t-avg .icon { color: #f5b301; fill: currentColor; }
.t-avg strong { color: var(--c-text); font-size: 1.1rem; }
.is-inverse .testimonial { background: rgba(255, 255, 255, .07); border-color: rgba(255, 255, 255, .15); }
.is-inverse .testimonial blockquote { color: #fff; }
.big-quote { position: relative; max-width: 54rem; margin: 0 auto; text-align: center; }
.quote-mark { display: block; font-family: Georgia, serif; font-size: 7rem; line-height: .7; height: 3.5rem; color: var(--c-accent); }
.big-quote blockquote { margin: 0; }
.big-quote blockquote p { font-family: var(--font-heading); font-size: clamp(1.4rem, 1.1rem + 1.4vw, 2.2rem); line-height: 1.4; font-style: italic; color: var(--c-text); margin: 0; }
.big-quote figcaption { margin-top: 1.8rem; display: inline-flex; align-items: center; gap: .9rem; text-align: left; }
.quote-avatar { width: 3.6rem; height: 3.6rem; border-radius: 50%; object-fit: cover; }
.big-quote figcaption strong { display: block; } .big-quote figcaption small { color: var(--c-muted); }
.is-inverse .big-quote blockquote p { color: #fff; }
.member { border-radius: var(--radius-lg); overflow: hidden; background: var(--c-bg); border: 1px solid var(--c-border); transition: box-shadow .4s, transform .45s var(--anim-ease); }
.member:hover { box-shadow: var(--shadow-lg); transform: translateY(-5px); }
.member-photo { aspect-ratio: 4 / 4.6; overflow: hidden; background: var(--c-surface-2); }
.member-photo img, .member-photo picture { width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--anim-ease); }
.member:hover .member-photo img { transform: scale(1.06); }
.member-body { padding: 1.2rem 1.3rem 1.4rem; }
.member-body h3 { margin: 0; }
.member-role { display: block; color: var(--c-primary); font-weight: 650; font-size: .9rem; margin-top: .2rem; }
.member-body p { color: var(--c-muted); font-size: .92rem; margin: .7rem 0 0; }
.member-links { display: flex; gap: .4rem; margin-top: 1rem; }
.member-links a { width: 2.4rem; height: 2.4rem; display: grid; place-items: center; border-radius: 50%; background: var(--c-surface-2); color: var(--c-text); transition: all .2s; }
.member-links a:hover { background: var(--c-primary); color: var(--c-on-primary); }
.cat-tile { position: relative; display: block; border-radius: var(--radius-lg); overflow: hidden; color: #fff; isolation: isolate; aspect-ratio: 4 / 3.2; background: var(--c-secondary); }
.cat-media { position: absolute; inset: 0; z-index: -2; }
.cat-media img, .cat-media picture, .cat-media .img-ph { width: 100%; height: 100%; object-fit: cover; transition: transform 1.1s var(--anim-ease); }
.cat-tile::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, transparent 30%, rgba(0, 0, 0, .75)); }
.cat-tile:hover img { transform: scale(1.08); }
.cat-body { position: absolute; left: 0; right: 0; bottom: 0; padding: 1.3rem 1.4rem; }
.cat-body h3 { color: #fff; margin: 0 0 .2rem; display: flex; align-items: center; gap: .5rem; }
.cat-body span { font-size: .88rem; color: rgba(255, 255, 255, .85); }
.cat-media .img-ph { color: var(--c-accent); }

/* ---------- 17. Image + texte, listes à puces ---------- */
.split { display: grid; gap: clamp(2.2rem, 5vw, 4.5rem); align-items: center; }
@media (min-width: 960px) { .split:not(.split-no-img) { grid-template-columns: 1fr 1fr; } .split-img-left .split-media { order: -1; } }
.split-text .sec-head { margin-bottom: 1.4rem; }
.split-media { position: relative; }
.split-media-inner { position: relative; z-index: 1; border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-lg); transform-style: preserve-3d; }
.split-media-inner img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4 / 3.4; }
.media-deco { position: absolute; z-index: 0; inset: auto -1.2rem -1.2rem auto; width: 70%; height: 70%; border-radius: var(--radius-lg); background: var(--gradient); opacity: .9; }
.split-img-left .media-deco { inset: auto auto -1.2rem -1.2rem; }
.media-plain .split-media-inner { box-shadow: none; } .media-plain .media-deco { display: none; }
.media-circle .split-media-inner { border-radius: 50%; aspect-ratio: 1; } .media-circle .split-media-inner img { aspect-ratio: 1; }
.media-circle .media-deco { border-radius: 50%; inset: -4% -4% auto auto; width: 40%; height: 40%; }
.media-arch .split-media-inner { border-radius: 50% 50% var(--radius-lg) var(--radius-lg) / 38% 38% var(--radius-lg) var(--radius-lg); }
.media-blob .split-media-inner { border-radius: 58% 42% 46% 54% / 47% 52% 48% 53%; animation: morph 14s ease-in-out infinite; }
@keyframes morph { 50% { border-radius: 43% 57% 59% 41% / 57% 43% 57% 43%; } }
.check-list { list-style: none; margin: 1.5rem 0 0; padding: 0; display: grid; gap: .8rem; }
.check-list.cols-2 { grid-template-columns: 1fr; }
@media (min-width: 640px) { .check-list.cols-2 { grid-template-columns: 1fr 1fr; } }
.check-list li { display: flex; align-items: flex-start; gap: .75rem; font-weight: 550; }
.ci { flex: none; width: 1.85rem; height: 1.85rem; display: grid; place-items: center; border-radius: 50%; background: var(--c-primary-soft); color: var(--c-primary); }
.is-inverse .ci { background: rgba(255, 255, 255, .14); color: var(--c-accent); }
.icon-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .9rem 2rem; }
@media (min-width: 700px) { .icon-list.ilcols-2 { grid-template-columns: 1fr 1fr; } .icon-list.ilcols-3 { grid-template-columns: repeat(3, 1fr); } }
.icon-list li { display: flex; gap: .8rem; align-items: center; padding: .9rem 1.1rem; border-radius: var(--radius); background: var(--c-bg); border: 1px solid var(--c-border); font-weight: 550; }
.il-icon { flex: none; width: 2.3rem; height: 2.3rem; display: grid; place-items: center; border-radius: .8rem; background: var(--c-primary-soft); color: var(--c-primary); }

/* ---------- 18. Appel à l'action, newsletter, applications ---------- */
.cta { position: relative; overflow: hidden; isolation: isolate; display: grid; gap: 1.5rem 3rem; align-items: center; padding: clamp(2.5rem, 6vw, 4.5rem); border-radius: calc(var(--radius-lg) * 1.3); }
@media (min-width: 900px) { .cta { grid-template-columns: 1fr auto; } .cta.has-image { grid-template-columns: 1fr auto; } }
.cta h2 { margin: 0 0 .6rem; }
.cta p { margin: 0; max-width: 40rem; font-size: 1.08rem; }
.cta-actions { display: flex; flex-wrap: wrap; gap: .8rem; }
.cta-gradient { background: var(--gradient); color: #fff; box-shadow: 0 30px 70px rgba(var(--c-primary-rgb), .3); }
.cta-gradient h2, .cta-gradient p { color: #fff; }
.cta-gradient p { opacity: .9; }
.cta-card { background: var(--c-bg); border: 1px solid var(--c-border); box-shadow: var(--shadow-lg); }
.cta-card p { color: var(--c-muted); }
.cta-split { background: var(--c-surface-2); border: 1px solid var(--c-border); }
.cta-split p { color: var(--c-muted); }
.cta-media { grid-column: 1 / -1; border-radius: var(--radius-lg); overflow: hidden; }
@media (min-width: 900px) { .cta.has-image { grid-template-columns: 1.1fr .9fr; grid-template-rows: auto auto; } .cta.has-image .cta-media { grid-column: 2; grid-row: 1 / span 2; } .cta.has-image .cta-actions { grid-column: 1; } }
.cta-media img { width: 100%; height: 100%; object-fit: cover; }
.cta-deco { position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.cta-deco span { position: absolute; border-radius: 50%; }
.cta-deco span:first-child { width: 26rem; height: 26rem; right: -8rem; top: -12rem; background: radial-gradient(circle, rgba(255, 255, 255, .22), transparent 65%); }
.cta-deco span:last-child { width: 16rem; height: 16rem; left: -5rem; bottom: -8rem; border: 1px solid rgba(255, 255, 255, .25); }
.cta-card .cta-deco span:first-child, .cta-split .cta-deco span:first-child { background: radial-gradient(circle, var(--c-primary-soft), transparent 65%); }
.cta-card .cta-deco span:last-child, .cta-split .cta-deco span:last-child { border-color: rgba(var(--c-primary-rgb), .18); }
.nl-block { position: relative; overflow: hidden; isolation: isolate; display: grid; gap: 1.6rem 3rem; align-items: center; padding: clamp(2rem, 5vw, 3.75rem); border-radius: calc(var(--radius-lg) * 1.2); }
@media (min-width: 900px) { .nl-block { grid-template-columns: 1.1fr 1fr; } .nl-block.has-image { grid-template-columns: 1fr 1fr .8fr; } }
.nl-card { background: var(--c-bg); border: 1px solid var(--c-border); box-shadow: var(--shadow-lg); }
.nl-banner { background: var(--gradient); color: #fff; }
.nl-banner .sec-title, .nl-banner .nl-perks li { color: #fff; }
.nl-banner .sec-intro { color: rgba(255, 255, 255, .88); }
.nl-banner .eyebrow { background: rgba(255, 255, 255, .15); color: #fff; border-color: rgba(255, 255, 255, .25); }
.nl-inline-style, .nl-inline { position: relative; }
.nl-block.nl-inline { background: transparent; padding: 0; }
.nl-text .sec-head { margin-bottom: 1rem; }
.nl-perks { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem 1.2rem; font-size: .9rem; color: var(--c-muted); }
.nl-perks li { display: inline-flex; align-items: center; gap: .4rem; }
.nl-perks .icon { color: var(--c-primary); }
.nl-banner .nl-perks .icon { color: var(--c-accent); }
.nl-media { border-radius: var(--radius-lg); overflow: hidden; display: none; }
@media (min-width: 900px) { .nl-media { display: block; } }
.nl-media img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 1; }
.nl-deco { position: absolute; z-index: -1; right: -2rem; bottom: -2.5rem; color: var(--c-primary); opacity: .06; }
.nl-deco .icon { width: 13rem; height: 13rem; }
.nl-banner .nl-deco { color: #fff; opacity: .1; }
.nl-form { display: grid; gap: .6rem; width: 100%; }
.nl-name { min-height: 3.2rem; padding: .7rem 1.2rem; border-radius: 999px; border: 1px solid var(--c-border); background: var(--c-surface); outline: none; }
.nl-inline { display: flex; align-items: center; gap: .3rem; padding: .32rem; border-radius: 999px; background: var(--c-surface); border: 1px solid var(--c-border); transition: border-color .2s, box-shadow .2s; }
.nl-inline:focus-within { border-color: var(--c-primary); box-shadow: 0 0 0 4px var(--c-primary-soft); }
.nl-inline input { flex: 1; min-width: 0; border: 0; outline: none; background: transparent; padding: .6rem .9rem; font-size: .98rem; }
.nl-submit { flex: none; min-width: 2.9rem; height: 2.9rem; padding: 0 1.1rem; display: inline-flex; align-items: center; justify-content: center; gap: .45rem; border: 0; border-radius: 999px; background: var(--gradient-btn); color: var(--c-on-primary); font-weight: 700; transition: transform .25s var(--anim-ease), box-shadow .25s; }
.nl-submit:hover { transform: scale(1.04); box-shadow: 0 10px 22px rgba(var(--c-primary-rgb), .32); }
.nl-banner .nl-inline { background: rgba(255, 255, 255, .14); border-color: rgba(255, 255, 255, .25); }
.nl-banner .nl-inline input { color: #fff; } .nl-banner .nl-inline input::placeholder { color: rgba(255, 255, 255, .7); }
.nl-banner .nl-submit { background: #fff; color: var(--c-secondary); }
.nl-form .form-alert { margin: .2rem 0 0; }
.app-block { display: grid; gap: 2.5rem; align-items: center; }
@media (min-width: 900px) { .app-block.has-image { grid-template-columns: 1.2fr .8fr; } }
.app-text .app-badges { margin-top: 0; }
.app-media { display: grid; place-items: center; }
.phone-mock { position: relative; width: min(18rem, 70vw); aspect-ratio: 9 / 19; padding: .8rem; border-radius: 2.8rem; background: #111; box-shadow: var(--shadow-lg), inset 0 0 0 2px #2a2a2a; }
.phone-mock::before { content: ""; position: absolute; top: 1.1rem; left: 50%; translate: -50% 0; width: 32%; height: 1.4rem; border-radius: 1rem; background: #000; z-index: 2; }
.phone-mock img, .phone-mock picture { width: 100%; height: 100%; object-fit: cover; border-radius: 2.1rem; }

/* ---------- 19. Contact : carte, cartes de contact, réseaux ---------- */
.map-contact { display: grid; gap: 1.5rem; align-items: stretch; }
@media (min-width: 960px) { .map-contact { grid-template-columns: minmax(20rem, .85fr) 1.15fr; } }
.loc-list { display: grid; gap: 1rem; align-content: start; }
.loc-card { padding: 1.5rem; border-radius: var(--radius-lg); background: var(--c-bg); border: 1px solid var(--c-border); box-shadow: var(--shadow-sm); }
.loc-card header { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .6rem; margin-bottom: 1rem; }
.loc-card h3 { display: flex; align-items: center; gap: .5rem; margin: 0; }
.loc-card h3 .icon { color: var(--c-primary); }
.open-badge { display: inline-flex; align-items: center; gap: .4rem; padding: .3rem .7rem; border-radius: 999px; font-size: .78rem; font-weight: 700; }
.open-badge span { width: .5rem; height: .5rem; border-radius: 50%; background: currentColor; }
.open-badge.is-open { background: rgba(22, 163, 74, .12); color: #15803d; }
.open-badge.is-open span { animation: pulse-dot 2s infinite; box-shadow: 0 0 0 3px rgba(22, 163, 74, .2); }
.open-badge.is-closed { background: rgba(220, 38, 38, .1); color: #c2262b; }
.loc-lines { list-style: none; margin: 0; padding: 0; display: grid; gap: .7rem; }
.loc-lines li { display: flex; gap: .7rem; align-items: flex-start; }
.loc-lines .icon { margin-top: .2rem; color: var(--c-primary); }
.loc-lines a { color: var(--c-text); font-weight: 550; }
.loc-lines a:hover { color: var(--c-primary); }
.hours { margin-top: 1.1rem; border-top: 1px dashed var(--c-border); padding-top: .9rem; }
.hours summary { display: flex; align-items: center; gap: .5rem; cursor: pointer; font-weight: 650; list-style: none; }
.hours summary::-webkit-details-marker { display: none; }
.hours summary::after { content: ""; width: .5rem; height: .5rem; margin-left: auto; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); transition: transform .3s; }
.hours[open] summary::after { transform: rotate(-135deg); }
.hours ul { list-style: none; margin: .8rem 0 0; padding: 0; display: grid; gap: .3rem; font-size: .92rem; }
.hours li { display: flex; justify-content: space-between; gap: 1rem; padding: .35rem .6rem; border-radius: .5rem; }
.hours li.is-today { background: var(--c-primary-soft); font-weight: 700; color: var(--c-primary); }
.hours li.is-closed span:last-child { color: var(--c-muted); }
.hours-note { display: flex; gap: .5rem; margin: 1rem 0 0; color: var(--c-muted); font-size: .92rem; }
.route-btns { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem; margin-top: 1.1rem; font-size: .85rem; color: var(--c-muted); }
.route-btns a { display: inline-flex; align-items: center; gap: .35rem; padding: .4rem .75rem; border-radius: 999px; background: var(--c-surface-2); color: var(--c-text); font-weight: 600; }
.route-btns a:hover { background: var(--c-primary); color: var(--c-on-primary); }
.map-frame { position: relative; min-height: 22rem; border-radius: var(--radius-lg); overflow: hidden; border: 1px solid var(--c-border); box-shadow: var(--shadow); background: var(--c-surface-2); }
.map-frame iframe, .osm-map { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
html[data-theme="dark"] .map-frame iframe { filter: invert(.9) hue-rotate(180deg) saturate(.6) brightness(.95); }
.osm-map .leaflet-popup-content { font-family: var(--font-body); font-weight: 600; }
.map-frame .empty-state { position: absolute; inset: 0; border: 0; border-radius: 0; place-content: center; }
.contact-card { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: .55rem; padding: 1.7rem 1.5rem; border-radius: var(--radius-lg); background: var(--c-bg); border: 1px solid var(--c-border); color: var(--c-text); overflow: hidden; transition: transform .45s var(--anim-ease), box-shadow .45s, border-color .3s; }
.contact-card:hover { color: var(--c-text); transform: translateY(-6px); box-shadow: var(--shadow-lg); border-color: transparent; }
.contact-card h3 { margin: .4rem 0 0; }
.contact-card p { margin: 0; color: var(--c-muted); font-size: .95rem; word-break: break-word; }
.cc-icon { width: 3.3rem; height: 3.3rem; display: grid; place-items: center; border-radius: 1.1rem; background: var(--c-primary-soft); color: var(--c-primary); transition: transform .45s var(--anim-ease); }
.contact-card:hover .cc-icon { transform: scale(1.08) rotate(-6deg); }
.cc-cta { margin-top: auto; padding-top: .7rem; display: inline-flex; align-items: center; gap: .35rem; color: var(--c-primary); font-weight: 700; font-size: .9rem; }
.social-row { display: flex; flex-wrap: wrap; justify-content: center; gap: .6rem; margin-top: 2rem; }
.social-pill { display: inline-flex; align-items: center; gap: .5rem; padding: .6rem 1.1rem; border-radius: 999px; background: var(--c-surface-2); color: var(--c-text); font-weight: 650; font-size: .92rem; transition: transform .25s var(--anim-ease), background-color .2s, color .2s; }
.social-pill:hover { transform: translateY(-2px); color: #fff; background: var(--net, var(--c-primary)); }
.socials { display: grid; gap: 1rem; }
.socials-cards { grid-template-columns: repeat(auto-fit, minmax(10.5rem, 1fr)); }
.socials-buttons, .socials-icons { display: flex; flex-wrap: wrap; justify-content: center; gap: .6rem; }
.social-card { display: grid; justify-items: center; gap: .55rem; padding: 1.7rem 1rem; text-align: center; border-radius: var(--radius-lg); background: var(--c-bg); border: 1px solid var(--c-border); color: var(--c-text); transition: transform .45s var(--anim-ease), box-shadow .4s; }
.social-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); color: var(--c-text); }
.sc-icon { width: 3.6rem; height: 3.6rem; display: grid; place-items: center; border-radius: 1.2rem; background: var(--net, var(--c-primary)); color: #fff; box-shadow: 0 12px 24px rgba(0, 0, 0, .14); }
.sc-icon .icon { width: 1.7rem; height: 1.7rem; }
.sc-cta { display: inline-flex; align-items: center; gap: .3rem; font-size: .85rem; color: var(--c-muted); font-weight: 600; }
.social-icon { width: 3.2rem; height: 3.2rem; display: grid; place-items: center; border-radius: 50%; background: var(--c-surface-2); color: var(--c-text); transition: all .25s var(--anim-ease); }
.social-icon:hover { background: var(--net, var(--c-primary)); color: #fff; transform: translateY(-3px) scale(1.05); }
.sp-whatsapp { --net: #25d366; } .sp-facebook { --net: #1877f2; } .sp-messenger { --net: #0084ff; } .sp-instagram { --net: linear-gradient(45deg, #f58529, #dd2a7b 50%, #8134af); }
.sp-telegram { --net: #26a5e4; } .sp-linkedin { --net: #0a66c2; } .sp-tiktok { --net: #111; } .sp-youtube { --net: #ff0000; } .sp-x { --net: #111; }
.sp-snapchat { --net: #f7c600; } .sp-pinterest { --net: #e60023; } .sp-threads { --net: #111; } .sp-viber { --net: #7360f2; } .sp-discord { --net: #5865f2; }
.sp-tripadvisor { --net: #34e0a1; } .sp-google { --net: #4285f4; } .sp-email { --net: #ea4335; } .sp-website { --net: var(--c-primary); }

/* ---------- 20. Compte à rebours, téléchargements, intégrations, séparateurs ---------- */
.countdown { display: flex; justify-content: center; flex-wrap: wrap; gap: clamp(.6rem, 2vw, 1.2rem); }
.cd-unit { min-width: clamp(4.6rem, 14vw, 7.5rem); padding: clamp(.9rem, 2vw, 1.4rem) .6rem; display: grid; justify-items: center; gap: .3rem; border-radius: var(--radius-lg); background: var(--c-bg); border: 1px solid var(--c-border); box-shadow: var(--shadow-sm); }
.cd-num { font-family: var(--font-heading); font-size: clamp(2rem, 1.4rem + 3vw, 3.6rem); font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums; background: var(--gradient); -webkit-background-clip: text; background-clip: text; color: transparent; }
.cd-num.is-tick { animation: tick .45s var(--anim-ease); }
@keyframes tick { 30% { transform: translateY(-4px) scale(1.06); } }
.cd-label { font-size: .78rem; letter-spacing: .12em; text-transform: uppercase; color: var(--c-muted); font-weight: 650; }
.countdown.is-expired { font-family: var(--font-heading); font-size: 1.5rem; color: var(--c-primary); }
.is-inverse .cd-unit { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .18); }
.is-inverse .cd-num { background: none; color: #fff; }
.is-inverse .cd-label { color: rgba(255, 255, 255, .75); }
.downloads { list-style: none; margin: 0; padding: 0; display: grid; gap: .8rem; }
@media (min-width: 800px) { .downloads { grid-template-columns: 1fr 1fr; } }
.dl-item { display: grid; grid-template-columns: auto 1fr auto; gap: 1rem; align-items: center; padding: 1rem 1.2rem; border-radius: var(--radius); background: var(--c-bg); border: 1px solid var(--c-border); color: var(--c-text); transition: all .3s var(--anim-ease); }
.dl-item:hover { color: var(--c-text); border-color: rgba(var(--c-primary-rgb), .35); box-shadow: var(--shadow); transform: translateY(-2px); }
.dl-icon { position: relative; width: 3rem; height: 3.4rem; display: grid; place-items: center; border-radius: .7rem; background: var(--c-primary-soft); color: var(--c-primary); }
.dl-icon small { position: absolute; bottom: -.4rem; left: 50%; translate: -50% 0; padding: .05rem .35rem; border-radius: .3rem; background: var(--c-primary); color: var(--c-on-primary); font-size: .62rem; font-weight: 800; letter-spacing: .04em; }
.dl-text strong { display: block; }
.dl-text span { color: var(--c-muted); font-size: .9rem; }
.dl-meta { display: inline-flex; align-items: center; gap: .5rem; color: var(--c-muted); font-size: .85rem; }
.dl-item:hover .dl-meta .icon { color: var(--c-primary); animation: nudge .6s ease; }
@keyframes nudge { 50% { transform: translateY(3px); } }
.embed-frame { border-radius: var(--radius-lg); overflow: hidden; border: 1px solid var(--c-border); box-shadow: var(--shadow); background: var(--c-surface); }
.embed-frame iframe { display: block; width: 100%; border: 0; }
.spacer { display: grid; place-items: center; }
.spacer-xs { height: 1rem; } .spacer-sm { height: 2rem; } .spacer-md { height: 3.5rem; } .spacer-lg { height: 5.5rem; } .spacer-xl { height: 8rem; }
.divider { width: min(100%, 50rem); margin: 0; }
.divider-dots { display: flex; gap: .55rem; } .divider-dots i { width: .45rem; height: .45rem; border-radius: 50%; background: var(--c-primary); opacity: .5; } .divider-dots i:nth-child(2) { opacity: 1; background: var(--c-accent); }
.divider-wave { width: min(100%, 40rem); height: 40px; color: var(--c-border); }
.divider-ornament { display: flex; align-items: center; gap: 1rem; color: var(--c-accent); width: min(100%, 26rem); }
.divider-ornament::before, .divider-ornament::after { content: ""; flex: 1; height: 1px; background: linear-gradient(90deg, transparent, var(--c-border)); }
.divider-ornament::after { background: linear-gradient(90deg, var(--c-border), transparent); }
.custom-html { overflow-wrap: anywhere; }

/* ---------- 21. Formulaires intelligents ---------- */
.form-card { position: relative; padding: clamp(1.4rem, 4vw, 2.6rem); border-radius: calc(var(--radius-lg) * 1.1); background: var(--c-bg); border: 1px solid var(--c-border); box-shadow: var(--shadow-lg); }
.form-card-center { max-width: 50rem; margin-inline: auto; }
.form-split { display: grid; gap: clamp(1.5rem, 4vw, 3rem); align-items: start; }
@media (min-width: 960px) { .form-split { grid-template-columns: .8fr 1.2fr; } }
.form-aside .prose { margin-bottom: 1.5rem; }
.contact-mini { list-style: none; margin: 0; padding: 0; display: grid; gap: .9rem; }
.contact-mini li { display: flex; gap: .9rem; align-items: center; padding: 1rem; border-radius: var(--radius); background: var(--c-surface); border: 1px solid var(--c-border); }
.contact-mini small { display: block; font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; color: var(--c-muted); font-weight: 650; }
.contact-mini a { color: var(--c-text); font-weight: 650; word-break: break-word; }
.cm-icon { flex: none; width: 2.8rem; height: 2.8rem; display: grid; place-items: center; border-radius: .9rem; background: var(--c-primary-soft); color: var(--c-primary); }
.cm-wa { background: rgba(37, 211, 102, .14); color: #128c4a; }
.smart-form-wrap { position: relative; }
.form-grid { display: grid; gap: 1.1rem 1rem; grid-template-columns: repeat(6, minmax(0, 1fr)); }
.field { grid-column: span 6; display: grid; gap: .45rem; align-content: start; min-width: 0; }
@media (min-width: 640px) { .field-half { grid-column: span 3; } .field-third { grid-column: span 2; } }
.field > label, .field > .label { font-size: .9rem; font-weight: 650; color: var(--c-text); }
.req { color: #e11d48; margin-left: .2em; }
.field input:not([type="checkbox"]):not([type="radio"]):not([type="file"]), .field textarea, .field select, .select-wrap select, .combo-input {
  width: 100%; min-height: 3.2rem; padding: .78rem 1rem; border-radius: var(--radius-sm); border: 1.5px solid var(--c-border); background: var(--c-surface); color: var(--c-text);
  font-size: 1rem; line-height: 1.4; outline: none; transition: border-color .2s, box-shadow .25s, background-color .2s; -webkit-appearance: none; appearance: none;
}
.field textarea { min-height: 8.5rem; resize: vertical; }
.field input::placeholder, .field textarea::placeholder, .combo-input::placeholder { color: color-mix(in srgb, var(--c-muted) 80%, transparent); }
.field input:hover, .field textarea:hover, .field select:hover, .combo-input:hover { border-color: color-mix(in srgb, var(--c-primary) 35%, var(--c-border)); }
.field input:focus, .field textarea:focus, .field select:focus, .combo-input:focus { border-color: var(--c-primary); background: var(--c-bg); box-shadow: 0 0 0 4px var(--c-primary-soft); }
.field input[type="date"], .field input[type="time"], .field input[type="datetime-local"] { min-height: 3.2rem; }
.field.has-error input, .field.has-error textarea, .field.has-error select, .field.has-error .combo-input, .field.has-error .dropzone { border-color: #e11d48; box-shadow: 0 0 0 4px rgba(225, 29, 72, .1); }
.field-error { font-size: .82rem; color: #e11d48; font-weight: 600; min-height: 0; }
.field-error:empty { display: none; }
.field-help { color: var(--c-muted); font-size: .82rem; }
.field-heading { margin-top: .6rem; }
.field-heading h3 { margin: 0; font-size: 1.15rem; padding-bottom: .5rem; border-bottom: 1px solid var(--c-border); }
.field-heading p { margin: .4rem 0 0; color: var(--c-muted); font-size: .92rem; }
.field-paragraph p { margin: 0; padding: .9rem 1rem; border-radius: var(--radius-sm); background: var(--c-primary-soft); color: var(--c-text); font-size: .93rem; }
.select-wrap { position: relative; }
.select-wrap select { padding-right: 2.6rem; cursor: pointer; }
.select-wrap .icon { position: absolute; right: 1rem; top: 50%; translate: 0 -50%; pointer-events: none; color: var(--c-muted); }
.choices { display: flex; flex-wrap: wrap; gap: .5rem; }
.choice { position: relative; cursor: pointer; }
.choice input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.choice span { display: inline-flex; align-items: center; gap: .45rem; min-height: 2.75rem; padding: .55rem 1.1rem; border-radius: 999px; border: 1.5px solid var(--c-border); background: var(--c-surface); font-weight: 600; font-size: .94rem; transition: all .22s ease; }
.choice:hover span { border-color: rgba(var(--c-primary-rgb), .5); }
.choice input:checked + span { background: var(--c-primary); border-color: var(--c-primary); color: var(--c-on-primary); box-shadow: 0 8px 18px rgba(var(--c-primary-rgb), .25); }
.choice input:focus-visible + span { outline: 2.5px solid var(--c-primary); outline-offset: 2px; }
.check { display: flex; align-items: flex-start; gap: .7rem; cursor: pointer; font-size: .93rem; line-height: 1.5; }
.check input, .option-row input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.check-box { flex: none; width: 1.45rem; height: 1.45rem; margin-top: .05rem; display: grid; place-items: center; border-radius: .45rem; border: 1.5px solid var(--c-border); background: var(--c-surface); color: transparent; transition: all .2s; }
.check input:checked + .check-box, .option-row input:checked + .check-box { background: var(--c-primary); border-color: var(--c-primary); color: var(--c-on-primary); transform: scale(1.05); }
.check input:focus-visible + .check-box { outline: 2.5px solid var(--c-primary); outline-offset: 2px; }
.check-label { color: var(--c-muted); }
.dropzone { position: relative; display: grid; justify-items: center; gap: .3rem; padding: 1.4rem 1rem; text-align: center; border-radius: var(--radius); border: 1.5px dashed var(--c-border); background: var(--c-surface); cursor: pointer; transition: border-color .2s, background-color .2s; }
.dropzone:hover, .dropzone.is-over { border-color: var(--c-primary); background: var(--c-primary-soft); }
.dropzone > .icon { width: 1.8rem; height: 1.8rem; color: var(--c-primary); }
.dropzone small { color: var(--c-muted); font-size: .78rem; }
.dropzone input[type="file"] { position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; }
.dz-file { display: inline-flex; align-items: center; gap: .4rem; margin-top: .3rem; padding: .3rem .8rem; border-radius: 999px; background: var(--c-bg); border: 1px solid var(--c-border); font-size: .85rem; font-weight: 600; }
.rating-input { display: inline-flex; flex-direction: row-reverse; justify-content: flex-end; gap: .2rem; }
.rating-input input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.rating-input label { cursor: pointer; color: var(--c-border); transition: color .15s, transform .2s var(--anim-ease); }
.rating-input label .icon { width: 2.1rem; height: 2.1rem; fill: currentColor; }
.rating-input label:hover, .rating-input label:hover ~ label, .rating-input input:checked ~ label { color: #f5b301; }
.rating-input label:hover { transform: scale(1.15); }
.combo { position: relative; }
.combo-input { padding-right: 4.4rem !important; }
.combo-icon { position: absolute; right: 1rem; top: 1.6rem; translate: 0 -50%; color: var(--c-muted); pointer-events: none; }
.combo-clear { position: absolute; right: 2.6rem; top: 1.6rem; translate: 0 -50%; width: 1.6rem; height: 1.6rem; display: grid; place-items: center; border: 0; border-radius: 50%; background: var(--c-surface-2); color: var(--c-muted); }
.combo-list { position: absolute; left: 0; right: 0; top: calc(100% + .35rem); z-index: 30; max-height: 17rem; overflow-y: auto; margin: 0; padding: .35rem; list-style: none; border-radius: var(--radius); background: var(--c-bg); border: 1px solid var(--c-border); box-shadow: var(--shadow-lg); animation: pop-in .2s ease; overscroll-behavior: contain; }
.combo-list li { display: grid; gap: .1rem; padding: .6rem .8rem; border-radius: calc(var(--radius) - 6px); cursor: pointer; font-size: .95rem; }
.combo-list li small { color: var(--c-muted); font-size: .8rem; }
.combo-list li[aria-selected="true"], .combo-list li:hover { background: var(--c-primary-soft); color: var(--c-primary); }
.combo-list li mark { background: transparent; color: var(--c-primary); font-weight: 750; padding: 0; }
.combo-list .combo-empty { cursor: default; color: var(--c-muted); text-align: center; }
.combo-list .combo-empty:hover { background: none; color: var(--c-muted); }
.form-progress { margin-bottom: 1.8rem; }
.form-progress-bar { height: 4px; border-radius: 4px; background: var(--c-surface-2); overflow: hidden; margin-bottom: 1rem; }
.form-progress-bar span { display: block; height: 100%; border-radius: 4px; background: var(--gradient); transition: width .5s var(--anim-ease); }
.form-steps-nav { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem 1.2rem; }
.form-steps-nav li { display: inline-flex; align-items: center; gap: .5rem; font-size: .88rem; font-weight: 650; color: var(--c-muted); }
.step-dot { width: 1.7rem; height: 1.7rem; display: grid; place-items: center; border-radius: 50%; background: var(--c-surface-2); font-size: .78rem; transition: all .3s; }
.form-steps-nav li.is-active { color: var(--c-text); }
.form-steps-nav li.is-active .step-dot, .form-steps-nav li.is-done .step-dot { background: var(--c-primary); color: var(--c-on-primary); }
.form-step { border: 0; margin: 0; padding: 0; min-width: 0; }
.form-step.is-active { animation: tab-in .45s var(--anim-ease); }
.form-alert { margin: 1rem 0 0; padding: .85rem 1rem; border-radius: var(--radius-sm); font-size: .92rem; font-weight: 550; background: rgba(225, 29, 72, .08); color: #be123c; border: 1px solid rgba(225, 29, 72, .2); }
.form-alert.is-success { background: rgba(22, 163, 74, .08); color: #15803d; border-color: rgba(22, 163, 74, .25); }
.form-alert.is-error { display: block; }
.form-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .7rem; margin-top: 1.5rem; }
.form-actions .btn-submit { min-width: 12rem; }
@media (max-width: 640px) { .form-actions .btn { flex: 1; } }
.form-legal { display: flex; align-items: center; gap: .45rem; justify-content: center; margin: 1.1rem 0 0; color: var(--c-muted); font-size: .8rem; }
.form-success { display: grid; justify-items: center; gap: .6rem; text-align: center; padding: 2rem 1rem; animation: pop-in .5s var(--anim-ease); }
.success-icon { width: 5rem; height: 5rem; display: grid; place-items: center; border-radius: 50%; background: rgba(22, 163, 74, .12); color: #16a34a; margin-bottom: .4rem; animation: success-pop .7s var(--anim-ease); }
.success-icon .icon { width: 2.6rem; height: 2.6rem; }
@keyframes success-pop { 0% { transform: scale(.3); opacity: 0; } 60% { transform: scale(1.12); } }
.form-success h3 { font-size: 1.6rem; margin: 0; }
.form-success p { color: var(--c-muted); margin: 0; max-width: 32rem; }
.success-ref strong { color: var(--c-text); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .04em; }
.form-success .btn { margin-top: .6rem; }
.btn-ghost.btn-small[data-form-reset] { margin-top: .2rem; }
.field[data-show-if] { animation: tab-in .35s ease; }
.field.is-cond-hidden { display: none; }

/* Vérification anti-robots visuelle */
.captcha-slot:empty { display: none; }
.captcha-slot { margin-top: 1.2rem; }
.captcha { display: grid; gap: .8rem; padding: 1rem; border-radius: var(--radius); border: 1.5px solid var(--c-border); background: var(--c-surface); animation: pop-in .35s var(--anim-ease); }
.captcha-head { display: flex; align-items: center; justify-content: space-between; gap: .6rem; font-size: .9rem; font-weight: 650; }
.captcha-head span { display: inline-flex; align-items: center; gap: .45rem; }
.captcha-head .icon { color: var(--c-primary); }
.captcha-refresh { width: 2.1rem; height: 2.1rem; display: grid; place-items: center; border: 0; border-radius: 50%; background: var(--c-bg); color: var(--c-muted); transition: transform .4s; }
.captcha-refresh:hover { transform: rotate(180deg); color: var(--c-primary); }
.captcha-puzzle { position: relative; width: 100%; max-width: 300px; aspect-ratio: 300 / 160; border-radius: .7rem; overflow: hidden; margin-inline: auto; user-select: none; touch-action: none; background: var(--c-surface-2); }
.captcha-puzzle img.cp-bg { width: 100%; height: 100%; display: block; }
.captcha-puzzle img.cp-piece { position: absolute; left: 0; filter: drop-shadow(0 4px 8px rgba(0, 0, 0, .35)); pointer-events: none; }
.cp-track { position: relative; max-width: 300px; width: 100%; height: 2.9rem; margin-inline: auto; border-radius: 999px; background: var(--c-bg); border: 1px solid var(--c-border); touch-action: none; }
.cp-track-label { position: absolute; inset: 0; display: grid; place-items: center; font-size: .82rem; color: var(--c-muted); pointer-events: none; }
.cp-fill { position: absolute; left: 0; top: 0; bottom: 0; width: 0; border-radius: 999px; background: var(--c-primary-soft); }
.cp-knob { position: absolute; top: .2rem; left: .2rem; width: 2.4rem; height: 2.4rem; display: grid; place-items: center; border-radius: 50%; border: 0; background: var(--gradient-btn); color: var(--c-on-primary); box-shadow: 0 6px 14px rgba(var(--c-primary-rgb), .35); cursor: grab; touch-action: none; }
.cp-knob:active { cursor: grabbing; }
.captcha-img { width: 100%; max-width: 240px; height: auto; border-radius: .6rem; background: #fff; margin-inline: auto; }
.captcha-q { text-align: center; color: var(--c-muted); font-size: .88rem; margin: 0; }
.captcha-answer { display: flex; gap: .5rem; max-width: 300px; width: 100%; margin-inline: auto; }
.captcha-answer input { flex: 1; min-width: 0; min-height: 2.9rem; padding: .6rem .9rem; border-radius: var(--radius-sm); border: 1.5px solid var(--c-border); background: var(--c-bg); text-align: center; font-size: 1.15rem; font-weight: 700; letter-spacing: .12em; outline: none; }
.captcha-answer input:focus { border-color: var(--c-primary); box-shadow: 0 0 0 4px var(--c-primary-soft); }
.captcha-icons { display: flex; justify-content: center; flex-wrap: wrap; gap: .5rem; }
.captcha-icons button { width: 3.4rem; height: 3.4rem; display: grid; place-items: center; border-radius: .9rem; border: 1.5px solid var(--c-border); background: var(--c-bg); color: var(--c-text); transition: all .2s; }
.captcha-icons button:hover { border-color: var(--c-primary); color: var(--c-primary); transform: translateY(-2px); }
.captcha-icons button.is-picked { background: var(--c-primary); border-color: var(--c-primary); color: var(--c-on-primary); }
.captcha-icons .icon { width: 1.6rem; height: 1.6rem; }
.captcha.is-ok { border-color: rgba(22, 163, 74, .5); background: rgba(22, 163, 74, .06); }
.captcha-ok { display: flex; align-items: center; justify-content: center; gap: .5rem; color: #15803d; font-weight: 700; font-size: .92rem; }
.captcha.is-error { animation: shake .45s ease; border-color: #e11d48; }
@keyframes shake { 20%, 60% { transform: translateX(-6px); } 40%, 80% { transform: translateX(6px); } }
.cf-turnstile, .g-recaptcha, .h-captcha { display: flex; justify-content: center; }

/* ---------- 22. Fiches détaillées ---------- */
.detail-layout { display: grid; gap: clamp(2rem, 4vw, 3.5rem); align-items: start; }
@media (min-width: 1000px) { .detail-layout { grid-template-columns: minmax(0, 1fr) minmax(18rem, 22rem); } }
.detail-main > * + * { margin-top: 2rem; }
.detail-body { max-width: none; }
.detail-subtitle { font-size: clamp(1.35rem, 1.15rem + .8vw, 1.8rem); margin-top: 2.5rem; }
.detail-side .side-card { padding: 1.7rem; border-radius: var(--radius-lg); background: var(--c-bg); border: 1px solid var(--c-border); box-shadow: var(--shadow-lg); display: grid; gap: .9rem; }
@media (min-width: 1000px) { .sticky-card { position: sticky; top: calc(var(--header-h, 4.75rem) + 1.5rem); } }
.side-label { font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; color: var(--c-muted); font-weight: 700; }
.side-price { font-family: var(--font-heading); font-size: 1.9rem; line-height: 1.1; letter-spacing: -.02em; color: var(--c-text); }
.side-old { color: var(--c-muted); }
.side-line { display: flex; gap: .5rem; align-items: center; margin: 0; color: var(--c-muted); font-size: .94rem; }
.side-line .icon { color: var(--c-primary); }
.side-note { display: flex; gap: .5rem; margin: .3rem 0 0; font-size: .82rem; color: var(--c-muted); padding-top: .9rem; border-top: 1px dashed var(--c-border); }
.side-note .icon { color: #16a34a; }
.detail-actions { display: grid; gap: .6rem; }
.product-info .detail-actions { display: flex; flex-wrap: wrap; margin-top: 1rem; }
.detail-media, .detail-cover { display: block; border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow); }
.detail-cover img { width: 100%; max-height: 72vh; object-fit: cover; }
.detail-gallery { display: grid; gap: .75rem; }
.dg-main { position: relative; display: block; border-radius: var(--radius-lg); overflow: hidden; background: var(--c-surface-2); aspect-ratio: 4 / 3; }
.dg-main img, .dg-main picture { width: 100%; height: 100%; object-fit: cover; transition: opacity .35s ease, transform 1s var(--anim-ease); }
.dg-main:hover img { transform: scale(1.03); }
.dg-main .g-zoom { opacity: 1; transform: none; top: auto; left: auto; right: 1rem; bottom: 1rem; translate: none; width: 2.8rem; height: 2.8rem; }
.dg-thumbs { display: flex; gap: .6rem; overflow-x: auto; scrollbar-width: thin; padding-bottom: .2rem; }
.dg-thumb { flex: 0 0 5.5rem; aspect-ratio: 1; border-radius: var(--radius-sm); overflow: hidden; border: 2px solid transparent; opacity: .7; transition: all .25s; }
.dg-thumb img, .dg-thumb picture { width: 100%; height: 100%; object-fit: cover; }
.dg-thumb:hover, .dg-thumb.is-active { opacity: 1; border-color: var(--c-primary); }
.note-box { display: flex; gap: .9rem; padding: 1.1rem 1.25rem; border-radius: var(--radius); background: var(--c-accent-soft); border: 1px solid rgba(var(--c-accent-rgb), .3); font-size: .95rem; }
.note-box > .icon { color: var(--c-primary); margin-top: .15rem; }
.mini-countdown { padding: .9rem 1rem; border-radius: var(--radius); background: rgba(220, 38, 38, .07); border: 1px solid rgba(220, 38, 38, .18); display: grid; gap: .4rem; }
.mc-label { font-size: .78rem; font-weight: 700; color: #c2262b; text-transform: uppercase; letter-spacing: .08em; }
.mc-units { display: flex; gap: .7rem; font-size: .85rem; color: var(--c-muted); }
.mc-units b { font-family: var(--font-heading); font-size: 1.4rem; color: var(--c-text); margin-right: .1rem; font-variant-numeric: tabular-nums; }
.product-layout { display: grid; gap: clamp(2rem, 4vw, 4rem); align-items: start; }
@media (min-width: 960px) { .product-layout { grid-template-columns: 1.05fr .95fr; } .product-media { position: sticky; top: calc(var(--header-h, 4.75rem) + 1.5rem); } }
.product-info { display: grid; gap: 1.1rem; align-content: start; }
.product-price { display: flex; align-items: baseline; flex-wrap: wrap; gap: .7rem; }
.product-price strong { font-family: var(--font-heading); font-size: clamp(1.9rem, 1.5rem + 1.5vw, 2.6rem); letter-spacing: -.02em; }
.product-price s { color: var(--c-muted); font-size: 1.1rem; }
.availability { display: inline-flex; align-items: center; gap: .5rem; margin: 0; font-weight: 650; font-size: .92rem; }
.availability span { width: .6rem; height: .6rem; border-radius: 50%; background: currentColor; }
.av-success { color: #15803d; } .av-warning { color: #b45309; } .av-danger { color: #c2262b; }
.product-lead { font-size: 1.08rem; color: var(--c-muted); margin: 0; }
.add-to-cart { display: grid; gap: 1rem; padding: 1.3rem; border-radius: var(--radius-lg); background: var(--c-surface); border: 1px solid var(--c-border); }
.product-options { border: 0; margin: 0; padding: 0; display: grid; gap: .5rem; }
.product-options legend { font-weight: 700; margin-bottom: .5rem; padding: 0; }
.option-row { position: relative; display: grid; grid-template-columns: auto 1fr auto; gap: .8rem; align-items: center; padding: .8rem 1rem; border-radius: var(--radius-sm); background: var(--c-bg); border: 1.5px solid var(--c-border); cursor: pointer; transition: border-color .2s, background-color .2s; }
.option-row:has(input:checked) { border-color: var(--c-primary); background: var(--c-primary-soft); }
.opt-name { font-weight: 600; } .opt-name small { display: block; font-weight: 450; color: var(--c-muted); font-size: .82rem; }
.opt-price { font-weight: 700; font-size: .92rem; color: var(--c-primary); white-space: nowrap; }
.add-to-cart .field { gap: .35rem; }
.add-to-cart .field textarea { min-height: 5rem; }
.cart-row { display: flex; gap: .7rem; align-items: stretch; }
.qty { display: inline-flex; align-items: center; border-radius: 999px; border: 1.5px solid var(--c-border); background: var(--c-bg); overflow: hidden; }
.qty button { width: 2.9rem; height: 3.4rem; display: grid; place-items: center; border: 0; background: none; color: var(--c-text); }
.qty button:hover { color: var(--c-primary); background: var(--c-primary-soft); }
.qty input { width: 2.8rem; border: 0; outline: 0; background: none; text-align: center; font-weight: 750; font-size: 1.05rem; -moz-appearance: textfield; }
.qty input::-webkit-outer-spin-button, .qty input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.qty-sm button { width: 2.2rem; height: 2.5rem; } .qty-sm input { width: 2.2rem; font-size: .95rem; }
.live-total { margin: 0; text-align: right; color: var(--c-muted); font-size: .92rem; }
.live-total strong { color: var(--c-text); font-size: 1.1rem; }
.trust-list { list-style: none; margin: .5rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .6rem 1.4rem; font-size: .88rem; color: var(--c-muted); }
.trust-list li { display: inline-flex; align-items: center; gap: .45rem; } .trust-list .icon { color: var(--c-primary); }
.detail-desc { margin-top: clamp(2.5rem, 5vw, 4rem); padding-top: 2rem; border-top: 1px solid var(--c-border); }
.post-cover { margin: 0 0 2.5rem; border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow); }
.post-cover img { width: 100%; }
.tags { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 2.5rem; padding-top: 1.5rem; border-top: 1px solid var(--c-border); }

/* ---------- 23. Panier, recherche, états ---------- */
.cart-layout { display: grid; gap: 2rem; align-items: start; }
@media (min-width: 1000px) { .cart-layout { grid-template-columns: 1.15fr .85fr; } .cart-checkout { position: sticky; top: calc(var(--header-h, 4.75rem) + 1.5rem); } }
.cart-lines { display: grid; gap: .8rem; }
.cart-line { display: grid; grid-template-columns: 5.5rem 1fr auto; grid-template-areas: "m i r" "m q t"; gap: .4rem 1rem; align-items: center; padding: .9rem; border-radius: var(--radius); background: var(--c-bg); border: 1px solid var(--c-border); transition: opacity .3s, transform .3s; }
.cart-line.is-removing { opacity: 0; transform: translateX(20px); }
.cl-media { grid-area: m; aspect-ratio: 1; border-radius: var(--radius-sm); overflow: hidden; background: var(--c-surface-2); }
.cl-media img, .cl-media picture, .cl-media .img-ph { width: 100%; height: 100%; min-height: 0; object-fit: cover; }
.cl-info { grid-area: i; min-width: 0; }
.cl-info h3 { font-size: 1rem; margin: 0 0 .15rem; }
.cl-info h3 a { color: var(--c-text); }
.cl-opts { margin: 0; color: var(--c-muted); font-size: .84rem; }
.cl-unit { font-size: .82rem; color: var(--c-muted); }
.cart-line .qty { grid-area: q; justify-self: start; }
.cl-total { grid-area: t; justify-self: end; font-size: 1.02rem; }
.cl-remove { grid-area: r; justify-self: end; width: 2.3rem; height: 2.3rem; display: grid; place-items: center; border: 0; border-radius: 50%; background: none; color: var(--c-muted); }
.cl-remove:hover { background: rgba(225, 29, 72, .1); color: #e11d48; }
.cart-total-row { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1.1rem 1.2rem; border-radius: var(--radius); background: var(--c-surface-2); font-weight: 650; }
.cart-total-row strong { font-family: var(--font-heading); font-size: 1.4rem; }
.cart-note { display: flex; gap: .6rem; color: var(--c-muted); font-size: .88rem; margin: .2rem 0 0; }
.cart-checkout h2 { font-size: 1.4rem; margin-bottom: 1.2rem; }
.status-card { display: flex; gap: 1.3rem; align-items: flex-start; padding: clamp(1.4rem, 4vw, 2.2rem); border-radius: var(--radius-lg); background: var(--c-bg); border: 1px solid var(--c-border); box-shadow: var(--shadow); margin-bottom: 2rem; }
.status-card h2 { font-size: 1.45rem; margin: 0 0 .4rem; }
.status-card p { color: var(--c-muted); margin: 0 0 1rem; }
.status-card p:last-child { margin-bottom: 0; }
.status-icon { flex: none; width: 3.6rem; height: 3.6rem; display: grid; place-items: center; border-radius: 1.2rem; background: var(--c-primary-soft); color: var(--c-primary); }
.status-icon .icon { width: 1.8rem; height: 1.8rem; }
.status-card.tone-success .status-icon { background: rgba(22, 163, 74, .12); color: #16a34a; }
.status-card.tone-warning .status-icon { background: rgba(217, 119, 6, .14); color: #d97706; }
@media (max-width: 520px) { .status-card { flex-direction: column; } }
.search-page-form { display: flex; align-items: center; gap: .6rem; padding: .45rem .45rem .45rem 1.2rem; border-radius: 999px; background: var(--c-bg); border: 1.5px solid var(--c-border); box-shadow: var(--shadow); margin-bottom: 1.5rem; }
.search-page-form:focus-within { border-color: var(--c-primary); }
.search-page-form > .icon { color: var(--c-primary); }
.search-page-form input { flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; font-size: 1.08rem; padding: .6rem 0; }
.search-count { color: var(--c-muted); margin-bottom: 2rem; }
.search-group { margin-bottom: 2.2rem; }
.search-group h2 { font-size: 1.15rem; display: flex; align-items: center; gap: .6rem; }
.count-pill { display: inline-grid; place-items: center; min-width: 1.6rem; height: 1.6rem; padding: 0 .45rem; border-radius: 999px; background: var(--c-primary-soft); color: var(--c-primary); font-size: .78rem; font-family: var(--font-body); }
.search-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.search-hit { display: grid; grid-template-columns: 3.4rem 1fr auto; gap: 1rem; align-items: center; padding: .8rem; border-radius: var(--radius); background: var(--c-bg); border: 1px solid var(--c-border); color: var(--c-text); transition: all .25s var(--anim-ease); }
.search-hit:hover { color: var(--c-text); border-color: rgba(var(--c-primary-rgb), .4); transform: translateX(4px); box-shadow: var(--shadow-sm); }
.sh-media { width: 3.4rem; height: 3.4rem; border-radius: .8rem; overflow: hidden; display: grid; place-items: center; background: var(--c-primary-soft); color: var(--c-primary); }
.sh-media img, .sh-media picture { width: 100%; height: 100%; object-fit: cover; }
.sh-text strong { display: block; }
.sh-text span { color: var(--c-muted); font-size: .9rem; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.lock-card { max-width: 30rem; margin: 0 auto; padding: 2.4rem 1.8rem; text-align: center; border-radius: var(--radius-lg); background: var(--c-bg); border: 1px solid var(--c-border); box-shadow: var(--shadow-lg); }
.lock-icon { width: 4.2rem; height: 4.2rem; margin: 0 auto 1rem; display: grid; place-items: center; border-radius: 1.4rem; background: var(--gradient); color: #fff; }
.lock-icon .icon { width: 1.9rem; height: 1.9rem; }
.lock-card p { color: var(--c-muted); }
.lock-form { margin-top: 1.4rem; }

/* ---------- 24. Page de maintenance ---------- */
.maintenance-body { min-height: 100vh; min-height: 100svh; display: grid; background: var(--c-secondary); color: #fff; overflow-x: hidden; }
.mt-bg { position: fixed; inset: 0; z-index: 0; overflow: hidden; background: radial-gradient(ellipse at 20% 10%, rgba(var(--c-primary-rgb), .55), transparent 55%), radial-gradient(ellipse at 90% 90%, rgba(var(--c-accent-rgb), .3), transparent 50%), var(--c-secondary); }
.mt-bg img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .35; }
.mt-orb { position: absolute; border-radius: 50%; filter: blur(50px); opacity: .55; animation: orb 18s ease-in-out infinite; }
.mt-orb.o1 { width: 32rem; height: 32rem; left: -10rem; top: -10rem; background: rgba(var(--c-primary-rgb), .6); }
.mt-orb.o2 { width: 24rem; height: 24rem; right: -6rem; bottom: -8rem; background: rgba(var(--c-accent-rgb), .45); animation-delay: -6s; }
.mt-orb.o3 { width: 14rem; height: 14rem; right: 30%; top: 15%; background: rgba(255, 255, 255, .14); animation-delay: -11s; }
@keyframes orb { 33% { transform: translate(6%, 8%) scale(1.08); } 66% { transform: translate(-5%, 4%) scale(.95); } }
.mt-grid { position: absolute; inset: 0; background-image: linear-gradient(rgba(255, 255, 255, .05) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .05) 1px, transparent 1px); background-size: 48px 48px; mask-image: radial-gradient(ellipse at center, #000, transparent 75%); -webkit-mask-image: radial-gradient(ellipse at center, #000, transparent 75%); }
.mt-wrap { position: relative; z-index: 1; display: grid; place-items: center; align-content: center; gap: 1.5rem; padding: clamp(1.2rem, 4vw, 3rem); min-height: 100vh; min-height: 100svh; }
.mt-card { width: min(44rem, 100%); padding: clamp(1.8rem, 5vw, 3.2rem); text-align: center; border-radius: calc(var(--radius-lg) * 1.4); background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .16); backdrop-filter: blur(24px) saturate(1.4); -webkit-backdrop-filter: blur(24px) saturate(1.4); box-shadow: 0 40px 100px rgba(0, 0, 0, .35); animation: pop-in .8s var(--anim-ease); }
.mt-logo { display: flex; justify-content: center; margin-bottom: 1.4rem; }
.mt-logo img { height: 64px; width: auto; filter: brightness(0) invert(1); }
.mt-logo .brand-text { color: #fff; font-size: 1.8rem; }
.mt-badge { display: inline-flex; align-items: center; gap: .55rem; padding: .45rem 1rem; border-radius: 999px; background: rgba(255, 255, 255, .12); border: 1px solid rgba(255, 255, 255, .2); font-size: .8rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.mt-pulse { width: .55rem; height: .55rem; border-radius: 50%; background: #fbbf24; box-shadow: 0 0 0 0 rgba(251, 191, 36, .7); animation: mt-pulse 2s infinite; }
@keyframes mt-pulse { 70% { box-shadow: 0 0 0 10px rgba(251, 191, 36, 0); } 100% { box-shadow: 0 0 0 0 rgba(251, 191, 36, 0); } }
.mt-card h1 { color: #fff; margin: 1.2rem 0 .8rem; font-size: clamp(2rem, 1.4rem + 3vw, 3.4rem); }
.mt-text { color: rgba(255, 255, 255, .86); font-size: 1.1rem; max-width: 34rem; margin: 0 auto 1.8rem; }
.mt-countdown .cd-unit { background: rgba(255, 255, 255, .1); border-color: rgba(255, 255, 255, .18); box-shadow: none; }
.mt-countdown .cd-num { background: none; color: #fff; }
.mt-countdown .cd-label { color: rgba(255, 255, 255, .7); }
.mt-eta { display: inline-flex; align-items: center; gap: .5rem; margin: 1.2rem 0 0; color: rgba(255, 255, 255, .8); font-size: .95rem; }
.mt-progress { margin: 1.8rem auto 0; max-width: 28rem; display: grid; gap: .5rem; }
.mt-progress-bar { height: 8px; border-radius: 8px; background: rgba(255, 255, 255, .14); overflow: hidden; }
.mt-progress-bar span { display: block; height: 100%; border-radius: 8px; background: linear-gradient(90deg, var(--c-accent), #fff); position: relative; transition: width 1s ease; }
.mt-progress-bar span::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .6), transparent); animation: shimmer 1.8s infinite; }
@keyframes shimmer { from { transform: translateX(-100%); } to { transform: translateX(100%); } }
.mt-progress-label { font-size: .85rem; color: rgba(255, 255, 255, .75); }
.mt-notify { margin: 2rem auto 0; max-width: 28rem; }
.mt-notify p { margin-bottom: .7rem; color: rgba(255, 255, 255, .9); }
.mt-notify .nl-inline { background: rgba(255, 255, 255, .12); border-color: rgba(255, 255, 255, .22); }
.mt-notify .nl-inline input { color: #fff; } .mt-notify .nl-inline input::placeholder { color: rgba(255, 255, 255, .65); }
.mt-notify .nl-submit { background: #fff; color: var(--c-secondary); }
.mt-contacts { display: flex; flex-wrap: wrap; justify-content: center; gap: .6rem; margin-top: 2rem; }
.mt-contacts a { display: inline-flex; align-items: center; gap: .45rem; padding: .55rem 1rem; border-radius: 999px; background: rgba(255, 255, 255, .1); color: #fff; font-size: .9rem; font-weight: 600; }
.mt-contacts a:hover { background: rgba(255, 255, 255, .2); color: #fff; }
.mt-social { display: flex; justify-content: center; gap: .4rem; margin-top: 1rem; }
.mt-social a { width: 2.6rem; height: 2.6rem; display: grid; place-items: center; border-radius: 50%; color: #fff; background: rgba(255, 255, 255, .08); }
.mt-social a:hover { background: rgba(255, 255, 255, .2); color: #fff; }
.mt-foot { color: rgba(255, 255, 255, .55); font-size: .85rem; margin: 0; }
.maintenance-body .toast { color: var(--c-text); }

/* ---------- 25. Animations d'apparition ---------- */
.js [data-anim]:not(.is-in), .js [data-stagger] > :not(.is-in) { opacity: 0; }
.js.anim-off [data-anim], .js.anim-off [data-stagger] > * { opacity: 1 !important; transform: none !important; filter: none !important; }
.js [data-anim-type] { transition-property: opacity, transform, filter; transition-duration: var(--anim-duration, 700ms); transition-timing-function: var(--anim-ease); transition-delay: calc(var(--d, 0) * 90ms); will-change: opacity, transform; }
.js [data-anim-type="fade-up"]:not(.is-in) { opacity: 0; transform: translate3d(0, var(--anim-dist, 28px), 0); }
.js [data-anim-type="fade"]:not(.is-in) { opacity: 0; }
.js [data-anim-type="zoom"]:not(.is-in) { opacity: 0; transform: scale(.93); }
.js [data-anim-type="slide-left"]:not(.is-in) { opacity: 0; transform: translate3d(calc(var(--anim-dist, 28px) * 1.6), 0, 0); }
.js [data-anim-type="slide-right"]:not(.is-in) { opacity: 0; transform: translate3d(calc(var(--anim-dist, 28px) * -1.6), 0, 0); }
.js [data-anim-type="blur"]:not(.is-in) { opacity: 0; filter: blur(14px); transform: scale(1.02); }
.js [data-anim-type="flip"]:not(.is-in) { opacity: 0; transform: perspective(900px) rotateX(18deg) translateY(20px); transform-origin: 50% 100%; }
.js [data-anim-type].is-in { will-change: auto; }
[data-anim-level="subtle"] { --anim-dist: 14px; }
[data-anim-level="expressive"] { --anim-dist: 46px; }
[data-anim-level="none"] [data-anim], [data-anim-level="none"] [data-stagger] > *, .reduce-motion [data-anim], .reduce-motion [data-stagger] > *, [data-anim-level="none"] [data-anim-type], .reduce-motion [data-anim-type] { opacity: 1 !important; transform: none !important; filter: none !important; transition: none !important; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .js [data-anim-type], .js [data-anim], .js [data-stagger] > * { opacity: 1 !important; transform: none !important; filter: none !important; }
  .marquee-track { animation: none; }
}
[data-anim-level="none"] .kenburns img, [data-anim-level="none"] .hero-ring, [data-anim-level="none"] .media-blob .split-media-inner, [data-anim-level="none"] .marquee-track { animation: none; }
[data-tilt] { transform-style: preserve-3d; }
.is-tilting { transition: transform .12s ease-out !important; }
::view-transition-old(root), ::view-transition-new(root) { animation-duration: .35s; }

/* ---------- 26. Grands écrans & télévision ---------- */
@media (min-width: 1920px) {
  .container { max-width: 84rem; }
  .container-wide { max-width: 104rem; }
  .hero-h-large { min-height: 72vh; }
}
@media (min-width: 2560px) {
  .container { max-width: 90rem; }
  .masonry.mcols-3 { columns: 4; }
  .gallery.gcols-4 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}

/* ---------- 27. Impression ---------- */

/* ---------- Agent IA du site (bulle de discussion) ---------- */
.chatbot [hidden] { display: none !important; }
.chatbot { position: fixed; right: max(1rem, env(safe-area-inset-right)); bottom: max(1rem, env(safe-area-inset-bottom)); z-index: 90; display: grid; justify-items: end; gap: .75rem; font-family: var(--font-body, inherit); }
.cb-launcher { position: relative; width: 3.8rem; height: 3.8rem; display: grid; place-items: center; border: 0; border-radius: 50%; background: var(--gradient-btn, var(--c-primary)); color: var(--c-on-primary); box-shadow: 0 14px 34px rgba(var(--c-primary-rgb), .4); cursor: pointer; transition: transform .3s var(--anim-ease); }
.cb-launcher:hover { transform: scale(1.06) translateY(-2px); }
.cb-launcher:focus-visible { outline: 3px solid rgba(var(--c-primary-rgb), .45); outline-offset: 3px; }
.cb-launcher .icon { width: 1.6rem; height: 1.6rem; transition: transform .35s var(--anim-ease), opacity .2s; }
.cb-l-open, .cb-l-close { grid-area: 1 / 1; display: grid; }
.cb-l-close { opacity: 0; transform: rotate(-90deg) scale(.6); }
.chatbot.is-open .cb-l-open { opacity: 0; transform: rotate(90deg) scale(.6); }
.chatbot.is-open .cb-l-close { opacity: 1; transform: none; }
.cb-pulse { position: absolute; inset: 0; border-radius: 50%; border: 2px solid rgba(var(--c-primary-rgb), .55); animation: ring 2.6s ease-out infinite; pointer-events: none; }
.chatbot.is-open .cb-pulse, html.cb-opened .cb-pulse { display: none; }
.cb-badge { position: absolute; top: -2px; right: -2px; min-width: 1.35rem; height: 1.35rem; padding: 0 .35rem; border-radius: 999px; background: #e11d48; color: #fff; font-size: .72rem; font-weight: 800; line-height: 1.35rem; box-shadow: 0 0 0 2px var(--c-bg); animation: bump .5s var(--anim-ease); }
.cb-teaser { position: relative; display: flex; align-items: center; gap: .7rem; max-width: min(19rem, calc(100vw - 6rem)); padding: .8rem 2.1rem .8rem .8rem; border-radius: 1.1rem 1.1rem .3rem 1.1rem; background: var(--c-bg); color: var(--c-text); border: 1px solid var(--c-border); box-shadow: var(--shadow-lg); cursor: pointer; opacity: 0; transform: translateY(10px) scale(.96); transition: opacity .35s ease, transform .45s var(--anim-ease); }
.cb-teaser.is-in { opacity: 1; transform: none; }
.cb-teaser p { margin: 0; font-size: .9rem; line-height: 1.4; font-weight: 550; }
.cb-teaser-av, .cb-avatar, .cb-msg-av { flex: none; display: grid; place-items: center; border-radius: 50%; overflow: hidden; background: var(--c-primary-soft); color: var(--c-primary); }
.cb-teaser-av { width: 2.4rem; height: 2.4rem; }
.cb-teaser-av img, .cb-avatar img, .cb-msg-av img { width: 100%; height: 100%; object-fit: cover; }
.cb-teaser-x { position: absolute; top: .35rem; right: .35rem; width: 1.6rem; height: 1.6rem; display: grid; place-items: center; border: 0; border-radius: 50%; background: transparent; color: var(--c-muted); cursor: pointer; }
.cb-teaser-x:hover { background: var(--c-surface-2); color: var(--c-text); }
.cb-panel { width: min(24.5rem, calc(100vw - 2rem)); height: min(40rem, calc(100dvh - 7.5rem)); display: flex; flex-direction: column; border-radius: 1.4rem; overflow: hidden; background: var(--c-bg); color: var(--c-text); border: 1px solid var(--c-border); box-shadow: 0 30px 80px -20px rgba(0, 0, 0, .35), var(--shadow-lg); transform-origin: bottom right; animation: cb-in .35s var(--anim-ease); }
@keyframes cb-in { from { opacity: 0; transform: translateY(16px) scale(.96); } to { opacity: 1; transform: none; } }
.cb-head { position: relative; display: flex; align-items: center; gap: .75rem; padding: .9rem .9rem .9rem 1rem; background: var(--gradient-btn, var(--c-primary)); color: var(--c-on-primary); }
.cb-avatar { position: relative; width: 2.6rem; height: 2.6rem; background: rgba(255, 255, 255, .18); color: #fff; overflow: visible; }
.cb-avatar img { border-radius: 50%; }
.cb-online { position: absolute; right: 0; bottom: 0; width: .7rem; height: .7rem; border-radius: 50%; background: #22c55e; box-shadow: 0 0 0 2px rgba(0, 0, 0, .12); }
.cb-id { flex: 1; min-width: 0; display: grid; line-height: 1.25; }
.cb-id strong { font-size: 1rem; color: inherit; }
.cb-id small { font-size: .76rem; opacity: .85; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cb-tools { display: flex; gap: .15rem; }
.cb-icon-btn { width: 2.2rem; height: 2.2rem; display: grid; place-items: center; border: 0; border-radius: 50%; background: transparent; color: inherit; cursor: pointer; transition: background-color .2s; }
.cb-icon-btn:hover, .cb-icon-btn[aria-expanded="true"] { background: rgba(255, 255, 255, .18); }
.cb-menu { position: absolute; z-index: 5; top: calc(100% - .4rem); right: .7rem; width: min(17rem, calc(100% - 1.4rem)); padding: .4rem; border-radius: 1rem; background: var(--c-bg); color: var(--c-text); border: 1px solid var(--c-border); box-shadow: var(--shadow-lg); animation: cb-in .2s ease; }
.cb-menu > button { display: flex; align-items: center; gap: .6rem; width: 100%; padding: .6rem .7rem; border: 0; border-radius: .7rem; background: none; color: inherit; font: inherit; font-size: .88rem; font-weight: 550; text-align: left; cursor: pointer; }
.cb-menu > button:hover { background: var(--c-primary-soft); color: var(--c-primary); }
.cb-menu > button .icon { color: var(--c-primary); }
.cb-menu-sep { margin: .35rem .7rem .3rem; padding-top: .45rem; border-top: 1px solid var(--c-border); font-size: .7rem; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; color: var(--c-muted); }
.cb-channels, .cb-strip { display: flex; flex-wrap: wrap; gap: .35rem; padding: 0 .35rem .3rem; }
.cb-channel { display: inline-flex; align-items: center; gap: .35rem; padding: .4rem .65rem; border-radius: 999px; background: var(--c-surface-2); color: var(--c-text); font-size: .8rem; font-weight: 600; text-decoration: none; }
.cb-channel:hover { background: var(--c-primary-soft); color: var(--c-primary); }
.cb-ch-wa .icon, .cb-ch-whatsapp .icon { color: #25d366; }
.cb-strip { padding: .2rem 0 0 2.6rem; }
.cb-body { flex: 1; overflow-y: auto; overscroll-behavior: contain; padding: 1rem .9rem .6rem; display: flex; flex-direction: column; gap: .7rem; background: radial-gradient(circle at 100% 0, var(--c-primary-soft), transparent 45%), var(--c-surface); scrollbar-width: thin; }
.cb-msg { display: flex; align-items: flex-end; gap: .5rem; max-width: 100%; }
.cb-msg.is-new { animation: cb-msg .35s var(--anim-ease); }
@keyframes cb-msg { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.cb-msg-av { width: 2rem; height: 2rem; }
.cb-msg-av .icon { width: 1rem; height: 1rem; }
.cb-team .cb-msg-av { background: var(--c-secondary, #333); color: #fff; }
.cb-bubble { position: relative; max-width: calc(100% - 2.6rem); padding: .6rem .8rem .45rem; border-radius: 1.05rem 1.05rem 1.05rem .3rem; background: var(--c-bg); border: 1px solid var(--c-border); box-shadow: 0 2px 6px rgba(0, 0, 0, .04); font-size: .92rem; line-height: 1.5; overflow-wrap: anywhere; }
.cb-me { justify-content: flex-end; }
.cb-me .cb-bubble { max-width: 85%; border-radius: 1.05rem 1.05rem .3rem 1.05rem; background: var(--c-primary); border-color: var(--c-primary); color: var(--c-on-primary); }
.cb-me.is-failed .cb-bubble { opacity: .55; }
.cb-team .cb-bubble { border-color: rgba(var(--c-primary-rgb), .35); }
.cb-who { display: block; margin-bottom: .15rem; font-size: .72rem; font-weight: 750; color: var(--c-primary); }
.cb-text p { margin: 0 0 .5rem; } .cb-text p:last-child { margin-bottom: 0; }
.cb-text ul, .cb-text ol { margin: .3rem 0 .5rem; padding-left: 1.15rem; } .cb-text li { margin: .15rem 0; }
.cb-text a { color: var(--c-primary); text-decoration: underline; text-underline-offset: 2px; }
.cb-me .cb-text a { color: inherit; }
.cb-text h1, .cb-text h2, .cb-text h3, .cb-text h4 { font-size: .98rem; margin: .4rem 0 .3rem; font-family: inherit; }
.cb-text table { font-size: .8rem; border-collapse: collapse; margin: .3rem 0; display: block; overflow-x: auto; }
.cb-text td, .cb-text th { border: 1px solid var(--c-border); padding: .25rem .45rem; }
.cb-text code { font-size: .85em; }
.cb-bubble time { display: block; margin-top: .2rem; font-size: .66rem; opacity: .55; text-align: right; }
.cb-dots { display: inline-flex; gap: 4px; padding: .3rem .1rem; }
.cb-dots i { width: 7px; height: 7px; border-radius: 50%; background: var(--c-muted); animation: cb-dot 1.2s infinite ease-in-out; }
.cb-dots i:nth-child(2) { animation-delay: .15s; } .cb-dots i:nth-child(3) { animation-delay: .3s; }
@keyframes cb-dot { 0%, 60%, 100% { transform: none; opacity: .4; } 30% { transform: translateY(-4px); opacity: 1; } }
.cb-chips { display: flex; flex-wrap: wrap; gap: .4rem; padding-left: 2.5rem; animation: cb-msg .35s var(--anim-ease); }
.cb-chips button { padding: .45rem .8rem; border-radius: 999px; border: 1.5px solid rgba(var(--c-primary-rgb), .35); background: var(--c-bg); color: var(--c-primary); font: inherit; font-size: .82rem; font-weight: 650; cursor: pointer; transition: background-color .2s, color .2s, transform .2s; }
.cb-chips button:hover { background: var(--c-primary); color: var(--c-on-primary); transform: translateY(-1px); }
.cb-notice { align-self: center; max-width: 90%; padding: .45rem .8rem; border-radius: .8rem; background: var(--c-surface-2); color: var(--c-muted); font-size: .8rem; text-align: center; transition: opacity .4s; }
.cb-notice.is-error { background: rgba(225, 29, 72, .1); color: #be123c; }
.cb-notice.is-out { opacity: 0; }
.cb-lead { display: grid; gap: .55rem; margin-left: 2.5rem; padding: .85rem; border-radius: 1rem; background: var(--c-bg); border: 1px solid rgba(var(--c-primary-rgb), .3); box-shadow: 0 6px 18px rgba(0, 0, 0, .06); animation: cb-msg .35s var(--anim-ease); }
.cb-lead-title { font-size: .9rem; color: var(--c-primary); }
.cb-lead label { display: grid; gap: .2rem; font-size: .74rem; font-weight: 650; color: var(--c-muted); }
.cb-lead input, .cb-lead textarea { width: 100%; padding: .55rem .65rem; border-radius: .65rem; border: 1px solid var(--c-border); background: var(--c-surface); color: var(--c-text); font: inherit; font-size: .88rem; outline: none; resize: vertical; }
.cb-lead input:focus, .cb-lead textarea:focus { border-color: var(--c-primary); box-shadow: 0 0 0 3px var(--c-primary-soft); }
.cb-lead-row { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
@media (max-width: 380px) { .cb-lead-row { grid-template-columns: 1fr; } }
.cb-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; opacity: 0; }
.cb-lead-err { margin: 0; color: #be123c; font-size: .8rem; font-weight: 600; }
.cb-lead-actions { display: flex; justify-content: flex-end; gap: .4rem; }
.cb-lead-actions button { padding: .5rem .9rem; border-radius: 999px; border: 0; font: inherit; font-size: .84rem; font-weight: 700; cursor: pointer; }
.cb-lead-cancel { background: transparent; color: var(--c-muted); }
.cb-lead-send { background: var(--c-primary); color: var(--c-on-primary); }
.cb-lead-send:disabled { opacity: .6; }
.cb-lead.is-done { padding: .55rem .8rem; }
.cb-lead-ok { color: #15803d; font-size: .85rem; font-weight: 700; }
.cb-composer { display: flex; align-items: flex-end; gap: .45rem; padding: .65rem .7rem; border-top: 1px solid var(--c-border); background: var(--c-bg); }
.cb-composer textarea { flex: 1; min-height: 2.6rem; max-height: 7.5rem; padding: .62rem .85rem; border-radius: 1.3rem; border: 1px solid var(--c-border); background: var(--c-surface); color: var(--c-text); font: inherit; font-size: .92rem; line-height: 1.4; resize: none; outline: none; transition: border-color .2s, box-shadow .2s; }
.cb-composer textarea:focus { border-color: var(--c-primary); box-shadow: 0 0 0 3px var(--c-primary-soft); }
.cb-send { flex: none; width: 2.6rem; height: 2.6rem; display: grid; place-items: center; border: 0; border-radius: 50%; background: var(--c-primary); color: var(--c-on-primary); cursor: pointer; transition: transform .2s, opacity .2s; }
.cb-send:hover { transform: scale(1.06); }
.cb-composer.is-busy .cb-send { opacity: .5; pointer-events: none; }
.cb-foot { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: .25rem; padding: .35rem .8rem .55rem; background: var(--c-bg); color: var(--c-muted); font-size: .68rem; text-align: center; }
.cb-foot a { color: inherit; text-decoration: underline; }
.cb-foot .icon { width: .75rem; height: .75rem; }
.chatbot ~ .to-top, .chatbot + .to-top { bottom: max(1rem, env(safe-area-inset-bottom)); }
@media (max-width: 560px) {
  .chatbot.is-open { left: 0; right: 0; bottom: 0; gap: 0; }
  .chatbot.is-open .cb-launcher { display: none; }
  .cb-panel { width: 100vw; height: 100dvh; border-radius: 0; border: 0; animation: cb-sheet .35s var(--anim-ease); }
  @keyframes cb-sheet { from { transform: translateY(30px); opacity: .5; } to { transform: none; opacity: 1; } }
  .cb-head { padding-top: max(.9rem, env(safe-area-inset-top)); }
  .cb-composer { padding-bottom: max(.65rem, env(safe-area-inset-bottom)); }
  html.cb-opened { overflow: hidden; }
}
@media (min-width: 2200px) { .cb-launcher { width: 4.6rem; height: 4.6rem; } .cb-panel { width: 30rem; height: min(48rem, calc(100dvh - 9rem)); } }
@media (prefers-reduced-motion: reduce) { .cb-pulse { animation: none; } .cb-panel, .cb-msg.is-new, .cb-teaser { animation: none; transition: none; } }

@media print {
  .site-header, .site-footer, .share-bar, .float-contact, .chatbot, .to-top, .toasts, .cookie-banner, .scroll-progress, .announce, .topbar, .hero-deco, .carousel-nav, .preview-banner, .admin-maint-bar { display: none !important; }
  body { background: #fff; color: #000; }
  .js [data-anim-type], .js [data-anim], .js [data-stagger] > * { opacity: 1 !important; transform: none !important; }
  a { color: #000; text-decoration: underline; }
  .card, .feature, .plan, .testimonial { break-inside: avoid; box-shadow: none !important; }
}

@media (min-width: 2200px) { .brand img { height: calc(var(--logo-h, 56px) * 1.4); max-width: 340px; } }
.cb-foot span { display: inline-flex; align-items: center; gap: .25rem; }
