/* La Sécurité Incendie · thème WordPress
   Chargé après lsi-tokens.css et lsi-components.css (design system).
   1. Base · 2. Mise en page des blocs · 3. Héros · 4. Blocs du contenu · 5. Signatures et décors
   6. En-tête, panneaux, recherche · 7. Pied de page · 8. Pages simples · 9. WooCommerce · 10. Mouvement · 11. Impression */

/* ============================================================ 1. Base */
:root {
  --lsi-edge: var(--margin-lg);
  --lsi-pad: max(var(--lsi-edge), calc((100% - var(--container-max)) / 2));
  --lsi-bar-h: 40px;
  --lsi-ease: cubic-bezier(.2, .7, .2, 1);
}
@media (max-width: 1023px) { :root { --lsi-edge: var(--gutter-lg); } }
@media (max-width: 767px) { :root { --lsi-edge: var(--margin-sm); } }

html { scroll-behavior: smooth; scroll-padding-top: calc(var(--header-height) + 16px); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { overflow-x: clip; }
.is-dark { background-color: var(--surface); color: var(--ink); }
a { text-underline-offset: 3px; }
:where(.lsi-main) a:not([class]) { text-decoration-color: var(--accent); text-decoration-thickness: 1px; }
:where(.lsi-main) a:not([class]):hover { color: var(--accent-ink); text-decoration-thickness: 2px; }
.lsi-main:focus { outline: none; }
strong, b { font-weight: 600; }
:where(h1, h2, h3, h4, h5, h6) { font-family: var(--font-display); font-weight: 700; text-wrap: balance; }
:where(.lsi-main) h1 { font-size: clamp(32px, 26.742px + 1.3483vw, 44px); line-height: clamp(36px, 30.742px + 1.3483vw, 48px); }
:where(.lsi-main) h2 { font-size: clamp(26px, 22.494px + 0.8989vw, 34px); line-height: clamp(32px, 28.494px + 0.8989vw, 40px); }
:where(.lsi-main) h3 { font-size: clamp(22px, 20.247px + 0.4494vw, 26px); line-height: clamp(28px, 26.247px + 0.4494vw, 32px); }
:where(.lsi-main) h4 { font-size: clamp(19px, 18.124px + 0.2247vw, 21px); line-height: clamp(26px, 25.124px + 0.2247vw, 28px); }
.lsi-hero .display-xl, .lsi-hero .display { text-wrap: balance; }
.overline { text-transform: uppercase; color: var(--ink-muted); }
.is-dark .overline, [data-theme="dark"] .overline { color: var(--ink-muted); }
.lead { color: var(--ink); }
.caption { color: var(--ink-muted); }
.wp-element-caption, figcaption { font-size: 13px; line-height: 18px; color: var(--ink-muted); margin-top: var(--space-2); }

/* ============================================================ 2. Mise en page des blocs */
.lsi-blocks > * { margin-block: 0; }
.lsi-blocks > :not(.alignfull):not(.lsi-hero):not(.lsi-cta):not(.lsi-section) {
  padding-inline: var(--lsi-pad);
  margin-block: var(--space-6);
}

/* Section : pleine largeur, contenu calé sur la grille de 1280 px, aligné à gauche. */
.lsi-section { padding-inline: var(--lsi-pad); padding-block: var(--space-9); position: relative; }
.lsi-section--tight { padding-block: var(--space-7); }
.lsi-section--flush-top { padding-top: 0; }
.lsi-section--alt { background-color: var(--surface-alt); }
.lsi-section.is-dark { background-color: var(--surface); }
@media (max-width: 767px) {
  .lsi-section { padding-block: var(--space-8); }
  .lsi-section--tight { padding-block: var(--space-6); }
}

:where(.lsi-section, .lsi-section *, .lsi-hero, .lsi-hero *, .lsi-cta, .lsi-cta *) > * { margin-block: 0; }
.lsi-section > * + * { margin-top: var(--space-5); }
.lsi-section > .overline + * { margin-top: var(--space-3); }
.lsi-section > :is(h2, .h2) + .lead { margin-top: var(--space-4); }
.lsi-section > * + :is(h2, .h2) { margin-top: var(--space-8); }
.lsi-section > * + :is(h3, .h3) { margin-top: var(--space-7); }
.lsi-section > :is(h3, .h3, h4) + * { margin-top: var(--space-3); }
.lsi-section > * + :is(.lsi-grid, .lsi-steps, .lsi-figures, .lsi-split, .wp-block-columns, .lsi-accordion, .wp-block-table, .lsi-references, .lsi-products, .lsi-families, .lsi-gallery, .lsi-proofs, .lsi-links) { margin-top: var(--space-7); }
.lsi-section > :is(.lsi-grid, .lsi-steps, .lsi-split, .wp-block-columns, .lsi-gallery, .lsi-proofs, .wp-block-table, .lsi-accordion) + :is(p, .wp-block-buttons) { margin-top: var(--space-6); }
.lsi-section > .overline + .overline { margin-top: 0; }

/* Lignes de lecture. */
.lsi-section > :is(p, ul, ol, blockquote, .wp-block-list, .wp-block-quote):not(.lsi-grid):not(.lsi-references):not(.lsi-products) { max-width: var(--content-max); }
.lsi-section > :is(h2, .h2) { max-width: 880px; }
.lsi-section > .lead { max-width: 760px; }
.lsi-section > :is(h3, h4) { max-width: var(--content-max); }
.lsi-section > .wp-block-table { max-width: 960px; }
.lsi-section > .lsi-accordion { max-width: 880px; }

:where(.lsi-section, .lsi-prose, .wp-block-column, .wp-block-group) > :is(ul, ol).wp-block-list:not(.lsi-list):not(.is-style-accent) { padding-left: var(--space-5); }
:where(.lsi-section, .lsi-prose, .wp-block-column, .wp-block-group) > :is(ul, ol) li + li { margin-top: var(--space-2); }

/* Colonnes : texte et image côte à côte. */
.wp-block-columns { display: flex; flex-wrap: wrap; gap: var(--space-6) var(--space-8); margin: 0; }
.wp-block-columns > .wp-block-column { flex: 1 1 0; min-width: 0; }
.wp-block-columns.are-vertically-aligned-center { align-items: center; }
.wp-block-column > * + * { margin-top: var(--space-5); }
.wp-block-column > .overline + * { margin-top: var(--space-3); }
.wp-block-column > :is(h2, h3) + * { margin-top: var(--space-4); }
.wp-block-column > * + :is(h3, h4) { margin-top: var(--space-6); }
@media (max-width: 899px) {
  .wp-block-columns { flex-direction: column; }
  .wp-block-columns > .wp-block-column { flex-basis: auto; width: 100%; }
  .wp-block-columns.lsi-split--reverse { flex-direction: column-reverse; }
}

/* Grilles du design system appliquées aux groupes de blocs. */
.lsi-grid > * { margin: 0; min-width: 0; }
.lsi-grid--2 { --lsi-min: 380px; }
.lsi-grid.lsi-grid--doors { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 1023px) { .lsi-grid.lsi-grid--doors { grid-template-columns: minmax(0, 1fr); } }

/* ============================================================ 3. Héros */
.lsi-hero { overflow: hidden; }
.lsi-hero__grid > *, .lsi-hero__content > * { margin: 0; }
.lsi-hero__content > .lsi-hero__breadcrumb { margin-bottom: var(--space-6); }
.lsi-hero__content > .lsi-hero__title { margin-top: var(--space-4); }
.lsi-hero__content > .lsi-hero__breadcrumb + .lsi-hero__title { margin-top: 0; }
.lsi-hero__content > .lsi-hero__lead { margin-top: var(--space-6); max-width: 600px; }
.lsi-hero__content > .lsi-hero__actions { margin-top: var(--space-7); }
.lsi-hero__signature {
  margin-top: var(--space-5) !important;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(19px, 17px + 0.6vw, 24px);
  line-height: 1.3;
  color: var(--accent-ink);
}
.lsi-hero__lead { color: var(--ink); }
.lsi-hero--page .lsi-hero__lead { color: var(--ink-muted); }
.lsi-hero__actions { gap: var(--space-4) !important; }
.lsi-hero__media.wp-block-image { margin: 0; }
.lsi-hero__media img { width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: var(--lsi-focus, 50% 50%); }
.lsi-hero__media { --lsi-shift: 0px; }
.lsi-hero__media img { transform: translate3d(0, var(--lsi-shift), 0) scale(1.06); transform-origin: 50% 50%; will-change: transform; }
.lsi-hero__media::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background: linear-gradient(90deg, rgba(29, 29, 27, .14), rgba(29, 29, 27, 0) 35%);
}
.lsi-hero + * { position: relative; }
.lsi-hero__grid { position: relative; }
/* Un filet de graduation en pied de héros (accueil). */
.lsi-hero--home .lsi-hero__content::after {
  content: "";
  display: block;
  width: min(100%, 420px);
  height: 24px;
  margin-top: var(--space-7);
  --lsi-tick-h: 24px;
  background-image:
    linear-gradient(var(--line), var(--line)),
    repeating-linear-gradient(to right, var(--ink-subtle) 0 1px, transparent 1px 40px),
    repeating-linear-gradient(to right, var(--line) 0 1px, transparent 1px 8px),
    linear-gradient(var(--accent), var(--accent));
  background-size: 100% 1px, 100% 16px, 100% 8px, 3px 24px;
  background-position: 0 23px, 0 8px, 0 16px, var(--lsi-needle, 72%) 0;
  background-repeat: no-repeat;
  transition: background-position 1.6s var(--lsi-ease);
}
@container lsi-hero (max-width: 1023px) {
  .lsi-hero__media img { transform: none; }
  .lsi-hero--home .lsi-hero__content::after { display: none; }
}

/* ============================================================ 4. Blocs du contenu */
/* Boutons (bloc Bouton) : composant Button. */
.wp-block-buttons { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-4); }
.wp-block-buttons > .wp-block-button { margin: 0; }
.wp-block-button { --lsi-b-bg: var(--accent); --lsi-b-fg: var(--on-accent); --lsi-b-bd: var(--accent); }
.wp-block-button .wp-block-button__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  min-height: var(--control-md);
  padding: 0 var(--space-5);
  border: 2px solid var(--lsi-b-bd);
  border-radius: var(--radius-sm);
  background-color: var(--lsi-b-bg);
  color: var(--lsi-b-fg);
  font-family: var(--font-text);
  font-size: 15px;
  line-height: 20px;
  font-weight: 600;
  text-align: center;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color 150ms ease-out, border-color 150ms ease-out, color 150ms ease-out, box-shadow 150ms ease-out, transform 150ms ease-out;
}
.wp-block-button .wp-block-button__link:hover { --lsi-b-bg: var(--accent-hover); --lsi-b-bd: var(--accent-hover); }
.wp-block-button .wp-block-button__link:active { --lsi-b-bg: var(--accent-pressed); --lsi-b-bd: var(--accent-pressed); }
.wp-block-button .wp-block-button__link:focus-visible { outline: 2px solid transparent; box-shadow: var(--focus-ring); }
.wp-block-button.is-style-outline { --lsi-b-bg: transparent; --lsi-b-fg: var(--ink); --lsi-b-bd: var(--ink); }
.wp-block-button.is-style-outline .wp-block-button__link:hover { --lsi-b-bg: var(--surface-alt); --lsi-b-bd: var(--ink); }
.wp-block-button.is-style-secondary { --lsi-b-bg: var(--ink); --lsi-b-fg: var(--surface); --lsi-b-bd: var(--ink); }
.wp-block-button.is-style-secondary .wp-block-button__link:hover { --lsi-b-bg: var(--ink); --lsi-b-bd: var(--ink); box-shadow: inset 0 -4px 0 var(--accent); }
.wp-block-button.is-style-on-accent { --lsi-b-bg: var(--on-accent); --lsi-b-fg: var(--brand-ink); --lsi-b-bd: var(--on-accent); }
.wp-block-button.is-style-on-accent .wp-block-button__link:hover { --lsi-b-bg: var(--on-accent); --lsi-b-bd: var(--on-accent); box-shadow: inset 0 -4px 0 var(--brand-ink); }
.wp-block-button.is-style-text { --lsi-b-bg: transparent; --lsi-b-fg: var(--ink); --lsi-b-bd: transparent; }
.wp-block-button.is-style-text .wp-block-button__link {
  min-height: var(--target-min);
  padding-inline: 0;
  border-width: 0;
  text-decoration-line: underline;
  text-decoration-color: var(--accent);
  text-decoration-thickness: 2px;
  text-underline-offset: 5px;
  /* Les liens de texte peuvent être longs : en ligne, ils passent à la ligne sur mobile et la flèche suit le dernier mot */
  display: inline-block;
  max-width: 100%;
  padding-block: 10px;
  line-height: 24px;
  white-space: normal;
  text-align: left;
}
.wp-block-button.is-style-text .wp-block-button__link::after {
  content: "";
  display: inline-block;
  vertical-align: -4px;
  margin-left: var(--space-2);
  width: 20px;
  height: 20px;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M8 24H38M26 12L38 24L26 36' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M8 24H38M26 12L38 24L26 36' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") center / contain no-repeat;
  transition: transform 150ms ease-out;
}
.wp-block-button.is-style-text .wp-block-button__link:hover { --lsi-b-bg: transparent; --lsi-b-bd: transparent; color: var(--accent-ink); }
.wp-block-button.is-style-text .wp-block-button__link:hover::after { transform: translateX(4px); }
.wp-block-button.lsi-btn--lg .wp-block-button__link { min-height: var(--control-lg); padding-inline: var(--space-6); font-size: 17px; line-height: 24px; }
.wp-block-button.is-style-text.lsi-btn--lg .wp-block-button__link { padding-inline: 0; }
.wp-block-button.lsi-btn--tel .wp-block-button__link::before {
  content: "";
  width: 20px;
  height: 20px;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M12 4H26A4 4 0 0 1 30 8V40A4 4 0 0 1 26 44H12A4 4 0 0 1 8 40V8A4 4 0 0 1 12 4ZM15 10H23M17 37H21' fill='none' stroke='%23000' stroke-width='4'/%3E%3Cpath d='M32 20H37.97L42.59 12H36.62Z'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M12 4H26A4 4 0 0 1 30 8V40A4 4 0 0 1 26 44H12A4 4 0 0 1 8 40V8A4 4 0 0 1 12 4ZM15 10H23M17 37H21' fill='none' stroke='%23000' stroke-width='4'/%3E%3Cpath d='M32 20H37.97L42.59 12H36.62Z'/%3E%3C/svg%3E") center / contain no-repeat;
}
@media (max-width: 767px) {
  .lsi-hero__actions .wp-block-button, .lsi-cta__actions .wp-block-button { flex: 1 1 100%; }
  .lsi-hero__actions .wp-block-button__link, .lsi-cta__actions .wp-block-button__link { width: 100%; }
}

/* Images. */
.wp-block-image { margin: 0; }
.wp-block-image img { display: block; height: auto; }
.wp-block-image.lsi-cut, .wp-block-image.is-style-coupe { --lsi-cut: 96px; position: relative; overflow: hidden; }
.wp-block-image.is-style-coupe { clip-path: polygon(calc(var(--lsi-cut) * 0.57735) 0, 100% 0, 100% 100%, 0 100%, 0 var(--lsi-cut)); }
.wp-block-image.lsi-cut img, .wp-block-image.is-style-coupe img { width: 100%; }
.wp-block-image.lsi-media--photo img { aspect-ratio: 3 / 2; object-fit: cover; }
.wp-block-image.lsi-media--square img { aspect-ratio: 1 / 1; object-fit: cover; }
.wp-block-image.lsi-media--tall img { aspect-ratio: 4 / 5; object-fit: cover; }
.wp-block-image.lsi-media--wide img { aspect-ratio: 21 / 9; object-fit: cover; }
.wp-block-image.lsi-media--169 img { aspect-ratio: 16 / 9; object-fit: cover; }
.wp-block-image figcaption { max-width: var(--content-max); }

