/* ============================================================
   ALVIT PLAQUISTE — Refonte 2026 · v5
   Palette bleu indigo + violet + dégradés sur blanc
   Typo géométrique (Montserrat) en attendant la police du logo
   ============================================================ */

:root {
  /* --- Couleur : indigo / violet / blanc, dégradés --- */
  --ink: #15132b;          /* indigo très foncé */
  --ink-soft: #5a5775;
  --paper: #ffffff;
  --paper-2: #f3f4fb;      /* gris bleuté très clair */
  --paper-card: #ffffff;
  --blue: #38539b;         /* bleu logo (légèrement densifié pour contraste) */
  --blue-deep: #1b2a5e;    /* base sections sombres */
  --violet: #6e54a6;       /* violet logo (densifié) */
  --violet-soft: #9a85c7;
  --accent: #6e54a6;       /* accent = violet */
  --accent-soft: #9a85c7;
  --cyan: #2f7d8a;         /* 3e cible (commerces), reste dans le froid */
  --grad: linear-gradient(135deg, #3F5CA6 0%, #8374B2 100%);   /* dégradé exact du logo */
  --grad-dark: linear-gradient(140deg, #1b2a5e 0%, #2c1f5c 100%);
  --line: #e5e7f2;
  --line-on-dark: rgba(255,255,255,.16);

  /* --- Proportions : échelle modulaire (ratio 1.25, base 18px) --- */
  --s0: 18px; --s1: 22px; --s2: 28px; --s3: 35px; --s4: 44px; --s5: 55px;

  --radius: 8px;
  --radius-lg: 14px;
  --shadow: 0 30px 64px -34px rgba(21,19,43,.42);
  --shadow-sm: 0 12px 28px -18px rgba(21,19,43,.38);
  --shadow-violet: 0 18px 40px -20px rgba(124,58,237,.5);
  --max: 1200px;
  --display: 'Montserrat', 'Inter', sans-serif;
  --body: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

* { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { font-family:var(--body); color:var(--ink); background:var(--paper); line-height:1.6; font-size:var(--s0); -webkit-font-smoothing:antialiased; overflow-x:hidden; }
img { max-width:100%; display:block; }
a { color:inherit; text-decoration:none; }
.wrap { max-width:var(--max); margin:0 auto; padding:0 32px; }
.reveal { opacity:0; transform:translateY(22px); transition:opacity .65s cubic-bezier(.2,.7,.2,1), transform .65s cubic-bezier(.2,.7,.2,1); }
.reveal.in { opacity:1; transform:none; }

.display { font-family:var(--display); font-weight:800; letter-spacing:-1px; line-height:1.02; }
.grad-text { background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; }

/* ---------------- Header ---------------- */
.site-header { position:sticky; top:0; z-index:200; background:rgba(255,255,255,.88); backdrop-filter:blur(12px); border-bottom:1px solid var(--line); }
.nav { display:flex; align-items:center; justify-content:space-between; height:84px; gap:24px; }
.brand { display:flex; align-items:center; gap:13px; }
.brand-logo { height:26px; width:auto; display:block; }
.site-footer .brand-logo { height:30px; }
.menu { display:flex; align-items:center; gap:30px; list-style:none; }
.menu a { font-weight:500; color:var(--ink); font-size:15px; position:relative; padding:4px 0; transition:color .2s; }
.menu a::after { content:""; position:absolute; left:0; bottom:-3px; width:0; height:2px; background:var(--violet); transition:width .25s; }
.menu a:hover, .menu a.active { color:var(--violet); }
.menu a:hover::after, .menu a.active::after { width:100%; }
.menu a.btn::after, .nav-phone::after { display:none; }
.nav-tools { display:flex; align-items:center; gap:20px; }
.nav-phone { display:flex; flex-direction:column; line-height:1.1; border-left:1px solid var(--line); padding-left:20px; }
.nav-phone .np-lab { font-size:11px; letter-spacing:1.5px; text-transform:uppercase; color:var(--ink-soft); font-weight:600; }
.nav-phone .np-num { font-family:var(--display); font-weight:700; font-size:18px; color:var(--blue); }

.btn { display:inline-flex; align-items:center; gap:9px; background:var(--ink); color:#fff; padding:13px 24px; border-radius:var(--radius); font-weight:600; font-size:15px; transition:transform .16s, box-shadow .25s, filter .2s; border:none; cursor:pointer; }
.btn:hover { transform:translateY(-2px); box-shadow:var(--shadow-sm); filter:brightness(1.1); }
.btn-clay { background:var(--grad); color:#fff; }
.btn-clay:hover { box-shadow:var(--shadow-violet); }
.btn-blue { background:var(--blue); color:#fff; }
.btn-blue:hover { background:#1d39ad; }
.btn-paper { background:#fff; color:var(--blue); }
.btn-paper:hover { background:var(--paper-2); }
.btn-line { background:transparent; color:var(--ink); border:1.5px solid var(--ink); }
.btn-line:hover { background:var(--ink); color:#fff; }
.btn-line-light { background:transparent; color:#fff; border:1.5px solid rgba(255,255,255,.5); }
.btn-line-light:hover { background:#fff; color:var(--blue); border-color:#fff; }
.btn-lg { padding:16px 30px; font-size:16px; }
.burger { display:none; background:none; border:none; font-size:27px; color:var(--ink); cursor:pointer; }

/* ---------------- Hero ---------------- */
.hero { background:var(--paper); border-bottom:1px solid var(--line); padding:84px 0 0; position:relative; overflow:hidden; }
.hero::before { content:""; position:absolute; right:-160px; top:-120px; width:560px; height:560px; background:radial-gradient(circle, rgba(124,58,237,.14), transparent 65%); pointer-events:none; }
.hero .wrap { position:relative; }
.hero-grid { display:grid; grid-template-columns:1.55fr 1fr; gap:56px; align-items:end; }
.hero-eyebrow { display:inline-flex; align-items:center; gap:12px; font-size:12.5px; letter-spacing:2.5px; text-transform:uppercase; color:var(--violet); font-weight:700; margin-bottom:26px; }
.hero-eyebrow::before { content:""; width:42px; height:2px; background:var(--grad); }
.hero h1 { font-family:var(--display); font-weight:800; font-size:clamp(44px,6.6vw,82px); line-height:1; letter-spacing:-2px; margin-bottom:26px; text-transform:uppercase; }
.hero h1 em { font-style:normal; background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.hero-lead { font-size:clamp(17px,1.4vw,20px); color:var(--ink-soft); max-width:560px; margin-bottom:34px; }
.hero-actions { display:flex; gap:14px; flex-wrap:wrap; margin-bottom:64px; }
.cartouche { background:var(--grad-dark); color:#fff; border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow); }
.cartouche .ct-head { padding:18px 22px; border-bottom:1px solid var(--line-on-dark); display:flex; align-items:center; justify-content:space-between; }
.cartouche .ct-head b { font-family:var(--display); font-weight:700; font-size:16px; text-transform:uppercase; letter-spacing:.5px; }
.cartouche .ct-head span { font-size:11px; letter-spacing:1.5px; text-transform:uppercase; color:var(--violet-soft); font-weight:700; }
.cartouche .ct-row { display:flex; justify-content:space-between; align-items:baseline; padding:15px 22px; border-bottom:1px solid var(--line-on-dark); }
.cartouche .ct-row:last-child { border-bottom:none; }
.cartouche .ct-row .k { font-size:13.5px; color:rgba(255,255,255,.66); }
.cartouche .ct-row .v { font-family:var(--display); font-weight:700; font-size:19px; }
.cartouche .ct-row .v.gold { color:var(--violet-soft); }
.hero-figure-band { margin-top:64px; height:clamp(170px,22vw,300px); overflow:hidden; position:relative; }
.hero-figure-band img { width:100%; height:100%; object-fit:cover; filter:grayscale(.2) contrast(1.03); }

/* ---------------- Sections ---------------- */
section { padding:104px 0; }
.section-paper2 { background:var(--paper-2); }
.section-dark { background:var(--grad-dark); color:#fff; }
.section-ink { background:var(--ink); color:#fff; }
.section-head { max-width:720px; margin:0 auto 60px; text-align:center; }
.section-head.left { text-align:left; margin-left:0; }
.tag { color:var(--violet); font-weight:700; font-size:12.5px; letter-spacing:2.5px; text-transform:uppercase; display:inline-flex; align-items:center; gap:11px; }
.tag::before { content:""; width:30px; height:2px; background:var(--grad); }
.tag.center { justify-content:center; }
.section-dark .tag, .section-ink .tag { color:var(--violet-soft); }
.section-dark .tag::before, .section-ink .tag::before { background:var(--violet-soft); }
.section-head h2 { font-family:var(--display); font-weight:800; font-size:clamp(32px,4.5vw,var(--s5)); letter-spacing:-1.5px; line-height:1.04; margin:18px 0 16px; }
.section-head p { color:var(--ink-soft); font-size:18px; }
.section-dark .section-head p, .section-ink .section-head p { color:rgba(255,255,255,.78); }

/* ---------------- Audience ---------------- */
.audience { display:grid; grid-template-columns:1fr 1fr; gap:22px; }
.audience.three { grid-template-columns:repeat(3,1fr); }
.aud-card { background:var(--paper-card); border:1px solid var(--line); border-radius:var(--radius-lg); padding:40px 34px; position:relative; overflow:hidden; transition:transform .25s, box-shadow .3s; display:flex; flex-direction:column; }
.aud-card::before { content:""; position:absolute; left:0; top:0; width:100%; height:4px; background:var(--blue); }
.aud-card.pro::before { background:var(--grad); }
.aud-card.commerce::before { background:var(--cyan); }
.aud-card:hover { transform:translateY(-6px); box-shadow:var(--shadow); }
.aud-num { font-family:var(--display); font-weight:800; font-size:15px; color:var(--violet); margin-bottom:14px; letter-spacing:1px; }
.aud-kicker { font-size:12.5px; letter-spacing:2px; text-transform:uppercase; font-weight:700; color:var(--blue); }
.aud-card.pro .aud-kicker { color:var(--violet); }
.aud-card.commerce .aud-kicker { color:var(--cyan); }
.aud-card h3 { font-family:var(--display); font-weight:700; font-size:24px; margin:9px 0 14px; letter-spacing:-.5px; line-height:1.12; }
.aud-card p { color:var(--ink-soft); font-size:15px; margin-bottom:18px; }
.aud-card ul { list-style:none; margin-bottom:24px; flex:1; }
.aud-card ul li { padding-left:26px; position:relative; margin-bottom:11px; font-size:15px; }
.aud-card ul li::before { content:"—"; position:absolute; left:0; top:0; color:var(--violet); font-weight:700; }
.aud-card.commerce ul li::before { color:var(--cyan); }
.aud-delai { background:var(--paper-2); border-radius:var(--radius); padding:12px 15px; font-size:13.5px; margin-bottom:20px; border-left:3px solid var(--cyan); }
.aud-delai b { color:var(--cyan); }

/* ---------------- Stats ---------------- */
.stats { display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid var(--line); border-left:1px solid var(--line); }
.stat { padding:42px 26px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); background:var(--paper-card); }
.stat .num { font-family:var(--display); font-weight:800; font-size:var(--s4); letter-spacing:-1.5px; line-height:1; background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.stat .lab { color:var(--ink-soft); margin-top:10px; font-size:14.5px; }

/* ---------------- Service cards ---------------- */
.cards { display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.card { background:var(--paper-card); border:1px solid var(--line); border-radius:var(--radius-lg); overflow:hidden; display:flex; flex-direction:column; transition:transform .25s, box-shadow .3s; }
.card:hover { transform:translateY(-6px); box-shadow:var(--shadow); }
.card .thumb { aspect-ratio:16/11; overflow:hidden; background:var(--paper-2); }
.card .thumb img { width:100%; height:100%; object-fit:cover; filter:grayscale(.15) contrast(1.02); transition:transform .5s, filter .4s; }
.card:hover .thumb img { transform:scale(1.05); filter:none; }
.card .body { padding:26px 26px 30px; flex:1; display:flex; flex-direction:column; }
.card .ic-num { font-family:var(--display); font-weight:800; font-size:15px; color:var(--violet); margin-bottom:6px; }
.card h3 { font-family:var(--display); font-weight:700; font-size:20px; margin-bottom:9px; letter-spacing:-.3px; }
.card p { color:var(--ink-soft); font-size:14.5px; flex:1; }
.card .more { color:var(--blue); font-weight:600; font-size:14px; margin-top:18px; }

/* Service card : "voir le détail" toggle */
.card-toggle { margin-top:18px; background:transparent; border:1.5px solid var(--line); color:var(--blue); padding:10px 16px; border-radius:var(--radius); font:600 13px/1 var(--body); cursor:pointer; align-self:flex-start; transition:.2s; display:inline-flex; align-items:center; gap:8px; }
.card-toggle:hover { background:var(--blue); color:#fff; border-color:var(--blue); }
.card.open .card-toggle { background:var(--blue); color:#fff; border-color:var(--blue); }
.card-detail { max-height:0; overflow:hidden; opacity:0; transition:max-height .5s cubic-bezier(.2,.7,.2,1), opacity .35s, margin .35s; }
.card.open .card-detail { max-height:800px; opacity:1; margin-top:22px; padding-top:22px; border-top:1px solid var(--line); }
.card-detail p { color:var(--ink-soft); font-size:14.5px; margin-bottom:12px; }
.card-detail ul { list-style:none; margin-bottom:14px; }
.card-detail ul li { padding-left:22px; position:relative; margin-bottom:8px; font-size:14.5px; color:var(--ink); }
.card-detail ul li::before { content:""; position:absolute; left:0; top:9px; width:12px; height:2px; background:var(--accent); }
.card-detail .more-link { color:var(--blue); font-weight:600; font-size:14px; display:inline-block; }

/* ---------------- Split ---------------- */
.split { display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:center; }
.split .img-frame img, .split > div > img, .split > img { border-radius:var(--radius-lg); box-shadow:var(--shadow); aspect-ratio:4/3; object-fit:cover; width:100%; }
.split h2 { font-family:var(--display); font-weight:800; font-size:clamp(28px,3.6vw,var(--s4)); letter-spacing:-1px; margin-bottom:18px; line-height:1.06; }
.split p { color:var(--ink-soft); margin-bottom:16px; }
.section-dark .split p, .section-ink .split p { color:rgba(255,255,255,.8); }
.checks { list-style:none; margin:22px 0; }
.checks li { padding-left:32px; position:relative; margin-bottom:13px; }
.checks li::before { content:""; position:absolute; left:0; top:11px; width:16px; height:2px; background:var(--grad); }

/* ---------------- References ---------------- */
.refs { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.ref { background:rgba(255,255,255,.05); border:1px solid var(--line-on-dark); border-radius:var(--radius-lg); padding:32px; }
.ref .rt { font-family:var(--display); font-weight:800; font-size:var(--s3); color:#fff; letter-spacing:-1px; }
.ref .rt em { color:var(--violet-soft); font-style:normal; }
.ref .rd { color:rgba(255,255,255,.74); font-size:15px; margin-top:8px; }

/* bandeau de références qui défile */
.ref-marquee { overflow:hidden; -webkit-mask:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent); mask:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent); }
.ref-track { display:flex; gap:18px; width:max-content; animation:refscroll 36s linear infinite; }
.ref-track:hover { animation-play-state:paused; }
.ref-chip { flex:0 0 auto; min-width:248px; background:rgba(255,255,255,.06); border:1px solid var(--line-on-dark); border-radius:var(--radius-lg); padding:26px 30px; }
.ref-chip .rc-num { font-family:var(--display); font-weight:800; font-size:32px; letter-spacing:-1px; color:#fff; line-height:1; }
.ref-chip .rc-num em { color:var(--violet-soft); font-style:normal; }
.ref-chip .rc-lab { color:rgba(255,255,255,.74); font-size:14.5px; margin-top:10px; }
@keyframes refscroll { to { transform:translateX(calc(-50% - 9px)); } }

/* ---------------- Guarantees ---------------- */
.guarantees { display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.gtile { background:var(--paper-card); border:1px solid var(--line); border-radius:var(--radius-lg); padding:28px 24px; }
.gtile .gic { font-family:var(--display); font-weight:800; font-size:22px; letter-spacing:-.5px; background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; margin-bottom:14px; }
.gtile h4 { font-family:var(--display); font-weight:700; font-size:18px; margin-bottom:6px; }
.gtile p { color:var(--ink-soft); font-size:14px; }

/* ---------------- CTA ---------------- */
.cta-band { position:relative; overflow:hidden; background:var(--grad); color:#fff; border-radius:var(--radius-lg); padding:64px 56px; display:grid; grid-template-columns:1.4fr 1fr; gap:40px; align-items:center; box-shadow:var(--shadow-violet); }
.cta-band::before { content:""; position:absolute; right:-80px; bottom:-80px; width:300px; height:300px; background:radial-gradient(circle, rgba(255,255,255,.18), transparent 70%); }
.cta-band > * { position:relative; }
.cta-band h2 { font-family:var(--display); font-weight:800; font-size:clamp(28px,3.6vw,var(--s4)); letter-spacing:-1px; margin-bottom:14px; }
.cta-band p { opacity:.94; font-size:17px; }
.cta-actions { display:flex; flex-direction:column; gap:12px; }
.cta-actions .btn { justify-content:center; }
.cta-phone { font-family:var(--display); font-weight:800; font-size:26px; color:#fff; display:flex; align-items:center; gap:10px; }
.cta-phone small { display:block; font-family:var(--body); font-size:12.5px; font-weight:400; color:rgba(255,255,255,.85); letter-spacing:.5px; }

/* ---------------- Gallery ---------------- */
.gallery { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.gallery a { display:block; border-radius:var(--radius); overflow:hidden; aspect-ratio:1/1; position:relative; }
.gallery img { width:100%; height:100%; object-fit:cover; filter:grayscale(.12) contrast(1.02); transition:transform .5s, filter .4s; }
.gallery a:hover img { transform:scale(1.06); filter:none; }

/* ---------------- Contact ---------------- */
.contact-grid { display:grid; grid-template-columns:1fr 1fr; gap:52px; align-items:start; }
.info-list { list-style:none; }
.info-list li { display:flex; gap:16px; align-items:flex-start; margin-bottom:24px; }
.info-list .ic { width:48px; height:48px; flex-shrink:0; background:var(--paper-2); border:1px solid var(--line); color:var(--violet); border-radius:10px; display:grid; place-items:center; font-size:19px; }
.info-list strong { display:block; font-size:16px; margin-bottom:3px; font-family:var(--display); font-weight:700; }
.info-list span { color:var(--ink-soft); font-size:15px; }
form.contact-form { background:var(--paper-card); border:1px solid var(--line); border-radius:var(--radius-lg); padding:36px; box-shadow:var(--shadow-sm); }
.field { margin-bottom:18px; }
.field label { display:block; font-size:14px; font-weight:600; margin-bottom:7px; }
.field input, .field textarea { width:100%; padding:13px 15px; border:1px solid var(--line); border-radius:var(--radius); font-family:var(--body); font-size:15px; background:var(--paper-2); transition:border .2s, background .2s; }
.field input:focus, .field textarea:focus { outline:none; border-color:var(--violet); background:#fff; }
.field textarea { resize:vertical; min-height:120px; }
.consent { font-size:13px; color:var(--ink-soft); display:flex; gap:8px; margin-bottom:18px; }
.map-embed { border:0; width:100%; height:320px; border-radius:var(--radius-lg); margin-top:16px; }

/* ---------------- Page hero (inner) ---------------- */
.page-hero { background:var(--grad-dark); color:#fff; padding:88px 0 78px; position:relative; overflow:hidden; }
.page-hero::before { content:""; position:absolute; right:-80px; top:-80px; width:360px; height:360px; background:radial-gradient(circle, rgba(124,58,237,.4), transparent 68%); }
.page-hero .wrap { position:relative; }
.page-hero h1 { font-family:var(--display); font-weight:800; font-size:clamp(34px,5vw,var(--s5)); letter-spacing:-1.5px; text-transform:uppercase; }
.page-hero p { color:rgba(255,255,255,.82); margin-top:14px; font-size:18px; max-width:640px; }
.breadcrumb { font-size:12.5px; color:var(--violet-soft); margin-bottom:16px; letter-spacing:2px; text-transform:uppercase; }
.breadcrumb a { color:rgba(255,255,255,.72); }

/* ---------------- Footer ---------------- */
.site-footer { background:var(--ink); color:rgba(255,255,255,.72); padding:78px 0 30px; }
.footer-grid { display:grid; grid-template-columns:1.7fr 1fr 1fr 1.1fr; gap:42px; margin-bottom:48px; }
.site-footer h4 { color:#fff; font-family:var(--display); font-weight:700; font-size:15px; margin-bottom:18px; text-transform:uppercase; letter-spacing:.5px; }
.site-footer ul { list-style:none; }
.site-footer ul li { margin-bottom:10px; }
.site-footer a { color:rgba(255,255,255,.72); font-size:14px; transition:color .2s; }
.site-footer a:hover { color:var(--violet-soft); }
.footer-brand p { font-size:14px; line-height:1.7; margin-top:16px; max-width:340px; }
.footer-badges { display:flex; gap:10px; margin-top:18px; flex-wrap:wrap; }
.footer-badges .fb { border:1px solid var(--line-on-dark); border-radius:var(--radius); padding:6px 12px; font-size:12px; font-weight:700; letter-spacing:.5px; color:#fff; }
.footer-bottom { border-top:1px solid var(--line-on-dark); padding-top:22px; font-size:13px; display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; color:rgba(255,255,255,.5); }

/* ============================================================
   MOBILE — passe complète (v6)
   ============================================================ */

/* --- Hygiène mobile globale --- */
html { -webkit-text-size-adjust:100%; overflow-x:hidden; }
a, button, input, textarea, label { -webkit-tap-highlight-color:rgba(110,84,166,.15); }
/* 16px mini sur les champs : en dessous, iOS zoome tout seul au focus */
.field input, .field textarea { font-size:16px; }
/* Le reveal ne masque le contenu QUE si le JS a démarré (sinon page blanche si JS KO) */
.reveal { opacity:1; transform:none; }
.js .reveal { opacity:0; transform:translateY(22px); }
.js .reveal.in { opacity:1; transform:none; }

/* --- Tablette / mobile --- */
@media (max-width:960px){
  .cards, .gallery, .refs, .guarantees { grid-template-columns:repeat(2,1fr); }
  .stats { grid-template-columns:repeat(2,1fr); }
  .hero-grid, .audience, .audience.three, .split, .contact-grid, .cta-band { grid-template-columns:1fr; gap:36px; }
  .footer-grid { grid-template-columns:1fr 1fr; }
  .nav-phone { display:none; }
  .nav { height:64px; }
  .burger { display:grid; place-items:center; width:44px; height:44px; margin-right:-10px; font-size:24px; }
  .menu {
    position:fixed; inset:64px 0 auto 0;
    max-height:calc(100vh - 64px); max-height:calc(100dvh - 64px);
    overflow-y:auto; overscroll-behavior:contain;
    background:#fff; flex-direction:column; align-items:stretch; gap:0;
    padding:8px 22px calc(28px + env(safe-area-inset-bottom));
    border-bottom:1px solid var(--line);
    transform:translateY(-115%); visibility:hidden;
    transition:transform .32s cubic-bezier(.2,.7,.2,1), visibility .32s;
    box-shadow:var(--shadow);
  }
  .menu.open { transform:translateY(0); visibility:visible; }
  .menu li { width:100%; }
  .menu li a { display:block; padding:16px 0; min-height:52px; font-size:17px; border-bottom:1px solid var(--line); }
  .menu a::after { display:none; }
  .menu .btn { margin-top:14px; justify-content:center; min-height:52px; }
  body.nav-open { overflow:hidden; }
  /* le bouton flottant ne doit pas manger les liens de pied de page */
  .site-footer { padding-bottom:100px; }
}

/* --- Téléphone --- */
@media (max-width:560px){
  .cards, .gallery, .refs, .guarantees { grid-template-columns:1fr; }
  .stats { grid-template-columns:repeat(2,1fr); }
  section { padding:58px 0; }
  .wrap { padding:0 20px; }
  .brand-logo { height:20px; }

  .hero { padding-top:40px; }
  .hero-eyebrow { font-size:11.5px; letter-spacing:1.8px; margin-bottom:20px; }
  .hero h1 { font-size:clamp(32px,9.4vw,48px); letter-spacing:-1px; margin-bottom:20px; }
  .hero-lead { font-size:16.5px; margin-bottom:26px; }
  .hero-actions { flex-direction:column; align-items:stretch; gap:10px; margin-bottom:44px; }
  .hero-actions .btn { width:100%; justify-content:center; min-height:54px; }
  .hero-figure-band { margin-top:40px; }
  .cartouche .ct-head, .cartouche .ct-row { padding-left:18px; padding-right:18px; }
  .cartouche .ct-row { gap:14px; }
  .cartouche .ct-row .k { font-size:13px; }
  .cartouche .ct-row .v { font-size:17px; text-align:right; }

  .section-head { margin-bottom:38px; }
  .section-head h2 { font-size:clamp(27px,7.6vw,36px); letter-spacing:-.8px; }
  .section-head p { font-size:16px; }

  .aud-card { padding:30px 24px; }
  .aud-card h3 { font-size:21px; }
  .card .body { padding:22px 22px 26px; }
  .card-toggle, .cta-actions .btn { width:100%; justify-content:center; }
  .split { gap:30px; }
  .gtile { padding:24px 22px; }

  .cta-band { padding:36px 24px; }
  .cta-phone { font-size:23px; }
  .ref-chip { min-width:200px; padding:22px 24px; }
  .ref-chip .rc-num { font-size:26px; }

  .page-hero { padding:56px 0 48px; }
  .page-hero p { font-size:16.5px; }

  form.contact-form { padding:24px 20px; }
  .info-list li { margin-bottom:20px; }
  .info-list .ic { width:42px; height:42px; font-size:17px; }
  .map-embed { height:260px; }

  .footer-grid { grid-template-columns:1fr; gap:32px; margin-bottom:36px; }
  .footer-brand p { max-width:none; }
  .footer-bottom { flex-direction:column; gap:8px; }
}

/* --- Petits téléphones (SE, A-series) --- */
@media (max-width:380px){
  .wrap { padding:0 16px; }
  .hero h1 { letter-spacing:-.5px; }
  .stats { grid-template-columns:1fr; }
  .btn { padding:13px 18px; font-size:14.5px; }
  .btn-lg { padding:15px 20px; font-size:15px; }
}

/* --- Zone tactile mini 44px sur les boutons secondaires --- */
.card-toggle { padding:13px 18px; min-height:44px; }
.site-footer ul li a { display:inline-block; padding:3px 0; }

/* Bouton flottant Appeler (mobile uniquement) */
.fab-call { display:none; position:fixed; right:14px; bottom:calc(14px + env(safe-area-inset-bottom)); width:56px; height:56px; border-radius:50%; background:var(--grad); color:#fff; place-items:center; box-shadow:0 14px 28px -8px rgba(110,84,166,.55), 0 4px 10px rgba(0,0,0,.18); z-index:300; transition:transform .2s, box-shadow .25s; }
.fab-call:hover, .fab-call:active { transform:translateY(-2px) scale(1.04); }
.fab-call svg { width:24px; height:24px; }
@media (max-width:960px){ .fab-call { display:grid; } }

/* --- Respect du réglage "réduire les animations" du téléphone --- */
@media (prefers-reduced-motion:reduce){
  *, *::before, *::after { animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; }
  html { scroll-behavior:auto; }
  .js .reveal { opacity:1 !important; transform:none !important; }
  .ref-track { animation:none; }
}

/* --- Zones tactiles : liens fins du contenu --- */
.card-detail .more-link { display:inline-flex; align-items:center; min-height:44px; }
.brand { min-height:44px; }

/* ---------------- Formulaire : piege a robots + messages ---------------- */
.pot { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.form-alerte { background:#fdf1f1; border:1px solid #e9c4c4; border-left:3px solid #c0392b; color:#8e2b21; border-radius:var(--radius); padding:13px 16px; font-size:14.5px; margin-bottom:20px; }
.form-alerte.ok { background:#f0f7f2; border-color:#c2ddcb; border-left-color:#2f7d5a; color:#245c43; }
.field input:user-invalid, .field textarea:user-invalid { border-color:#c0392b; background:#fdf7f7; }

/* ---------------- Page de confirmation ---------------- */
.merci { text-align:center; max-width:620px; margin:0 auto; }
.merci .coche { width:76px; height:76px; margin:0 auto 26px; border-radius:50%; background:var(--grad); display:grid; place-items:center; box-shadow:var(--shadow-violet); }
.merci .coche svg { width:34px; height:34px; }
.merci h1 { font-family:var(--display); font-weight:800; font-size:clamp(30px,4.6vw,var(--s4)); letter-spacing:-1.2px; line-height:1.06; margin-bottom:16px; }
.merci p { color:var(--ink-soft); font-size:17px; margin-bottom:14px; }
.merci .actions { display:flex; gap:12px; justify-content:center; flex-wrap:wrap; margin-top:32px; }
@media (max-width:560px){ .merci .actions { flex-direction:column; } .merci .actions .btn { width:100%; justify-content:center; } }

/* ---------------- Classes utilisees dans le HTML sans definition ---------------- */
.section-soft { background:var(--paper-2); }
.btn-white { background:#fff; color:var(--blue); }
.btn-white:hover { background:var(--paper-2); }

/* ---------------- Carte : chargement au clic (RGPD) ---------------- */
.carte { margin-top:16px; }
.carte-btn { width:100%; min-height:220px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; text-align:center; padding:26px 22px; background:var(--paper-2); border:1px dashed #c9cde4; border-radius:var(--radius-lg); cursor:pointer; font-family:var(--body); color:var(--ink); transition:border-color .2s, background .2s; }
.carte-btn:hover { border-color:var(--violet); background:#eef0fa; }
.carte-pin { font-size:26px; }
.carte-btn b { font-family:var(--display); font-weight:700; font-size:17px; }
.carte-btn small { font-size:14px; color:var(--ink-soft); }
.carte-btn em { font-style:normal; font-size:12px; color:#8a87a0; max-width:340px; margin-top:8px; line-height:1.45; }

/* ---------------- Pages legales ---------------- */
.legal { max-width:820px; }
.legal h2 { font-family:var(--display); font-weight:700; font-size:23px; letter-spacing:-.5px; margin:42px 0 14px; padding-top:22px; border-top:1px solid var(--line); }
.legal h2:first-child { margin-top:0; padding-top:0; border-top:none; }
.legal h3 { font-family:var(--display); font-weight:700; font-size:17px; margin:24px 0 8px; }
.legal p { color:var(--ink-soft); margin-bottom:14px; }
.legal a { color:var(--blue); font-weight:600; text-decoration:underline; text-underline-offset:2px; }
.legal ul { list-style:none; margin:0 0 16px; }
.legal ul li { padding-left:22px; position:relative; margin-bottom:9px; color:var(--ink-soft); }
.legal ul li::before { content:""; position:absolute; left:0; top:11px; width:12px; height:2px; background:var(--grad); }
.legal-table { width:100%; border-collapse:collapse; margin-bottom:18px; font-size:15px; }
.legal-table th, .legal-table td { text-align:left; vertical-align:top; padding:11px 14px; border-bottom:1px solid var(--line); }
.legal-table th { width:38%; font-weight:600; color:var(--ink); background:var(--paper-2); }
.legal-table td { color:var(--ink-soft); }
.legal-todo { background:#fffaf0; border:1px solid #f0dcae; border-left:3px solid #d79b18; border-radius:var(--radius); padding:14px 17px; font-size:14.5px; color:#7a5a12; margin-bottom:16px; }
.legal-maj { margin-top:38px; padding-top:20px; border-top:1px solid var(--line); font-size:13.5px; color:#9a97ad; }
@media (max-width:560px){
  .legal h2 { font-size:20px; margin-top:34px; }
  .legal-table, .legal-table tbody, .legal-table tr, .legal-table th, .legal-table td { display:block; width:100%; }
  .legal-table th { border-bottom:none; padding-bottom:4px; background:transparent; font-size:12.5px; letter-spacing:.6px; text-transform:uppercase; color:var(--violet); }
  .legal-table td { padding-top:0; padding-left:14px; }
}
.footer-legal a { text-decoration:underline; text-underline-offset:2px; }

/* ============================================================
   CORRECTIONS v7 — retours Vitor
   ============================================================ */

/* --- 1. Bouton « Étude gratuite » de l'en-tête : illisible sur le
       dégradé clair. Fond bleu plein, contraste 7:1 au lieu de 3,4:1. --- */
.menu .btn-clay { background:var(--blue-deep); }
.menu .btn-clay:hover { background:var(--violet); box-shadow:var(--shadow-violet); }

/* --- 2. Hero : le bloc chiffres remonte, le vide sous les boutons se resserre --- */
.hero-grid { align-items:start; }
.cartouche { margin-top:34px; }
.hero-actions { margin-bottom:34px; }

/* --- 3. Bandeau photo : l'image carrée écrasée dans une bande basse ne
       montrait qu'un bout de mur. Bande plus haute, cadrage recentré. --- */
.hero-figure-band { margin-top:26px; height:clamp(230px,30vw,420px); border-radius:var(--radius-lg); }
.hero-figure-band img { object-position:center 42%; filter:grayscale(.08) contrast(1.04); }

/* --- 4. Respiration générale : 104 px entre les sections, c'était trop --- */
section { padding:74px 0; }
.section-head { margin-bottom:44px; }

/* --- 5. Références : bandeau plus présent, il arrive plus haut --- */
.section-dark { padding-top:66px; padding-bottom:66px; }
.ref-marquee { margin-top:6px; }
.ref-chip { background:rgba(255,255,255,.09); border-color:rgba(255,255,255,.22); min-width:262px; }
.ref-chip .rc-num { font-size:35px; }
.ref-chip .rc-lab { font-size:15px; color:rgba(255,255,255,.82); }

/* --- 6. Cartes profils : le vide en bas venait des hauteurs égalisées.
       Chaque carte prend maintenant sa hauteur réelle. --- */
.audience { align-items:start; }
.aud-card ul { flex:none; margin-bottom:22px; }
.aud-card { padding:34px 30px; }

/* --- 7. Garanties : moins d'air entre les tuiles --- */
.guarantees { gap:14px; }
.gtile { padding:24px 22px; }

@media (max-width:560px){
  section { padding:48px 0; }
  .section-head { margin-bottom:32px; }
  .hero-figure-band { height:clamp(200px,52vw,300px); margin-top:22px; }
  .cartouche { margin-top:26px; }
}

/* ============================================================
   FICHES CHANTIER — page Réalisations
   ============================================================ */

/* --- Filtres --- */
.ch-filtres { display:flex; flex-wrap:wrap; gap:9px; margin-bottom:32px; }
.ch-f { background:#fff; border:1px solid var(--line); color:var(--ink); padding:11px 18px; border-radius:99px; font:600 14px/1 var(--body); cursor:pointer; transition:.18s; min-height:44px; }
.ch-f:hover { border-color:var(--violet); color:var(--violet); }
.ch-f.on { background:var(--grad); color:#fff; border-color:transparent; }

/* --- Grille de fiches --- */
.chantiers { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; align-items:start; }
.chantier { background:var(--paper-card); border:1px solid var(--line); border-radius:var(--radius-lg); overflow:hidden; display:flex; flex-direction:column; transition:transform .25s, box-shadow .3s; }
.chantier:hover { transform:translateY(-5px); box-shadow:var(--shadow); }
.chantier[hidden] { display:none; }

.ch-cover { position:relative; aspect-ratio:4/3; overflow:hidden; background:var(--paper-2); }
.ch-cover img { width:100%; height:100%; object-fit:cover; filter:grayscale(.12) contrast(1.03); transition:transform .5s, filter .4s; }
.chantier:hover .ch-cover img { transform:scale(1.05); filter:none; }
.ch-badge { position:absolute; left:14px; top:14px; background:rgba(21,19,43,.82); backdrop-filter:blur(6px); color:#fff; font-size:11.5px; font-weight:700; letter-spacing:1.2px; text-transform:uppercase; padding:7px 12px; border-radius:6px; }

.ch-body { padding:22px 22px 24px; display:flex; flex-direction:column; }
.ch-body h3 { font-family:var(--display); font-weight:700; font-size:19px; letter-spacing:-.3px; line-height:1.2; margin-bottom:5px; }
.ch-lieu { font-size:13px; color:var(--violet); font-weight:600; margin-bottom:11px; }
.ch-desc { color:var(--ink-soft); font-size:14.5px; margin-bottom:16px; }

.ch-toggle { align-self:flex-start; background:transparent; border:1.5px solid var(--line); color:var(--blue); padding:11px 17px; border-radius:var(--radius); font:600 13.5px/1 var(--body); cursor:pointer; min-height:44px; transition:.2s; }
.ch-toggle:hover { background:var(--blue); color:#fff; border-color:var(--blue); }
.chantier.open .ch-toggle { background:var(--blue); color:#fff; border-color:var(--blue); }

.ch-detail { max-height:0; overflow:hidden; opacity:0; transition:max-height .5s cubic-bezier(.2,.7,.2,1), opacity .35s, margin .35s; }
.chantier.open .ch-detail { max-height:1400px; opacity:1; margin-top:18px; }
.ch-gallery { display:grid; grid-template-columns:repeat(3,1fr); gap:7px; }
.ch-gallery a { display:block; aspect-ratio:1/1; overflow:hidden; border-radius:6px; }
.ch-gallery img { width:100%; height:100%; object-fit:cover; transition:transform .4s; }
.ch-gallery a:hover img { transform:scale(1.08); }

@media (max-width:960px){ .chantiers { grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){
  .chantiers { grid-template-columns:1fr; gap:18px; }
  .ch-filtres { gap:7px; margin-bottom:24px; }
  .ch-f { padding:10px 15px; font-size:13.5px; }
  .ch-toggle { width:100%; text-align:center; }
  .ch-gallery { grid-template-columns:repeat(3,1fr); gap:6px; }
}

/* --- Bouton « Étude gratuite » de l'en-tête : la règle .menu a (0,1,1)
       écrasait la couleur du bouton (0,1,0) → texte sombre sur fond marine.
       On remonte la priorité du sélecteur. --- */
.menu li a.btn, .menu li a.btn-clay, .menu li a.btn:hover, .menu li a.btn-clay:hover { color:#fff; }
.menu li a.btn-clay { background:var(--blue-deep); border:1px solid transparent; }
.menu li a.btn-clay:hover { background:var(--violet); }

/* --- Contenu déplié d'une fiche chantier --- */
.ch-st { font-family:var(--display); font-weight:700; font-size:14px; letter-spacing:.3px; margin-bottom:10px; color:var(--ink); }
.ch-presta { list-style:none; margin:0 0 16px; }
.ch-presta li { position:relative; padding-left:20px; margin-bottom:7px; font-size:14px; color:var(--ink-soft); }
.ch-presta li::before { content:""; position:absolute; left:0; top:9px; width:11px; height:2px; background:var(--grad); }

/* --- Index de tous les chantiers --- */
.ch-index { list-style:none; display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.ch-index a { display:flex; flex-direction:column; gap:3px; background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:15px 17px; transition:.2s; min-height:44px; }
.ch-index a:hover { border-color:var(--violet); box-shadow:var(--shadow-sm); transform:translateY(-2px); }
.ch-index b { font-family:var(--display); font-weight:700; font-size:15px; letter-spacing:-.2px; }
.ch-index span { font-size:12.5px; color:var(--ink-soft); }
.ch-index em { font-style:normal; font-size:11px; letter-spacing:1.2px; text-transform:uppercase; font-weight:700; color:var(--violet); margin-top:3px; }
@media (max-width:960px){ .ch-index { grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .ch-index { grid-template-columns:1fr; } }

/* --- Fiches chantier sans photo : le volume tient lieu de couverture --- */
.ch-cover-chiffres { background:var(--grad-dark); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; position:relative; overflow:hidden; }
.ch-cover-chiffres::before { content:""; position:absolute; right:-60px; top:-60px; width:220px; height:220px; background:radial-gradient(circle, rgba(124,58,237,.35), transparent 70%); }
.chc-num { font-family:var(--display); font-weight:800; font-size:clamp(40px,5vw,54px); letter-spacing:-2px; line-height:1; color:#fff; position:relative; }
.chc-unite { font-size:13px; letter-spacing:2.4px; text-transform:uppercase; font-weight:700; color:var(--violet-soft); position:relative; }
.chc-annee { margin-top:9px; font-size:12px; letter-spacing:1.6px; color:rgba(255,255,255,.6); border-top:1px solid var(--line-on-dark); padding-top:8px; position:relative; }
.ch-nophoto { font-size:13px; color:var(--ink-soft); background:var(--paper-2); border-left:3px solid var(--violet-soft); border-radius:var(--radius); padding:12px 14px; margin:0; }

/* --- Encarts des 3 profils : un par carte, couleur alignée sur la carte --- */
.aud-delai.bleu { border-left-color:var(--blue); }
.aud-delai.bleu b { color:var(--blue); }
.aud-delai.violet { border-left-color:var(--violet); }
.aud-delai.violet b { color:var(--violet); }

/* --- Les 3 cartes profils sont de nouveau alignées, boutons au même niveau --- */
.audience { align-items:stretch; }
.aud-card ul { flex:1; }
