:root{
  /* brand */
  --green:#06392f; --green-d:#0c5341;          /* primary + hover */
  --accent:#c16945; --accent-d:#a9542f;        /* secondary + hover */
  /* neutrals */
  --paper:#f1efeb; --paper-2:#e9e7e2;
  --ink:#1b1c1a; --ink-soft:#6b6d68; --line:#d8d6cf;
  --white:#fff; --black:#000;
  /* dark-band neutral greys (text/borders on ink/green bands) */
  --ink-muted:#9a9b95; --ink-line:#34352f; --ink-faint:#b9bab5;
  --ink-dim:#7a7b75; --ink-border:#5a5b54;
  /* functional — WhatsApp FAB uses brand green */
  --fab:var(--green); --fab-shadow:color-mix(in srgb, var(--green) 40%, transparent);
  --font-display:'Helvetica Neue',Helvetica,Arial,sans-serif;
}
/* self-hosted display font */
@font-face{
  font-family:'Bebas Neue';
  src:url('../fonts/BebasNeue-Regular.ttf') format('truetype'),
      url('../fonts/BebasNeue-Regular.otf') format('opentype');
  font-weight:400;font-style:normal;font-display:swap;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0;background:var(--paper);color:var(--ink);font-family:'Outfit',sans-serif;-webkit-font-smoothing:antialiased;overflow-x:clip;}
.mono{font-family:'Outfit',sans-serif;}
.display{font-family:var(--font-display),sans-serif;}
a{color:inherit;text-decoration:none;}
img{display:block;max-width:100%;}
.wrap{max-width:1180px;margin:0 auto;padding:0 32px;}

/* ---- top utility bar ---- */
.etop{background:var(--green);color:var(--white);font-family:'Outfit',sans-serif;letter-spacing:.02em;}
.etop .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:38px;padding-top:6px;padding-bottom:6px;}
.etop .left{display:flex;align-items:center;gap:22px;flex-wrap:wrap;}
.etop a,.etop span.item{display:inline-flex;align-items:center;gap:8px;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:color-mix(in srgb, var(--white) 88%, transparent);transition:color .15s;}
.etop .left a:hover{color:var(--white);}
.etop i,.etop .left svg{width:14px;height:14px;color:var(--accent);flex:none;}
.etop .social{display:flex;align-items:center;gap:4px;}
.etop .social a{width:30px;height:30px;justify-content:center;gap:0;border:1px solid color-mix(in srgb, var(--white) 28%, transparent);color:var(--white);transition:.16s;}
.etop .social a:hover{background:var(--accent);border-color:var(--accent);}
.etop .social a i,.etop .social a svg{width:14px;height:14px;color:var(--white);}
.etop .social .brand-ic{width:14px;height:14px;}
@media(max-width:760px){
  .etop .wrap{min-height:34px;}
  .etop .addr{display:none;}
  .etop a,.etop span.item{font-size:.62rem;letter-spacing:.04em;}
}

/* ---- header ---- */
.eh{position:sticky;top:0;z-index:50;background:color-mix(in srgb, var(--paper) 86%, transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);transition:transform .32s cubic-bezier(.4,0,.2,1),box-shadow .2s;will-change:transform;}
.eh.eh-hidden{transform:translateY(-100%);}
.eh .wrap{display:flex;align-items:center;height:70px;gap:20px;}
.elogo{display:flex;align-items:center;gap:10px;}
.elogo .m{width:170px;height:58px;display:grid;place-items:center;flex:none;}
.elogo .m img{display:block;width:170px;height:58px;object-fit:contain;}
/* hamburger (mobile only) */
.eburger{display:none;margin-left:auto;width:44px;height:44px;border:1.5px solid var(--ink);background:transparent;cursor:pointer;padding:0;place-items:center;flex-direction:column;gap:5px;}
.eburger span{display:block;width:20px;height:2px;background:var(--ink);transition:transform .25s ease,opacity .2s ease;}
.eburger.open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.eburger.open span:nth-child(2){opacity:0;}
.eburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
/* mobile slide-down panel */
.mnav{display:none;position:fixed;top:0;left:0;right:0;bottom:0;z-index:120;background:var(--paper);transform:translateX(100%);transition:transform .32s cubic-bezier(.2,.7,.3,1);overflow-y:auto;}
.mnav.open{transform:translateX(0);}
.mnav .mhead{display:flex;align-items:center;justify-content:space-between;height:70px;padding:0 24px;border-bottom:1px solid var(--line);}
.mnav .mclose{width:44px;height:44px;border:1.5px solid var(--ink);background:transparent;display:grid;place-items:center;cursor:pointer;}
.mnav .mclose i{width:20px;height:20px;}
.mnav .mlist{display:flex;flex-direction:column;padding:14px 24px 30px;}
.mnav .mlist > a,.mnav .msub-t{font-family:var(--font-display);font-weight:800;text-transform:uppercase;font-size:1.5rem;letter-spacing:.01em;padding:18px 0;border-bottom:1px solid var(--line);color:var(--ink);display:flex;align-items:center;justify-content:space-between;}
.mnav .mlist > a .ix{font-family:'Outfit',sans-serif;font-size:.7rem;color:var(--accent);font-weight:400;}
.mnav .msub{display:flex;flex-direction:column;border-bottom:1px solid var(--line);padding-bottom:10px;}
.mnav .msub-t{border-bottom:none;padding-bottom:8px;}
.mnav .msub a{font-family:'Outfit',sans-serif;font-weight:500;font-size:.82rem;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);padding:11px 0 11px 14px;display:flex;align-items:center;gap:10px;}
.mnav .msub a .no{color:var(--accent);font-size:.72rem;}
.mnav .msub a:active{color:var(--green);}
.mnav .mcta{margin-top:24px;display:flex;flex-direction:column;gap:12px;}
.mnav .mcta .ebtn{justify-content:center;}
.mnav .mcta .mphone{display:flex;align-items:center;justify-content:center;gap:9px;font-family:'Outfit',sans-serif;font-weight:500;font-size:.8rem;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);padding:12px;border:1.5px solid var(--line);}
.mnav .mcta .mphone i{width:16px;height:16px;color:var(--accent);}
.emenu{margin-left:auto;display:flex;gap:24px;}
.emenu a{font-family:'Outfit',sans-serif;font-weight:500;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);transition:.15s;}
.emenu a:hover,.emenu a.active{color:var(--ink);}
/* expertise dropdown */
.emenu .has-drop{position:relative;display:flex;align-items:center;}
.emenu .has-drop > a{display:inline-flex;align-items:center;gap:5px;}
.emenu .has-drop > a i{width:12px;height:12px;transition:transform .22s ease;}
.emenu .has-drop:hover > a i{transform:rotate(180deg);}
.emenu .has-drop::after{content:"";position:absolute;top:100%;left:-10px;right:-10px;height:16px;}
.drop{position:absolute;top:calc(100% + 14px);left:50%;transform:translateX(-50%) translateY(8px);min-width:248px;background:var(--white);border:1.5px solid var(--ink);box-shadow:0 20px 44px color-mix(in srgb, var(--ink) 16%, transparent);padding:5px;display:flex;flex-direction:column;opacity:0;visibility:hidden;transition:opacity .2s ease,transform .22s cubic-bezier(.2,.7,.3,1);z-index:60;}
.emenu .has-drop:hover .drop{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0);}
.drop::before{content:"";position:absolute;bottom:100%;left:50%;transform:translateX(-50%);border:7px solid transparent;border-bottom-color:var(--ink);}
.drop::after{content:"";position:absolute;bottom:100%;left:50%;transform:translateX(-50%) translateY(1.5px);border:6px solid transparent;border-bottom-color:var(--white);}
.drop a{display:flex;align-items:center;gap:10px;padding:11px 13px;font-family:'Outfit',sans-serif;font-weight:500;font-size:.68rem;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);white-space:nowrap;border-bottom:1px solid var(--line);transition:.16s;}
.drop a:last-child{border-bottom:none;}
.drop a .no{color:var(--accent);font-size:.62rem;}
.drop a:hover{background:var(--paper-2);color:var(--ink);padding-left:18px;}
.drop a::after{display:none!important;}
.ebtn{font-family:'Outfit',sans-serif;font-weight:600;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;background:var(--green);color:var(--white);padding:.7rem 1.2rem;display:inline-flex;align-items:center;gap:.5rem;transition:.18s;}
.ebtn:hover{background:var(--green-d);}
.ebtn i{width:14px;height:14px;}
.eburger{display:none;background:none;border:none;cursor:pointer;}

/* ---- bracket label ---- */
.brk{position:relative;padding:14px 0 0 16px;}
.brk::before{content:"";position:absolute;left:0;top:0;width:14px;height:14px;border-left:2px solid var(--ink);border-top:2px solid var(--ink);}
.brk .k{font-family:var(--font-display);font-weight:800;text-transform:uppercase;letter-spacing:.02em;line-height:1.05;font-size:1.05rem;}
.brk .s{font-family:'Outfit',sans-serif;font-size:.72rem;letter-spacing:.1em;color:var(--ink-soft);text-transform:uppercase;margin-top:3px;}