/* Bande photo pleine largeur, avec léger parallaxe. */
.wp-block-image.lsi-band { width: 100%; height: clamp(260px, 38vw, 600px); overflow: hidden; position: relative; }
.wp-block-image.lsi-band img { width: 100%; height: 118%; object-fit: cover; transform: translate3d(0, var(--lsi-shift, 0px), 0); will-change: transform; margin-top: -9%; }

/* Galerie de gestes : trois photos 3:2, légendées. */
.lsi-gallery { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-5); }
.lsi-gallery > * { margin: 0; }
.lsi-gallery .wp-block-image img { aspect-ratio: 3 / 2; object-fit: cover; width: 100%; border-radius: var(--radius-md); }
.lsi-gallery .wp-block-image:first-child { --lsi-cut: 64px; clip-path: polygon(calc(var(--lsi-cut) * 0.57735) 0, 100% 0, 100% 100%, 0 100%, 0 var(--lsi-cut)); }
.lsi-gallery .wp-block-image:first-child img { border-radius: 0; }
@media (max-width: 767px) { .lsi-gallery { grid-template-columns: minmax(0, 1fr); } }

/* Listes à puces accent. */
.wp-block-list.lsi-list, .wp-block-list.is-style-accent { display: grid; gap: var(--space-3); padding: 0; list-style: none; }
.wp-block-list.is-style-accent > li { position: relative; padding-left: 0.797em; }
.wp-block-list.is-style-accent > li::before {
  content: "";
  position: absolute;
  left: 0;
  top: calc(0.5lh - 0.352em);
  width: 0.5085em;
  height: 0.3842em;
  background-color: var(--accent);
  clip-path: polygon(0 100%, 56.39% 100%, 100% 0, 43.61% 0);
}
.wp-block-list.is-style-accent li + li { margin-top: 0; }

/* Tableaux. */
.wp-block-table { margin: 0; overflow-x: auto; }
.wp-block-table table { width: 100%; border-collapse: collapse; font-size: 15px; line-height: 24px; }
.wp-block-table :is(th, td) { padding: var(--space-3) var(--space-4); text-align: left; vertical-align: top; border: 0; }
.wp-block-table thead { border-bottom: 2px solid var(--ink); }
.wp-block-table thead th { font-weight: 600; white-space: nowrap; }
.wp-block-table tbody tr { border-bottom: 1px solid var(--line); }
.wp-block-table tbody tr:nth-child(odd) { background-color: var(--surface-alt); }
.lsi-section--alt .wp-block-table tbody tr:nth-child(odd) { background-color: var(--surface); }
.wp-block-table tbody td:first-child { font-weight: 600; }
.wp-block-table td { font-variant-numeric: tabular-nums; }
.wp-block-table figcaption { text-align: left; margin-top: var(--space-3); }
.wp-block-table.is-style-technique tbody td:first-child { width: 38%; }
@media (max-width: 599px) {
  .wp-block-table table { font-size: 14px; }
  .wp-block-table :is(th, td) { padding: var(--space-2) var(--space-3); }
  .wp-block-table thead th { white-space: normal; }
}

/* FAQ : blocs Détails dans un groupe lsi-accordion. */
.lsi-accordion { border-top: 1px solid var(--line); }
.lsi-accordion > * { margin: 0; }
.lsi-accordion .wp-block-details, .lsi-accordion__item { border-bottom: 1px solid var(--line); }
.lsi-accordion :is(.wp-block-details, .lsi-accordion__item) > summary {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-5);
  min-height: var(--target-min);
  padding: var(--space-5) 0;
  list-style: none;
  cursor: pointer;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(18px, 17px + 0.25vw, 20px);
  line-height: 1.35;
  transition: color 150ms ease-out;
}
.lsi-accordion :is(.wp-block-details, .lsi-accordion__item) > summary::-webkit-details-marker { display: none; }
.lsi-accordion :is(.wp-block-details, .lsi-accordion__item) > summary::marker { content: ""; }
.lsi-accordion :is(.wp-block-details, .lsi-accordion__item) > summary::after {
  content: "";
  flex: none;
  width: var(--icon-md);
  height: var(--icon-md);
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M12 18L24 30L36 18' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M12 18L24 30L36 18' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") center / contain no-repeat;
  transition: transform 250ms ease-out;
}
.lsi-accordion :is(.wp-block-details, .lsi-accordion__item)[open] > summary::after { transform: rotate(180deg); }
.lsi-accordion :is(.wp-block-details, .lsi-accordion__item) > summary:hover { color: var(--accent-ink); }
.lsi-accordion :is(.wp-block-details, .lsi-accordion__item) > summary:focus-visible { outline: 2px solid var(--focus); outline-offset: 4px; }
.lsi-accordion :is(.wp-block-details, .lsi-accordion__item) > :not(summary) { max-width: var(--content-max); margin: 0 0 var(--space-4); }
.lsi-accordion :is(.wp-block-details, .lsi-accordion__item) > :last-child { margin-bottom: var(--space-6); }
.lsi-accordion :is(.wp-block-details, .lsi-accordion__item)[open] > :not(summary) { animation: lsi-fade-in 250ms ease-out; }
.lsi-accordion__content > * + * { margin-top: var(--space-4); }

/* Encadré « La règle ». */
.wp-block-group.is-style-regle, .lsi-rule {
  position: relative;
  max-width: 880px;
  padding: var(--space-6) var(--space-6) var(--space-6) calc(var(--space-6) + 12px);
  border-left: 3px solid var(--accent);
  background-color: var(--surface-alt);
}
.lsi-section--alt :is(.wp-block-group.is-style-regle, .lsi-rule) { background-color: var(--surface); }
:is(.wp-block-group.is-style-regle, .lsi-rule) > * { margin: 0; }
:is(.wp-block-group.is-style-regle, .lsi-rule) > * + * { margin-top: var(--space-3); }
:is(.wp-block-group.is-style-regle, .lsi-rule) > .overline { color: var(--accent-ink); }
.lsi-maj { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-4); font-size: 13px; line-height: 18px; color: var(--ink-muted); }

/* Chiffres clés : graduation, traits rouges animés. */
.lsi-figures > * { margin: 0; }
.lsi-figures__list > * { margin: 0; }
.lsi-figures__item > * { margin: 0; }
.lsi-figures__value { font-variant-numeric: lining-nums tabular-nums; white-space: nowrap; }
.lsi-figures__value.figure { font-size: clamp(36px, 30px + 1.4vw, 48px); line-height: 1; }
.is-dark .lsi-figures__list { --line: #3d3d39; }
.lsi-figures--inline .lsi-figures__list { grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); }

/* Étapes : filet noir, filet rouge qui se dessine. */
.lsi-steps > * { margin: 0; }
.lsi-steps { counter-reset: none; }
.lsi-step { position: relative; }
.lsi-step > * { margin: 0; }
.lsi-step::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: -2px;
  height: 2px;
  background-color: var(--accent);
  transform: scaleX(var(--lsi-step-p, 1));
  transform-origin: left;
  transition: transform 900ms var(--lsi-ease);
  transition-delay: calc(var(--lsi-i, 0) * 110ms);
}
.is-dark .lsi-step { border-top-color: var(--ink-subtle); }
.lsi-step__title { font-family: var(--font-display); }
.lsi-steps--8 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1023px) { .lsi-steps--8 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 559px) { .lsi-steps--8 { grid-template-columns: minmax(0, 1fr); } }

/* Cartes de service (groupes). */
.lsi-service > *, .lsi-service__body > * { margin: 0; }
.lsi-service__media.wp-block-image { margin: 0; border-radius: var(--radius-md) var(--radius-md) 0 0; }
.lsi-service__media.wp-block-image img { width: 100%; height: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.lsi-service__title a { color: inherit; text-decoration: none; }
.lsi-service__body::after, .lsi-service:not(.lsi-service--photo)::after {
  content: "";
  display: block;
  width: 24px;
  height: 24px;
  margin-top: auto;
  padding-top: var(--space-2);
  background-color: var(--ink);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M8 24H38M26 12L38 24L26 36' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") left bottom / 24px 24px no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M8 24H38M26 12L38 24L26 36' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") left bottom / 24px 24px no-repeat;
  transition: transform 150ms ease-out, background-color 150ms ease-out;
}
.lsi-service--photo::after { display: none; }
.lsi-service:hover .lsi-service__body::after, .lsi-service:not(.lsi-service--photo):hover::after { background-color: var(--accent); transform: translateX(4px); }
.lsi-service:hover .lsi-service__title { color: var(--accent-ink); }
.lsi-service__title { transition: color 150ms ease-out; }
.lsi-picto { display: inline-block; line-height: 0; }
.lsi-picto .lsi-icon { width: var(--icon-xl); height: var(--icon-xl); }
.lsi-service__picto.lsi-picto { display: block; }
.lsi-icon__accent { fill: var(--accent); }
.lsi-cta .lsi-icon__accent, .lsi-on-accent .lsi-icon__accent { fill: var(--on-accent); }

/* Portes d'entrée de l'accueil : grandes cartes photo. */
.lsi-door { position: relative; display: flex; flex-direction: column; min-height: 100%; overflow: hidden; border-radius: var(--radius-md); background-color: var(--brand-ink); color: #fff; isolation: isolate; }
.lsi-door > * { margin: 0; }
.lsi-door .lsi-door__media.wp-block-image { position: absolute; inset: 0; z-index: -2; }
.lsi-door .lsi-door__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 600ms var(--lsi-ease); }
.lsi-door::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(29, 29, 27, 0) 20%, rgba(29, 29, 27, .55) 55%, rgba(29, 29, 27, .92) 100%); transition: opacity 300ms ease-out; }
.lsi-door__body { margin-top: auto; padding: var(--space-6); display: grid; gap: var(--space-3); min-height: 440px; align-content: end; }
.lsi-door__body > * { margin: 0; }
.lsi-door .lsi-picto .lsi-icon { color: #fff; }
.lsi-door .lsi-door__title { font-family: var(--font-display); font-size: clamp(24px, 21px + 0.6vw, 30px); line-height: 1.15; }
.lsi-door .lsi-door__title a { color: #fff; text-decoration: none; }
.lsi-door .lsi-door__title a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.lsi-door .lsi-door__text { color: rgba(255, 255, 255, .86); font-size: 15px; line-height: 24px; max-width: 34ch; }
.lsi-door__body::after {
  content: "";
  width: 32px;
  height: 32px;
  margin-top: var(--space-2);
  background-color: #fff;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M8 24H38M26 12L38 24L26 36' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") left center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M8 24H38M26 12L38 24L26 36' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") left center / contain no-repeat;
  transition: transform 200ms ease-out;
}
.lsi-door:hover .lsi-door__media img { transform: scale(1.05); }
.lsi-door:hover .lsi-door__body::after { transform: translateX(6px); }
.lsi-door:focus-within { box-shadow: var(--focus-ring); }
.lsi-door::after {
  content: "";
  position: absolute;
  left: var(--space-6);
  top: 0;
  width: 0.5085em;
  height: 0.3842em;
  font-size: 64px;
  background-color: var(--accent);
  clip-path: polygon(0 100%, 56.39% 100%, 100% 0, 43.61% 0);
  transform: translateY(-100%);
  transition: transform 300ms var(--lsi-ease);
}
.lsi-door:hover::after { transform: translateY(0); }

/* Carte « Services pros » en bandeau. */
.lsi-door--wide { flex-direction: row; min-height: 0; background-color: var(--surface-alt); color: var(--ink); }
.lsi-door--wide::before { display: none; }

/* Preuves (trois faits propres à l'atelier). */
.lsi-proofs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-6) var(--gutter-lg); }
.lsi-proofs > * { margin: 0; }
.lsi-proof { display: grid; align-content: start; gap: var(--space-3); padding-top: var(--space-5); border-top: 2px solid var(--ink); }
.lsi-proof > * { margin: 0; }
.lsi-proof .lsi-picto .lsi-icon { width: 40px; height: 40px; }
.lsi-proof__title { font-family: var(--font-display); font-weight: 700; font-size: 19px; line-height: 26px; }
.lsi-proof__text { color: var(--ink-muted); font-size: 15px; line-height: 24px; }
.is-dark .lsi-proof { border-top-color: var(--ink-subtle); }
@media (max-width: 899px) { .lsi-proofs { grid-template-columns: minmax(0, 1fr); } }

/* Liens « À voir aussi ». */
.lsi-links { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: var(--space-4); }
.lsi-links > * { margin: 0; }
.lsi-link-card { position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--space-2) var(--space-4); align-items: start; padding: var(--space-5); border: 1px solid var(--line); border-radius: var(--radius-md); background-color: var(--surface-raised); transition: border-color 150ms ease-out, box-shadow 150ms ease-out; }
.lsi-link-card > * { margin: 0; }
.lsi-link-card .lsi-picto { grid-row: span 2; }
.lsi-link-card .lsi-picto .lsi-icon { width: 32px; height: 32px; }
.lsi-link-card__title { font-family: var(--font-display); font-weight: 700; font-size: 17px; line-height: 24px; }
.lsi-link-card__title a { color: inherit; text-decoration: none; }
.lsi-link-card__title a::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.lsi-link-card__text { font-size: 15px; line-height: 22px; color: var(--ink-muted); }
.lsi-link-card:hover { border-color: var(--ink); box-shadow: var(--shadow-md); }
.lsi-link-card:hover .lsi-link-card__title { color: var(--accent-ink); }
.lsi-link-card:focus-within { box-shadow: var(--focus-ring); }

/* Coordonnées. */
.lsi-coords__list { display: grid; gap: var(--space-4); padding: 0; margin: 0; list-style: none; font-size: 17px; line-height: 26px; }
.lsi-coords__list li { display: grid; grid-template-columns: 32px minmax(0, 1fr); gap: var(--space-3); align-items: start; }
.lsi-coords__list .lsi-icon { width: 32px; height: 32px; }
.lsi-coords__list a { color: var(--ink); font-weight: 600; text-decoration: none; }
.lsi-coords__list a:hover { text-decoration: underline; text-decoration-color: var(--accent); }
.lsi-coords__map { margin-top: var(--space-5); }

/* Bandeau devis (groupe ou thème). */
.lsi-cta { padding: 0; }
.lsi-cta__inner { padding-inline: var(--lsi-pad); }
.lsi-cta__inner > * { margin: 0; }
.lsi-cta__text > * { margin: 0; }
.lsi-cta__text > * + * { margin-top: var(--space-3); }
.lsi-cta h2 { color: var(--on-accent); max-width: 760px; }
.lsi-cta p { color: var(--on-accent); }
.lsi-cta__actions > * { margin: 0; }
.lsi-cta__actions p.lsi-cta__phone, p.lsi-cta__phone { display: inline-flex; align-items: center; gap: var(--space-2); font-family: var(--font-display); font-weight: 700; font-size: 21px; line-height: 28px; }
p.lsi-cta__phone::before {
  content: "";
  width: 24px;
  height: 24px;
  background-color: var(--on-accent);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M12 4H26A4 4 0 0 1 30 8V40A4 4 0 0 1 26 44H12A4 4 0 0 1 8 40V8A4 4 0 0 1 12 4ZM15 10H23M17 37H21' fill='none' stroke='%23000' stroke-width='4'/%3E%3Cpath d='M32 20H37.97L42.59 12H36.62Z'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M12 4H26A4 4 0 0 1 30 8V40A4 4 0 0 1 26 44H12A4 4 0 0 1 8 40V8A4 4 0 0 1 12 4ZM15 10H23M17 37H21' fill='none' stroke='%23000' stroke-width='4'/%3E%3Cpath d='M32 20H37.97L42.59 12H36.62Z'/%3E%3C/svg%3E") center / contain no-repeat;
}
p.lsi-cta__phone a { color: var(--on-accent); text-decoration: none; font-variant-numeric: lining-nums tabular-nums; }
p.lsi-cta__phone a:hover { text-decoration: underline; text-underline-offset: 5px; text-decoration-thickness: 2px; }
.lsi-cta::after {
  content: "";
  display: block;
  height: 56px;
  background-color: var(--accent-hover);
  -webkit-mask: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 171.43 170'%3E%3Cpath fill='%23fff' d='M47.45 113.9 80.82 56.1H123.98L90.61 113.9Z'/%3E%3C/svg%3E");
  background-size: auto 100%;
  background-repeat: repeat-x;
  background-position: var(--lsi-frise-x, 0) 50%;
}
@media (max-width: 767px) { .lsi-cta::after { height: 40px; } }

