:root{
  --ink:#0a0a0a;
  --ink-soft:#48473f;
  --paper:#ffffff;
  --grey:#e7e5df;
  --grey-line:rgba(10,10,10,.22);
  --band-bg:#000000;
  --band-ink:#ffffff;
  --band-line:rgba(255,255,255,.22);
  --band-soft:rgba(255,255,255,.62);
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue",Helvetica,Arial,sans-serif;
  font-size:16.5px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{ margin:0; text-wrap:balance; font-weight:500; }
h1.headline{ font-size:clamp(30px,3.6vw,46px); }
a{ color:inherit; }
:focus-visible{ outline:2px solid var(--ink); outline-offset:3px; }
::selection{ background:var(--ink); color:var(--paper); }
.mono{ font-family:ui-monospace,"SF Mono","Roboto Mono",monospace; }

.shell{ max-width:1280px; margin:0 auto; padding:0 40px; }
@media (max-width:720px){ .shell{ padding:0 22px; } }

.tracked{ letter-spacing:.16em; text-transform:uppercase; }

/* ---- Header ---- */
header.site{
  position:fixed; top:0; left:0; right:0; z-index:60;
  background:var(--band-bg);
  border-bottom:1px solid var(--band-line);
}
section[id]{ scroll-margin-top:96px; }
.nav-row{ display:flex; align-items:center; justify-content:space-between; padding:22px 0; gap:24px; }
.brand-logo{ height:30px; width:auto; display:block; }
nav.links{ display:flex; gap:34px; }
nav.links a{ text-decoration:none; color:var(--band-soft); font-size:12.5px; }
nav.links a:hover{ color:var(--band-ink); }
.nav-right{ display:flex; align-items:center; gap:18px; }
.tel-inline{ font-size:13px; color:var(--band-soft); white-space:nowrap; display:none; text-decoration:none; }
@media (min-width:900px){ .tel-inline{ display:inline; } }

.burger-toggle{ display:none; }
.burger-label{ display:none; }
@media (max-width:900px){
  nav.links{
    display:flex; flex-direction:column; gap:0;
    position:fixed; top:65px; left:0; right:0;
    background:var(--band-bg); border-bottom:1px solid var(--band-line);
    max-height:0; overflow:hidden; transition:max-height .25s ease;
  }
  nav.links a{ padding:16px 22px; border-top:1px solid var(--band-line); font-size:13.5px; }
  .burger-toggle:checked ~ nav.links{ max-height:280px; }
  .burger-label{
    display:flex; flex-direction:column; justify-content:center; gap:5px;
    width:22px; height:16px; cursor:pointer;
  }
  .burger-label span{ display:block; height:1.5px; width:100%; background:var(--band-ink); }
}

.btn{
  display:inline-flex; align-items:center; gap:8px;
  padding:13px 24px;
  font-size:12.5px; font-weight:600;
  text-decoration:none;
  white-space:nowrap;
  border:1px solid currentColor;
}
.btn-on-dark{ color:var(--band-ink); }
.btn-on-dark:hover{ background:rgba(255,255,255,.1); }
.btn-solid{ background:var(--paper); color:var(--ink); border-color:var(--paper); }
.btn-solid:hover{ background:var(--grey); }

/* ---- Bouton WhatsApp flottant ---- */
.wa-fab{
  position:fixed; right:24px; bottom:24px; z-index:55;
  display:inline-flex; align-items:center; gap:10px;
  padding:14px 20px;
  background:var(--ink); color:var(--paper);
  border:1px solid var(--ink);
  border-radius:999px;
  font-size:12.5px; font-weight:600; letter-spacing:.02em;
  text-decoration:none; white-space:nowrap;
  box-shadow:0 8px 26px rgba(10,10,10,.28);
  transition:transform .18s ease, box-shadow .18s ease;
}
.wa-fab:hover{ transform:translateY(-2px); box-shadow:0 12px 32px rgba(10,10,10,.34); }
.wa-fab svg{ display:block; flex:none; }
@media (max-width:640px){
  .wa-fab{ right:16px; bottom:16px; padding:0; width:54px; height:54px; justify-content:center; }
  .wa-fab .wa-label{ display:none; }
}
@media (prefers-reduced-motion:reduce){
  .wa-fab{ transition:none; }
  .wa-fab:hover{ transform:none; }
}

/* ---- Hero ---- */
.hero{
  position:relative;
  min-height:100vh;
  min-height:100svh;
  display:flex; flex-direction:column; justify-content:flex-end;
  background:
    radial-gradient(120% 90% at 15% 0%, #202020 0%, transparent 55%),
    linear-gradient(180deg, #050505 0%, #0d0d0d 55%, #030303 100%);
  overflow:hidden;
}
@media (max-width:720px){
  .hero{ min-height:82vh; min-height:82svh; }
  .hero-photo{ background-position:center 50%; }
}
.hero-photo{
  position:absolute; inset:0;
  background-size:cover;
  background-position:center 46%;
  background-repeat:no-repeat;
}
.hero-photo::after{
  content:"";
  position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(0,0,0,.45) 0%, rgba(0,0,0,0) 22%, rgba(0,0,0,0) 62%, rgba(0,0,0,.85) 100%);
}
.hero-tagline{
  position:relative; z-index:2;
  padding:0 0 64px;
  text-align:center;
  font-size:14px;
  color:rgba(255,255,255,.82);
  letter-spacing:.34em;
  text-transform:uppercase;
}
@media (max-width:720px){ .hero-tagline{ font-size:11px; letter-spacing:.2em; padding:0 20px 48px; } }

/* ---- Accroche du hero ---- */
.hero-pitch{ position:relative; z-index:2; padding-bottom:56px; max-width:1280px; }
.hero-title{
  margin:0; font-weight:500; line-height:1.12;
  font-size:clamp(27px,3.9vw,46px); color:var(--band-ink);
  text-wrap:balance; text-shadow:0 2px 24px rgba(0,0,0,.5); max-width:20ch;
}
.hero-region{
  display:block; margin-top:16px;
  font-size:13.5px; font-weight:600; letter-spacing:.26em; text-transform:uppercase;
  color:rgba(255,255,255,.82); text-shadow:none;
}
.hero-sub{
  margin:18px 0 0; font-size:16px; color:rgba(255,255,255,.92); max-width:48ch;
}
.hero-sub b{ font-weight:700; }
.hero-cta{ display:flex; flex-wrap:wrap; gap:12px; margin-top:26px; }
.hero-cta .btn{ text-decoration:none; }

/* ---- Bandeau d'arguments sous la photo ---- */
.hero-chips{ background:var(--band-bg); color:var(--band-ink); padding:20px 0 22px; }
.hero-chips .shell{ display:flex; flex-direction:column; gap:13px; }
.chip-row{ display:flex; flex-wrap:wrap; gap:9px; }
.hero-chips .chip{
  font-size:10.5px; letter-spacing:.11em; text-transform:uppercase;
  color:rgba(255,255,255,.84); border:1px solid rgba(255,255,255,.26); padding:7px 13px;
}
.hero-reassure{ margin:0; font-size:13px; color:rgba(255,255,255,.62); }

/* ---- Barre d'appel fixe, mobile uniquement ---- */
.callbar{ display:none; }
@media (max-width:720px){
  .hero-cta{ display:none; }
  .hero-pitch{ padding-bottom:44px; }
  .hero-region{ font-size:11.5px; letter-spacing:.2em; margin-top:12px; }
  .hero-sub{ font-size:14.5px; margin-top:15px; }
  .wa-fab{ display:none; }
  body{ padding-bottom:66px; }
  .callbar{
    display:grid; grid-template-columns:1fr 1fr; gap:8px;
    position:fixed; left:0; right:0; bottom:0; z-index:70;
    padding:10px 14px calc(10px + env(safe-area-inset-bottom));
    background:linear-gradient(180deg, rgba(10,10,10,0) 0%, rgba(10,10,10,.9) 40%);
    backdrop-filter:blur(6px);
  }
  .callbar a{
    padding:11px 0; text-align:center; text-decoration:none;
    font-size:12.5px; font-weight:600; letter-spacing:.04em;
    border:1px solid rgba(255,255,255,.34); border-radius:8px;
    color:rgba(255,255,255,.94); background:#0a0a0a;
  }
  .callbar .c-wa{ display:flex; align-items:center; justify-content:center; gap:6px; }
}

/* ---- Séquence d'apparition du hero ---- */
.rise{ opacity:0; animation:riseIn .85s cubic-bezier(.16,.84,.34,1) forwards; }
.hero-title{ animation-delay:.12s; }
.hero-region{ opacity:0; animation:riseIn .75s cubic-bezier(.16,.84,.34,1) .40s forwards; }
.hero-sub{ animation-delay:.66s; }
.hero-cta{ animation-delay:.88s; }
.hero-chips .chip{ opacity:0; animation:riseIn .7s cubic-bezier(.16,.84,.34,1) 1.1s forwards; }
.hero-reassure{ opacity:0; animation:riseIn .7s cubic-bezier(.16,.84,.34,1) 1.3s forwards; }
@keyframes riseIn{
  from{ opacity:0; transform:translateY(22px); filter:blur(7px); }
  to  { opacity:1; transform:none;             filter:blur(0); }
}

/* ---- Sections ---- */
.section{ padding:120px 0; }
.section.grey{ background:var(--grey); }
.section.band{ background:var(--band-bg); color:var(--band-ink); }
.section.tight{ padding:90px 0; }
@media (max-width:720px){ .section{ padding:72px 0; } }

.headline{ font-size:clamp(30px,3.6vw,46px); max-width:20ch; font-weight:500; letter-spacing:-.01em; }
.subline{ margin:38px 0 0; font-size:15px; color:var(--ink-soft); }
.band .subline{ color:var(--band-soft); }

.twocol.single{ grid-template-columns:1fr; }
.twocol{ display:grid; grid-template-columns:1fr 1fr; gap:64px; margin-top:64px; }
@media (max-width:860px){ .twocol{ grid-template-columns:1fr; gap:44px; } }
.col h3{ font-size:18px; font-weight:600; margin-bottom:20px; }
.col .rule{ border:none; border-top:1px solid var(--grey-line); margin:0 0 22px; }
.band .col .rule{ border-top-color:var(--band-line); }
.col p{ color:var(--ink-soft); margin:0 0 18px; font-size:15.2px; }
.col p b{ color:var(--ink); font-weight:600; }
.col ul{ margin:0 0 18px; padding-left:20px; color:var(--ink-soft); font-size:15.2px; display:flex; flex-direction:column; gap:8px; }
.col ul li::marker{ color:var(--ink); }
.col .lead-label{ font-weight:600; color:var(--ink); margin:0 0 12px; }

/* ---- Portfolio ---- */
.folio-intro{ max-width:52ch; }
.folio-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:32px 28px; margin-top:48px; }
@media (max-width:1100px){ .folio-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:640px){ .folio-grid{ grid-template-columns:1fr; gap:24px; } }
.folio-photo{
  aspect-ratio:4/3;
  background-size:cover;
  background-position:center;
  border:1px solid var(--band-line);
  margin-bottom:14px;
}
.folio h3{ color:var(--band-ink); font-size:15.5px; font-weight:600; max-width:34ch; }

/* ---- Full-bleed banner ---- */
.banner{
  position:relative;
  height:56vh; min-height:340px;
  background-size:cover; background-position:center;
}
.banner::after{ content:""; position:absolute; inset:0; background:rgba(0,0,0,.18); }
.banner .banner-cap{
  position:absolute; left:40px; bottom:28px; z-index:2;
  color:#fff; font-size:11.5px; letter-spacing:.14em; text-transform:uppercase;
  text-shadow:0 1px 6px rgba(0,0,0,.5);
}
@media (max-width:720px){ .banner{ height:40vh; } }

/* ---- Engagements (replaces testimonials) ---- */
.pledge{ text-align:center; max-width:800px; margin:0 auto; }
.pledge blockquote{
  margin:0; font-size:clamp(20px,2.6vw,28px); font-style:italic; font-weight:500;
  line-height:1.5; color:var(--ink);
}
.pledge-row{ display:flex; justify-content:center; gap:14px 40px; flex-wrap:wrap; margin-top:44px; }
.pledge-chip{ font-size:12px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-soft); }
.pledge-chip::before{ content:"—"; margin-right:8px; color:var(--ink); }