/* ---- hero ---- */
.hero{position:relative;padding:30px 0 50px;}
.thread{position:absolute;top:0;left:calc(50% + 20px);width:1px;height:165px;background:linear-gradient(var(--ink-soft),transparent);z-index:1;}
.hero-top{display:flex;justify-content:space-between;align-items:flex-start;position:relative;z-index:2;}
.hero-top .right{text-align:right;}
.hero-top .right .brk{padding:14px 16px 0 0;}
.hero-top .right .brk::before{left:auto;right:0;border-left:none;border-right:2px solid var(--ink);}
.hero-stage{position:relative;display:grid;place-items:center;margin-top:-46px;}
.heart-zone{position:relative;z-index:2;width:580px;max-width:90vw;margin:-30px -40px -90px 0;cursor:pointer;}
.heart-img{display:block;width:100%;aspect-ratio:1/1;object-fit:contain;transition:opacity .6s ease;}
.heart-color{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity .6s ease;pointer-events:none;}
.heart-zone:hover .heart-base{opacity:0;}
.heart-zone:hover .heart-color{opacity:1;}
/* BPM badges */
.bpm{position:absolute;z-index:6;display:flex;align-items:center;gap:.55rem;padding:.5rem .7rem .5rem .55rem;background:var(--white);border:1.5px solid var(--ink);box-shadow:0 14px 30px color-mix(in srgb, var(--ink) 16%, transparent);opacity:0;pointer-events:none;transition:opacity .5s ease, transform .6s cubic-bezier(.2,.8,.25,1);}
.bpm .ic{width:30px;height:30px;flex:none;display:grid;place-items:center;background:var(--green);color:var(--white);}
.bpm .ic i{width:16px;height:16px;}
.bpm .tx{display:flex;flex-direction:column;line-height:1;}
.bpm .tx .lab{font-family:'Outfit',sans-serif;font-size:.56rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);}
.bpm .tx .val{font-family:var(--font-display);font-weight:900;font-size:1rem;text-transform:uppercase;margin-top:3px;color:var(--ink);transform-origin:left center;}
.bpm .tx .val em{font-style:normal;font-size:.6rem;color:var(--green);margin-left:2px;}
.bpm .ecg{width:44px;height:22px;flex:none;}
.bpm .ecg polyline{fill:none;stroke:var(--green);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.bpm.a{top:20%;left:22%;transform:translate(30px,14px) scale(.85);}
.bpm.b{bottom:18%;right:17%;transform:translate(-30px,-14px) scale(.85);}
.heart-zone:hover .bpm{opacity:1;}
.heart-zone:hover .bpm.a{transform:translate(0,0) scale(1);transition-delay:.05s;}
.heart-zone:hover .bpm.b{transform:translate(0,0) scale(1);transition-delay:.14s;}
.heart-zone:hover .bpm .val{animation:beat .82s ease-in-out infinite;}
.heart-zone:hover .bpm .ecg polyline{stroke-dasharray:120;animation:trace 1.1s linear infinite;}
@keyframes beat{0%,100%{transform:scale(1);}14%{transform:scale(1.16);}28%{transform:scale(1);}42%{transform:scale(1.08);}}
@keyframes trace{from{stroke-dashoffset:120;}to{stroke-dashoffset:0;}}
.heart-ph{position:relative;z-index:2;width:430px;max-width:74vw;aspect-ratio:4/5;border:1.5px dashed var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;color:var(--ink-soft);background:color-mix(in srgb, var(--white) 50%, transparent);padding:24px;}
.heart-ph i{width:54px;height:54px;color:var(--green);}
.heart-ph .t{font-family:'Outfit',sans-serif;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;line-height:1.5;}
.claim{position:absolute;left:0;top:42%;transform:translateY(-50%);z-index:3;}
.claim .ln{display:block;background:var(--green);color:var(--white);font-family:var(--font-display);font-weight:800;text-transform:uppercase;font-size:clamp(1.5rem,3.1vw,2.5rem);line-height:1.04;letter-spacing:.01em;padding:.12em .34em;width:fit-content;margin-bottom:5px;}
.hero-bottom{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-top:-40px;position:relative;z-index:3;flex-wrap:wrap;}
.hero-bottom .actions{display:flex;gap:12px;align-items:center;}
.ghost{font-family:'Outfit',sans-serif;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;border:1.5px solid var(--ink);padding:.7rem 1.2rem;display:inline-flex;align-items:center;gap:.5rem;transition:.15s;}
.ghost:hover{background:var(--ink);color:var(--paper);}
.ghost i{width:14px;height:14px;}
.contactline{font-family:'Outfit',sans-serif;font-size:.74rem;letter-spacing:.06em;color:var(--ink-soft);line-height:1.7;text-align:right;}
.contactline b{color:var(--ink);}

/* ---- marquee strip ---- */
.strip{border-top:none;border-bottom:1px solid var(--accent-d);background:var(--accent);color:var(--white);overflow:hidden;}
.strip .track{display:flex;gap:50px;padding:16px 0;white-space:nowrap;animation:slide 28s linear infinite;}
.strip span{font-family:var(--font-display);font-weight:800;text-transform:uppercase;letter-spacing:.04em;font-size:1.05rem;display:inline-flex;align-items:center;gap:50px;}
.strip span::after{content:"✦";color:var(--green);background:var(--paper);width:1.4em;height:1.4em;border-radius:50%;display:inline-grid;place-items:center;font-size:.7em;}
@keyframes slide{to{transform:translateX(-50%);}}

/* ---- expertise list ---- */
.sec{padding:90px 0;}
/* consistent rhythm: collapse the doubled gap between any two stacked sections
   to a single 90px; sections that follow a full-bleed band (.numbers/.strip/.cta)
   keep their full 90px top so the band gets symmetric breathing room. */
.sec + .sec{padding-top:0;}
.sec-h{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;border-bottom:2px solid var(--ink);padding-bottom:18px;margin-bottom:0;}
.sec-h h2{font-family:var(--font-display);font-weight:900;text-transform:uppercase;font-size:clamp(1.8rem,3.4vw,2.8rem);letter-spacing:.02em;margin:0;line-height:1;}
.sec-h .mono{font-size:.74rem;letter-spacing:.12em;color:var(--ink-soft);text-transform:uppercase;}
.exrow{display:flex;align-items:center;gap:24px;padding:26px 4px;border-bottom:1px solid var(--line);transition:.2s;cursor:pointer;}
.exrow:hover{padding-left:18px;background:linear-gradient(90deg,color-mix(in srgb, var(--green) 5%, transparent),transparent);}
.exrow .no{font-family:'Outfit',sans-serif;font-size:.8rem;color:var(--ink-soft);width:42px;flex:none;}
.exrow .nm{font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:clamp(1.1rem,2vw,1.6rem);letter-spacing:.01em;flex:1;}
.exrow .ds{color:var(--ink-soft);font-size:.92rem;max-width:340px;flex:none;}
.exrow .ar{width:40px;height:40px;border:1.5px solid var(--ink);border-radius:50%;display:grid;place-items:center;flex:none;transition:.2s;}
.exrow:hover .ar{background:var(--green);border-color:var(--green);color:var(--white);transform:rotate(-45deg);}
.exrow .ar i{width:17px;height:17px;}

/* ---- domaines card grid (Mes domaines d'intervention) ---- */
.dmn-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border:1px solid var(--line);background:color-mix(in srgb, var(--white) 25%, transparent);}
.dcard{position:relative;display:flex;flex-direction:column;padding:34px 30px 30px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);transition:background .2s,transform .2s;cursor:pointer;}
.dcard:nth-child(3n){border-right:none;}
.dcard:nth-child(n+4){border-bottom:none;}
.dcard .top{display:flex;align-items:center;justify-content:space-between;margin-bottom:26px;}
.dcard .ic{width:48px;height:48px;border:1.5px solid var(--ink);display:grid;place-items:center;transition:.2s;color:var(--accent);}
.dcard .ic i{width:22px;height:22px;}
.dcard .no{font-family:'Outfit',sans-serif;font-size:.82rem;letter-spacing:.04em;color:var(--accent);}
.dcard h3{font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:1.16rem;line-height:1.08;letter-spacing:.01em;margin:0 0 12px;}
.dcard p{color:var(--ink-soft);font-size:.92rem;line-height:1.62;margin:0 0 24px;flex:1;}
.dcard .more{font-family:'Outfit',sans-serif;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);display:inline-flex;align-items:center;gap:8px;transition:.2s;}
.dcard .more i{width:14px;height:14px;transition:transform .2s;}
.dcard:hover{background:var(--white);}
.dcard:hover .ic{background:var(--green);border-color:var(--green);color:var(--white);}
.dcard:hover .more{color:var(--green);}
/* filled variants — colored by default, reverse on hover */
.dcard.fill-green{background:var(--green);}
.dcard.fill-ink{background:var(--ink);}
.dcard.fill-coral{background:var(--accent);}
.dcard.fill-green h3,.dcard.fill-ink h3,.dcard.fill-coral h3{color:var(--white);}
.dcard.fill-green p,.dcard.fill-ink p,.dcard.fill-coral p{color:color-mix(in srgb, var(--white) 82%, transparent);}
.dcard.fill-green .ic,.dcard.fill-ink .ic,.dcard.fill-coral .ic{background:var(--white);border-color:var(--white);color:var(--accent);}
.dcard.fill-green .more,.dcard.fill-ink .more,.dcard.fill-coral .more{color:color-mix(in srgb, var(--white) 85%, transparent);}
.dcard.fill-coral .no,.dcard.fill-green .no,.dcard.fill-ink .no{color:var(--white);}
.dcard.fill-green:hover,.dcard.fill-ink:hover,.dcard.fill-coral:hover{background:var(--white);}
.dcard.fill-green:hover h3,.dcard.fill-ink:hover h3,.dcard.fill-coral:hover h3{color:var(--ink);}
.dcard.fill-green:hover p,.dcard.fill-ink:hover p,.dcard.fill-coral:hover p{color:var(--ink-soft);}
.dcard.fill-green:hover .no,.dcard.fill-ink:hover .no,.dcard.fill-coral:hover .no{color:var(--accent);}
.dcard.fill-green:hover .ic{background:var(--green);border-color:var(--green);color:var(--white);}
.dcard.fill-ink:hover .ic{background:var(--ink);border-color:var(--ink);color:var(--white);}
.dcard.fill-coral:hover .ic{background:var(--accent);border-color:var(--accent);color:var(--white);}
.dcard.fill-green:hover .more{color:var(--green);}
.dcard.fill-ink:hover .more{color:var(--ink);}
.dcard.fill-coral:hover .more{color:var(--accent);}
.dcard:hover .more i{transform:translateX(5px);}