/* Familles du catalogue (cartes pictogramme). */
.lsi-family { gap: var(--space-3); }
.lsi-family__count { margin-top: auto !important; color: var(--ink-muted); font-variant-numeric: tabular-nums; }

/* Cartes de réalisation dans une grille. */
.lsi-references { display: grid; padding: 0; list-style: none; }
.lsi-references > li { margin: 0; }
.lsi-products { padding: 0; list-style: none; }
.lsi-products > li { margin: 0; }

/* ============================================================ 5. Signatures et décors */
/* Grand accent : un aplat à 60° qui sort du cadre (sections sombres). */
.lsi-grand-accent { overflow: hidden; isolation: isolate; }
.lsi-grand-accent::before {
  content: "";
  position: absolute;
  z-index: -1;
  right: -6%;
  top: 12%;
  width: min(46vw, 640px);
  aspect-ratio: 1.3235;
  background-color: var(--accent);
  opacity: .92;
  clip-path: polygon(0 100%, 56.39% 100%, 100% 0, 43.61% 0);
  transform: translate3d(0, var(--lsi-shift, 0px), 0);
  will-change: transform;
}
.lsi-grand-accent > * { position: relative; }
@media (max-width: 1023px) { .lsi-grand-accent::before { width: 70vw; top: auto; bottom: -10%; opacity: .5; } }

/* Trame discrète en fond de section. */
.lsi-trame-right { isolation: isolate; }
.lsi-trame-right::after {
  content: "";
  position: absolute;
  z-index: -1;
  top: 0;
  right: 0;
  bottom: 0;
  width: 42%;
  pointer-events: none;
  background-color: var(--line);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 48'%3E%3Cpath d='M8 18H13.97L18.59 10H12.62ZM40 42H45.97L50.59 34H44.62Z'/%3E%3C/svg%3E") 0 0 / 64px 48px repeat, linear-gradient(90deg, transparent, #000 60%);
  -webkit-mask-composite: source-in;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 48'%3E%3Cpath d='M8 18H13.97L18.59 10H12.62ZM40 42H45.97L50.59 34H44.62Z'/%3E%3C/svg%3E") 0 0 / 64px 48px repeat, linear-gradient(90deg, transparent, #000 60%);
  mask-composite: intersect;
}
.lsi-section--alt.lsi-trame-right::after { background-color: #e4e4df; }
.is-dark.lsi-trame-right::after { background-color: #2c2c29; }

/* ============================================================ 6. En-tête, panneaux, recherche */
.lsi-header { position: sticky; top: calc(-1 * var(--lsi-bar-h)); z-index: 40; transition: box-shadow 250ms ease-out; }
body.admin-bar .lsi-header { top: calc(32px - var(--lsi-bar-h)); }
@media (max-width: 782px) { body.admin-bar .lsi-header { top: calc(0px - var(--lsi-bar-h)); } }
.lsi-header.is-stuck { box-shadow: 0 1px 0 var(--line), 0 10px 30px rgba(29, 29, 27, .08); }
.lsi-header__inner { transition: min-height 250ms var(--lsi-ease); }
.lsi-header.is-stuck .lsi-header__inner { min-height: 68px; }
.lsi-header__logo { transition: width 250ms var(--lsi-ease); }
@media (min-width: 1240px) { .lsi-header.is-stuck .lsi-header__logo { width: 236px; } }
.lsi-header__bar { background-color: var(--surface); }
.lsi-header__utils { margin: 0; padding: 0; list-style: none; }
.lsi-header__utils button {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-height: 40px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--ink);
  font-weight: 600;
  cursor: pointer;
}
.lsi-header__utils button:hover span { text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: 3px; }
.lsi-header__utils .lsi-icon { width: var(--icon-sm); height: var(--icon-sm); }
.lsi-header__search-toggle { display: none; }
.lsi-header__cart .lsi-count[hidden] { display: none; }
.lsi-header__cart .lsi-icon, .lsi-header__toggle .lsi-icon, .lsi-header__search-toggle .lsi-icon { width: var(--icon-md); height: var(--icon-md); }

.lsi-nav__list { margin: 0; padding: 0; list-style: none; }
.lsi-nav__item { position: relative; display: flex; align-items: center; }
.lsi-nav__item--panel .lsi-nav__link { padding-right: var(--space-1); }
.lsi-nav__toggle {
  display: inline-grid;
  place-items: center;
  width: 28px;
  height: var(--target-min);
  margin-right: var(--space-1);
  padding: 0;
  border: 0;
  border-radius: var(--radius-sm);
  background: none;
  color: var(--ink-muted);
  cursor: pointer;
  transition: color 150ms ease-out, background-color 150ms ease-out;
}
.lsi-nav__toggle:hover { color: var(--ink); background-color: var(--surface-alt); }
.lsi-nav__toggle .lsi-icon { width: 18px; height: 18px; transition: transform 250ms ease-out; }
.lsi-nav__toggle[aria-expanded="true"] { color: var(--ink); }
.lsi-nav__toggle[aria-expanded="true"] .lsi-icon { transform: rotate(180deg); }
.lsi-nav__toggle:focus-visible { outline: 2px solid transparent; box-shadow: var(--focus-ring); }
.lsi-nav__item--panel:has(.lsi-nav__toggle[aria-expanded="true"]) .lsi-nav__link::after { transform: scaleX(1); }

/* Panneau d'une rubrique. */
.lsi-mega {
  position: fixed;
  left: 0;
  right: 0;
  top: var(--lsi-mega-top, 124px);
  z-index: 30;
  max-height: calc(100vh - var(--lsi-mega-top, 124px));
  overflow-y: auto;
  border-top: 1px solid var(--line);
  background-color: var(--surface);
  box-shadow: 0 24px 48px rgba(29, 29, 27, .12);
  animation: lsi-mega-in 260ms var(--lsi-ease);
}
.lsi-mega[hidden] { display: none; }
.lsi-mega__inner {
  display: grid;
  grid-template-columns: minmax(220px, 0.9fr) minmax(0, 2fr) minmax(220px, 0.9fr);
  gap: var(--space-7);
  padding-block: var(--space-7) var(--space-8);
}
.lsi-mega__inner--nomedia { grid-template-columns: minmax(220px, 0.9fr) minmax(0, 2.9fr); }
.lsi-mega__intro { display: grid; align-content: start; gap: var(--space-4); }
.lsi-mega__overline { color: var(--accent-ink); }
.lsi-mega__text { font-family: var(--font-display); font-weight: 700; font-size: 21px; line-height: 28px; }
.lsi-mega__list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2) var(--space-5); margin: 0; padding: 0; list-style: none; align-content: start; }
.lsi-mega__link {
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr);
  gap: var(--space-4);
  align-items: start;
  padding: var(--space-4);
  border-radius: var(--radius-md);
  color: var(--ink);
  text-decoration: none;
  transition: background-color 150ms ease-out;
}
.lsi-mega__link:hover, .lsi-mega__link[aria-current="page"] { background-color: var(--surface-alt); }
.lsi-mega__link:focus-visible { outline: 2px solid transparent; box-shadow: var(--focus-ring); }
.lsi-mega__picto .lsi-icon { width: 40px; height: 40px; }
.lsi-mega__body { display: grid; gap: 2px; }
.lsi-mega__label { font-weight: 600; font-size: 16px; line-height: 22px; }
.lsi-mega__link:hover .lsi-mega__label { color: var(--accent-ink); }
.lsi-mega__desc { color: var(--ink-muted); font-size: 14px; line-height: 20px; }
.lsi-mega__media { --lsi-cut: 120px; margin: 0; overflow: hidden; border-radius: 0; aspect-ratio: 4 / 5; max-height: 360px; background-color: var(--surface-alt); }
.lsi-mega__media img { width: 100%; height: 100%; object-fit: cover; }
.lsi-mega-scrim { position: fixed; inset: 0; z-index: 25; background-color: rgba(29, 29, 27, .28); animation: lsi-fade-in 200ms ease-out; }
.lsi-mega-scrim[hidden] { display: none; }

/* Tiroir mobile : sous-listes. */
.lsi-drawer__list { margin: 0; list-style: none; }
.lsi-drawer__row { display: flex; align-items: center; }
.lsi-drawer__row .lsi-drawer__link { flex: 1; }
.lsi-drawer__toggle { margin-right: var(--space-3); }
.lsi-drawer__toggle .lsi-icon { transition: transform 250ms ease-out; }
.lsi-drawer__toggle[aria-expanded="true"] .lsi-icon { transform: rotate(180deg); }
.lsi-drawer__sub { margin: 0 0 var(--space-3); padding: 0 0 0 var(--space-5); list-style: none; }
.lsi-drawer__sub[hidden] { display: none; }
.lsi-drawer__sublink { display: flex; align-items: center; gap: var(--space-3); min-height: 44px; padding: 0 var(--space-5) 0 var(--space-3); color: var(--ink); font-size: 16px; line-height: 22px; text-decoration: none; border-radius: var(--radius-sm); }
.lsi-drawer__sublink:hover, .lsi-drawer__sublink[aria-current="page"] { background-color: var(--accent-soft); }
.lsi-drawer__sublink .lsi-icon { width: 24px; height: 24px; flex: none; }
.lsi-drawer__panel { animation: lsi-drawer-in 280ms var(--lsi-ease); }

/* Recherche. */
.lsi-search { position: absolute; left: 0; right: 0; top: 100%; z-index: 35; background-color: var(--surface); border-top: 1px solid var(--line); box-shadow: 0 24px 48px rgba(29, 29, 27, .12); animation: lsi-mega-in 220ms var(--lsi-ease); }
.lsi-search[hidden] { display: none; }
.lsi-search__inner { padding-block: var(--space-5); }
.lsi-search__form { display: flex; align-items: center; gap: var(--space-4); }
.lsi-search__form > .lsi-icon { width: 28px; height: 28px; flex: none; }
.lsi-search__input { flex: 1; min-width: 0; min-height: 56px; padding: 0; border: 0; border-bottom: 2px solid var(--ink); background: transparent; font-family: var(--font-display); font-weight: 700; font-size: clamp(18px, 16px + 0.8vw, 26px); color: var(--ink); }
.lsi-search__input:focus { outline: none; border-bottom-color: var(--accent); }
.lsi-search__input::placeholder { color: var(--ink-subtle); font-weight: 400; }
@media (max-width: 767px) { .lsi-search__form .lsi-btn { display: none; } }

@container lsi-header (max-width: 1239px) {
  .lsi-header__search-toggle { display: inline-grid; }
}
@container lsi-header (max-width: 767px) {
  .lsi-header__utils li:not(:first-child) { display: none; }
  .lsi-header__tagline { display: none; }
}

/* ============================================================ 7. Pied de page */
.lsi-footer { position: relative; }
.lsi-footer__title a { color: inherit; text-decoration: none; }
.lsi-footer__title a:hover { color: var(--ink); text-decoration: underline; text-decoration-color: var(--accent); }
.lsi-footer__links { margin: 0; padding: 0; list-style: none; }
.lsi-footer__contact { margin: var(--space-6) 0 0; padding: 0; list-style: none; }
.lsi-footer__contact .lsi-icon { width: 24px; height: 24px; }
.lsi-footer .lsi-frise { --lsi-frise-h: 32px; }
.lsi-footer .lsi-logo { width: 276px; max-width: 100%; }

/* ============================================================ 8. Pages simples, recherche, 404 */
.lsi-page-head { position: relative; padding-block: var(--space-6) var(--space-7); background-color: var(--surface); }
.lsi-page-head .lsi-breadcrumb { margin-bottom: var(--space-7); }
.lsi-page-head__overline { margin-bottom: var(--space-4); }
.lsi-page-head__title { max-width: 960px; }
.lsi-page-head__lead { margin-top: var(--space-5); max-width: 760px; color: var(--ink-muted); }
.lsi-page-head__meta { margin-top: var(--space-4); }
.lsi-page__body { padding-bottom: var(--space-9); }
.lsi-prose--page { max-width: var(--content-max); }
.lsi-prose--page > * + * { margin-top: var(--space-5); }
.lsi-prose--page :is(h2, h3) { margin-top: var(--space-7); }
.lsi-prose--page :is(h2) { font-size: clamp(24px, 21px + 0.6vw, 30px); line-height: 1.25; }
.lsi-prose--page img { border-radius: var(--radius-md); }
.lsi-prose--page .wp-block-image { margin-top: var(--space-6); }
.lsi-results { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; max-width: 880px; border-top: 1px solid var(--line); }
.lsi-results__item { display: grid; gap: var(--space-2); padding-block: var(--space-5); border-bottom: 1px solid var(--line); }
.lsi-results__item > * { margin: 0; }
.lsi-realisation__media-wrap { margin-bottom: var(--space-7); }
.lsi-realisation__media { margin: 0; border-radius: 0; }
.lsi-realisation__media img { width: 100%; height: 100%; object-fit: cover; }
.lsi-404__section { min-height: 60vh; display: grid; align-content: center; gap: var(--space-5); }
.lsi-404__section > * { margin: 0; }
.lsi-404__links { display: flex; flex-wrap: wrap; gap: var(--space-4); margin: var(--space-4) 0 0; padding: 0; list-style: none; }
.lsi-404__search { display: grid; gap: var(--space-2); max-width: 640px; margin-top: var(--space-5); }
.lsi-404__search-row { display: flex; gap: var(--space-3); }
.lsi-searchform { display: flex; gap: var(--space-3); }
.navigation.pagination { margin-top: var(--space-7); }
.navigation.pagination .nav-links { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.navigation.pagination .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: var(--target-min); height: var(--target-min); padding: 0 var(--space-3); border: 1px solid var(--line); border-radius: var(--radius-sm); color: var(--ink); font-size: 15px; font-weight: 600; text-decoration: none; }
.navigation.pagination .page-numbers.current { background-color: var(--ink); border-color: var(--ink); color: var(--surface); }