/* ---- Contact / CTA ---- */
.contact-grid{ display:grid; grid-template-columns:1.2fr .8fr; gap:64px; align-items:end; }
@media (max-width:860px){ .contact-grid{ grid-template-columns:1fr; } }
.lead-form{ margin:40px 0 0; }
.lead-row{ display:grid; grid-template-columns:1fr 1fr; gap:28px; }
@media (max-width:640px){ .lead-row{ grid-template-columns:1fr; gap:0; } }
.lead-field{ display:block; margin-bottom:26px; }
.lead-field > span{
  display:block; font-size:11px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--band-soft); margin-bottom:8px;
}
.lead-field > span em{ font-style:normal; text-transform:none; letter-spacing:0; opacity:.7; }
.lead-field input, .lead-field select, .lead-field textarea{
  width:100%;
  background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.28);
  color:var(--band-ink); font-family:inherit; font-size:16px;
  padding:14px 14px;
  border-radius:0; resize:none; -webkit-appearance:none; appearance:none;
  transition:border-color .15s ease, background .15s ease;
}
.lead-field input::placeholder, .lead-field textarea::placeholder{ color:rgba(255,255,255,.45); }
.lead-field select{
  cursor:pointer; color:var(--band-ink);
  background-image:linear-gradient(45deg,transparent 50%,rgba(255,255,255,.7) 50%),
                   linear-gradient(135deg,rgba(255,255,255,.7) 50%,transparent 50%);
  background-position:calc(100% - 19px) center, calc(100% - 13px) center;
  background-size:6px 6px, 6px 6px;
  background-repeat:no-repeat;
  padding-right:40px;
}
.lead-field select option{ background:#111; color:var(--band-ink); }
.lead-field input:hover, .lead-field select:hover, .lead-field textarea:hover{
  border-color:rgba(255,255,255,.5);
}
.lead-field input:focus, .lead-field select:focus, .lead-field textarea:focus{
  outline:none; border-color:var(--band-ink); background:rgba(255,255,255,.1);
}
.lead-field.invalid input, .lead-field.invalid select{ border-color:#ff6b6b; }
.lead-req{ color:rgba(255,255,255,.45); }
.hp{ position:absolute; left:-9999px; opacity:0; height:0; width:0; }
.h-captcha{ margin:4px 0 26px; min-height:70px; }
.lead-status{ margin:18px 0 0; font-size:14px; color:var(--band-soft); min-height:20px; }
.lead-status.ok{ color:var(--band-ink); }
.lead-status.ko{ color:#ff9b9b; }
#leadSubmit[disabled]{ opacity:.55; cursor:default; }
#leadSubmit{ padding:16px 28px; }
@media (max-width:640px){ #leadSubmit{ width:100%; justify-content:center; } }
.contact-details{ display:flex; flex-direction:column; gap:16px; }
.contact-details a{ text-decoration:none; font-size:15px; }
.contact-details a:hover{ text-decoration:underline; }
.contact-details .lbl{ font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--band-soft); display:block; margin-bottom:4px; }
.contact-details .wa-inline{
  display:flex; width:fit-content; align-items:center; gap:7px;
  margin-top:5px; font-size:13.5px; color:var(--band-soft);
}
.contact-details .wa-inline:hover{ color:var(--band-ink); }
.contact-details .wa-inline svg{ flex:none; }

/* ---- Footer ---- */
footer.site{ background:var(--band-bg); color:var(--band-soft); padding-top:96px; }
.footer-top{ display:flex; justify-content:space-between; gap:40px; flex-wrap:wrap; align-items:flex-start; padding-bottom:56px; border-bottom:1px solid var(--band-line); }
.footer-brand .brand-logo{ height:40px; margin-bottom:14px; }
.footer-tagline{ display:flex; gap:16px; font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--band-soft); }
.footer-about{ max-width:34ch; font-size:15px; color:var(--band-soft); }
.footer-cols{ display:grid; grid-template-columns:repeat(3,1fr); gap:40px; padding:56px 0; }
@media (max-width:720px){ .footer-cols{ grid-template-columns:1fr 1fr; } .footer-top{ flex-direction:column; } }
.footer-cols h4{ font-size:11.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--band-ink); margin:0 0 20px; font-weight:600; }
.footer-cols ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:12px; }
.footer-cols a{ text-decoration:none; font-size:14.5px; color:var(--band-soft); }
.footer-cols a:hover{ color:var(--band-ink); }
.footer-bottom{ border-top:1px solid var(--band-line); padding:22px 0; font-size:12px; color:var(--band-soft); display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; }