/* ---- split about ---- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center;}
.split .ph{aspect-ratio:4/5;border:1.5px dashed var(--line);background:color-mix(in srgb, var(--white) 50%, transparent);display:flex;align-items:center;justify-content:center;text-align:center;font-family:'Outfit',sans-serif;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);padding:20px;}
.split .ph img{width:100%;height:100%;object-fit:cover;}
.split h2{font-family:var(--font-display);font-weight:900;text-transform:uppercase;font-size:clamp(1.8rem,3.2vw,2.6rem);line-height:1.02;margin:0 0 18px;}
.split p{color:var(--ink-soft);font-size:1.02rem;line-height:1.7;margin:0 0 14px;max-width:34ch;}
.split .quote{border-left:3px solid var(--green);padding-left:16px;font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:1.05rem;line-height:1.25;margin:22px 0;}
.meta{display:flex;gap:36px;margin-top:26px;}
.meta .n{font-family:var(--font-display);font-weight:900;font-size:2.2rem;line-height:1;color:var(--green);}
.meta .l{font-family:'Outfit',sans-serif;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-top:6px;}

/* ---- pourquoi (image cards) ---- */
.why-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--line);border-radius:0;}
.why-cell{border-right:1px solid var(--line);padding:0;position:relative;background:color-mix(in srgb, var(--white) 40%, transparent);}
.why-cell:last-child{border-right:none;}
.why-cell .img{aspect-ratio:1/1;border-bottom:1px solid var(--line);overflow:hidden;background:color-mix(in srgb, var(--white) 50%, transparent);display:flex;align-items:center;justify-content:center;text-align:center;}
.why-cell .img img{width:100%;height:100%;object-fit:cover;filter:none;}
.why-cell .img .ph2{font-family:'Outfit',sans-serif;font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);padding:18px;line-height:1.6;}
.why-cell .cap{padding:20px 18px 22px;}
.why-cell .cap .no{font-family:'Outfit',sans-serif;font-size:.72rem;color:var(--green);}
.why-cell .cap h3{font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:1.02rem;margin:8px 0 0;line-height:1.1;}

/* ---- pourquoi — la différence (3 col · hover scroll + grow) ---- */
.diff-grid{display:grid;grid-template-columns:1fr 1.06fr 1fr;grid-template-rows:220px 300px;gap:16px;}
.diff-grid .cell{position:relative;overflow:hidden;border:1px solid var(--line);}
/* text / stat cards */
.dtext{display:flex;flex-direction:column;padding:22px 22px;background:var(--paper-2);transition:background .25s;gap:12px;}
.dtext:hover{background:var(--white);}
.dtext .desc{font-size:.78rem;line-height:1.5;color:var(--ink-soft);max-width:34ch;margin:0;}
.dtext .stat{display:flex;flex-direction:column;}
.dtext .num{font-family:var(--font-display);font-weight:900;font-size:clamp(1.7rem,2.5vw,2.1rem);line-height:.92;color:var(--green);transition:transform .45s cubic-bezier(.2,.7,.2,1);width:fit-content;}
.dtext .num em{font-style:normal;color:var(--accent);}
.dtext .lab{font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:.85rem;letter-spacing:.01em;margin-top:4px;}
.dtext.b{justify-content:space-between;}
.dtext.b .num{transform-origin:left bottom;}
.dtext.b:hover .num{transform:scale(1.16);}
.dtext.t{justify-content:space-between;}
.dtext.t .num{transform-origin:left top;}
.dtext.t:hover .num{transform:scale(1.16);}
/* image cards — parallax scroll on hover */
.dimg img{position:absolute;left:0;top:0;width:100%;height:132%;object-fit:cover;filter:none;transition:transform 1s cubic-bezier(.2,.7,.2,1),filter .5s;}
.dimg:hover img{filter:none;}
.dimg.up img{transform:translateY(0);}
.dimg.up:hover img{transform:translateY(-24%);}
.dimg.down img{transform:translateY(-24%);}
.dimg.down:hover img{transform:translateY(0);}
.dimg .tagx{position:absolute;left:0;bottom:0;z-index:2;font-family:'Outfit',sans-serif;font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--white);background:var(--ink);padding:.42rem .64rem;}
/* middle — testimonial video placeholder */
.diff-mid{position:relative;overflow:hidden;grid-column:2;grid-row:1 / span 2;border:1px solid var(--ink);background:var(--ink);color:var(--white);display:flex;flex-direction:column;justify-content:space-between;padding:28px 26px;cursor:pointer;}
.diff-mid::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(135deg,color-mix(in srgb, var(--white) 3.5%, transparent) 0 11px,transparent 11px 22px);pointer-events:none;}
.diff-mid .top{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:2;}
.diff-mid .klabel{font-family:'Outfit',sans-serif;font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);display:inline-flex;align-items:center;gap:8px;}
.diff-mid .klabel::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent);}
.diff-mid .play{position:relative;z-index:2;align-self:center;width:84px;height:84px;border-radius:50%;border:1.5px solid color-mix(in srgb, var(--white) 50%, transparent);display:grid;place-items:center;transition:.3s;}
.diff-mid .play::after{content:"";position:absolute;inset:-10px;border-radius:50%;border:1px solid color-mix(in srgb, var(--white) 18%, transparent);}
.diff-mid .play i{width:30px;height:30px;color:var(--white);margin-left:5px;}
.diff-mid:hover .play{background:var(--green);border-color:var(--green);transform:scale(1.07);}
.diff-mid .botinfo{position:relative;z-index:2;}
.diff-mid .botinfo h3{font-family:var(--font-display);font-weight:800;text-transform:uppercase;font-size:1.34rem;line-height:1.04;margin:0 0 9px;}
.diff-mid .botinfo p{font-family:'Outfit',sans-serif;font-size:.64rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);margin:0;}

/* ---- services / consultation ---- */
.srv{display:grid;grid-template-columns:1.1fr 1fr;gap:0;border:1px solid var(--ink);}
.srv .panel{padding:40px;border-right:1px solid var(--ink);display:flex;flex-direction:column;justify-content:center;}
.srv .panel.green{background:var(--green);color:var(--white);border-right:none;}
.srv .panel.green h3,.srv .panel.green .num{color:var(--white);}
.srv .panel .lbl{font-family:'Outfit',sans-serif;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;opacity:.7;}
.srv .panel h3{font-family:var(--font-display);font-weight:800;text-transform:uppercase;font-size:1.5rem;line-height:1.05;margin:14px 0 10px;}
.srv .panel p{font-size:.95rem;line-height:1.6;color:var(--ink-soft);margin:0;}
.srv .panel.green p{color:color-mix(in srgb, var(--white) 82%, transparent);}
.srv .panel .num{font-family:var(--font-display);font-weight:900;font-size:3.2rem;line-height:1;}
.srv .col{display:flex;flex-direction:column;}
.srv .col .panel{flex:1;border-bottom:1px solid var(--ink);}
.srv .col .panel:last-child{border-bottom:none;}
.srv .img-cell{overflow:hidden;background:color-mix(in srgb, var(--white) 50%, transparent);display:flex;align-items:center;justify-content:center;text-align:center;border-right:1px solid var(--ink);}
.srv .img-cell img{width:100%;height:100%;object-fit:cover;filter:none;}
.srv .img-cell .ph2{font-family:'Outfit',sans-serif;font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);padding:18px;line-height:1.6;}

/* ---- stats poster band ---- */
/* numbers band — terracotta, matched to the service .facts-band height + text size */
.numbers{background:var(--accent);color:var(--white);}
.numbers .grid4{display:grid;grid-template-columns:repeat(4,1fr);}
.numbers .cell{padding:24px 30px;border-right:1px solid color-mix(in srgb, var(--white) 20%, transparent);text-align:center;}
.numbers .cell:last-child{border-right:none;}
.numbers .n{font-family:var(--font-display);font-weight:900;font-size:1.55rem;line-height:1;text-transform:uppercase;}
.numbers .n em{color:color-mix(in srgb, var(--white) 78%, transparent);font-style:normal;}
.numbers .l{font-family:'Outfit',sans-serif;font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:color-mix(in srgb, var(--white) 82%, transparent);margin-top:7px;}