/* ============================================================ 9. WooCommerce */
.lsi-catalogue__head { padding-bottom: var(--space-6); }
.lsi-chips { display: flex; flex-wrap: wrap; gap: var(--space-2); margin: var(--space-6) 0 0; padding: 0; list-style: none; }
.lsi-chip { display: inline-flex; align-items: center; gap: var(--space-2); min-height: 40px; padding: 0 var(--space-4); border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--ink); font-size: 15px; font-weight: 600; text-decoration: none; transition: border-color 150ms ease-out, background-color 150ms ease-out; }
.lsi-chip:hover { border-color: var(--ink); background-color: var(--surface-alt); }
.lsi-chip__count { color: var(--ink-muted); font-weight: 400; font-variant-numeric: tabular-nums; }
.lsi-service-callout { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: var(--space-5); align-items: center; padding: var(--space-6); border: 1px solid var(--line); border-radius: var(--radius-md); background-color: var(--surface); }
.lsi-service-callout > * { margin: 0; }
.lsi-service-callout .lsi-service__picto { width: 48px; height: 48px; }
.lsi-service-callout h3 { margin: 0 0 var(--space-1); }
@media (max-width: 767px) { .lsi-service-callout { grid-template-columns: minmax(0, 1fr); } }
.lsi-catalogue__list-title { margin-bottom: var(--space-5); }
.lsi-catalogue__toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-4); margin-bottom: var(--space-6); }
.lsi-catalogue__toolbar > * { margin: 0 !important; float: none !important; }
.lsi-catalogue__toolbar .woocommerce-result-count { color: var(--ink-muted); font-size: 15px; }
.lsi-catalogue__toolbar .woocommerce-ordering select,
.woocommerce form .form-row :is(input.input-text, textarea, select),
.woocommerce :is(input[type="text"], input[type="email"], input[type="tel"], input[type="password"], input[type="number"], select, textarea),
.lsi-wc :is(input[type="text"], input[type="email"], input[type="tel"], input[type="password"], input[type="number"], select, textarea) {
  min-height: var(--control-md);
  padding: 0 var(--space-4);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background-color: var(--surface-raised);
  color: var(--ink);
  font-family: var(--font-text);
  font-size: 17px;
  line-height: 24px;
}
.woocommerce textarea { min-height: 120px; padding: var(--space-3) var(--space-4); }
.woocommerce :is(input, select, textarea):focus { outline: 2px solid transparent; border-color: var(--ink); box-shadow: var(--focus-ring); }
.lsi-products.products { display: grid !important; margin: 0 !important; }
.lsi-products.products::before, .lsi-products.products::after { display: none !important; }
.lsi-products.products > li.product { width: auto !important; float: none !important; margin: 0 !important; padding: 0 !important; }
.lsi-product__media--empty .lsi-icon { color: var(--ink-subtle); }
.lsi-product__price .lsi-price { margin: 0; }
.lsi-product__price .lsi-price__main { font-size: 19px; line-height: 26px; }
.lsi-product__price del { color: var(--ink-muted); font-weight: 400; }
.lsi-product__name { margin: 0; font-family: var(--font-text); }
.lsi-product__ref { margin: 0; }
.lsi-product .added_to_cart { display: inline-block; margin-top: var(--space-2); font-size: 13px; font-weight: 600; color: var(--ink); position: relative; z-index: 2; }
.woocommerce-pagination { margin-top: var(--space-7); }
.woocommerce nav.woocommerce-pagination ul.page-numbers { display: flex; flex-wrap: wrap; gap: var(--space-2); border: 0; margin: 0; padding: 0; }
.woocommerce nav.woocommerce-pagination ul.page-numbers li { border: 0; float: none; }
.woocommerce nav.woocommerce-pagination ul.page-numbers li :is(a, span) {
  display: inline-flex; align-items: center; justify-content: center; min-width: var(--target-min); height: var(--target-min); padding: 0 var(--space-3);
  border: 1px solid var(--line); border-radius: var(--radius-sm); color: var(--ink); font-size: 15px; font-weight: 600; text-decoration: none; background: none;
}
.woocommerce nav.woocommerce-pagination ul.page-numbers li span.current { background-color: var(--ink); border-color: var(--ink); color: var(--surface); }
.woocommerce nav.woocommerce-pagination ul.page-numbers li a:hover { border-color: var(--ink); background: none; }

/* Boutons WooCommerce. */
.woocommerce :is(a.button, button.button, input.button, #respond input#submit),
.woocommerce :is(a.button.alt, button.button.alt, input.button.alt),
.lsi-wc :is(.button, button[type="submit"]) {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); min-height: var(--control-md); padding: 0 var(--space-5);
  border: 2px solid var(--ink); border-radius: var(--radius-sm); background-color: var(--ink); color: var(--surface);
  font-family: var(--font-text); font-size: 15px; line-height: 20px; font-weight: 600; text-decoration: none; cursor: pointer;
  transition: background-color 150ms ease-out, border-color 150ms ease-out, box-shadow 150ms ease-out;
}
.woocommerce :is(a.button, button.button, input.button):hover { background-color: var(--ink); color: var(--surface); box-shadow: inset 0 -4px 0 var(--accent); }
.woocommerce :is(a.button.alt, button.button.alt, input.button.alt, .single_add_to_cart_button, #place_order, .checkout-button) { background-color: var(--accent); border-color: var(--accent); color: var(--on-accent); }
.woocommerce :is(a.button.alt, button.button.alt, input.button.alt, .single_add_to_cart_button, #place_order, .checkout-button):hover { background-color: var(--accent-hover); border-color: var(--accent-hover); color: var(--on-accent); box-shadow: none; }
.woocommerce .single_add_to_cart_button { min-height: var(--control-lg); padding-inline: var(--space-6); font-size: 17px; }
.woocommerce :is(.button, button):disabled, .woocommerce .button.disabled { opacity: .5; cursor: not-allowed; }

/* Fiche produit. */
.lsi-pdp-wrap .lsi-breadcrumb { margin-bottom: var(--space-6); }
.lsi-pdp { margin-top: 0; }
.lsi-pdp > * { margin: 0; }
.lsi-pdp__summary > * { margin: 0; }
.lsi-pdp__summary .lsi-price--lg { margin-top: var(--space-2); }
.lsi-pdp__buy-wrap:empty { display: none; }
.lsi-pdp__buy-wrap form.cart { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--space-3); margin: 0; }
.lsi-pdp__buy-wrap .quantity .qty { width: 96px; text-align: center; }
.lsi-pdp__excerpt > * + * { margin-top: var(--space-3); }
.lsi-pdp__gallery .woocommerce-product-gallery { position: relative; width: 100% !important; float: none !important; margin: 0 !important; opacity: 1 !important; }
.lsi-pdp__gallery .woocommerce-product-gallery__wrapper { margin: 0; }
.lsi-pdp__gallery .woocommerce-product-gallery__image { overflow: hidden; border-radius: var(--radius-lg); background-color: var(--surface-alt); }
.lsi-pdp__gallery .woocommerce-product-gallery__image img { width: 100%; height: auto; aspect-ratio: 1 / 1; object-fit: contain; mix-blend-mode: multiply; }
.lsi-pdp__gallery .flex-control-thumbs { display: flex; flex-wrap: wrap; gap: var(--space-3); margin: var(--space-3) 0 0 !important; padding: 0; list-style: none; }
.lsi-pdp__gallery .flex-control-thumbs li { width: 88px !important; float: none !important; margin: 0 !important; }
.lsi-pdp__gallery .flex-control-thumbs img { width: 88px; height: 88px; object-fit: cover; border: 1px solid var(--line); border-radius: var(--radius-sm); background-color: var(--surface-alt); opacity: .7; cursor: pointer; }
.lsi-pdp__gallery .flex-control-thumbs img.flex-active, .lsi-pdp__gallery .flex-control-thumbs img:hover { opacity: 1; border-color: var(--ink); }
.lsi-pdp__gallery .woocommerce-product-gallery__trigger { position: absolute; top: var(--space-3); right: var(--space-3); z-index: 3; display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--radius-sm); background-color: var(--surface); text-indent: -9999px; overflow: hidden; box-shadow: var(--shadow-sm); }
.lsi-pdp__gallery .woocommerce-product-gallery__trigger::before { content: ""; width: 20px; height: 20px; background-color: var(--ink); text-indent: 0; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M20 34A14 14 0 1 0 20 6A14 14 0 1 0 20 34ZM30 30L42 42' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M20 34A14 14 0 1 0 20 6A14 14 0 1 0 20 34ZM30 30L42 42' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") center / contain no-repeat; }
.lsi-pdp__gallery .woocommerce-product-gallery__image--placeholder { aspect-ratio: 1 / 1; }
.lsi-pdp-tabs .lsi-tabs__panel .woocommerce-product-attributes { width: 100%; border-collapse: collapse; font-size: 15px; line-height: 24px; border: 0; }
.lsi-pdp-tabs .woocommerce-product-attributes :is(th, td) { padding: var(--space-3) var(--space-4); text-align: left; border: 0; font-style: normal; }
.lsi-pdp-tabs .woocommerce-product-attributes tr:nth-child(odd) { background-color: var(--surface-alt); }
.lsi-pdp-tabs .woocommerce-product-attributes th { width: 42%; font-weight: 600; }
.lsi-pdp-tabs .woocommerce-product-attributes td p { margin: 0; }
.lsi-pdp-tabs .lsi-tabs__panel .lsi-prose > * + * { margin-top: var(--space-4); }

/* Messages. */
.woocommerce-notices-wrapper:empty { display: none; }
.woocommerce :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) {
  position: relative; display: block; margin: 0 0 var(--space-6); padding: var(--space-4) var(--space-5) var(--space-4) calc(var(--space-5) + 32px);
  border: 0; border-radius: var(--radius-sm); background-color: var(--info-soft); color: var(--ink); font-size: 15px; line-height: 24px; list-style: none;
}
.woocommerce .woocommerce-message { background-color: var(--success-soft); }
.woocommerce .woocommerce-error { background-color: var(--danger-soft); color: var(--danger-ink); }
.woocommerce :is(.woocommerce-message, .woocommerce-info, .woocommerce-error)::before { position: absolute; left: var(--space-5); top: var(--space-4); color: inherit; }
.woocommerce :is(.woocommerce-message, .woocommerce-info) .button { float: right; min-height: 36px; margin-left: var(--space-4); }

/* Panier, commande, compte. */
.lsi-page__body--wc { padding-bottom: var(--space-9); }
.lsi-wc table.shop_table { width: 100%; border-collapse: collapse; border: 1px solid var(--line); border-radius: var(--radius-md); font-size: 15px; }
.lsi-wc table.shop_table :is(th, td) { padding: var(--space-3) var(--space-4); border-top: 1px solid var(--line); }
.lsi-wc table.shop_table thead th { background-color: var(--surface-alt); font-weight: 600; }
.lsi-wc .cart_totals h2, .lsi-wc #order_review_heading, .lsi-wc .woocommerce-billing-fields h3, .lsi-wc .woocommerce-additional-fields h3 { font-size: 24px; line-height: 30px; margin-bottom: var(--space-4); }
.lsi-wc .form-row label { display: block; margin-bottom: var(--space-2); font-size: 15px; font-weight: 600; }
.lsi-wc .woocommerce-MyAccount-navigation ul { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--line); }
.lsi-wc .woocommerce-MyAccount-navigation li a { display: block; padding: var(--space-3) 0; border-bottom: 1px solid var(--line); color: var(--ink); text-decoration: none; font-weight: 600; }
.lsi-wc .woocommerce-MyAccount-navigation li.is-active a { color: var(--accent-ink); }
.lsi-wc #payment { background: var(--surface-alt); border-radius: var(--radius-md); }

/* ============================================================ 10. Mouvement */
@keyframes lsi-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes lsi-mega-in { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }
@keyframes lsi-drawer-in { from { transform: translateX(32px); opacity: 0; } to { transform: none; opacity: 1; } }

/* Apparition au défilement : seulement si le script tourne et si le mouvement est accepté. */
@media (prefers-reduced-motion: no-preference) {
  .lsi-motion [data-lsi-reveal] { opacity: 0; transform: translate3d(0, 28px, 0); transition: opacity 700ms var(--lsi-ease), transform 700ms var(--lsi-ease); transition-delay: calc(var(--lsi-i, 0) * 90ms); }
  .lsi-motion [data-lsi-reveal].is-in { opacity: 1; transform: none; }
  .lsi-motion [data-lsi-reveal="fade"] { transform: none; }
  .lsi-motion .lsi-step::before { --lsi-step-p: 0; }
  .lsi-motion .lsi-steps.is-in .lsi-step::before { --lsi-step-p: 1; }
  .lsi-motion .lsi-figures__item::before { transform: scaleY(0); transform-origin: bottom; transition: transform 600ms var(--lsi-ease); transition-delay: calc(var(--lsi-i, 0) * 120ms + 200ms); }
  .lsi-motion .lsi-figures.is-in .lsi-figures__item::before { transform: none; }
  .lsi-motion .lsi-hero--home .lsi-hero__content::after { --lsi-needle: 0%; }
  .lsi-motion .lsi-hero.is-in.lsi-hero--home .lsi-hero__content::after { --lsi-needle: 72%; }
  .lsi-motion .lsi-hero__title.lsi-accent::before { transform: translateY(-40%) scaleY(0); transition: transform 700ms var(--lsi-ease) 350ms; transform-origin: bottom; }
  .lsi-motion .lsi-hero.is-in .lsi-hero__title.lsi-accent::before { transform: none; }

  /* Héros : un aplat rouge à 60° balaie la photo et la découvre. */
  .lsi-motion .lsi-hero__media::after {
    content: "";
    position: absolute;
    inset: -2% -40% -2% -40%;
    z-index: 3;
    background-color: var(--accent);
    clip-path: polygon(0 100%, 78% 100%, 100% 0, 22% 0);
    transform: translateX(0);
    transition: transform 1100ms cubic-bezier(.77, 0, .18, 1) 120ms;
    pointer-events: none;
  }
  .lsi-motion .lsi-hero.is-in .lsi-hero__media::after { transform: translateX(82%); }
  .lsi-motion .lsi-hero__media img { transition: transform 1600ms var(--lsi-ease) 200ms; }
  .lsi-motion .lsi-hero:not(.is-in) .lsi-hero__media img { transform: scale(1.14); }

  .lsi-motion .lsi-cta::after { transition: background-position 0s; }
}
@media (prefers-reduced-motion: reduce) {
  .lsi-hero__media img, .wp-block-image.lsi-band img, .lsi-grand-accent::before { transform: none !important; }
}

/* ============================================================ 11. Impression */
@media print {
  .lsi-header, .lsi-footer, .lsi-cta, .lsi-skip, .lsi-mega, .lsi-drawer { display: none !important; }
  .lsi-section { padding: 16px 0 !important; }
  .lsi-hero__media { display: none; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 11px; }
}

/* ============================================================ 12. Compléments de contenu */
/* Cadres d'image positionnés (anciennes mentions IA retirées le 28 octobre 2026). */
.lsi-reference__media, .lsi-mega__media, .lsi-realisation__media { position: relative; }

/* Bouton téléphone : « Appeler l'atelier » sur mobile, le numéro sur ordinateur. */
.lsi-tel-m { display: none; }
@media (max-width: 767px) { .lsi-tel-m { display: inline; } .lsi-tel-d { display: none; } }

/* Cadrage des photos. */
.wp-block-image img { object-position: var(--lsi-focus, 50% 50%); }
.lsi-focus-top { --lsi-focus: 50% 22%; }
.lsi-focus-bottom { --lsi-focus: 50% 78%; }
.lsi-focus-left { --lsi-focus: 28% 50%; }
.lsi-focus-right { --lsi-focus: 72% 50%; }
.lsi-focus-far-right { --lsi-focus: 85% 50%; }