/* ---- Motion / modernité ---- */
.reveal{
  opacity:0;
  transform:translateY(28px);
  transition:opacity .85s cubic-bezier(.22,.61,.36,1), transform .85s cubic-bezier(.22,.61,.36,1);
  will-change:opacity, transform;
}
.reveal.is-in{ opacity:1; transform:none; }
.reveal.d1{ transition-delay:.08s; }
.reveal.d2{ transition-delay:.16s; }
.reveal.d3{ transition-delay:.24s; }

/* Hero: lent zoom-out au chargement */
.hero-photo{
  transform:scale(1.08);
  transition:transform 2.4s cubic-bezier(.22,.61,.36,1);
}
.hero-photo.is-in{ transform:scale(1); }
.hero-tagline{
  opacity:0; transform:translateY(14px);
  transition:opacity 1s ease .5s, transform 1s cubic-bezier(.22,.61,.36,1) .5s;
}
.hero-tagline.is-in{ opacity:1; transform:none; }

/* Header: fond plein après scroll */
header.site{ transition:background-color .35s ease, border-color .35s ease; }
header.site.scrolled{ background:rgba(0,0,0,.92); backdrop-filter:blur(10px); }

/* Cartes réalisations: zoom photo au survol */
.folio{ }
.folio-photo{
  overflow:hidden;
  transition:transform .6s cubic-bezier(.22,.61,.36,1), filter .6s ease;
}
.folio:hover .folio-photo{ transform:scale(1.03); filter:brightness(1.08); }
.folio h3{ transition:color .3s ease; }
.folio:hover h3{ color:#fff; }

/* Boutons: micro-interaction */
.btn{ transition:background-color .3s ease, color .3s ease, transform .2s ease; }
.btn:active{ transform:translateY(1px); }

/* Liens nav: soulignement animé */
@media (min-width:901px){
  nav.links a{ position:relative; padding-bottom:3px; }
  nav.links a::after{
    content:""; position:absolute; left:0; bottom:0; height:1px; width:100%;
    background:var(--band-ink); transform:scaleX(0); transform-origin:right;
    transition:transform .35s cubic-bezier(.22,.61,.36,1);
  }
  nav.links a:hover::after{ transform:scaleX(1); transform-origin:left; }
}

@media (prefers-reduced-motion:reduce){
  .rise, .hero-title, .hero-region, .hero-sub, .hero-cta, .hero-chips .chip, .hero-reassure{
    opacity:1 !important; animation:none !important; transform:none !important; filter:none !important;
  }
  .reveal, .hero-photo, .hero-tagline, .folio-photo, .btn, header.site, nav.links a::after{
    transition:none !important;
  }
  .reveal{ opacity:1; transform:none; }
  .hero-photo{ transform:none; }
  .hero-tagline{ opacity:1; transform:none; }
}