/* ---- rappel accent var(--accent) + designed cells ---- */
.exrow .no{color:var(--accent);}
.strip span::after{color:var(--accent);background:var(--paper);}
.sec-h .mono{color:var(--accent);}

.brk .s{color:var(--accent);}
.exrow:hover .ar{background:var(--accent);border-color:var(--accent);}
.heart-zone:hover .bpm .ecg polyline{stroke:var(--accent);}


.why-cell .img,.srv .img-cell,.bcard .img{position:relative;}
.gfx{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;padding:20px;overflow:hidden;}
.gfx .topi{width:36px;height:36px;}
.gfx .big{position:absolute;right:-18px;bottom:-24px;width:135px;height:135px;opacity:.15;}
.gfx .cat{font-family:'Outfit',sans-serif;font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;opacity:.92;}
.gfx .ti{font-family:var(--font-display);font-weight:800;text-transform:uppercase;font-size:1.05rem;line-height:1.06;margin-top:6px;}
.gfx-primary{background:var(--green);color:var(--white);}
.gfx-accent{background:var(--accent);color:var(--white);}
.gfx-ink{background:var(--ink);color:var(--paper);}
.gfx-line{background:var(--paper-2);color:var(--ink);}
.gfx-line .big{opacity:.1;}


/* ---- testimonial ---- */
.quote-sec{text-align:center;}
.quote-sec .big{font-family:var(--font-display);font-weight:800;text-transform:uppercase;font-size:clamp(1.5rem,3.2vw,2.6rem);line-height:1.12;max-width:18ch;margin:0 auto;letter-spacing:.02em;}
.quote-sec .big em{font-style:normal;color:var(--green);}
.quote-sec .stars{color:var(--green);letter-spacing:3px;font-size:1.1rem;margin-bottom:24px;}
.quote-sec .by{font-family:'Outfit',sans-serif;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin-top:26px;}
.quote-sec .gscore{display:inline-flex;align-items:center;gap:10px;margin-top:18px;border:1.5px solid var(--ink);padding:.5rem 1rem;}
.quote-sec .gscore b{font-family:var(--font-display);font-weight:900;font-size:1.2rem;}
.quote-sec .gscore span{font-family:'Outfit',sans-serif;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);}

/* ---- blog ---- */
.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;}
.bcard{display:flex;flex-direction:column;cursor:pointer;}
.bcard .img{aspect-ratio:3/2;border:1px solid var(--line);overflow:hidden;background:color-mix(in srgb, var(--white) 50%, transparent);display:flex;align-items:center;justify-content:center;text-align:center;transition:.2s;}
.bcard .img img{width:100%;height:100%;object-fit:cover;filter:none;transition:.3s;}
.bcard:hover .img{border-color:var(--green);}
.bcard:hover .img img{filter:none;transform:scale(1.03);}
.bcard .img .ph2{font-family:'Outfit',sans-serif;font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);padding:18px;line-height:1.6;}
.bcard .meta{display:flex;align-items:center;gap:10px;font-family:'Outfit',sans-serif;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--green);margin:18px 0 10px;}
.bcard .meta .d{color:var(--ink-soft);}
.bcard h3{font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:1.12rem;line-height:1.12;margin:0;}
.bcard .rd{font-family:'Outfit',sans-serif;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-top:14px;display:inline-flex;align-items:center;gap:6px;}
.bcard:hover .rd{color:var(--green);}
.bcard .rd i{width:13px;height:13px;}

/* ---- cta ---- */
.cta{background:var(--accent);color:var(--white);text-align:center;padding:60px 0;}
.cta h2{font-family:var(--font-display);font-weight:900;text-transform:uppercase;font-size:clamp(2rem,4vw,3.4rem);line-height:1;margin:0 0 14px;}
.cta p{font-family:'Outfit',sans-serif;font-size:.82rem;letter-spacing:.08em;text-transform:uppercase;opacity:.8;margin:0 0 30px;}
.cta .actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;}
.cta .b1{background:var(--white);color:var(--green);font-family:'Outfit',sans-serif;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;padding:.9rem 1.5rem;display:inline-flex;gap:.5rem;align-items:center;}
.cta .b2{border:1.5px solid color-mix(in srgb, var(--white) 50%, transparent);color:var(--white);font-family:'Outfit',sans-serif;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;padding:.9rem 1.5rem;display:inline-flex;gap:.5rem;align-items:center;transition:.15s;}
.cta .b2:hover{background:color-mix(in srgb, var(--white) 12%, transparent);}
.cta .b1 i,.cta .b2 i{width:15px;height:15px;}

/* ---- footer ---- */
.ef{background:var(--green);color:color-mix(in srgb, var(--white) 74%, transparent);padding:60px 0 30px;border-top:1px solid color-mix(in srgb, var(--white) 16%, transparent);}
.ef .grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px;padding-bottom:40px;border-bottom:1px solid color-mix(in srgb, var(--white) 16%, transparent);}

.ef p{font-size:.9rem;line-height:1.7;margin:16px 0 0;max-width:32ch;}
.ef h4{font-family:'Outfit',sans-serif;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--white);margin:0 0 16px;}
.ef ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;}
.ef ul a{font-size:.9rem;transition:.15s;color:color-mix(in srgb, var(--white) 80%, transparent);}
.ef ul a:hover{color:var(--white);}
.ef .bot{padding-top:24px;display:flex;justify-content:space-between;font-family:'Outfit',sans-serif;font-size:.72rem;letter-spacing:.06em;color:color-mix(in srgb, var(--white) 58%, transparent);flex-wrap:wrap;gap:10px;}

.fab{position:fixed;right:22px;bottom:22px;width:54px;height:54px;border-radius:50%;background:var(--fab);color:var(--white);display:grid;place-items:center;box-shadow:0 12px 30px var(--fab-shadow);z-index:60;}
.fab i{width:26px;height:26px;}

.reveal{opacity:0;transform:translateY(24px);transition:.7s cubic-bezier(.2,.7,.3,1);}
.reveal.in{opacity:1;transform:none;}

@media(max-width:900px){
  .emenu{display:none;}
  .eburger{display:flex;}
  .mnav{display:block;}
  .eh .ebtn{display:none;}
  .split{grid-template-columns:1fr;gap:32px;}
  .claim{position:static;transform:none;margin-top:20px;}
  .heart-zone,.heart-ph{margin:0 auto;}
  .exrow .ds{display:none;}
  .contactline{text-align:left;}
}
@media(max-width:900px){
  .why-grid{grid-template-columns:1fr 1fr;}
  .why-cell:nth-child(2){border-right:none;}
  .why-cell{border-bottom:1px solid var(--line);}
  .diff-grid{grid-template-columns:1fr 1fr;grid-template-rows:auto;}
  .diff-grid .cell{min-height:240px;}
  .diff-mid{grid-column:1 / span 2;grid-row:auto;min-height:380px;}
  .srv{grid-template-columns:1fr;}
  .srv .panel,.srv .img-cell{border-right:none;}
  .dmn-grid{grid-template-columns:1fr 1fr;}
  .dcard{border-right:1px solid var(--line);border-bottom:1px solid var(--line);}
  .dcard:nth-child(3n){border-right:1px solid var(--line);}
  .dcard:nth-child(n+4){border-bottom:1px solid var(--line);}
  .dcard:nth-child(2n){border-right:none;}
  .dcard:nth-child(n+5){border-bottom:none;}
  .srv .img-cell{min-height:240px;border-bottom:1px solid var(--ink);}
  .numbers .grid4{grid-template-columns:1fr 1fr;}
  .numbers .cell:nth-child(2){border-right:none;}
  .numbers .cell{border-bottom:1px solid var(--ink-line);}
  .blog-grid{grid-template-columns:1fr;}
}
@media(max-width:560px){
  .wrap{padding:0 20px;}
  .hero-top .brk .k{font-size:.92rem;}
  .meta{gap:24px;}
  .why-grid{grid-template-columns:1fr;}
  .why-cell{border-right:none;}
  .numbers .grid4{grid-template-columns:1fr;}
  .numbers .cell{border-right:none;}
  .diff-grid{grid-template-columns:1fr;}
  .diff-mid{grid-column:1;}
  .dmn-grid{grid-template-columns:1fr;}
  .dcard{border-right:none;}
  .dcard:nth-child(2n){border-right:none;}
  .dcard{border-bottom:1px solid var(--line);}
  .dcard:nth-child(n+5){border-bottom:1px solid var(--line);}
  .dcard:last-child{border-bottom:none;}
}

/* =========================================================
   PAGE-LEVEL COMPONENTS — shared across all pages
   ========================================================= */