/* Porte « Services pros » en bandeau : photo à gauche, texte à droite. */
.lsi-door.lsi-door--wide { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); min-height: 0; margin-top: var(--gutter-lg); }
.lsi-door--wide .lsi-door__media.wp-block-image { position: relative; inset: auto; z-index: auto; height: 100%; min-height: 280px; }
.lsi-door--wide .lsi-door__body { min-height: 0; align-content: center; padding: var(--space-7); }
.lsi-door--wide .lsi-door__title a { color: var(--ink); }
.lsi-door--wide .lsi-door__text { color: var(--ink-muted); max-width: 52ch; }
.lsi-door--wide .lsi-picto .lsi-icon { color: var(--ink); }
.lsi-door--wide .lsi-door__body::after { background-color: var(--ink); }
.lsi-door--wide:hover .lsi-door__body::after { background-color: var(--accent); }
@media (max-width: 767px) {
  .lsi-door.lsi-door--wide { grid-template-columns: minmax(0, 1fr); }
  .lsi-door--wide .lsi-door__media.wp-block-image { min-height: 220px; }
  .lsi-door--wide .lsi-door__body { padding: var(--space-6); }
}

/* Texte et image côte à côte : l'image garde son cadrage 3:2. */
.wp-block-columns.lsi-duo > .wp-block-column > .wp-block-image img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.wp-block-columns.lsi-duo > .wp-block-column > .wp-block-image.lsi-media--tall img { aspect-ratio: 4 / 5; }

/* Pied de section : note, liens. */
.lsi-note { font-size: 15px; line-height: 24px; color: var(--ink-muted); }
.lsi-section > .lsi-maj { margin-top: var(--space-5); }

/* Héros : la coupe à 60° prend toute la hauteur de la photo (design system), même avec la classe lsi-cut du bloc Image. */
.lsi-hero__media.wp-block-image.lsi-cut { --lsi-cut: var(--lsi-hero-h); }
@container lsi-hero (max-width: 1023px) { .lsi-hero__media.wp-block-image.lsi-cut { --lsi-cut: 120px; } }
@container lsi-hero (max-width: 767px) { .lsi-hero__media.wp-block-image.lsi-cut { --lsi-cut: 80px; } }

/* Surtitre puis titre : l'écart court l'emporte sur l'écart avant un titre. */
.lsi-section > .overline + :is(h2, .h2, h3, .h3) { margin-top: var(--space-3); }

/* Listes numérotées : numéros de l'atelier (01, 02…), en rouge. */
:where(.lsi-section, .lsi-prose, .wp-block-column, .wp-block-group) > ol.wp-block-list:not(.lsi-list) { list-style: none; padding-left: 0; counter-reset: lsi-ol; }
:where(.lsi-section, .lsi-prose, .wp-block-column, .wp-block-group) > ol.wp-block-list:not(.lsi-list) > li { position: relative; padding-left: 2.6em; counter-increment: lsi-ol; }
:where(.lsi-section, .lsi-prose, .wp-block-column, .wp-block-group) > ol.wp-block-list:not(.lsi-list) > li::before {
  content: counter(lsi-ol, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: 0;
  font-family: var(--font-display);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  letter-spacing: .06em;
  color: var(--accent-ink);
}

/* Formulaire de devis (Contact Form 7, champs du design system). */
.wpcf7 { max-width: 760px; }
.wpcf7 .lsi-form { gap: var(--space-5); }
.wpcf7 .lsi-form > * { margin: 0; }
.wpcf7 .lsi-field { margin: 0; }
.wpcf7 .lsi-field .wpcf7-form-control-wrap { display: block; }
.wpcf7 .lsi-textarea { min-height: 128px; resize: vertical; }
.wpcf7 input[type="file"].lsi-input { padding-block: var(--space-3); min-height: 0; height: auto; }
.wpcf7 .wpcf7-not-valid-tip { display: block; margin-top: var(--space-2); font-size: 15px; line-height: 24px; font-weight: 600; color: var(--accent-ink); }
.wpcf7 form .wpcf7-response-output { margin: var(--space-5) 0 0; padding: var(--space-4) var(--space-5); border: 0; border-left: 3px solid var(--ink); background-color: var(--surface-alt); font-size: 15px; line-height: 24px; }
.wpcf7 form:is(.invalid, .unaccepted, .failed, .spam, .aborted) .wpcf7-response-output { border-left-color: var(--accent); }
.wpcf7 form.sent .wpcf7-response-output { border-left-color: var(--ink); }
.wpcf7 .wpcf7-spinner { margin: 0 0 0 var(--space-3); }
.wpcf7 .lsi-form__actions input[type="submit"] { cursor: pointer; }
.lsi-section--alt .wpcf7 :is(.lsi-input, .lsi-select, .lsi-textarea) { background-color: var(--surface-raised); }

/* Héros : la photo remplit toute la hauteur du cadre. */
.lsi-hero__media.wp-block-image img { height: 100%; }

/* Bande photo : l'image déborde de 12 % en haut et en bas pour le parallaxe (un pourcentage de marge se calcule sur la largeur, pas sur la hauteur). */
.wp-block-image.lsi-band img { position: absolute; left: 0; top: -12%; width: 100%; height: 124%; margin: 0; }

/* Petits écrans : en-tête et titres de héros tiennent dans 360 px. */
@container lsi-header (max-width: 419px) {
  .lsi-header__inner { gap: var(--space-3); }
  .lsi-header__logo { width: 176px; }
  .lsi-header__actions { gap: 0; }
  .lsi-header__actions .lsi-iconbtn { width: 44px; height: 44px; }
}
@container lsi-hero (max-width: 479px) {
  .lsi-hero .display-xl { font-size: 34px; line-height: 38px; }
  .lsi-hero .display { font-size: 31px; line-height: 36px; }
}

/* ============================================================ 13. Échelle resserrée et respiration (retours du 28 octobre 2026)
   Titres et composants ramenés vers le bas des plages de la charte, plus d'air autour des blocs, aucun texte coupé. */

/* Titres de héros : 54 px au plus pour l'accueil, 44 px pour les pages. */
.lsi-hero .display-xl { font-size: clamp(34px, 26px + 2cqi, 54px); line-height: 1.08; letter-spacing: -0.012em; }
.lsi-hero .display { font-size: clamp(30px, 23px + 1.55cqi, 44px); line-height: 1.12; letter-spacing: -0.008em; }
.lsi-hero .lead, .lsi-hero__lead { font-size: clamp(16px, 15.4px + 0.18cqi, 18px); line-height: 1.6; }
.lsi-hero__signature { font-size: clamp(17px, 16px + 0.25vw, 20px); margin-top: var(--space-4) !important; }

/* Titres de section et intertitres. */
:where(.lsi-main) h1, .lsi-prose h1, .h1 { font-size: clamp(30px, 26px + 0.9vw, 40px); line-height: 1.15; }
:where(.lsi-main) h2, .lsi-prose h2, .h2 { font-size: clamp(24px, 21.4px + 0.62vw, 30px); line-height: 1.25; }
:where(.lsi-main) h3, .lsi-prose h3, .h3 { font-size: clamp(19px, 18px + 0.25vw, 22px); line-height: 1.3; }
:where(.lsi-main) h4, .lsi-prose h4, .h4 { font-size: clamp(17px, 16.6px + 0.1vw, 18px); line-height: 1.35; }
.lead { font-size: clamp(17px, 16.4px + 0.16vw, 19px); line-height: 1.6; }
:where(h1, h2, h3, h4, .display, .display-xl) { overflow-wrap: break-word; }

/* Lignes de lecture un peu plus courtes, titres moins étirés. */
.lsi-section > :is(p, ul, ol, blockquote, .wp-block-list, .wp-block-quote):not(.lsi-grid):not(.lsi-references):not(.lsi-products) { max-width: 680px; }
.lsi-section > .lead { max-width: 680px; }
.lsi-section > :is(h2, .h2) { max-width: 760px; }
.lsi-section > :is(h2, .h2) + .lead { margin-top: var(--space-3); }

/* En-tête : plus compact sur ordinateur. */
:root { --header-height: 76px; }
@container lsi-header (min-width: 768px) { .lsi-header__logo { width: 236px; } }
@media (min-width: 1240px) { .lsi-header.is-stuck .lsi-header__logo { width: 208px; } }
.lsi-header.is-stuck .lsi-header__inner { min-height: 64px; }
.lsi-mega-scrim { background-color: rgba(29, 29, 27, .18); }

/* Boutons : la classe de taille agit sur le lien, plus sur son enveloppe (elle décalait les boutons de 32 px). */
.wp-block-button.lsi-btn--lg { min-height: 0; padding: 0; font-size: inherit; line-height: inherit; }
.wp-block-button.lsi-btn--lg .wp-block-button__link { min-height: 52px; padding-inline: var(--space-5); font-size: 16px; line-height: 22px; }
.wp-block-button.is-style-text.lsi-btn--lg .wp-block-button__link { padding-inline: 0; }

/* Héros : moins haut, textes resserrés. */
.lsi-hero__grid { --lsi-hero-h: 560px; }
.lsi-hero--page .lsi-hero__grid { --lsi-hero-h: 440px; }
.lsi-hero__content { padding: var(--space-7) var(--space-7) var(--space-7) 0; }
.lsi-hero__content > .lsi-hero__breadcrumb { margin-bottom: var(--space-5); }
.lsi-hero__content > .lsi-hero__title { margin-top: var(--space-3); }
.lsi-hero__content > .lsi-hero__lead { margin-top: var(--space-5); max-width: 540px; }
.lsi-hero__content > .lsi-hero__actions { margin-top: var(--space-6); }
.lsi-hero--home .lsi-hero__content::after { margin-top: var(--space-6); width: min(100%, 320px); }
@container lsi-hero (max-width: 1023px) { .lsi-hero__content { padding: var(--space-6) 0; } }

/* Héros : la photo se découvre par sa coupe, sans voile ni aplat superposés
   (une zone grise apparaissait hors de la coupe sur certains navigateurs). */
.lsi-hero__media { background-color: transparent; }
.lsi-hero__media::before { content: none; display: none; }
.lsi-hero__media img, .lsi-hero__media.wp-block-image img { transform: none !important; will-change: auto; }
.lsi-hero__media.lsi-cut { -webkit-clip-path: polygon(calc(var(--lsi-cut) * 0.57735) 0, 100% 0, 100% 100%, 0 100%, 0 var(--lsi-cut)); }
@media (prefers-reduced-motion: no-preference) {
  .lsi-motion .lsi-hero__media::after { content: none; display: none; }
  .lsi-motion .lsi-hero__media img { transition: none; }
  .lsi-motion .lsi-hero__media { transition: clip-path 1100ms cubic-bezier(.77, 0, .18, 1) 100ms, -webkit-clip-path 1100ms cubic-bezier(.77, 0, .18, 1) 100ms; }
  .lsi-motion .lsi-hero:not(.is-in) .lsi-hero__media {
    -webkit-clip-path: polygon(calc(100% + var(--lsi-cut) * 0.57735) 0, calc(100% + var(--lsi-cut) * 0.57735) 0, calc(100% + var(--lsi-cut) * 0.57735) 100%, 100% 100%, 100% var(--lsi-cut));
    clip-path: polygon(calc(100% + var(--lsi-cut) * 0.57735) 0, calc(100% + var(--lsi-cut) * 0.57735) 0, calc(100% + var(--lsi-cut) * 0.57735) 100%, 100% 100%, 100% var(--lsi-cut));
  }
}

/* Portes d'entrée de l'accueil : cartes moins hautes, titres plus petits. */
.lsi-door__body { min-height: 340px; padding: var(--space-5); gap: var(--space-2); }
.lsi-door .lsi-door__title { font-size: clamp(20px, 18.6px + 0.3vw, 23px); line-height: 1.2; }
.lsi-door .lsi-door__text { font-size: 15px; line-height: 22px; max-width: 36ch; }
.lsi-door .lsi-picto .lsi-icon { width: 36px; height: 36px; }
.lsi-door__body::after { width: 24px; height: 24px; }
.lsi-door::after { font-size: 48px; left: var(--space-5); }
.lsi-door--wide .lsi-door__media.wp-block-image { min-height: 240px; }
@media (min-width: 768px) { .lsi-door--wide .lsi-door__body { padding: var(--space-6) var(--space-7); } }

/* Chiffres clés : la valeur tient dans sa colonne. */
.lsi-figures__value.figure { font-size: clamp(28px, 25px + 0.75vw, 38px); line-height: 1.1; }
.lsi-figures__value { min-height: 40px; }
.lsi-figures__list { gap: var(--space-6); }

/* Étapes, preuves, cartes. */
.lsi-step { gap: var(--space-2); padding-top: var(--space-4); }
.lsi-steps { gap: var(--space-6) var(--gutter-lg); }
.lsi-proof__title { font-size: 17px; line-height: 24px; }
.lsi-service:not(.lsi-service--photo) { padding: var(--space-5); gap: var(--space-3); }
.lsi-service:not(.lsi-service--photo) .lsi-service__picto { width: 40px; height: 40px; }
.lsi-picto .lsi-icon { width: 40px; height: 40px; }
.lsi-product__name { font-size: 16px; line-height: 22px; overflow-wrap: anywhere; hyphens: auto; }
.lsi-price__main { font-size: 19px; line-height: 26px; }

/* Photos : moins massives, image plus étroite que le texte dans les duos. */
.wp-block-image.lsi-band { height: clamp(220px, 30vw, 440px); }
.wp-block-columns.lsi-duo { gap: var(--space-6) var(--space-8); }
@media (min-width: 900px) {
  .wp-block-columns.lsi-duo > .wp-block-column:has(> .wp-block-image) { flex: 0 1 44%; }
}

/* FAQ. */
.lsi-accordion :is(.wp-block-details, .lsi-accordion__item) > summary { padding: var(--space-4) 0; font-size: clamp(16px, 15.6px + 0.12vw, 17px); line-height: 1.4; }

/* Bandeau devis. */
.lsi-cta__inner { padding-block: var(--space-7); }
.lsi-cta h2, .lsi-cta .h2 { font-size: clamp(22px, 20px + 0.5vw, 28px); line-height: 1.25; }
.lsi-cta__actions p.lsi-cta__phone, p.lsi-cta__phone { font-size: 19px; line-height: 26px; }
.lsi-cta::after { height: 44px; }

/* Panneaux du menu. */
.lsi-mega__inner { gap: var(--space-6); padding-block: var(--space-6) var(--space-7); }
.lsi-mega__text { font-size: 17px; line-height: 25px; }
.lsi-mega__link { padding: var(--space-3) var(--space-4); gap: var(--space-3); grid-template-columns: 32px minmax(0, 1fr); }
.lsi-mega__picto .lsi-icon { width: 32px; height: 32px; }
.lsi-mega__label { font-size: 15px; line-height: 21px; }
.lsi-mega__media { max-height: 300px; }

/* Pied de page. */
.lsi-footer .lsi-logo { width: 232px; }
.lsi-footer__claim { font-size: 18px; line-height: 25px; }

/* Pages simples (réalisations, mentions). */
.lsi-page-head { padding-block: var(--space-6); }
.lsi-page-head .lsi-breadcrumb { margin-bottom: var(--space-6); }

/* Barre d'informations : rien ne passe à la ligne ; la mention d'adresse se retire quand la place manque. */
.lsi-header__utils a, .lsi-header__utils button { white-space: nowrap; }
@container lsi-header (max-width: 1199px) {
  .lsi-header__tagline { display: none; }
  .lsi-header__bar-inner { justify-content: flex-end; }
}

/* Héros : jusqu'à 1199 px de large, le texte prend toute la largeur et la photo passe dessous
   (entre 1024 et 1199 px, la colonne de texte était trop étroite pour le titre). */
@container lsi-hero (max-width: 1199px) {
  .lsi-hero .lsi-accent { padding-left: 0.797em; }
  .lsi-hero .lsi-accent::before { right: auto; left: 0; }
  .lsi-hero__grid { grid-template-columns: [full-start] var(--lsi-edge) [content-start] minmax(0, 1fr) [content-end] var(--lsi-edge) [full-end]; min-height: 0; }
  .lsi-hero__content { grid-column: content-start / content-end; padding: var(--space-6) 0 var(--space-7); }
  .lsi-hero__title { max-width: 780px; }
  .lsi-hero__content > .lsi-hero__lead { max-width: 640px; }
  .lsi-hero__media { grid-column: full-start / full-end; grid-row: 2; height: auto; aspect-ratio: 21 / 9; }
  .lsi-hero__media.wp-block-image.lsi-cut { --lsi-cut: 120px; }
  .lsi-hero--home .lsi-hero__content::after { display: none; }
}
@container lsi-hero (max-width: 767px) {
  .lsi-hero__content { padding: var(--space-6) 0; }
  .lsi-hero__media { aspect-ratio: 4 / 3; }
  .lsi-hero__media.wp-block-image.lsi-cut { --lsi-cut: 80px; }
}

/* ============================================================ 14. Composants affinés (références Untitled UI et DSFR, 28 octobre 2026)
   Pictogramme encadré, cartes d'entrée, preuves, cartes de lien, familles, en-têtes de section, tableaux,
   encadré « La règle », FAQ en deux colonnes, réalisations, moyens de contact, formulaire. */

/* En-tête de section : le chapô passe en ink-muted, le titre garde le premier plan. */
.lsi-section > .lead { color: var(--ink-muted); }

/* Pictogramme encadré : carré de 48 px, filet line, fond surface-raised, pictogramme de 28 px. */
.lsi-ficon,
.lsi-proof .lsi-picto,
.lsi-link-card .lsi-picto,
.lsi-door .lsi-picto,
.lsi-service.lsi-family .lsi-service__picto,
.lsi-service-callout .lsi-service__picto {
  display: inline-grid;
  place-items: center;
  flex: none;
  width: 48px;
  height: 48px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background-color: var(--surface-raised);
  color: var(--ink);
  line-height: 0;
}
.lsi-ficon .lsi-icon,
.lsi-proof .lsi-picto .lsi-icon,
.lsi-link-card .lsi-picto .lsi-icon,
.lsi-door .lsi-picto .lsi-icon,
.lsi-service.lsi-family .lsi-service__picto .lsi-icon,
.lsi-service-callout .lsi-service__picto .lsi-icon { width: 28px; height: 28px; color: var(--ink); }
.lsi-ficon--sm { width: 40px; height: 40px; }
.lsi-ficon.lsi-ficon--sm .lsi-icon { width: 24px; height: 24px; }

/* Cartes d'entrée de l'accueil : la photo en haut, le texte dessous (plus de texte posé sur une photo chargée). */
.lsi-door {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background-color: var(--surface-raised);
  color: var(--ink);
  transition: border-color 150ms ease-out, box-shadow 150ms ease-out;
}
.lsi-door::before, .lsi-door::after { content: none; display: none; }
.lsi-door .lsi-door__media.wp-block-image { position: relative; inset: auto; z-index: auto; flex: none; aspect-ratio: 16 / 10; overflow: hidden; background-color: var(--surface-alt); }
.lsi-door .lsi-door__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 250ms ease-out; }
.lsi-door__body { flex: 1; display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-2); min-height: 0; margin-top: 0; padding: 0 var(--space-5) var(--space-5); }
.lsi-door .lsi-picto { position: relative; z-index: 1; width: 56px; height: 56px; margin-top: -28px; margin-bottom: var(--space-3); }
.lsi-door .lsi-picto .lsi-icon { width: 32px; height: 32px; }
.lsi-door .lsi-door__title { font-size: clamp(19px, 18px + 0.25vw, 22px); line-height: 1.25; color: var(--ink); transition: color 150ms ease-out; }
.lsi-door .lsi-door__title a { color: inherit; }
.lsi-door .lsi-door__text { max-width: none; margin-bottom: var(--space-3); color: var(--ink-muted); font-size: 15px; line-height: 24px; }
.lsi-door__body::after { width: 24px; height: 24px; margin-top: auto; background-color: var(--ink); transition: transform 150ms ease-out, background-color 150ms ease-out; }
.lsi-door:hover { border-color: var(--ink); box-shadow: var(--shadow-md); }
.lsi-door:hover .lsi-door__media img { transform: scale(1.03); }
.lsi-door:hover .lsi-door__title { color: var(--accent-ink); }
.lsi-door:hover .lsi-door__body::after { background-color: var(--accent); transform: translateX(4px); }
.lsi-door:focus-within { box-shadow: var(--focus-ring); }

