/* Inter (variable 400-700), auto-hébergée — licence SIL OFL */
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400 700; font-display: swap;
  src: url('fonts/inter-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400 700; font-display: swap;
  src: url('fonts/inter-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

/* =====================================================================
   Nature et Lagon — style sobre et aéré (kit « rendu Apple » Hegemonia).
   Un seul accent : le bleu du logo. Tuiles sombres : le bleu nuit du logo.
   Contrastes vérifiés : #0068A8 / blanc 5,92:1 · #0068A8 / #F5F5F7 5,44:1
   #46B4E6 / #0E1B2E 7,35:1 · #A1A9B8 / #0E1B2E 7,31:1 · #6E6E73 / #F5F5F7 4,66:1
   Les fonds, marges et grilles sont réglés dans Elementor (modifiables) ;
   ce fichier porte la typographie, les états et l'habillage.
   ===================================================================== */
:root {
  --nl-accent: #0068A8;
  --nl-accent-hover: #005A92;
  --nl-accent-on-dark: #46B4E6;
  --nl-white: #FFFFFF;
  --nl-parchment: #F5F5F7;
  --nl-navy: #0E1B2E;
  --nl-ink: #1D1D1F;
  --nl-muted: #6E6E73;
  --nl-muted-on-dark: #A1A9B8;
  --nl-hairline: #D2D2D7;
  --nl-font: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif;
  --nl-pill: 980px;
  --nl-radius: 18px;
  --nl-ease: cubic-bezier(0.16, 1, 0.3, 1);
  --nl-header-h: 64px;
}

/* ---------- Base ---------- */
html { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; scroll-behavior: smooth; scroll-padding-top: calc(var(--nl-header-h) + 12px); }
body, .elementor, .elementor button, .elementor input, .elementor textarea, .elementor select { font-family: var(--nl-font); }
body { color: var(--nl-ink); background: var(--nl-white); font-size: 17px; line-height: 1.47; letter-spacing: -0.011em; }
::selection { background: var(--nl-accent); color: var(--nl-white); }
:focus-visible { outline: 2px solid var(--nl-accent); outline-offset: 3px; border-radius: 6px; }
.nl-dark :focus-visible { outline-color: var(--nl-accent-on-dark); }
a { text-underline-offset: 0.18em; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* ---------- Typographie (sur widgets Elementor natifs) ---------- */
.elementor .elementor-heading-title { font-family: var(--nl-font); font-weight: 600; color: var(--nl-ink); text-wrap: balance; }
.elementor .nl-hero .elementor-heading-title { font-size: clamp(2.25rem, 1.1rem + 3.9vw, 4.25rem); line-height: 1.05; letter-spacing: -0.025em; }
.elementor .nl-display .elementor-heading-title { font-size: clamp(1.875rem, 1.2rem + 2.2vw, 3rem); line-height: 1.08; letter-spacing: -0.02em; }
.elementor .nl-title .elementor-heading-title { font-size: clamp(1.3125rem, 1.15rem + 0.6vw, 1.625rem); line-height: 1.16; letter-spacing: -0.012em; }
.elementor .nl-price .elementor-heading-title { font-size: clamp(3rem, 1.6rem + 5vw, 5.5rem); line-height: 1; letter-spacing: -0.035em; font-variant-numeric: tabular-nums; color: var(--nl-accent); }
.elementor .nl-step .elementor-heading-title { font-size: 15px; line-height: 1.3; font-weight: 600; letter-spacing: 0; color: var(--nl-accent); font-variant-numeric: tabular-nums; }
.elementor .nl-lead, .elementor .nl-lead p { font-size: clamp(1.1875rem, 1rem + 0.7vw, 1.5rem); line-height: 1.34; color: var(--nl-ink); letter-spacing: -0.012em; }
.elementor .nl-body, .elementor .nl-body p { font-size: 17px; line-height: 1.55; color: #333336; }
.elementor .nl-body p, .elementor .nl-body li { max-width: 68ch; }
.elementor .nl-center p { margin-inline: auto; }
.elementor .nl-lead p { max-width: 36em; text-wrap: pretty; }
.elementor .nl-body a { color: var(--nl-accent); }
.elementor .nl-body a:hover { color: var(--nl-accent-hover); }
.elementor .nl-muted, .elementor .nl-muted p { color: var(--nl-muted); }
.elementor .nl-fine, .elementor .nl-fine p { font-size: 13px; line-height: 1.45; color: var(--nl-muted); }
.elementor .elementor-widget-text-editor p:last-child { margin-bottom: 0; }

/* Listes à filets et listes cochées */
.elementor .nl-list ul { list-style: none; margin: 0; padding: 0; }
.elementor .nl-list li { padding: 11px 0; border-top: 1px solid var(--nl-hairline); font-size: 16px; line-height: 1.4; color: #333336; }
.elementor .nl-list li:first-child { border-top: 0; }
.elementor .nl-check ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.elementor .nl-check li { position: relative; padding-left: 30px; font-size: 18px; line-height: 1.4; }
.elementor .nl-check li::before { content: ""; position: absolute; left: 4px; top: .28em; width: 7px; height: 13px; border-right: 2px solid var(--nl-accent); border-bottom: 2px solid var(--nl-accent); transform: rotate(45deg); }

/* Fiche technique d'un modèle : valeurs chiffrées en tableau léger */
.elementor .nl-specs dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 20px; margin: 0; }
.elementor .nl-specs dl > div { padding: 12px 0; border-top: 1px solid var(--nl-hairline); }
.elementor .nl-specs dt { font-size: 12px; line-height: 1.3; color: var(--nl-muted); margin: 0 0 2px; }
.elementor .nl-specs dd { margin: 0; white-space: nowrap; font-size: 17px; font-weight: 600; letter-spacing: -0.01em; font-variant-numeric: tabular-nums; }

/* ---------- Tuiles sombres (fond bleu nuit réglé dans Elementor) ---------- */
.nl-dark .elementor-heading-title { color: #F5F5F7 !important; }
.nl-dark .nl-lead, .nl-dark .nl-lead p, .nl-dark .nl-body, .nl-dark .nl-body p { color: #E8EAF0; }
.nl-dark .nl-muted, .nl-dark .nl-muted p, .nl-dark .nl-fine, .nl-dark .nl-fine p { color: var(--nl-muted-on-dark); }
.nl-dark .nl-step .elementor-heading-title, .nl-dark .nl-num .elementor-heading-title { color: var(--nl-accent-on-dark) !important; }
.nl-dark a:not(.elementor-button) { color: var(--nl-accent-on-dark); }
.nl-dark ::selection { background: var(--nl-accent-on-dark); color: var(--nl-navy); }

/* Colonnes séparées par un filet (pas de cartes) */
.nl-cols > .e-con, .nl-cols > .e-con-inner > .e-con { border-top: 1px solid var(--nl-hairline); padding-top: 24px !important; }
.nl-dark .nl-cols > .e-con, .nl-dark .nl-cols > .e-con-inner > .e-con { border-top-color: rgba(255,255,255,.16); }

/* Cartes (modèles, réalisations) : surface blanche, ombre douce, image en tête */
.nl-card { overflow: hidden; transition: transform .5s var(--nl-ease), box-shadow .5s var(--nl-ease); box-shadow: 0 1px 2px rgba(0,0,0,.04); }
.nl-card:hover { transform: translateY(-3px); box-shadow: 0 2px 4px rgba(0,0,0,.04), 0 18px 40px -18px rgba(14,27,46,.28); }
.nl-card > .elementor-widget:last-child { margin-top: auto; }
.elementor .nl-card .nl-cover { margin: -28px -28px 8px !important; width: calc(100% + 56px) !important; max-width: none !important; }
.elementor .nl-card .nl-cover img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 0; transition: transform 1s var(--nl-ease); }
.nl-card:hover .nl-cover img { transform: scale(1.03); }

/* ---------- Boutons en pilule et liens à chevron ---------- */
.elementor .elementor-button { border-radius: var(--nl-pill); font-weight: 500; letter-spacing: -0.01em; transition: background-color .25s ease, color .25s ease, box-shadow .25s ease, transform .2s ease; }
.elementor .elementor-button:active { transform: scale(.98); }
.elementor .nl-btn-ghost .elementor-button { background: transparent !important; color: var(--nl-accent) !important; box-shadow: inset 0 0 0 1px var(--nl-accent); }
.elementor .nl-btn-ghost .elementor-button:hover { background: var(--nl-accent) !important; color: #FFFFFF !important; }
.nl-dark .elementor-button, .nl-photo .elementor-button { background: #FFFFFF !important; color: var(--nl-navy) !important; }
.nl-dark .elementor-button:hover, .nl-photo .elementor-button:hover { background: #E8F4FB !important; }
.nl-dark .nl-btn-ghost .elementor-button, .nl-photo .nl-btn-ghost .elementor-button { background: transparent !important; color: #FFFFFF !important; box-shadow: inset 0 0 0 1px rgba(255,255,255,.7); }
.nl-dark .nl-btn-ghost .elementor-button:hover, .nl-photo .nl-btn-ghost .elementor-button:hover { background: rgba(255,255,255,.14) !important; }
.elementor .nl-link a { color: var(--nl-accent); text-decoration: none; font-weight: 500; }
.nl-dark .nl-link a { color: var(--nl-accent-on-dark); }
.elementor .nl-link a::after { content: ""; display: inline-block; width: .42em; height: .42em; margin-left: .35em; border-right: 1.6px solid currentColor; border-top: 1.6px solid currentColor; transform: translateY(-.08em) rotate(45deg); transition: transform .25s var(--nl-ease); }
.elementor .nl-link a:hover { text-decoration: underline; }
.elementor .nl-link a:hover::after { transform: translate(.18em, -.08em) rotate(45deg); }
/* Carte entièrement cliquable : le lien de la carte couvre toute sa surface */
.nl-card { position: relative; }
.nl-card .nl-link a::before { content: ""; position: absolute; inset: 0; z-index: 1; }

/* Pastilles (villes, communes) */
.elementor .nl-chips ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.elementor .nl-chips.nl-center ul { justify-content: center; }
.elementor .nl-chips li { margin: 0; }
.elementor .nl-chips li > a, .elementor .nl-chips li > span { display: inline-block; padding: 10px 18px; border-radius: var(--nl-pill); background: var(--nl-white); box-shadow: inset 0 0 0 1px var(--nl-hairline); color: var(--nl-ink); font-size: 15px; line-height: 1.3; text-decoration: none; transition: box-shadow .25s ease, color .25s ease; }
.elementor .nl-chips li > a:hover { box-shadow: inset 0 0 0 1px var(--nl-accent); color: var(--nl-accent); }
.elementor .nl-chips li small { color: var(--nl-muted); font-size: 13px; margin-left: 4px; }

/* ---------- Photos ---------- */
.elementor .nl-shot img { display: block; width: 100%; height: auto; border-radius: var(--nl-radius); background: var(--nl-parchment); }
.elementor .nl-shot.nl-tall img { aspect-ratio: 4 / 5; object-fit: cover; }
.elementor .nl-shot.nl-wide img { aspect-ratio: 16 / 10; object-fit: cover; }
.elementor .nl-shot .widget-image-caption, .elementor .nl-shot figcaption { margin-top: 10px; font-size: 13px; line-height: 1.4; color: var(--nl-muted); text-align: left; }
@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    .elementor .nl-shot.nl-zoom img { animation: nl-zoom linear both; animation-timeline: view(); animation-range: entry 0% cover 40%; }
  }
}
@keyframes nl-zoom { from { transform: scale(.9) translateY(40px); } to { transform: none; } }

/* Héros photo (fond réglé dans Elementor) : légende de la photo en bas à droite */
.nl-photo .elementor-heading-title { color: #FFFFFF !important; text-shadow: 0 1px 24px rgba(0,0,0,.25); }
.nl-photo .nl-lead, .nl-photo .nl-lead p { color: #FFFFFF; }
.elementor .nl-credit, .elementor .nl-credit p { font-size: 12px; line-height: 1.4; color: rgba(255,255,255,.78); }

/* ---------- Blocs « à confirmer par Dimitri » ---------- */
body:not(.nl-apercu) .nl-a-confirmer { display: none !important; }
body.nl-apercu .nl-a-confirmer { outline: 2px dashed #D97706; outline-offset: -10px; position: relative; }
body.nl-apercu .nl-a-confirmer::after { content: "À confirmer par Dimitri — invisible pour les visiteurs"; position: absolute; inset: 18px 18px auto auto; width: auto; height: auto; z-index: 5; padding: 5px 12px; pointer-events: none; border-radius: var(--nl-pill); background: #D97706; color: #FFFFFF; font: 600 12px/1.2 var(--nl-font); letter-spacing: 0; }
.elementor .nl-tbc { background: #FEF3C7; color: #78350F; padding: 0 .3em; border-radius: 4px; }

/* ---------- Récit collant (étapes de la pose) ---------- */
@media (min-width: 768px) { .elementor .nl-story-aside { position: sticky; top: calc(var(--nl-header-h) + 40px); align-self: flex-start; } }
.nl-story-bar { position: relative; width: 2px; height: 160px; margin-top: 28px; background: var(--nl-hairline); border-radius: 2px; overflow: hidden; }
.nl-story-bar span { position: absolute; inset: 0; background: var(--nl-accent); transform-origin: top; transform: scaleY(0); }
.nl-js .nl-story-step { min-height: 38vh; opacity: .28; transition: opacity .5s ease; }
.nl-js .nl-story-step.is-active { opacity: 1; }
.elementor .nl-num .elementor-heading-title { font-size: clamp(2.75rem, 1.5rem + 4vw, 4.5rem); line-height: 1; font-weight: 600; letter-spacing: -0.03em; color: var(--nl-accent); font-variant-numeric: tabular-nums; }

/* Galerie à faire glisser (réalisations) */
.elementor .nl-rail { display: flex; flex-wrap: nowrap !important; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scrollbar-width: none; padding: 8px 2px 20px !important; }
.nl-rail::-webkit-scrollbar { display: none; }
.elementor .nl-rail > .e-con { flex: 0 0 auto !important; width: min(80vw, 420px) !important; max-width: none !important; scroll-snap-align: start; }
.nl-rail-nav { display: flex; gap: 12px; justify-content: flex-end; width: 100%; }
.nl-rail-nav .nl-rail-btn, .nl-rail-nav .nl-rail-btn:focus { width: 44px; height: 44px; border: 0 !important; padding: 0 !important; border-radius: 50%; background: #E8E8ED !important; cursor: pointer; position: relative; box-shadow: none !important; transition: background-color .2s ease, opacity .2s ease; }
.nl-rail-btn::before { content: ""; position: absolute; left: 50%; top: 50%; width: 9px; height: 9px; border-right: 2px solid var(--nl-ink); border-top: 2px solid var(--nl-ink); transform: translate(-65%, -50%) rotate(45deg); }
.nl-rail-btn.nl-prev::before { transform: translate(-35%, -50%) rotate(-135deg); }
.nl-rail-nav .nl-rail-btn:hover:not(:disabled) { background: #D2D2D7 !important; }
.nl-rail-btn:disabled { opacity: .35; cursor: default; }

/* ---------- En-tête (Elementor Pro, modèle « En-tête ») : verre dépoli ---------- */
.elementor-location-header { position: sticky; top: 0; z-index: 999; }
.admin-bar .elementor-location-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .elementor-location-header { top: 0; } }
.nl-header { position: relative; isolation: isolate; border-bottom: 1px solid rgba(0,0,0,.08); }
.nl-header::before { content: ""; position: absolute; inset: 0; z-index: -1; background: rgba(251,251,253,.82); -webkit-backdrop-filter: saturate(180%) blur(20px); backdrop-filter: saturate(180%) blur(20px); }
.nl-header.is-scrolled::before { box-shadow: 0 1px 0 rgba(0,0,0,.04), 0 8px 24px -16px rgba(0,0,0,.18); }
.elementor .nl-logo img { width: auto; height: 56px; display: block; }
.nl-header .elementor-nav-menu--main .elementor-item { font-size: 14px; font-weight: 500; letter-spacing: -0.01em; color: var(--nl-ink); padding: 10px 12px; }
.nl-header .elementor-nav-menu--main .elementor-item:hover, .nl-header .elementor-nav-menu--main .elementor-item.elementor-item-active { color: var(--nl-accent); }
.nl-header .elementor-nav-menu--dropdown { border-radius: 14px; border: 1px solid rgba(0,0,0,.06); box-shadow: 0 18px 40px -20px rgba(0,0,0,.3); overflow: hidden; background: #FFFFFF; }
.nl-header .elementor-nav-menu--dropdown a { font-size: 14px; color: var(--nl-ink); padding: 11px 18px; }
.nl-header .elementor-nav-menu--dropdown a:hover, .nl-header .elementor-nav-menu--dropdown a.elementor-item-active { background: var(--nl-parchment); color: var(--nl-accent); }
.nl-header .elementor-menu-toggle { background: transparent; color: var(--nl-ink); font-size: 22px; }
.elementor .nl-tel a { color: var(--nl-ink); font-weight: 600; font-size: 14px; text-decoration: none; white-space: nowrap; font-variant-numeric: tabular-nums; }
.elementor .nl-tel a:hover { color: var(--nl-accent); }
.nl-header .elementor-button { font-size: 14px; padding: 9px 18px; }

/* Fil d'Ariane (Rank Math) */
.elementor .nl-crumbs .rank-math-breadcrumb p { margin: 0; font-size: 13px; color: var(--nl-muted); }
.elementor .nl-crumbs .rank-math-breadcrumb a { color: var(--nl-muted); text-decoration: none; }
.elementor .nl-crumbs .rank-math-breadcrumb a:hover { color: var(--nl-accent); text-decoration: underline; }
.elementor .nl-crumbs .separator { margin: 0 .45em; opacity: .6; }

/* ---------- Pied de page ---------- */
.nl-footer .elementor-heading-title { font-size: 13px !important; font-weight: 600; letter-spacing: 0; color: var(--nl-ink); }
.nl-footer .nl-fl ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.nl-footer .nl-fl li, .nl-footer .nl-fl p { font-size: 13px; line-height: 1.5; color: var(--nl-muted); margin: 0; }
.nl-footer .nl-fl a { color: var(--nl-muted); text-decoration: none; }
.nl-footer .nl-fl a:hover { color: var(--nl-ink); text-decoration: underline; }
.nl-footer .nl-fl strong { color: var(--nl-ink); font-weight: 600; }
.nl-footer .nl-legal { border-top: 1px solid var(--nl-hairline); }

/* Barre mobile fixe « Appeler · Devis » */
.nl-mbar { display: none !important; }
@media (max-width: 767px) {
  .nl-mbar { display: flex !important; position: fixed; left: 0; right: 0; bottom: 0; z-index: 998; padding: 10px 14px calc(10px + env(safe-area-inset-bottom, 0px)) !important; gap: 10px; background: rgba(251,251,253,.86); -webkit-backdrop-filter: saturate(180%) blur(20px); backdrop-filter: saturate(180%) blur(20px); border-top: 1px solid rgba(0,0,0,.08); }
  .nl-mbar > .elementor-element { flex: 1 1 0 !important; width: auto !important; }
  .nl-mbar .elementor-button { width: 100%; justify-content: center; padding: 13px 10px; font-size: 16px; }
  body { padding-bottom: 76px; }
  body { font-size: 16px; }
  .elementor .nl-body, .elementor .nl-body p { font-size: 16px; }
  .elementor .nl-logo img { height: 42px; }
}

/* =====================================================================
   EFFETS (activés par nl.js via html.nl-js ; sans JS = tout visible)
   ===================================================================== */
.nl-js .nl-intro { animation: nl-intro 1.1s var(--nl-ease) both; }
.nl-js .nl-intro-2 { animation-delay: .12s; }
.nl-js .nl-intro-3 { animation-delay: .24s; }
@keyframes nl-intro { from { opacity: 0; transform: translateY(18px); filter: blur(8px); } to { opacity: 1; transform: none; filter: none; } }
.nl-js .nl-reveal { opacity: 0; transform: translateY(28px); transition: opacity .9s var(--nl-ease) var(--nl-delay, 0ms), transform .9s var(--nl-ease) var(--nl-delay, 0ms); }
.nl-js .nl-reveal.is-in { opacity: 1; transform: none; }
.nl-js .nl-card.is-in:hover { transform: translateY(-3px); }

/* Phrase qui s'allume mot par mot (sur fond bleu nuit) */
.nl-words .nl-w { color: rgba(245,245,247,.22); transition: color .45s ease; }
.nl-words .nl-w.is-lit { color: #F5F5F7; }
.elementor .nl-words .elementor-heading-title { font-size: clamp(1.875rem, 1rem + 3.2vw, 3.75rem); line-height: 1.1; letter-spacing: -0.022em; }

@media (max-width: 767px) {
  .nl-js .nl-story-step { min-height: 0; opacity: 1; }
  .nl-story-bar { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .nl-js .nl-intro, .nl-js .nl-reveal { animation: none; opacity: 1; transform: none; filter: none; transition: none; }
  .nl-words .nl-w { color: inherit; }
}

/* ---------- Formulaires (Elementor Pro) ---------- */
.nl-form-card { box-shadow: 0 2px 4px rgba(0,0,0,.04), 0 24px 48px -24px rgba(14,27,46,.25) !important; padding: 32px !important; }
.nl-form-card:hover { transform: none; }
.elementor .nl-form .elementor-field-group { margin-bottom: 14px; }
.elementor .nl-form .elementor-field-label { font-size: 13px; font-weight: 600; color: var(--nl-ink); margin-bottom: 6px; }
.elementor .nl-form .elementor-field-textual, .elementor .nl-form select { font: 16px/1.4 var(--nl-font); color: var(--nl-ink); background: #FFFFFF; border: 1px solid #C7C7CC; border-radius: 12px; padding: 12px 14px; min-height: 48px; transition: border-color .2s ease, box-shadow .2s ease; }
.elementor .nl-form .elementor-field-textual:focus, .elementor .nl-form select:focus { border-color: var(--nl-accent); box-shadow: 0 0 0 4px rgba(0,104,168,.15); outline: none; }
.elementor .nl-form .elementor-field-type-acceptance label { font-size: 13px; line-height: 1.45; color: var(--nl-muted); }
.elementor .nl-form .elementor-field-type-acceptance a { color: var(--nl-accent); }
.elementor .nl-form .elementor-button { width: 100%; justify-content: center; min-height: 50px; font-size: 17px; }
.elementor .nl-form .elementor-message { font-size: 15px; margin-top: 12px; }
.elementor .nl-form .elementor-message-success { color: #1E7B34; }

/* Comparatif à deux colonnes (lagon / coque) */
.elementor .nl-compare dl { margin: 0; }
.elementor .nl-compare dl > div { display: grid; grid-template-columns: 1fr 2fr 2fr; gap: 20px; padding: 18px 0; border-top: 1px solid var(--nl-hairline); }
.elementor .nl-compare dt { font-weight: 600; }
.elementor .nl-compare dd { margin: 0; color: #333336; }
.elementor .nl-compare dd strong { display: block; font-size: 12px; font-weight: 600; color: var(--nl-accent); letter-spacing: .02em; margin-bottom: 2px; }
@media (max-width: 767px) { .elementor .nl-compare dl > div { grid-template-columns: 1fr 1fr; } .elementor .nl-compare dt { grid-column: 1 / -1; } }

/* Galeries de chantiers : légendes sous l'image */
.elementor .nl-shot.nl-wide figure { margin: 0; }

/* Image qui accompagne un long texte (pages villes) */
@media (min-width: 768px) { .elementor .nl-stick { position: sticky; top: calc(var(--nl-header-h) + 40px); align-self: start; } }

/* ---------- Articles du blog « Conseils » ---------- */
.elementor .nl-art p, .elementor .nl-art li { font-size: 18px; line-height: 1.65; color: #2A2A2D; max-width: 68ch; }
.elementor .nl-art p + p, .elementor .nl-art p + ul, .elementor .nl-art ul + p { margin-top: 14px; }
.elementor .nl-art ul { margin: 12px 0 0; padding-left: 1.2em; display: grid; gap: 10px; }
.elementor .nl-art li::marker { color: var(--nl-accent); }
.elementor .nl-art strong { color: var(--nl-ink); }
.elementor .nl-chapo p { font-size: clamp(1.1875rem, 1rem + 0.5vw, 1.375rem); line-height: 1.45; border-left: 3px solid var(--nl-accent); padding-left: 18px; }
.elementor .nl-art-h2 .elementor-heading-title { font-size: clamp(1.375rem, 1.1rem + 0.9vw, 1.75rem) !important; }
@media (max-width: 767px) { .elementor .nl-art p, .elementor .nl-art li { font-size: 17px; } }

/* Liste des articles (widget Archive d'Elementor Pro) */
.nl-posts .elementor-post { border-radius: var(--nl-radius); overflow: hidden; background: #FFFFFF; box-shadow: 0 1px 2px rgba(0,0,0,.04), 0 12px 32px -18px rgba(14,27,46,.25); transition: transform .5s var(--nl-ease), box-shadow .5s var(--nl-ease); }
.nl-posts .elementor-post:hover { transform: translateY(-3px); }
.nl-posts .elementor-post__title, .nl-posts .elementor-post__title a { font-family: var(--nl-font); font-size: 20px; line-height: 1.25; font-weight: 600; color: var(--nl-ink); letter-spacing: -0.01em; }
.nl-posts .elementor-post__excerpt p { font-size: 15px; line-height: 1.5; color: var(--nl-muted); }
.nl-posts .elementor-post__read-more { color: var(--nl-accent); font-weight: 500; font-size: 15px; }
.nl-posts .elementor-post__card { border: 0 !important; }

/* ---------- En bref + Sommaire + tableau comparatif (08/11, modèle : page de référence sitesdexception.fr) ---------- */
.elementor .nl-bref .nl-bref-in, .elementor .nl-toc nav { background: var(--nl-parchment); border-radius: var(--nl-radius); padding: 22px 24px; }
.elementor .nl-bref .nl-bref-in { border-left: 4px solid var(--nl-accent); }
.elementor .nl-bref-t, .elementor .nl-toc-t { margin: 0 0 10px; font-size: 13px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--nl-accent); }
.elementor .nl-bref ul { margin: 0; padding-left: 1.1em; display: flex; flex-direction: column; gap: 8px; }
.elementor .nl-bref li { font-size: 16px; line-height: 1.45; }
.elementor .nl-toc ol { margin: 0; padding-left: 1.4em; display: flex; flex-direction: column; gap: 6px; }
.elementor .nl-toc li { font-size: 16px; line-height: 1.4; }
.elementor .nl-toc li::marker { color: var(--nl-muted); font-variant-numeric: tabular-nums; }
.elementor .nl-toc a { color: var(--nl-accent); text-decoration: none; }
.elementor .nl-toc a:hover { text-decoration: underline; }
.elementor .nl-table { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--nl-hairline); border-radius: 12px; }
.elementor .nl-table table { border-collapse: collapse; width: 100%; min-width: 560px; font-size: 15px; line-height: 1.4; }
.elementor .nl-table th, .elementor .nl-table td { text-align: left; vertical-align: top; padding: 10px 12px; border-bottom: 1px solid var(--nl-hairline); }
.elementor .nl-table thead th { background: var(--nl-parchment); font-weight: 600; }
.elementor .nl-table tbody th { font-weight: 600; color: var(--nl-ink); }
.elementor .nl-table tr:last-child td, .elementor .nl-table tr:last-child th { border-bottom: 0; }

/* ---------- Visuels des articles (08/11) : photo d'en-tête + figures et schémas dans le texte ---------- */
.elementor .nl-art-hero { margin: 8px 0 4px; }
.elementor .nl-art-hero img { aspect-ratio: 16 / 9; object-fit: cover; }
.elementor .nl-art-fig { margin-top: 12px; }
.elementor .nl-art-fig img { max-height: 70vh; object-fit: contain; }
.elementor .nl-schema img { background: #fff; border: 1px solid var(--nl-hairline); max-height: none; }
@media (max-width: 767px) {
  .elementor .nl-art-hero { margin-left: -20px; margin-right: -20px; width: calc(100% + 40px) !important; max-width: none !important; }
  .elementor .nl-art-hero img { border-radius: 0; }
  .elementor .nl-art-hero .widget-image-caption, .elementor .nl-art-hero figcaption { padding: 0 20px; }
}

/* Sommaire repliable (08/11) : replié sur mobile par nl.js, ouvert sans JavaScript */
.elementor .nl-toc summary { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0; padding: 4px 0; }
.elementor .nl-toc summary::-webkit-details-marker { display: none; }
.elementor .nl-toc summary::after { content: ""; width: 8px; height: 8px; border-right: 2px solid var(--nl-accent); border-bottom: 2px solid var(--nl-accent); transform: rotate(45deg); transition: transform .2s; margin-right: 4px; flex: none; }
.elementor .nl-toc details[open] > summary::after { transform: rotate(-135deg); }
.elementor .nl-toc details[open] > summary { margin-bottom: 10px; }
.elementor .nl-toc summary:focus-visible { outline: 2px solid var(--nl-accent); outline-offset: 4px; border-radius: 4px; }