/* breadcrumbs */
.crumbs{font-family:'Outfit',sans-serif;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.crumbs a:hover{color:var(--ink);}
.crumbs i{width:13px;height:13px;color:var(--line);}
.crumbs .cur{color:var(--accent);}

/* interior page hero */
.phero{padding:40px 0 14px;}
.phero.center{text-align:center;}
.phero.center .crumbs{justify-content:center;}
.phero .klabel{font-family:'Outfit',sans-serif;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--green);display:inline-flex;align-items:center;gap:9px;margin-top:22px;}
.phero .klabel::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent);}
.phero.center .klabel{justify-content:center;}
.phero h1{font-family:var(--font-display);font-weight:900;text-transform:uppercase;font-size:clamp(2.1rem,4.4vw,3.4rem);line-height:1;letter-spacing:.02em;margin:16px 0 0;}
.phero .lead{color:var(--ink-soft);font-size:1.05rem;line-height:1.72;margin:20px 0 0;max-width:62ch;}
.phero.center .lead{margin-left:auto;margin-right:auto;}

/* checks */
.checks{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.check{display:flex;align-items:center;gap:12px;border:1px solid var(--line);background:color-mix(in srgb, var(--white) 45%, transparent);padding:14px 16px;font-size:.93rem;transition:.18s;}
.check:hover{border-color:var(--green);background:var(--white);}
.check .ic{width:24px;height:24px;background:var(--green);color:var(--white);display:grid;place-items:center;flex:none;}
.check .ic i{width:14px;height:14px;}

/* facts / stat band */
.facts-band{background:var(--accent);color:var(--white);}
.facts-band .row{display:grid;grid-template-columns:repeat(3,1fr);}
.facts-band .f{padding:24px 30px;border-right:1px solid color-mix(in srgb, var(--white) 20%, transparent);display:flex;align-items:center;gap:16px;}
.facts-band .f:last-child{border-right:none;}
.facts-band .f .ic{width:46px;height:46px;border:1.5px solid color-mix(in srgb, var(--white) 55%, transparent);display:grid;place-items:center;flex:none;}
.facts-band .f .ic i{width:20px;height:20px;color:var(--accent);}
.facts-band .f .lab{display:block;font-family:'Outfit',sans-serif;font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:color-mix(in srgb, var(--white) 85%, transparent);}
.facts-band .f .val{display:block;font-family:var(--font-display);font-weight:800;text-transform:uppercase;font-size:1.22rem;margin-top:5px;line-height:1;}

/* steps */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--line);background:color-mix(in srgb, var(--white) 25%, transparent);}
.step{padding:30px 26px 32px;border-right:1px solid var(--line);}
.step:last-child{border-right:none;}
.step .ic{width:48px;height:48px;border:1.5px solid var(--ink);display:grid;place-items:center;margin-bottom:18px;}
.step .ic i{width:22px;height:22px;}
.step .n{font-family:'Outfit',sans-serif;font-size:.74rem;letter-spacing:.06em;color:var(--accent);}
.step h3{font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:1.04rem;margin:6px 0 9px;line-height:1.08;}
.step p{color:var(--ink-soft);font-size:.88rem;line-height:1.58;margin:0;}

/* faq */
.faq{border-top:2px solid var(--ink);max-width:880px;}
.qa{border-bottom:1px solid var(--line);}
.qa summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 4px;font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:1.04rem;line-height:1.2;}
.qa summary::-webkit-details-marker{display:none;}
.qa .ic{width:32px;height:32px;border:1.5px solid var(--ink);display:grid;place-items:center;flex:none;transition:.22s;}
.qa .ic i{width:16px;height:16px;}
.qa[open] .ic{background:var(--green);border-color:var(--green);color:var(--white);transform:rotate(45deg);}
.qa .a{color:var(--ink-soft);font-size:.98rem;line-height:1.72;padding:0 4px 26px;max-width:72ch;}

/* prose */
.prose h2{font-family:var(--font-display);font-weight:900;text-transform:uppercase;font-size:clamp(1.9rem,3vw,2.35rem);line-height:1.04;margin:0 0 18px;}
.prose > p{color:var(--ink-soft);font-size:1.04rem;line-height:1.78;margin:0 0 14px;max-width:62ch;}
.prose h3{font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:1.1rem;letter-spacing:.01em;margin:34px 0 16px;display:flex;align-items:center;gap:12px;}
.prose h3::before{content:"";width:22px;height:2px;background:var(--accent);}

/* generic two-col */
.two{display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:start;}

/* image placeholder + cover */
.imgph{aspect-ratio:4/3;border:1.5px dashed var(--line);background:color-mix(in srgb, var(--white) 50%, transparent);display:flex;align-items:center;justify-content:center;text-align:center;font-family:'Outfit',sans-serif;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);padding:20px;position:relative;overflow:hidden;}
.imgph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:none;}

/* info rows */
.info{display:flex;align-items:center;gap:16px;border:1px solid var(--line);background:color-mix(in srgb, var(--white) 45%, transparent);padding:18px 20px;}
.info .ic{width:46px;height:46px;border:1.5px solid var(--ink);display:grid;place-items:center;flex:none;color:var(--green);}
.info .ic i{width:20px;height:20px;}
.info b{font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:.9rem;display:block;}
.info span{color:var(--ink-soft);font-size:.92rem;}

/* hours box */
.hours-box{border:1px solid var(--ink);}
.hours-box h3{font-family:var(--font-display);font-weight:800;text-transform:uppercase;font-size:1rem;margin:0;padding:18px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;}
.hours-box h3 i{width:18px;height:18px;color:var(--accent);}
.hrow{display:flex;justify-content:space-between;padding:13px 20px;border-bottom:1px solid var(--line);font-size:.92rem;}
.hrow:last-child{border-bottom:none;}
.hrow b{font-family:var(--font-display);font-weight:700;}
.hrow b.closed{color:var(--accent);}

/* forms */
.form-card{border:1px solid var(--ink);background:color-mix(in srgb, var(--white) 50%, transparent);padding:32px;}
.form-card h2{font-family:var(--font-display);font-weight:800;text-transform:uppercase;font-size:1.4rem;margin:0 0 4px;}
.field{margin-bottom:16px;display:flex;flex-direction:column;}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.field label{font-family:'Outfit',sans-serif;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px;}
.field input,.field textarea,.field select{font-family:'Outfit';font-size:.96rem;border:1.5px solid var(--line);background:var(--white);padding:.8rem .9rem;color:var(--ink);outline:none;transition:.15s;border-radius:0;}
.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--green);}
.field textarea{min-height:120px;resize:vertical;}
.seg{display:flex;border:1.5px solid var(--line);}
.seg label{flex:1;text-align:center;padding:.7rem;font-family:'Outfit',sans-serif;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;border-right:1.5px solid var(--line);transition:.15s;}
.seg label:last-child{border-right:none;}
.seg label.on{background:var(--green);color:var(--white);}
.consent{display:flex;align-items:flex-start;gap:10px;margin:6px 0 18px;font-size:.85rem;color:var(--ink-soft);}
.consent input{margin-top:3px;accent-color:var(--green);}
.btn-block{width:100%;justify-content:center;}
.submit{flex:1;justify-content:center;border:none;cursor:pointer;}

/* map */
.map{border:1px solid var(--ink);height:100%;min-height:380px;position:relative;background:linear-gradient(135deg,var(--paper-2),var(--line));overflow:hidden;}
.map .grid-lines{position:absolute;inset:0;background-image:linear-gradient(color-mix(in srgb, var(--ink) 5%, transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb, var(--ink) 5%, transparent) 1px,transparent 1px);background-size:42px 42px;}
.map .pin{position:absolute;left:50%;top:46%;transform:translate(-50%,-100%) rotate(-45deg);width:46px;height:46px;border-radius:50% 50% 50% 0;background:var(--green);display:grid;place-items:center;box-shadow:0 14px 30px color-mix(in srgb, var(--ink) 20%, transparent);}
.map .pin i{transform:rotate(45deg);color:var(--white);width:22px;height:22px;}
.map .lbl{position:absolute;left:50%;top:calc(46% + 12px);transform:translateX(-50%);background:var(--white);border:1px solid var(--ink);padding:.5rem .9rem;font-family:'Outfit',sans-serif;font-size:.68rem;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;}

/* timeline */
.tl{max-width:760px;margin:0 auto;position:relative;}
.tl::before{content:"";position:absolute;left:16px;top:6px;bottom:6px;width:2px;background:var(--line);}
.tl-item{position:relative;padding:0 0 28px 52px;}
.tl-item:last-child{padding-bottom:0;}
.tl-dot{position:absolute;left:8px;top:3px;width:18px;height:18px;border-radius:50%;background:var(--green);border:3px solid var(--paper);box-shadow:0 0 0 1.5px var(--ink);}
.tl-item:nth-child(even) .tl-dot{background:var(--accent);}
.tl-year{font-family:'Outfit',sans-serif;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);}
.tl-card{border:1px solid var(--line);background:color-mix(in srgb, var(--white) 45%, transparent);padding:16px 18px;margin-top:8px;}
.tl-card h3{font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:1.02rem;margin:0;}
.tl-card span{color:var(--ink-soft);font-size:.9rem;}

/* publications */
.pub{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid var(--line);background:color-mix(in srgb, var(--white) 45%, transparent);padding:16px 20px;margin-bottom:10px;transition:.18s;}
.pub:hover{border-color:var(--green);background:var(--white);}
.pub h3{font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:1rem;margin:0;}
.pub span{color:var(--ink-soft);font-size:.86rem;}
.pub .yr{font-family:'Outfit',sans-serif;font-size:.72rem;color:var(--white);background:var(--green);padding:.3rem .7rem;flex:none;}