/* Carte « Services pros » en bandeau : photo à gauche, texte à droite, même carte blanche. */
.lsi-door.lsi-door--wide { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); background-color: var(--surface-raised); }
.lsi-door--wide .lsi-door__media.wp-block-image { aspect-ratio: auto; height: 100%; min-height: 260px; }
.lsi-door--wide .lsi-door__body { justify-content: center; padding: var(--space-6) var(--space-7); }
.lsi-door--wide .lsi-picto { width: 48px; height: 48px; margin-top: 0; }
.lsi-door--wide .lsi-picto .lsi-icon { width: 28px; height: 28px; }
.lsi-door--wide .lsi-door__text { max-width: 56ch; }
.lsi-door--wide .lsi-door__body::after { margin-top: var(--space-2); }
@media (min-width: 600px) and (max-width: 1023px) {
  .lsi-grid--doors .lsi-door { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); }
  .lsi-grid--doors .lsi-door .lsi-door__media.wp-block-image { aspect-ratio: auto; height: 100%; min-height: 220px; }
  .lsi-grid--doors .lsi-door .lsi-picto { width: 48px; height: 48px; margin-top: 0; }
  .lsi-grid--doors .lsi-door .lsi-picto .lsi-icon { width: 28px; height: 28px; }
  .lsi-grid--doors .lsi-door__body { padding: var(--space-5); }
}
@media (max-width: 767px) {
  .lsi-door.lsi-door--wide { grid-template-columns: minmax(0, 1fr); }
  .lsi-door--wide .lsi-door__media.wp-block-image { height: auto; min-height: 0; aspect-ratio: 16 / 10; }
  .lsi-door--wide .lsi-door__body { padding: 0 var(--space-5) var(--space-5); }
  .lsi-door--wide .lsi-picto { width: 56px; height: 56px; margin-top: -28px; }
}

/* Preuves : pictogramme encadré, plus de filet noir. */
.lsi-proofs { gap: var(--space-7) var(--gutter-lg); }
.lsi-proof { gap: var(--space-2); padding-top: 0; border-top: 0; }
.lsi-proof .lsi-picto { margin-bottom: var(--space-3); }
.lsi-proof__title { font-size: 18px; line-height: 26px; }

/* Cartes « À voir aussi » : pictogramme, titre, texte, flèche en pied. */
.lsi-links { gap: var(--space-5); }
.lsi-link-card { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-2); padding: var(--space-5); }
.lsi-link-card .lsi-picto { grid-row: auto; margin-bottom: var(--space-3); }
.lsi-link-card__text { margin-bottom: var(--space-4); }
.lsi-link-card::after {
  content: "";
  flex: none;
  width: 20px;
  height: 20px;
  margin-top: auto;
  background-color: var(--ink);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M7 24H38M27 13L38 24L27 35' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M7 24H38M27 13L38 24L27 35' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") center / contain no-repeat;
  transition: transform 150ms ease-out, background-color 150ms ease-out;
}
.lsi-link-card:hover::after { background-color: var(--accent); transform: translateX(4px); }

/* Familles du catalogue : pictogramme encadré, nombre de références en badge, flèche en pied. */
.lsi-service.lsi-family { gap: var(--space-3); padding: var(--space-5); }
.lsi-service.lsi-family .lsi-service__picto { margin-bottom: var(--space-2); }
.lsi-family .lsi-family__count {
  display: inline-flex;
  align-self: flex-start;
  align-items: center;
  min-height: 24px;
  padding: 2px var(--space-2);
  border-radius: var(--radius-xs);
  background-color: var(--surface-alt);
  color: var(--ink);
  font-size: 13px;
  line-height: 18px;
  font-weight: 600;
}
.lsi-service.lsi-family::after { position: absolute; right: var(--space-5); bottom: calc(var(--space-5) + 2px); width: 20px; height: 20px; margin: 0; padding: 0; -webkit-mask-size: 20px 20px; mask-size: 20px 20px; }

/* Tableaux (DSFR et Untitled UI) : cadre arrondi, en-tête gris clair en petits caractères, filets fins, sans zébrage. */
.wp-block-table { border: 1px solid var(--line); border-radius: var(--radius-md); background-color: var(--surface-raised); }
.wp-block-table table { font-size: 15px; line-height: 22px; }
.wp-block-table :is(th, td) { padding: var(--space-4) var(--space-5); }
.wp-block-table thead { border-bottom: 1px solid var(--line); background-color: var(--surface-alt); }
.wp-block-table thead th { padding-block: var(--space-3); font-size: 13px; line-height: 18px; font-weight: 600; color: var(--ink-muted); }
.wp-block-table tbody tr { border-bottom: 1px solid var(--line); }
.wp-block-table tbody tr:last-child { border-bottom: 0; }
.wp-block-table tbody tr:nth-child(odd), .lsi-section--alt .wp-block-table tbody tr:nth-child(odd) { background-color: transparent; }
.wp-block-table figcaption { margin: 0; padding: var(--space-3) var(--space-5); border-top: 1px solid var(--line); }
@media (max-width: 599px) {
  .wp-block-table table { font-size: 14px; line-height: 20px; }
  .wp-block-table :is(th, td) { padding: var(--space-3); }
  .wp-block-table thead th { padding-block: var(--space-2); }
  .wp-block-table figcaption { padding: var(--space-3); }
}

/* Encadré « La règle » (DSFR, mise en avant) : pictogramme du texte de référence, libellé, texte, date de mise à jour.
   Plus de bordure gauche rouge : le rouge reste aux signatures. */
.wp-block-group.is-style-regle, .lsi-rule {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr);
  column-gap: var(--space-5);
  align-items: start;
  max-width: 880px;
  padding: var(--space-6);
  border: 1px solid transparent;
  border-radius: var(--radius-md);
  background-color: var(--surface-alt);
}
.lsi-section--alt :is(.wp-block-group.is-style-regle, .lsi-rule) { border-color: var(--line); background-color: var(--surface-raised); }
:is(.wp-block-group.is-style-regle, .lsi-rule) > * { grid-column: 2; }
:is(.wp-block-group.is-style-regle, .lsi-rule) > .lsi-rule__icon { grid-column: 1; grid-row: 1 / span 2; margin: 0; }
:is(.wp-block-group.is-style-regle, .lsi-rule) > .overline { grid-row: 1; margin: 0; padding-top: 2px; color: var(--ink); }
:is(.wp-block-group.is-style-regle, .lsi-rule) > .overline + * { margin-top: var(--space-3); }
:is(.wp-block-group.is-style-regle, .lsi-rule) > p:not(.overline):not(.lsi-maj) { font-size: 16px; line-height: 26px; }
:is(.wp-block-group.is-style-regle, .lsi-rule) > .lsi-maj { margin-top: var(--space-5); padding-top: var(--space-4); border-top: 1px solid var(--line); }
@media (max-width: 599px) {
  .wp-block-group.is-style-regle, .lsi-rule { grid-template-columns: 40px minmax(0, 1fr); column-gap: var(--space-4); padding: var(--space-5); }
  :is(.wp-block-group.is-style-regle, .lsi-rule) > :not(.lsi-rule__icon):not(.overline) { grid-column: 1 / -1; }
  :is(.wp-block-group.is-style-regle, .lsi-rule) > .lsi-rule__icon { grid-row: 1; width: 40px; height: 40px; }
  :is(.wp-block-group.is-style-regle, .lsi-rule) > .overline { align-self: center; padding-top: 0; }
  :is(.wp-block-group.is-style-regle, .lsi-rule) > .overline + * { margin-top: var(--space-4); }
  :is(.wp-block-group.is-style-regle, .lsi-rule) > .lsi-rule__icon .lsi-icon { width: 24px; height: 24px; }
}

/* FAQ : questions plus lisibles, plus et moins, réponses en ink-muted. */
.lsi-accordion :is(.wp-block-details, .lsi-accordion__item) > summary { gap: var(--space-5); padding: var(--space-5) 0; }
.lsi-accordion :is(.wp-block-details, .lsi-accordion__item) > summary::after {
  width: 24px;
  height: 24px;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M24 9V39M9 24H39' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M24 9V39M9 24H39' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") center / contain no-repeat;
}
.lsi-accordion :is(.wp-block-details, .lsi-accordion__item)[open] > summary::after {
  transform: none;
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M9 24H39' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M9 24H39' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E");
}
.lsi-accordion :is(.wp-block-details, .lsi-accordion__item) > :not(summary) { max-width: 640px; color: var(--ink-muted); font-size: 16px; line-height: 26px; }
.lsi-accordion :is(.wp-block-details, .lsi-accordion__item) > :last-child { margin-bottom: var(--space-5); }

/* Carte « Une autre question ? » : à la suite de la FAQ (mobile), sous le titre (ordinateur). */
.lsi-faq-help { display: grid; justify-items: start; gap: var(--space-2); max-width: 460px; padding: var(--space-5) var(--space-6) var(--space-6); border: 1px solid transparent; border-radius: var(--radius-md); background-color: var(--surface-alt); }
.lsi-section--alt .lsi-faq-help { border-color: var(--line); background-color: var(--surface-raised); }
.lsi-faq-help > * { margin: 0; }
.lsi-faq-help .lsi-ficon { margin-bottom: var(--space-3); }
.lsi-faq-help__title { font-family: var(--font-display); font-weight: 700; font-size: 18px; line-height: 26px; }
.lsi-faq-help__text { color: var(--ink-muted); font-size: 15px; line-height: 24px; }
.lsi-faq-help > .lsi-faq-help__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-5); margin-top: var(--space-3); }
.lsi-faq-help__phone { display: inline-flex; align-items: center; gap: var(--space-2); min-height: var(--target-min); color: var(--ink); font-family: var(--font-display); font-weight: 700; font-size: 17px; line-height: 24px; text-decoration: none; font-variant-numeric: lining-nums tabular-nums; }
.lsi-faq-help__phone .lsi-icon { width: 20px; height: 20px; }
.lsi-faq-help__phone:hover { color: var(--accent-ink); }
.lsi-section > .lsi-accordion + .lsi-faq-help { margin-top: var(--space-6); }
@media (min-width: 1024px) {
  .lsi-section:has(> .lsi-accordion) { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); grid-template-rows: auto auto 1fr; column-gap: var(--space-8); align-items: start; }
  .lsi-section:has(> .lsi-accordion) > * { grid-column: 1; margin-top: 0; }
  .lsi-section:has(> .lsi-accordion) > .overline { grid-row: 1; }
  .lsi-section:has(> .lsi-accordion) > :is(h2, .h2) { grid-row: 2; margin-top: var(--space-3); }
  .lsi-section:has(> .lsi-accordion) > .lsi-faq-help { grid-row: 3; margin-top: var(--space-7); }
  .lsi-section:has(> .lsi-accordion) > .lsi-accordion { grid-column: 2; grid-row: 1 / span 3; max-width: none; margin-top: 0; }
}

/* Réalisations : secteur en badge, flèche au titre, extrait à la place de la date. */
.lsi-reference__body { gap: var(--space-3); }
.lsi-reference__sector { line-height: 0; }
.lsi-reference__title { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-4); }
.lsi-reference__arrow { flex: none; width: 20px; height: 20px; margin-top: 2px; color: var(--ink); transition: transform 150ms ease-out, color 150ms ease-out; }
.lsi-reference:hover .lsi-reference__arrow { color: var(--accent-ink); transform: translateX(4px); }
.lsi-reference__excerpt { color: var(--ink-muted); font-size: 15px; line-height: 24px; }

/* Moyens de contact : pictogramme encadré, libellé, valeur. */
.lsi-contact-methods { display: grid; gap: var(--space-5); margin: 0; padding: 0; list-style: none; font-size: 16px; line-height: 24px; }
.lsi-contact-methods .lsi-contact-method { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: var(--space-4); align-items: start; }
.lsi-contact-method__body > * { margin: 0; }
.lsi-contact-method__label { color: var(--ink-muted); font-size: 13px; line-height: 18px; font-weight: 600; }
.lsi-contact-method__body > .lsi-contact-method__value { margin-top: 2px; color: var(--ink); font-size: 16px; line-height: 24px; }
.lsi-contact-method__value a { color: var(--ink); font-weight: 600; text-decoration: none; }
.lsi-contact-method__value a:hover { text-decoration: underline; text-decoration-color: var(--accent); text-decoration-thickness: 2px; }
.lsi-coords__map { margin-top: var(--space-6); }

/* Page Contact : la colonne des coordonnées devient une carte. */
.wp-block-columns.lsi-contact > .wp-block-column:last-child { align-self: flex-start; padding: var(--space-6); border-radius: var(--radius-md); background-color: var(--surface-alt); }
@media (max-width: 767px) { .wp-block-columns.lsi-contact > .wp-block-column:last-child { padding: var(--space-5); } }

/* Formulaire : champ fichier en zone de dépôt, messages en alerte du design system (icône et fond, sans bordure gauche). */
.wpcf7 input[type="file"].lsi-input { min-height: 72px; padding: var(--space-4); border: 1px dashed var(--border); border-radius: var(--radius-sm); background-color: var(--surface-raised); color: var(--ink-muted); font-size: 15px; line-height: 24px; cursor: pointer; transition: border-color 150ms ease-out, background-color 150ms ease-out; }
.wpcf7 input[type="file"].lsi-input:hover { border-color: var(--ink); }
.wpcf7 input[type="file"]::file-selector-button { margin-right: var(--space-4); min-height: 40px; padding: 0 var(--space-4); border: 2px solid var(--ink); border-radius: var(--radius-sm); background-color: transparent; color: var(--ink); font-family: var(--font-text); font-size: 15px; line-height: 20px; font-weight: 600; cursor: pointer; transition: background-color 150ms ease-out; }
.wpcf7 input[type="file"]::file-selector-button:hover { background-color: var(--surface-alt); }
.wpcf7 .wpcf7-not-valid-tip { color: var(--danger-ink); }
.wpcf7 form .wpcf7-response-output { display: flex; align-items: flex-start; gap: var(--space-3); border: 0; border-radius: var(--radius-sm); background-color: var(--info-soft); color: var(--ink); }
.wpcf7 form .wpcf7-response-output::before {
  content: "";
  flex: none;
  width: 20px;
  height: 20px;
  margin-top: 2px;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M5 24A19 19 0 1 0 43 24A19 19 0 1 0 5 24ZM24 21V35M24 13V17' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M5 24A19 19 0 1 0 43 24A19 19 0 1 0 5 24ZM24 21V35M24 13V17' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") center / contain no-repeat;
}
.wpcf7 form:is(.invalid, .unaccepted, .failed, .spam, .aborted) .wpcf7-response-output { background-color: var(--danger-soft); color: var(--danger-ink); }
.wpcf7 form:is(.invalid, .unaccepted, .failed, .spam, .aborted) .wpcf7-response-output::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M24 6L43 41H5ZM24 18V30M24 33V37' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M24 6L43 41H5ZM24 18V30M24 33V37' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E");
}
.wpcf7 form.sent .wpcf7-response-output { background-color: var(--success-soft); color: var(--success-ink); }
.wpcf7 form.sent .wpcf7-response-output::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M8 25L18 35L40 13' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M8 25L18 35L40 13' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E");
}

/* Chiffres clés : sous 976 px de conteneur, deux colonnes et une graduation par chiffre
   (les traits rouges de la deuxième rangée tombaient sur les libellés de la première). */
@container lsi-figures (max-width: 975px) {
  .lsi-figures__list { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: var(--space-7); padding-top: 0; background-image: none; }
  .lsi-figures__item {
    padding-top: calc(var(--lsi-tick-h) + var(--space-4));
    background-image:
      linear-gradient(var(--line), var(--line)),
      repeating-linear-gradient(to right, var(--ink-subtle) 0 1px, transparent 1px 40px),
      repeating-linear-gradient(to right, var(--line) 0 1px, transparent 1px 8px);
    background-size: 100% 1px, 100% 16px, 100% 8px;
    background-position: 0 calc(var(--lsi-tick-h) - 1px), 0 calc(var(--lsi-tick-h) - 16px), 0 calc(var(--lsi-tick-h) - 8px);
    background-repeat: no-repeat;
  }
  .lsi-figures__item::before { top: 0; }
  .lsi-figures__value { min-height: 0; }
}
@container lsi-figures (max-width: 479px) {
  .lsi-figures__list { grid-template-columns: minmax(0, 1fr); row-gap: var(--space-6); }
}

/* ============================================================ 15. Catalogue, fiche produit et demande de devis (28 octobre 2026)
   Familles et sous-familles en photos, fiche produit sur toute la largeur, demande de devis groupée. */

/* ---- Catégories illustrées */
.lsi-catcard {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background-color: var(--surface-raised);
  color: var(--ink);
  transition: border-color 150ms ease-out, box-shadow 150ms ease-out;
}
.lsi-catcard:hover { border-color: var(--ink); box-shadow: var(--shadow-md); }
.lsi-catcard:focus-within { box-shadow: var(--focus-ring); }
.lsi-catcard__media { display: grid; place-items: center; margin: 0; aspect-ratio: 3 / 2; overflow: hidden; background-color: var(--surface-alt); }
.lsi-catcard__media img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform 400ms var(--lsi-ease); }
.lsi-catcard__media--packshot img { object-fit: contain; }
.lsi-catcard__media > .lsi-icon { width: 64px; height: 64px; color: var(--ink-subtle); }
.lsi-catcard:hover .lsi-catcard__media img { transform: scale(1.03); }
.lsi-catcard__body { display: flex; flex: 1; flex-direction: column; gap: var(--space-2); padding: var(--space-5); }
.lsi-catcard__body > * { margin: 0; }
.lsi-catcard__title { font-family: var(--font-display); font-size: clamp(19px, 18px + 0.3vw, 22px); line-height: 1.25; }
.lsi-catcard__link { color: inherit; text-decoration: none; }
.lsi-catcard__link::after { content: ""; position: absolute; inset: 0; z-index: 1; border-radius: inherit; }
.lsi-catcard__link:focus-visible { outline: none; }
.lsi-catcard:hover .lsi-catcard__title { color: var(--accent-ink); }
.lsi-catcard__text { color: var(--ink-muted); font-size: 15px; line-height: 22px; }
.lsi-catcard__count { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); margin-top: auto !important; padding-top: var(--space-3); color: var(--ink-muted); font-size: 13px; line-height: 18px; font-weight: 600; font-variant-numeric: tabular-nums; }
.lsi-catcard__count::after {
  content: "";
  flex: none;
  width: 20px;
  height: 20px;
  background-color: var(--ink);
  transition: transform 150ms ease-out, background-color 150ms ease-out;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M7 24H38M27 13L38 24L27 35' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M7 24H38M27 13L38 24L27 35' fill='none' stroke='%23000' stroke-width='4'/%3E%3C/svg%3E") center / contain no-repeat;
}
.lsi-catcard:hover .lsi-catcard__count::after { transform: translateX(4px); background-color: var(--accent); }
.lsi-catcards > li { margin: 0; }

/* Sous-familles : cartes compactes, photo carrée à gauche. */
.lsi-catalogue__subcats { padding-top: 0; }
.lsi-catalogue__subcats > h2 { margin: 0; }
.lsi-subcats { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 248px), 1fr)); gap: var(--space-3); margin: var(--space-4) 0 0 !important; padding: 0; list-style: none; }
.lsi-subcats > li { margin: 0; }
.lsi-catcard--compact { flex-direction: row; align-items: stretch; }
.lsi-catcard--compact .lsi-catcard__media { flex: none; width: 88px; aspect-ratio: 1 / 1; }
.lsi-catcard--compact .lsi-catcard__media > .lsi-icon { width: 40px; height: 40px; }
.lsi-catcard--compact .lsi-catcard__body { justify-content: center; gap: 2px; padding: var(--space-3) var(--space-4); }
.lsi-catcard--compact .lsi-catcard__title { font-family: var(--font-text); font-size: 16px; line-height: 22px; font-weight: 600; }
.lsi-catcard--compact .lsi-catcard__count { margin-top: 0 !important; padding-top: 0; font-weight: 400; }
.lsi-catcard--compact .lsi-catcard__count::after { width: 16px; height: 16px; }

/* Recherche du catalogue. */
.lsi-catalogue__search { display: flex; align-items: center; gap: var(--space-3); max-width: 640px; margin-top: var(--space-6) !important; padding: 4px 4px 4px var(--space-4); border: 1px solid var(--border); border-radius: var(--radius-sm); background-color: var(--surface-raised); transition: border-color 150ms ease-out, box-shadow 150ms ease-out; }
.lsi-catalogue__search:hover { border-color: var(--ink); }
.lsi-catalogue__search:focus-within { border-color: var(--ink); box-shadow: var(--focus-ring); }
.lsi-catalogue__search > .lsi-icon { flex: none; width: 20px; height: 20px; color: var(--ink-muted); }
.lsi-catalogue__search-input { flex: 1; min-width: 0; min-height: 44px; margin: 0; padding: 0; border: 0; background: transparent; color: var(--ink); font-family: var(--font-text); font-size: 17px; line-height: 24px; outline: none; }
.lsi-catalogue__search-input::placeholder { color: var(--ink-subtle); opacity: 1; }
.lsi-catalogue__search .lsi-btn { flex: none; }
@media (max-width: 479px) { .lsi-catalogue__search .lsi-btn { display: none; } }

/* ---- Cartes produit */
.lsi-product__media--packshot img { object-fit: contain; }
.lsi-product__actions .lsi-btn { gap: var(--space-2); }
.lsi-product__actions .lsi-btn .lsi-icon { width: 16px; height: 16px; }
.lsi-product__actions .lsi-btn.loading { opacity: .6; pointer-events: none; }
.lsi-product__actions .lsi-btn.added { border-color: var(--success-ink); color: var(--success-ink); }
.lsi-product__actions .lsi-btn.added .lsi-icon { display: none; }
.lsi-product__actions .added_to_cart { display: block; margin-top: var(--space-2); text-align: center; font-size: 14px; line-height: 20px; font-weight: 600; color: var(--ink); text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: 3px; }

/* ---- Fiche produit : visuel et résumé sur toute la largeur */
.lsi-pdp { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-8); }
.lsi-pdp.product div.lsi-pdp__summary.summary,
.lsi-pdp.product .lsi-pdp__gallery div.images,
.lsi-pdp.product .lsi-pdp__gallery .woocommerce-product-gallery { float: none; width: auto; max-width: none; margin: 0; }
@media (min-width: 1024px) { .lsi-pdp__gallery { position: sticky; top: 96px; } }
@media (max-width: 1023px) { .lsi-pdp { grid-template-columns: minmax(0, 1fr); gap: var(--space-6); } }
.lsi-pdp__gallery .woocommerce-product-gallery__image { border-radius: var(--radius-md); background-color: var(--brand-grey); }
.lsi-pdp__gallery .woocommerce-product-gallery__image img { mix-blend-mode: normal; object-fit: contain; }

.lsi-pdp__summary { gap: var(--space-5); align-content: start; }
.lsi-pdp__eyebrow { margin: 0; }
.lsi-pdp__eyebrow a { color: inherit; text-decoration: none; }
.lsi-pdp__eyebrow a:hover { text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: 3px; }
.lsi-pdp .lsi-pdp__title { margin: calc(-1 * var(--space-2)) 0 0; font-family: var(--font-display); font-size: clamp(26px, 22px + 0.8vw, 34px); line-height: 1.18; letter-spacing: -0.005em; }
.lsi-pdp__refs { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-5); margin-top: calc(-1 * var(--space-2)) !important; }
.lsi-pdp__refs .lsi-pdp__ref { margin: 0; color: var(--ink-muted); font-size: 14px; line-height: 20px; }
.lsi-pdp__refs :is(.sku, .lsi-pdp__mpn) { color: var(--ink); font-weight: 600; font-variant-numeric: tabular-nums; }
.lsi-pdp__excerpt { font-size: 17px; line-height: 27px; }
.lsi-pdp__excerpt > * { margin: 0; }
.lsi-pdp__excerpt > * + * { margin-top: var(--space-3); }
.lsi-pdp__points { display: grid; gap: var(--space-2); margin: 0; padding: 0; list-style: none; }
.lsi-pdp__points li { display: grid; grid-template-columns: 20px minmax(0, 1fr); gap: var(--space-3); margin: 0; font-size: 16px; line-height: 24px; }
.lsi-pdp__points .lsi-icon { width: 20px; height: 20px; margin-top: 2px; color: var(--ink); }

.lsi-pdp__offer { display: grid; gap: var(--space-4); padding: var(--space-5); border: 1px solid var(--line); border-radius: var(--radius-md); background-color: var(--surface-alt); }
.lsi-pdp__offer > * { margin: 0; }
.lsi-pdp__status { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-2) var(--space-4); }
.lsi-pdp__status .lsi-price { margin: 0; }
.lsi-dispo { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); margin: 0; }
.lsi-dispo__note { color: var(--ink-muted); font-size: 14px; line-height: 20px; }
.lsi-pdp__help { color: var(--ink-muted); font-size: 15px; line-height: 22px; }
.lsi-pdp__help .lsi-link { font-weight: 600; color: var(--ink); }

/* Formulaire d'ajout : quantité, version, bouton. */
.lsi-pdp__buy-wrap form.cart { display: flex; flex-wrap: wrap; align-items: stretch; gap: var(--space-3); margin: 0; }
.lsi-pdp__buy-wrap form.variations_form { display: grid; gap: var(--space-4); }
.lsi-pdp__buy-wrap .single_variation_wrap { display: grid; gap: var(--space-3); }
.lsi-pdp__buy-wrap .single_variation:empty { display: none; }
.lsi-pdp__buy-wrap .woocommerce-variation-description p { margin: 0; font-size: 15px; line-height: 22px; color: var(--ink-muted); }
.lsi-pdp__buy-wrap .variations_button { display: flex; flex-wrap: wrap; align-items: stretch; gap: var(--space-3); }
.lsi-pdp__buy-wrap .quantity { flex: none; margin: 0; }
.lsi-pdp__buy-wrap .quantity .qty { width: 88px; height: 100%; min-height: var(--control-lg); padding: 0 var(--space-2); border: 1px solid var(--border); border-radius: var(--radius-sm); background-color: var(--surface-raised); color: var(--ink); font-size: 17px; text-align: center; font-variant-numeric: tabular-nums; }
.lsi-pdp__buy-wrap .single_add_to_cart_button { flex: 1 1 240px; display: inline-flex; align-items: center; justify-content: center; text-align: center; white-space: normal; }
.lsi-pdp__buy-wrap .single_add_to_cart_button.disabled { opacity: .55; }
.lsi-pdp__buy-wrap table.variations { display: block; width: 100%; margin: 0; border: 0; }
.lsi-pdp__buy-wrap table.variations :is(tbody, tr) { display: grid; gap: var(--space-2); }
.lsi-pdp__buy-wrap table.variations :is(th, td) { display: block; padding: 0; border: 0; text-align: left; background: none; }
.lsi-pdp__buy-wrap table.variations label { font-size: 15px; line-height: 20px; font-weight: 600; }
.lsi-pdp__buy-wrap table.variations td.value { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-4); }
.lsi-pdp__buy-wrap table.variations select {
  flex: 1 1 240px;
  min-height: var(--control-md);
  padding: 0 48px 0 var(--space-4);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  appearance: none;
  -webkit-appearance: none;
  background: var(--surface-raised) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M12 18L24 30L36 18' fill='none' stroke='%231d1d1b' stroke-width='4'/%3E%3C/svg%3E") right 16px center / 20px no-repeat;
  color: var(--ink);
  font-family: var(--font-text);
  font-size: 17px;
  cursor: pointer;
}
.lsi-pdp__buy-wrap table.variations select:hover { border-color: var(--ink); }
.lsi-pdp__buy-wrap table.variations select:focus { outline: 2px solid transparent; border-color: var(--ink); box-shadow: var(--focus-ring); }
.lsi-pdp__buy-wrap .reset_variations { font-size: 14px; line-height: 20px; font-weight: 600; color: var(--ink-muted); }