/* gallery */
.gal{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;}
.gal .g{aspect-ratio:1/1;border:1px solid var(--line);overflow:hidden;background:color-mix(in srgb, var(--white) 50%, transparent);display:flex;align-items:center;justify-content:center;text-align:center;font-family:'Outfit',sans-serif;font-size:.64rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);}
.gal .g img{width:100%;height:100%;object-fit:cover;filter:none;transition:.3s;}
.gal .g:hover img{filter:none;}

/* chips / cats */
.cats{display:flex;gap:.6rem;flex-wrap:wrap;justify-content:center;margin-top:26px;}
.chip{font-family:'Outfit',sans-serif;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;border:1.5px solid var(--line);background:var(--white);padding:.5rem 1rem;cursor:pointer;transition:.15s;color:var(--ink-soft);}
.chip:hover,.chip.on{border-color:var(--green);background:var(--green);color:var(--white);}

/* blog featured */
.feat{display:grid;grid-template-columns:1.05fr .95fr;gap:0;border:1px solid var(--ink);overflow:hidden;}
.feat .media{min-height:340px;position:relative;overflow:hidden;background:color-mix(in srgb, var(--white) 50%, transparent);display:flex;align-items:center;justify-content:center;text-align:center;font-family:'Outfit',sans-serif;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);}
.feat .media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:none;}
.feat .fbody{padding:36px;display:flex;flex-direction:column;justify-content:center;}
.feat .fmeta{font-family:'Outfit',sans-serif;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);display:flex;align-items:center;gap:10px;margin-bottom:14px;}
.feat .fbody h2{font-family:var(--font-display);font-weight:900;text-transform:uppercase;font-size:clamp(1.4rem,2.4vw,2rem);line-height:1.05;margin:0 0 12px;}
.feat .fbody p{color:var(--ink-soft);line-height:1.7;margin:0 0 22px;}

/* blog post cards */
.post{display:flex;flex-direction:column;border:1px solid var(--line);background:color-mix(in srgb, var(--white) 40%, transparent);transition:.2s;cursor:pointer;}
.post:hover{border-color:var(--green);}
.post .media{aspect-ratio:3/2;position:relative;overflow:hidden;background:color-mix(in srgb, var(--white) 50%, transparent);display:flex;align-items:center;justify-content:center;text-align:center;font-family:'Outfit',sans-serif;font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);border-bottom:1px solid var(--line);}
.post .media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:none;transition:.3s;}
.post:hover .media img{filter:none;}
.post .pbody{padding:22px 22px 24px;}
.post .pmeta{font-family:'Outfit',sans-serif;font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--green);display:flex;align-items:center;gap:8px;margin-bottom:12px;}
.post .pmeta .d{color:var(--ink-soft);}
.post h3{font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:1.1rem;line-height:1.14;margin:0 0 10px;}
.post p{color:var(--ink-soft);font-size:.9rem;line-height:1.6;margin:0 0 16px;}
.post .more{font-family:'Outfit',sans-serif;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);display:inline-flex;align-items:center;gap:7px;}
.post .more i{width:14px;height:14px;transition:.2s;}
.post:hover .more{color:var(--green);}
.post:hover .more i{transform:translateX(4px);}

/* reviews */
.review{border:1px solid var(--line);background:color-mix(in srgb, var(--white) 45%, transparent);padding:26px 24px;}
.review .stars{color:var(--green);letter-spacing:2px;font-size:1rem;}
.review p{font-size:.96rem;line-height:1.7;margin:14px 0 18px;}
.review .who{display:flex;align-items:center;gap:12px;}
.review .who .av{width:42px;height:42px;border-radius:50%;background:var(--paper-2);border:1px solid var(--line);flex:none;}
.review .who b{font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:.86rem;display:block;}
.review .who small{color:var(--ink-soft);font-size:.78rem;}
.gscore{display:inline-flex;align-items:center;gap:14px;border:1.5px solid var(--ink);padding:.7rem 1.2rem;}
.gscore .num{font-family:var(--font-display);font-weight:900;font-size:2rem;color:var(--green);line-height:1;}
.gscore .stars{color:var(--green);letter-spacing:2px;}
.gscore small{color:var(--ink-soft);font-size:.78rem;}

/* value cards */
.vcard{border:1px solid var(--line);background:color-mix(in srgb, var(--white) 40%, transparent);padding:32px 28px;text-align:center;transition:.2s;}
.vcard:hover{background:var(--white);border-color:var(--green);}
.vcard .ic{width:54px;height:54px;border:1.5px solid var(--ink);display:grid;place-items:center;margin:0 auto 18px;}
.vcard:hover .ic{background:var(--green);border-color:var(--green);color:var(--white);}
.vcard .ic i{width:24px;height:24px;}
.vcard h3{font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:1.1rem;margin:0 0 10px;}
.vcard p{color:var(--ink-soft);font-size:.92rem;line-height:1.6;margin:0;}

/* generic grids */
.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:32px;}

/* responsive — shared components */
@media(max-width:900px){
  .checks{grid-template-columns:1fr;}
  .facts-band .row{grid-template-columns:1fr;}
  .facts-band .f{border-right:none;border-bottom:1px solid var(--ink-line);}
  .facts-band .f:last-child{border-bottom:none;}
  .steps{grid-template-columns:1fr 1fr;}
  .two,.feat,.g2{grid-template-columns:1fr;}
  .field-row{grid-template-columns:1fr;}
  .g3{grid-template-columns:1fr;}
  .gal{grid-template-columns:1fr 1fr;}
  .feat .media{min-height:240px;}
}
@media(max-width:560px){
  .steps{grid-template-columns:1fr;}
  .step{border-right:none;border-bottom:1px solid var(--line);}
  .step:last-child{border-bottom:none;}
  .gal{grid-template-columns:1fr;}
}


/* =========================================================
   MOTION LAYER — premium · minimal
   ========================================================= */
@media (prefers-reduced-motion: no-preference){

  /* header: condense + hairline shadow after scroll */
  /* transform en tete : sans lui, .eh-hidden faisait disparaitre l'en-tete d'un
     coup au lieu de le faire glisser, pour tout le monde sauf ceux qui
     demandent moins d'animation. La declaration precedente, posee plus bas
     dans le fichier, remplacait le raccourci en entier. */
  .eh{transition:transform .32s cubic-bezier(.4,0,.2,1), background .3s ease, box-shadow .3s ease;}
  .eh .wrap{transition:height .3s cubic-bezier(.2,.7,.3,1);}
  .eh.scrolled{background:color-mix(in srgb, var(--paper) 94%, transparent);box-shadow:0 1px 0 var(--line),0 10px 30px color-mix(in srgb, var(--ink) 5%, transparent);}
  .eh.scrolled .wrap{height:58px;}

  /* nav links: accent underline draws on hover */
  .emenu a{position:relative;}
  .emenu a::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:right;transition:transform .32s cubic-bezier(.2,.7,.3,1);}
  .emenu a:hover::after,.emenu a.active::after{transform:scaleX(1);transform-origin:left;}

  /* section headings: short accent tick draws under the title on reveal */
  .sec-h{position:relative;}
  .sec-h::after{content:"";position:absolute;left:0;bottom:-2px;height:2px;width:66px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .8s cubic-bezier(.2,.7,.3,1) .15s;}
  .sec-h.in::after,.sec-h.reveal.in::after{transform:scaleX(1);}

  /* marquee strip: pause on hover for legibility */
  .strip:hover .track{animation-play-state:paused;}

  /* staggered children inside a .stagger container */
  .stagger > *{opacity:0;transform:translateY(22px);transition:.65s cubic-bezier(.2,.7,.3,1);}
  .stagger.in{opacity:1;transform:none;}
  .stagger.in > *{opacity:1;transform:none;}
  .stagger.in > *:nth-child(2){transition-delay:.07s;}
  .stagger.in > *:nth-child(3){transition-delay:.14s;}
  .stagger.in > *:nth-child(4){transition-delay:.21s;}
  .stagger.in > *:nth-child(5){transition-delay:.28s;}
  .stagger.in > *:nth-child(6){transition-delay:.35s;}

  /* numbers band: count-up baseline tick draws across on reveal */
  .numbers .cell{position:relative;}
  .numbers .n{display:inline-flex;align-items:baseline;}

  /* CTA buttons: trailing icon nudges on hover */
  .ebtn i,.ghost i,.b1 i,.b2 i{transition:transform .2s ease;}
  .ebtn:hover i,.ghost:hover i{transform:translateX(2px);}

  /* WhatsApp FAB: soft attention pulse */
  .fab{transition:transform .25s ease, box-shadow .25s ease;}
  .fab-wa{position:relative;}
  .fab-wa::before{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid var(--fab);pointer-events:none;animation:fabpulse 2.6s ease-out infinite;}
  .fab:hover{transform:scale(1.06);}
  @keyframes fabpulse{0%{transform:scale(1);opacity:.5;}70%{transform:scale(1.5);opacity:0;}100%{opacity:0;}}
}

/* .stagger fallback when motion reduced / no JS: ensure visible */
.stagger.in > *{opacity:1;}


/* inline highlight — hero claim style (white on slate) for section titles */
.hlw{background:var(--green);color:var(--white);padding:.02em .16em;margin:0 .02em;white-space:normal;overflow-wrap:break-word;box-decoration-break:clone;-webkit-box-decoration-break:clone;}
/* a highlighted line that starts a title (after <br>) must align with the line
   above — cancel the highlight's left padding so the glyphs share the same x */