.lsi-pdp .lsi-pdp__assurances { margin: 0; padding: var(--space-5) 0 0; list-style: none; }
.lsi-pdp .lsi-pdp__assurances li { grid-template-columns: 24px minmax(0, 1fr); margin: 0; font-size: 15px; line-height: 22px; }
.lsi-pdp .lsi-pdp__assurances .lsi-icon { width: 24px; height: 24px; }

/* Sommaire de la fiche. */
.lsi-pdp-nav { position: relative; z-index: 15; padding-inline: var(--lsi-pad); border-block: 1px solid var(--line); background-color: var(--surface); }
@media (min-width: 1024px) {
  .lsi-pdp-nav { position: sticky; top: 68px; }
  body.admin-bar .lsi-pdp-nav { top: 100px; }
}
.lsi-pdp-nav__list { display: flex; gap: var(--space-1); margin: 0; padding: 0; list-style: none; overflow-x: auto; scrollbar-width: none; }
.lsi-pdp-nav__list::-webkit-scrollbar { display: none; }
.lsi-pdp-nav__list li { flex: none; margin: 0; }
.lsi-pdp-nav__link { position: relative; display: inline-flex; align-items: center; min-height: 52px; padding: 0 var(--space-4); color: var(--ink-muted); font-size: 15px; line-height: 20px; font-weight: 600; text-decoration: none; white-space: nowrap; transition: color 150ms ease-out; }
.lsi-pdp-nav__list li:first-child .lsi-pdp-nav__link { padding-left: 0; }
.lsi-pdp-nav__link:hover, .lsi-pdp-nav__link[aria-current="true"] { color: var(--ink); }
.lsi-pdp-nav__link[aria-current="true"]::after { content: ""; position: absolute; left: var(--space-4); right: var(--space-4); bottom: -1px; height: 2px; background-color: var(--accent); }
.lsi-pdp-nav__list li:first-child .lsi-pdp-nav__link[aria-current="true"]::after { left: 0; }
:is(#description, #fiche-technique, #entretien, #questions) { scroll-margin-top: 136px; }

/* Description et fiche technique côte à côte. */
.lsi-pdp-details__grid, .lsi-pdp-care__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--space-7) var(--space-8); align-items: start; }
.lsi-pdp-details__grid--single, .lsi-pdp-care__grid--single { grid-template-columns: minmax(0, 1fr); }
@media (max-width: 1023px) { .lsi-pdp-details__grid, .lsi-pdp-care__grid { grid-template-columns: minmax(0, 1fr); } }
.lsi-pdp-details__main > *, .lsi-pdp-care__main > * { margin: 0; }
.lsi-pdp-details__main > .overline + *, .lsi-pdp-care__main > .overline + * { margin-top: var(--space-3); }
.lsi-pdp-details__main > h2 + .lsi-pdp-prose { margin-top: var(--space-5); }
@media (min-width: 1024px) { .lsi-pdp-details__aside { position: sticky; top: 144px; } }
.lsi-pdp-details__aside > * { margin: 0; }
.lsi-pdp-spec__title { margin-bottom: var(--space-4) !important; }
.lsi-pdp-spec table th { width: 44%; padding: var(--space-3) var(--space-4); text-align: left; vertical-align: top; font-weight: 600; color: var(--ink); }
.lsi-pdp-spec table td { padding: var(--space-3) var(--space-4); }
.lsi-pdp-spec tbody tr:first-child { border-top: 0; }

.lsi-pdp-prose { max-width: 680px; font-size: 17px; line-height: 28px; }
.lsi-pdp-prose > * { margin: 0; }
.lsi-pdp-prose > * + * { margin-top: var(--space-4); }
.lsi-pdp-prose > * + :is(h2, h3) { margin-top: var(--space-7); }
.lsi-pdp-prose > :is(h2, h3) + * { margin-top: var(--space-3); }
.lsi-pdp-prose h2 { font-size: clamp(24px, 21.4px + 0.62vw, 30px); line-height: 1.25; }
.lsi-pdp-prose h3 { font-size: clamp(19px, 18px + 0.25vw, 22px); line-height: 1.3; }
.lsi-pdp-prose :is(ul, ol) { padding-left: var(--space-5); }
.lsi-pdp-prose li + li { margin-top: var(--space-2); }
.lsi-pdp-prose a { color: var(--ink); text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: 3px; }
.lsi-pdp-prose .lsi-rule { margin-top: var(--space-6); }
.lsi-pdp-prose .lsi-rule > * + * { margin-top: 0; }
.lsi-pdp-prose .wp-block-table { margin-top: var(--space-5); }

/* Prestation liée à l'atelier. */
.lsi-pdp-service { display: grid; justify-items: start; gap: var(--space-3); padding: var(--space-6); border: 1px solid var(--line); border-radius: var(--radius-md); background-color: var(--surface-raised); }
.lsi-pdp-service > * { margin: 0; }
.lsi-pdp-service .lsi-ficon { margin-bottom: var(--space-2); }
.lsi-pdp-service__text { color: var(--ink-muted); font-size: 15px; line-height: 24px; }

/* ---- Ma demande de devis */
.lsi-page__body--wc { max-width: none; }
.lsi-devis { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--space-7) var(--space-8); align-items: start; }
.lsi-devis > * { margin: 0; }
.lsi-devis__errors { grid-column: 1 / -1; }
.lsi-devis__errors ul { margin: var(--space-2) 0 0; padding-left: var(--space-5); }
.lsi-devis__errors:focus { outline: 2px solid transparent; box-shadow: var(--focus-ring); }
@media (max-width: 1023px) { .lsi-devis { grid-template-columns: minmax(0, 1fr); } }
.lsi-devis__list > * { margin: 0; }
.lsi-devis__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--space-2) var(--space-4); padding-bottom: var(--space-4); border-bottom: 1px solid var(--line); }
.lsi-devis__head > * { margin: 0; }
.lsi-devis__count { color: var(--ink-muted); }
.lsi-devis__items { margin: 0; padding: 0; list-style: none; }
.lsi-devis__item { display: grid; grid-template-columns: 88px minmax(0, 1fr) auto auto; grid-template-areas: "media body qty remove"; align-items: center; gap: var(--space-3) var(--space-4); margin: 0; padding: var(--space-4) 0; border-bottom: 1px solid var(--line); }
.lsi-devis__media { grid-area: media; width: 88px; aspect-ratio: 1 / 1; overflow: hidden; border-radius: var(--radius-sm); background-color: var(--brand-grey); }
.lsi-devis__media img { display: block; width: 100%; height: 100%; object-fit: contain; }
.lsi-devis__body { grid-area: body; min-width: 0; }
.lsi-devis__body > * { margin: 0; }
.lsi-devis__name { font-size: 16px; line-height: 22px; font-weight: 600; }
.lsi-devis__name a { color: inherit; text-decoration: none; }
.lsi-devis__name a:hover { text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: 3px; }
.lsi-devis__meta { margin-top: var(--space-1) !important; color: var(--ink-muted); overflow-wrap: anywhere; }
.lsi-devis__qty { grid-area: qty; }
.lsi-devis__remove { grid-area: remove; display: inline-flex; align-items: center; gap: 6px; min-height: 40px; color: var(--ink-muted); font-size: 14px; line-height: 20px; font-weight: 600; text-decoration: none; }
.lsi-devis__remove .lsi-icon { width: 16px; height: 16px; }
.lsi-devis__remove:hover { color: var(--danger-ink); text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 599px) {
  .lsi-devis__item { grid-template-columns: 64px minmax(0, 1fr) auto; grid-template-areas: "media body body" "media qty remove"; align-items: start; }
  .lsi-devis__media { width: 64px; }
  .lsi-devis__remove { justify-self: end; }
}
.lsi-qty { display: inline-flex; align-items: stretch; border: 1px solid var(--border); border-radius: var(--radius-sm); background-color: var(--surface-raised); }
.lsi-qty:focus-within { border-color: var(--ink); box-shadow: var(--focus-ring); }
.lsi-qty__btn { display: grid; place-items: center; width: 40px; min-height: 40px; padding: 0; border: 0; background: none; color: var(--ink); cursor: pointer; }
.lsi-qty__btn .lsi-icon { width: 16px; height: 16px; }
.lsi-qty__btn:hover { background-color: var(--surface-alt); }
.lsi-qty__btn:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; }
.lsi-qty__input { width: 52px; min-height: 40px; margin: 0; padding: 0; border: 0; border-inline: 1px solid var(--line); border-radius: 0; background: transparent; color: var(--ink); font-family: var(--font-text); font-size: 16px; text-align: center; font-variant-numeric: tabular-nums; -moz-appearance: textfield; appearance: textfield; outline: none; }
.lsi-qty__input::-webkit-outer-spin-button, .lsi-qty__input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.lsi-devis__more { margin-top: var(--space-4) !important; }
.lsi-devis__how { margin-top: var(--space-6) !important; padding: var(--space-5) var(--space-6); border-radius: var(--radius-md); background-color: var(--surface-alt); }
.lsi-devis__how > * { margin: 0; }
.lsi-devis__steps { margin: var(--space-3) 0 0 !important; padding: 0; list-style: none; counter-reset: lsi-devis; }
.lsi-devis__steps li { position: relative; margin: 0; padding-left: 36px; font-size: 15px; line-height: 24px; counter-increment: lsi-devis; }
.lsi-devis__steps li + li { margin-top: var(--space-2); }
.lsi-devis__steps li::before { content: counter(lsi-devis); position: absolute; left: 0; top: 0; display: grid; place-items: center; width: 24px; height: 24px; border-radius: var(--radius-xs); background-color: var(--ink); color: var(--surface); font-size: 13px; line-height: 1; font-weight: 700; }

.lsi-devis__form { padding: var(--space-6); border: 1px solid var(--line); border-radius: var(--radius-md); background-color: var(--surface-raised); box-shadow: var(--shadow-sm); }
@media (min-width: 1024px) { .lsi-devis__form { position: sticky; top: 96px; } }
@media (max-width: 599px) { .lsi-devis__form { padding: var(--space-5); } }
.lsi-devis__form > * { margin: 0; }
.lsi-devis__form > .lsi-form__note { margin-top: var(--space-2); }
.lsi-devis__form > .lsi-form { margin-top: var(--space-5); gap: var(--space-4); }
.lsi-devis__form .lsi-form > * { margin: 0; }
.lsi-devis__form .lsi-field__help { font-size: 14px; line-height: 20px; }
.lsi-devis__form .lsi-field__help + .lsi-input { margin-top: 2px; }
.lsi-devis__form .lsi-choice { padding-block: 6px; }
.lsi-devis__form [hidden] { display: none !important; }
.lsi-input--cp { max-width: 200px; }
.lsi-input--file { min-height: 0; height: auto; padding: var(--space-3); border-style: dashed; color: var(--ink-muted); font-size: 15px; line-height: 22px; cursor: pointer; }
.lsi-input--file::file-selector-button { margin-right: var(--space-3); min-height: 40px; padding: 0 var(--space-4); border: 2px solid var(--ink); border-radius: var(--radius-sm); background-color: transparent; color: var(--ink); font-family: var(--font-text); font-size: 15px; line-height: 20px; font-weight: 600; cursor: pointer; }
.lsi-input--file::file-selector-button:hover { background-color: var(--surface-alt); }
.lsi-devis__trap { position: absolute !important; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.lsi-devis__rgpd, .lsi-devis__phone { color: var(--ink-muted); }
.lsi-devis__phone .lsi-link { font-weight: 600; color: var(--ink); }
.lsi-btn.is-busy { opacity: .7; pointer-events: none; }

/* Demande vide, ou envoyée. */
.lsi-devis-state { display: grid; justify-items: start; gap: var(--space-4); max-width: 680px; padding: var(--space-7); border: 1px solid var(--line); border-radius: var(--radius-md); background-color: var(--surface-raised); }
.lsi-devis-state > * { margin: 0; }
.lsi-devis-state > p:not([class]) { font-size: 17px; line-height: 27px; }
.lsi-devis-state--done .lsi-devis-state__icon { border-color: transparent; background-color: var(--success-soft); }
.lsi-devis-state--done .lsi-devis-state__icon .lsi-icon { color: var(--success-ink); }
.lsi-devis-state__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3) var(--space-5); margin-top: var(--space-2) !important; }
.lsi-devis-state__phone { display: inline-flex; align-items: center; gap: var(--space-2); font-weight: 600; color: var(--ink); text-decoration: none; }
.lsi-devis-state__phone .lsi-icon { width: 20px; height: 20px; }
@media (max-width: 599px) { .lsi-devis-state { padding: var(--space-5); } }

/* Message après un ajout. */
.lsi-toast {
  position: fixed;
  left: 50%;
  bottom: var(--space-5);
  z-index: 60;
  display: flex;
  align-items: center;
  gap: var(--space-4);
  width: max-content;
  max-width: min(560px, calc(100vw - 32px));
  padding: var(--space-3) var(--space-3) var(--space-3) var(--space-5);
  border-radius: var(--radius-md);
  background-color: var(--brand-ink);
  color: #fff;
  box-shadow: var(--shadow-lg);
  opacity: 0;
  transform: translate(-50%, 24px);
  pointer-events: none;
  transition: opacity 250ms ease-out, transform 300ms var(--lsi-ease);
}
.lsi-toast.is-on { opacity: 1; transform: translate(-50%, 0); pointer-events: auto; }
.lsi-toast__text { margin: 0; font-size: 15px; line-height: 22px; }
.lsi-toast__link { display: inline-flex; flex: none; align-items: center; min-height: 40px; padding: 0 var(--space-4); border: 1px solid rgba(255, 255, 255, .45); border-radius: var(--radius-sm); color: #fff; font-size: 15px; font-weight: 600; text-decoration: none; }
.lsi-toast__link:hover { background-color: rgba(255, 255, 255, .12); }
.lsi-toast__link:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
@media (max-width: 479px) { .lsi-toast { left: 16px; right: 16px; width: auto; transform: translateY(24px); } .lsi-toast.is-on { transform: none; } }
@media (prefers-reduced-motion: reduce) { .lsi-toast { transition: none; } }
.lsi-count.is-bump { animation: lsi-bump 450ms var(--lsi-ease); }
@keyframes lsi-bump { 0% { transform: scale(1); } 40% { transform: scale(1.35); } 100% { transform: scale(1); } }