br + .hlw{margin-left:-.16em;}
/* two-part titles: a little more vertical room between the lines */
/* Helvetica needs more leading than Bebas so the .hlw highlight box on line 2 never collides with line 1 (box ~1.2em tall) */
.shero h1,.phero h1,.sec-h h2,.cta h2,.ahero-text .statement,.statement,.exp-h2,.prose h2,.split h2,.feat .fbody h2,.aside .hd h3,.dcard h3{line-height:1.3;}
/* animated BPM badge number */
.bpm .val{display:inline-block;transition:transform .14s ease,color .14s ease;transform-origin:left center;}
.bpm .val.beating{transform:scale(1.09);color:var(--accent);}

/* === Reduced-motion kill-switch === */
/* JS animations already bail on reduce; this also stops the CSS keyframes
   (beat / trace / slide marquee / fab pulse) and all transitions for users
   who ask the OS to reduce motion. */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
    scroll-behavior:auto!important;
  }
}

/* === Utilities (replace former inline styles — audit 2026-06-21) === */
.m0{margin:0!important;}
.mt-0{margin-top:0;}.mt-10{margin-top:10px;}.mt-18{margin-top:18px;}.mt-26{margin-top:26px;}.mt-28{margin-top:28px;}.mt-32{margin-top:32px;}.mt-40{margin-top:40px;}
.mb-10{margin-bottom:10px;}.mb-14{margin-bottom:14px;}.mb-16{margin-bottom:16px;}.mb-22{margin-bottom:22px;}.mb-32{margin-bottom:32px;}.mb-36{margin-bottom:36px;}.mb-44{margin-bottom:44px;}
.pt-36{padding-top:36px;}.pt-44{padding-top:44px;}.pt-48{padding-top:48px;}.pb-0{padding-bottom:0;}
.rows-auto{grid-template-rows:auto;}
.self-start{align-self:flex-start;}
.mt-4{margin-top:4px;}
.items-stretch{align-items:stretch;}
.justify-center{justify-content:center;}
.t-muted{color:var(--ink-soft);}
.g2.rdv-cols{grid-template-columns:.85fr 1.15fr;align-items:start;gap:36px;}
.g2.rdv-cols > .stack{position:sticky;top:90px;align-self:start;}
.form-note{color:var(--ink-soft);font-size:.92rem;margin:.3rem 0 1.4rem;}
.note-sm{margin-top:18px;font-size:.72rem;color:var(--ink-soft);}
.center-x{text-align:center;}
.max-820{max-width:820px;}
.ar-4-5{aspect-ratio:4/5;}
.t-green{color:var(--green);}
.t-accent{color:var(--accent);}
.cluster{display:flex;flex-wrap:wrap;align-items:center;gap:12px;}
.cluster-base{display:flex;flex-wrap:wrap;align-items:baseline;gap:14px;}
.stack{display:flex;flex-direction:column;gap:12px;}
.sr-only{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden;}
/* expertise hub headline (was inline on expertise.php h2) */
.exp-h2{font-family:var(--font-display);font-weight:900;text-transform:uppercase;font-size:clamp(1.7rem,3vw,2.4rem);line-height:1.3;margin:16px 0 16px;}
/* small green mono eyebrow (was inline .mono on index.php) */
.eyebrow{font-family:'Outfit',sans-serif;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--green);margin-bottom:14px;}
/* disabled/coming-soon pill + button (was inline on blog.php) */
.is-static{cursor:default;}
.pill{background:var(--paper-2);color:var(--ink);padding:.3rem .6rem;}

/* Bebas is condensed — give titles a little breathing room between words */
h1,h2,h3,.hlw,.claim .ln,.brk .k,.exp-h2,.statement{word-spacing:.12em;}
/* never let any element force a horizontal scroll on mobile */
html,body{max-width:100%;overflow-x:clip;}

/* Floating action dock — WhatsApp + Zack chat */
.fab-dock{position:fixed;right:22px;bottom:22px;display:flex;flex-direction:column;gap:12px;z-index:60;}
.fab{position:static;width:54px;height:54px;border-radius:50%;display:grid;place-items:center;cursor:pointer;border:none;}
.fab-wa{background:var(--fab);color:var(--white);box-shadow:0 12px 30px var(--fab-shadow);}
.fab-wa svg{width:26px;height:26px;}
.fab-chat{background:var(--ink);color:var(--white);box-shadow:0 12px 30px color-mix(in srgb, var(--ink) 30%, transparent);}
.fab-chat i{width:24px;height:24px;}

/* === Mobile audit fixes (2026-06-21) === */
@media(max-width:900px){
  .ef .grid{grid-template-columns:1fr 1fr;gap:32px;}
}
@media(max-width:560px){
  .ef .grid{grid-template-columns:1fr;gap:24px;}
  .ef .bot{flex-wrap:wrap;gap:10px;}
  .tl{max-width:100%;}
  .tl-item{padding-left:34px;}
}

/* === Mobile chrome polish (top bar / header / nav / footer) 2026-06-21 === */
.eh-cta-m{display:none;}
@media(max-width:760px){
  .etop span.addr{display:none;}             /* hide address on mobile (beats .etop span.item specificity) */
  .etop .left a{font-size:.7rem;}            /* phone readable + tappable (was .62rem) */
  .etop .wrap{gap:10px;}
}
@media(max-width:900px){
  /* keep a compact booking CTA in the header — full RDV button is desktop-only */
  .eh-cta-m{display:inline-flex;align-items:center;gap:.4rem;margin-left:auto;flex:0 0 auto;
    background:var(--green);color:var(--white);font-family:'Outfit',sans-serif;white-space:nowrap;
    font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;padding:.62rem .85rem;}
  .eh-cta-m i{width:15px;height:15px;}
  .eburger{margin-left:10px;flex:0 0 auto;align-items:center;justify-content:center;}  /* burger bars centred vertically */
  .eh .wrap{height:62px;gap:10px;}            /* tighter header on mobile */
  .mnav .mhead{height:62px;}
  .g2.rdv-cols{grid-template-columns:1fr;}    /* booking grid must collapse (overrode the .g2 1col rule) */
  .g2.rdv-cols > .stack{position:static;}     /* no sticky when stacked on mobile */
  /* mobile menu fills the screen, CTAs pinned to the bottom (no scroll needed) */
  .mnav{display:flex;flex-direction:column;}
  .mnav .mlist{flex:1;padding:10px 24px 18px;}
  .mnav .mlist > a,.mnav .msub-t{padding:13px 0;}
  .mnav .msub a{padding:9px 0 9px 14px;}
  .mnav .mcta{margin-top:auto;}
}
@media(max-width:560px){
  .mnav .mlist > a,.mnav .msub-t{font-size:1.35rem;}  /* fit links + CTAs in 100vh */
  .ef{padding:44px 0 28px;}                   /* tighter footer */
  .ef ul{gap:14px;}                           /* roomier tap targets */
  .ef .bot{justify-content:flex-start;}
}
@media(max-width:380px) and (max-height:700px){
  .mnav .mlist > a,.mnav .msub-t{font-size:1.2rem;padding:11px 0;}
  .mnav .msub a{padding:8px 0 8px 14px;}
}

/* Pied de page : liens legaux entre le copyright et la signature */
.ef .bot .legal{display:flex;gap:18px;flex-wrap:wrap;justify-content:center;}
.ef .bot .legal a{color:inherit;opacity:.82;text-decoration:none;border-bottom:1px solid transparent;}
.ef .bot .legal a:hover{opacity:1;border-bottom-color:currentColor;}
@media(max-width:700px){.ef .bot{flex-direction:column;gap:10px;text-align:center;}}

/* =========================================================================
   Corrections mobile (audit du 07/08/2026)
   ========================================================================= */

/* 1. Menu : « Expertise » avait l'air d'une sous-page.
   .mnav .msub a (0,2,1) l'emportait sur .mnav .msub-t (0,2,0), donc l'entree
   parente heritait de la taille et de la graisse de ses propres enfants.
   On sort explicitement le titre de la regle des enfants. */
.mnav .msub a.msub-t{font-family:var(--font-display);font-weight:800;
  letter-spacing:.01em;color:var(--ink);padding:18px 0 8px;}
.mnav .msub a.msub-t .ix{font-family:'Outfit',sans-serif;font-size:.7rem;color:var(--accent);font-weight:400;}

/* 2. Titres : les mots longs se coupaient en plein milieu.
   « CHIRURGIEN CARDIOVASCULAIRE » sortait en CARDIOVASCULAI / RE. On interdit
   la coupure et on reduit la taille pour que le mot le plus long tienne. */
h1,h2,h3,.hlw,.claim .ln,.brk .k,.exp-h2,.statement{overflow-wrap:normal;word-break:normal;}

@media(max-width:760px){
  .etop .left a{font-size:.78rem;}          /* 11,2px etait sous le seuil de lisibilite */
  .phero h1{font-size:1.72rem;letter-spacing:.01em;}
  .shero h1{font-size:1.85rem;}
  /* Le socle flottant (chat + WhatsApp) recouvrait la fin des pages. */
  .cta,.sec:last-of-type{padding-bottom:96px;}
}

@media(max-width:420px){
  .phero h1{font-size:1.55rem;}
  .mnav .mlist > a,.mnav .msub-t{font-size:1.2rem;}
}

/* 3. Cibles tactiles trop petites au doigt (mesure a 375px).
   Le lien telephone du bandeau ne faisait que 15px de haut, alors que c'est
   l'element le plus important de la page pour un cabinet. */
@media(max-width:760px){
  .etop .left a{display:inline-flex;align-items:center;padding:9px 4px;}
  .etop .social a{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;}
  .crumbs a{padding:6px 0;display:inline-block;}
  .bot .legal a,.fcol a,.fnav a{padding:7px 0;display:inline-block;}
}

/* Echelle typographique mobile coherente.
   La reduction des h1 avait inverse la hierarchie : sur /expertise/ le titre
   de page tombait a 24,8px pendant que les h2 restaient a 27,2px, et le h2 du
   bloc d'appel a 32px depassait tous les titres. Une seule echelle sous
   760px : h1 25 / h2 21 / h3 17 / texte 16. */
@media(max-width:760px){
  .sec-h h2,.cta h2,.exp-h2,.feat .fbody h2,.split h2,.statement,.ahero-text .statement,.prose h2{font-size:1.32rem;line-height:1.28;}
  .dcard h3,.post h3,.aside .hd h3{font-size:1.06rem;line-height:1.25;}
  .phero .lead,.shero .lead,.lead{font-size:1rem;line-height:1.62;}
  .prose p,.art-body p,.feat .fbody p,.post p{font-size:1rem;line-height:1.65;}
}

/* En-tete, bureau : l'entree active paraissait plus haute que les autres.
   .emenu est un flex avec align-items normal ; l'entree active est un <a>
   display:block alors que « Expertise » est un flex avec son chevron, et les
   deux ne calent pas leur texte de la meme facon. On aligne tout le monde. */
.emenu{align-items:center;}
.emenu > a,.emenu .has-drop > a{display:inline-flex;align-items:center;line-height:1;}

/* Logo trop imposant sur mobile : 170x58 dans un en-tete de 63px. */
@media(max-width:760px){
  .elogo .m,.elogo .m img{width:132px;height:45px;}
}

/* =========================================================================
   Formulaires et typographie mobile (audit 07/08/2026)
   ========================================================================= */

/* Sous 16px, iOS Safari zoome la page a chaque prise de focus : le patient
   doit repincer pour chaque champ. Vaut pour les deux formulaires. */
.field input,.field textarea,.field select{font-size:1rem;}

/* L'etiquette disait au patient quoi saisir en 10,5px capitales monospace,
   soit plus petit et plus pale que le texte indicatif du champ lui-meme. */
.field label{font-size:.8rem;letter-spacing:.05em;text-transform:none;
    color:var(--ink);font-weight:600;}

@media(max-width:760px){
  /* h1 : la bascule etait a 420px, donc un iPhone 12 (390) et un Pixel (412)
     recevaient 27,5px la ou un SE (375) recevait 24,8px. Une seule valeur. */
  .phero h1,.shero h1{font-size:1.56rem;}
  .form-card h2{font-size:1.25rem;}
  .step h3,.qa summary,.vcard h3{font-size:1.06rem;}
  .qa .a{font-size:1rem;line-height:1.7;}
  .step p{font-size:.97rem;}
  .consent{font-size:.9rem;color:var(--ink);align-items:flex-start;gap:12px;line-height:1.5;}
  .consent input{width:24px;height:24px;flex:none;margin-top:0;accent-color:var(--green);}
  .ebtn,.ghost{font-size:.84rem;min-height:50px;}
  .crumbs,.phero .klabel{font-size:.78rem;}
  .sec-h .mono{font-size:.8rem;}
  .facts-band .f .lab{font-size:.76rem;}
  .facts-band .f .val{font-size:1.06rem;}
  .ef h4,.ef .bot{font-size:.8rem;}
  .ef ul a{padding:10px 0;}
  .etop .wrap{min-height:auto;}
  .etop a{font-size:.78rem;}
  /* L'en-tete de section restait en ligne : titre et surtitre se disputaient
     335px et se coupaient tous les deux. */
  .sec-h{flex-direction:column;align-items:flex-start;gap:8px;}
}

@media(max-width:560px){
  .form-card{padding:18px 16px;}
  .form-card .cluster{flex-direction:column;align-items:stretch;gap:10px;}
  .form-card .cluster .ebtn,.form-card .cluster .ghost{justify-content:center;}
  /* L'adresse du cabinet, en nowrap centre absolu, sortait a ~430px dans un
     bloc de 335px en overflow:hidden : les deux bouts etaient coupes. */
  .map{min-height:220px;}
  .map .lbl{position:static;transform:none;white-space:normal;text-align:center;
      margin:0 16px;font-size:.78rem;line-height:1.4;}
}

/* Filtre du blog : la classe remplace les styles en ligne poses par le script. */
.is-filtered-out{display:none;}

/* =========================================================================
   Debordements horizontaux (diagnostic 320/360/375/414 du 07/08/2026)
   =========================================================================
   Cause commune : « grid-template-columns:1fr » vaut minmax(auto,1fr), et le
   minimum automatique d'un element de grille est son min-content. Un champ de
   formulaire sans largeur fait 242px de min-content (taille par defaut 20
   caracteres a 16px), donc la colonne s'elargit jusqu'a 366,8px dans un
   conteneur de 254px. C'est ce qui coupait l'etape 3 du tunnel : +92px a 320px.
   overflow-x:clip masquait tout cela au lieu de l'empecher. */
.field input,.field textarea,.field select{width:100%;min-width:0;}

/* Les mots francais longs ne pouvaient plus se couper depuis que la coupure a
   ete interdite sur les titres : « CARDIOVASCULAIRE » fait 329px a 27px. */
.hlw{overflow-wrap:anywhere;}

/* Les ancres de page arrivaient sous l'en-tete colle. */
html{scroll-padding-top:120px;}

@media(max-width:760px){
  /* Le socle flottant occupait 23,8% de la largeur a 320px et recouvrait le
     bouton « Prendre rendez-vous » en milieu de page. */
  .cta,.sec:last-of-type{padding-bottom:150px;}
  /* Les libelles des reperes du heros etaient a 8px. */
  .svc .nm,.svc .ct em{font-size:.75rem;}
}
@media(max-width:380px){
  .fab-dock{gap:8px;}
  .fab-dock .fab{width:46px;height:46px;}
}

/* =========================================================================
   Barre de contact flottante (mobile)
   =========================================================================
   Elle n'apparait qu'apres 240px de defilement : avant cela le heros porte
   deja les memes appels a l'action, et la barre mangerait 63px du premier
   ecran. Une fois montree, elle ne se cache plus : c'est l'action que la page
   demande, un patient qui hesite ne doit pas avoir a la faire revenir. */
.bkbar{display:none;}
@media(max-width:900px){
  .bkbar{display:grid;grid-template-columns:repeat(3,1fr);position:fixed;left:0;right:0;bottom:0;
      z-index:58;background:var(--white);border-top:1px solid var(--line);
      box-shadow:0 -8px 26px -18px rgba(0,0,0,.5);padding-bottom:env(safe-area-inset-bottom);
      transform:translateY(110%);transition:transform .22s cubic-bezier(.2,.7,.3,1);}
  .bkbar[data-solo]{grid-template-columns:repeat(2,1fr);}
  .bkbar.is-in{transform:none;}
  .bkbar-a{min-height:62px;display:flex;flex-direction:column;align-items:center;justify-content:center;
      gap:3px;font-family:'Outfit',sans-serif;font-weight:600;font-size:.78rem;letter-spacing:.03em;
      color:var(--ink);text-align:center;border-left:1px solid var(--line);}
  .bkbar-a:first-child{border-left:0;}
  .bkbar-a i,.bkbar-a svg{width:22px;height:22px;}
  .bkbar-call{background:var(--green);color:var(--white);}
  .bkbar-call i{color:var(--white);}
  .bkbar-wa svg{color:var(--green);}
  .bkbar-rdv i{color:var(--accent);}
  .bkbar-a:active{background:color-mix(in srgb,var(--ink) 8%,var(--white));}
  .bkbar-a:focus-visible{outline:2px solid var(--accent);outline-offset:-3px;}

  /* WhatsApp ne doit figurer qu'une fois : il passe dans la barre, le socle
     flottant remonte au-dessus d'elle. */
  body.has-bkbar .fab-wa{display:none;}
  body.has-bkbar .fab-dock{bottom:calc(76px + env(safe-area-inset-bottom));}
  body.nav-open .bkbar,body.zack-open .bkbar{transform:translateY(110%);}
  body.has-bkbar{padding-bottom:calc(70px + env(safe-area-inset-bottom));}
  body.has-bkbar .cta,body.has-bkbar .sec:last-of-type{padding-bottom:48px;}
}
@media(prefers-reduced-motion:reduce){.bkbar{transition:none;}}

/* Taille du titre Expertise : posee apres .mnav .msub a (0,2,1) pour gagner
   par l'ordre et non par le poids, sinon les reductions a 560px et 380px
   ne s'appliquent plus. */
.mnav .msub-t{font-size:1.5rem;}
