/* ==========================================================
   Com'Alexis — feuille de style
   Palette : noir / blanc / gris. Motif : le viseur du logo.
   ========================================================== */
:root{
  --bg:#000; --bg2:#0c0c0c; --bg3:#151515; --line:#262626; --line2:#3a3a3a;
  --mut:#8c8c8c; --soft:#c6c6c6; --ink:#fff; --paper:#f3f3f2; --paper-line:#d8d8d6; --paper-mut:#5f5f5f;
  --ff-d:'Bricolage Grotesque',system-ui,-apple-system,'Segoe UI',sans-serif;
  --ff-b:'Instrument Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --max:1240px; --pad:clamp(20px,4vw,56px); --head:76px;
  --ease:cubic-bezier(.2,.7,.2,1);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--head) + 16px);-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--ff-b);font-size:1.0625rem;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{max-width:100%;display:block}
a{color:inherit}
p{margin:0 0 1em;max-width:68ch}
h1,h2,h3,h4{font-family:var(--ff-d);font-weight:700;line-height:1.05;letter-spacing:-.02em;margin:0 0 .5em}
h1{font-size:clamp(2.6rem,7.4vw,7rem);font-weight:800;letter-spacing:-.035em}
h2{font-size:clamp(2rem,4.6vw,3.8rem)}
h3{font-size:clamp(1.3rem,2vw,1.7rem);letter-spacing:-.01em}
:focus-visible{outline:2px solid #fff;outline-offset:3px}
.light :focus-visible{outline-color:#000}
.skip{position:absolute;left:-999px;top:8px;background:#fff;color:#000;padding:10px 16px;z-index:200}
.skip:focus{left:8px}
.wrap{width:100%;max-width:calc(var(--max) + var(--pad)*2);margin-inline:auto;padding-inline:var(--pad)}
section{position:relative}
.sec{padding-block:clamp(72px,11vw,150px)}
.light{background:var(--paper);color:#000}
.light .mut{color:var(--paper-mut)}
.mut{color:var(--mut)}
.lead{font-size:clamp(1.15rem,1.7vw,1.45rem);line-height:1.5;color:var(--soft);max-width:48ch}
.light .lead{color:#222}

/* ---------- Boutons ---------- */
.btn{display:inline-flex;align-items:center;gap:.7em;padding:.95em 1.7em;border:1px solid #fff;background:transparent;color:#fff;font:600 .98rem/1 var(--ff-b);text-decoration:none;cursor:pointer;transition:background .35s var(--ease),color .35s var(--ease),border-color .35s var(--ease)}
.btn:hover{background:#fff;color:#000}
.btn.solid{background:#fff;color:#000}
.btn.solid:hover{background:transparent;color:#fff}
.light .btn{border-color:#000;color:#000}
.light .btn:hover{background:#000;color:#fff}
.light .btn.solid{background:#000;color:#fff}
.light .btn.solid:hover{background:transparent;color:#000}
.btn[disabled]{opacity:.5;cursor:wait}
.row{display:flex;flex-wrap:wrap;gap:14px}

/* ---------- Motif viseur (4 angles du logo) ---------- */
.vf{position:relative}
.vf>.c{position:absolute;width:var(--cs,26px);height:var(--cs,26px);border:0 solid currentColor;pointer-events:none;z-index:2}
.vf>.c.tl{top:0;left:0;border-top-width:2px;border-left-width:2px}
.vf>.c.tr{top:0;right:0;border-top-width:2px;border-right-width:2px}
.vf>.c.bl{bottom:0;left:0;border-bottom-width:2px;border-left-width:2px}
.vf>.c.br{bottom:0;right:0;border-bottom-width:2px;border-right-width:2px}

/* ---------- En-tête ---------- */
.site-head{position:fixed;inset:0 0 auto 0;height:var(--head);z-index:100;display:flex;align-items:center;transition:background .35s,border-color .35s,backdrop-filter .35s;border-bottom:1px solid transparent}
.site-head.scrolled{background:rgba(0,0,0,.82);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom-color:var(--line)}
.head-in{display:flex;align-items:center;justify-content:space-between;gap:24px;width:100%}
.brand{display:flex;align-items:center;text-decoration:none}
.brand img{height:46px;width:auto}
.nav ul{display:flex;gap:clamp(18px,3vw,40px);list-style:none;margin:0;padding:0;align-items:center}
.nav a{text-decoration:none;font-weight:500;font-size:.98rem;color:var(--soft);padding:6px 0;position:relative;transition:color .25s}
.nav a:hover,.nav a[aria-current="page"]{color:#fff}
.nav a[aria-current="page"]::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:#fff}
.nav .btn{padding:.7em 1.3em;color:#fff;font-size:.92rem}
.nav .btn:hover{color:#000}
.burger{display:none;width:44px;height:44px;background:none;border:1px solid var(--line2);color:#fff;cursor:pointer;position:relative}
.burger span,.burger span::before,.burger span::after{display:block;position:absolute;left:12px;right:12px;height:2px;background:#fff;content:"";transition:transform .3s var(--ease),opacity .2s}
.burger span{top:50%;margin-top:-1px}
.burger span::before{top:-6px;left:0;right:0}
.burger span::after{top:6px;left:0;right:0}
.burger[aria-expanded="true"] span{background:transparent}
.burger[aria-expanded="true"] span::before{transform:translateY(6px) rotate(45deg)}
.burger[aria-expanded="true"] span::after{transform:translateY(-6px) rotate(-45deg)}

/* ---------- Hero ---------- */
.hero{min-height:100svh;display:flex;padding:calc(var(--head) + 18px) var(--pad) var(--pad)}
.hero-frame{--cs:clamp(28px,4vw,56px);flex:1;display:flex;flex-direction:column;justify-content:flex-end;padding:clamp(28px,5vw,72px);max-width:calc(var(--max) + 2*var(--pad));margin-inline:auto;width:100%;min-height:calc(100svh - var(--head) - var(--pad) - 18px)}
.hero-frame>.c{opacity:0;transition:transform 1.1s var(--ease),opacity .6s}
.hero-frame>.tl{transform:translate(40px,40px)}.hero-frame>.tr{transform:translate(-40px,40px)}
.hero-frame>.bl{transform:translate(40px,-40px)}.hero-frame>.br{transform:translate(-40px,-40px)}
.loaded .hero-frame>.c{opacity:1;transform:none}
.hero h1{margin-bottom:.35em}
.hero h1 .ln{display:block;overflow:hidden}
.hero h1 .ln>span{display:block;transform:translateY(105%);transition:transform 1s var(--ease)}
.loaded .hero h1 .ln>span{transform:none}
.loaded .hero h1 .ln:nth-child(2)>span{transition-delay:.12s}
.loaded .hero h1 .ln:nth-child(3)>span{transition-delay:.24s}
.hero .lead,.hero .row{opacity:0;transform:translateY(14px);transition:opacity .9s .55s var(--ease),transform .9s .55s var(--ease)}
.loaded .hero .lead,.loaded .hero .row{opacity:1;transform:none}
.hero .row{margin-top:30px}
.hero-meta{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-top:clamp(36px,6vw,80px);padding-top:18px;border-top:1px solid var(--line);color:var(--mut);font-size:.95rem}

/* ---------- Révélations au défilement ---------- */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease),transform .9s var(--ease);transition-delay:var(--d,0s)}
.reveal.in{opacity:1;transform:none}

/* ---------- À propos ---------- */
.about{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(36px,7vw,110px);align-items:center}
.portrait{--cs:34px;padding:14px;color:#000}
.portrait img{width:100%;aspect-ratio:2/3;object-fit:cover;filter:grayscale(1) contrast(1.05);background:#d9d9d7}
.values{margin:44px 0 0;padding:0;list-style:none;border-top:1px solid #000}
.values li{display:grid;grid-template-columns:minmax(0,10rem) 1fr;gap:20px;padding:20px 0;border-bottom:1px solid var(--paper-line)}
.values strong{font-family:var(--ff-d);font-size:1.2rem}
.values span{color:var(--paper-mut)}

/* ---------- Services (aperçu) ---------- */
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;flex-wrap:wrap;margin-bottom:clamp(36px,6vw,72px)}
.sec-head h2{margin:0}
.svc-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line2)}
.svc-list a{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:24px;align-items:baseline;padding:clamp(22px,3vw,38px) 0;border-bottom:1px solid var(--line2);text-decoration:none;transition:padding .45s var(--ease),background .45s}
.svc-list a:hover{padding-left:clamp(12px,2vw,28px);background:var(--bg2)}
.svc-list h3{font-size:clamp(1.6rem,3.6vw,3rem);margin:0;letter-spacing:-.025em}
.svc-list p{margin:0;color:var(--mut);max-width:44ch}
.sec-cta{margin-top:44px}

/* ---------- Avis ---------- */
.quotes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(24px,4vw,56px)}
.quotes blockquote{margin:0;padding:0 0 0 22px;border-left:1px solid #000}
.quotes blockquote p{font-family:var(--ff-d);font-size:clamp(1.25rem,2vw,1.7rem);line-height:1.3;letter-spacing:-.01em;margin-bottom:.8em}
.quotes cite{font-style:normal;color:var(--paper-mut);font-size:.95rem}

/* ---------- Contact ---------- */
.contact{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(36px,7vw,110px)}
.info{margin:36px 0;padding:0;list-style:none;border-top:1px solid var(--line2)}
.info li{padding:16px 0;border-bottom:1px solid var(--line2);display:grid;grid-template-columns:7rem 1fr;gap:12px}
.info dt,.info .k{color:var(--mut);font-size:.95rem}
.info a{text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--line2)}
.info a:hover{text-decoration-color:#fff}
.map-card{--cs:22px;display:block;padding:26px 28px;color:#fff;text-decoration:none;background:var(--bg2);transition:background .35s}
.map-card:hover{background:var(--bg3)}
.map-card strong{display:block;font-family:var(--ff-d);font-size:1.3rem;margin-bottom:4px}
.map-card span{color:var(--mut)}
form{display:grid;gap:26px}
.field{display:grid;gap:8px}
.field label{font-size:.95rem;color:var(--soft)}
input,select,textarea{width:100%;background:transparent;color:#fff;border:0;border-bottom:1px solid var(--line2);padding:12px 0;font:inherit;border-radius:0;transition:border-color .25s}
select{appearance:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%23fff' stroke-width='1.5'%3E%3Cpath d='M1 1l5 5 5-5'/%3E%3C/svg%3E") no-repeat right 4px center}
select option{background:#000;color:#fff}
textarea{min-height:150px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:none;border-bottom-color:#fff}
.two{display:grid;grid-template-columns:1fr 1fr;gap:26px}
.check{display:flex;gap:12px;align-items:flex-start;font-size:.92rem;color:var(--mut)}
.check input{width:20px;height:20px;margin-top:3px;flex:none;accent-color:#fff}
.check a{color:#fff}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.status{min-height:1.6em;font-size:.98rem}
.status.ok{color:#fff}.status.err{color:#ff9d9d}

/* ---------- Pages internes ---------- */
.page-top{padding:calc(var(--head) + clamp(56px,9vw,120px)) 0 clamp(40px,6vw,80px);border-bottom:1px solid var(--line)}
.page-top h1{font-size:clamp(2.4rem,6.4vw,5.8rem)}
.svc{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:clamp(28px,6vw,100px);padding-block:clamp(48px,7vw,96px);border-bottom:1px solid var(--line)}
.svc:last-of-type{border-bottom:0}
.svc-title{position:sticky;top:calc(var(--head) + 24px);align-self:start}
.svc-title h2{font-size:clamp(1.9rem,3.6vw,3.1rem)}
.svc ul{list-style:none;margin:26px 0 0;padding:0}
.svc li{padding:13px 0 13px 30px;border-top:1px solid var(--line);position:relative;color:var(--soft)}
.svc li::before{content:"";position:absolute;left:0;top:1.35em;width:14px;height:1px;background:#fff}
.quote-box{--cs:30px;padding:clamp(34px,6vw,84px);text-align:left}
.quote-box h2{max-width:16ch}
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,2.4vw,32px)}
.card{--cs:20px;display:flex;flex-direction:column;justify-content:space-between;min-height:400px;padding:30px;background:var(--bg2);text-decoration:none;color:#fff;transition:background .4s var(--ease),transform .5s var(--ease)}
.card:hover{background:var(--bg3);transform:translateY(-4px)}
.card .tag{color:var(--mut);font-size:.92rem}
.card h3{font-size:clamp(1.5rem,2.3vw,2rem);margin:.9em 0 .6em}
.card p{color:var(--soft);font-size:1rem}
.card .more{font-weight:600;border-bottom:1px solid #fff;align-self:flex-start;padding-bottom:3px}
.client-box{--cs:30px;padding:clamp(28px,5vw,64px);min-height:320px;background:var(--bg2)}
noscript p{color:var(--mut)}

/* ---------- Documents (CGV / RGPD) ---------- */
.doc-wrap{display:grid;grid-template-columns:minmax(0,15rem) minmax(0,1fr);gap:clamp(30px,6vw,90px);align-items:start}
.toc{position:sticky;top:calc(var(--head) + 24px);font-size:.95rem}
.toc strong{display:block;margin-bottom:12px;font-family:var(--ff-d)}
.toc ol{margin:0;padding:0;list-style:none;border-top:1px solid var(--paper-line)}
.toc a{display:block;padding:8px 0;border-bottom:1px solid var(--paper-line);text-decoration:none;color:var(--paper-mut)}
.toc a:hover{color:#000}
.paper{background:#fff;color:#111;border:1px solid var(--paper-line);padding:clamp(28px,6vw,80px);box-shadow:0 1px 0 var(--paper-line)}
.paper header.doc-id{border-bottom:2px solid #000;padding-bottom:26px;margin-bottom:34px}
.paper .kicker{font-size:.9rem;color:var(--paper-mut);margin-bottom:10px}
.paper h1{font-size:clamp(2rem,4vw,3.2rem);color:#000;margin-bottom:.3em}
.paper h2{font-size:1.45rem;margin:2.2em 0 .6em;padding-top:1.4em;border-top:1px solid var(--paper-line);letter-spacing:-.01em}
.paper h2 small{font-family:var(--ff-b);font-weight:500;color:var(--paper-mut);font-size:.9rem;display:block;margin-bottom:6px;letter-spacing:0}
.paper p,.paper li{color:#222;line-height:1.7;max-width:none}
.paper ul{padding-left:1.2em}
.paper li{margin-bottom:.5em}
.ident{display:grid;grid-template-columns:11rem 1fr;gap:6px 20px;margin:0;font-size:.98rem}
.ident dt{color:var(--paper-mut)}.ident dd{margin:0}
.note{background:var(--paper);border-left:3px solid #000;padding:14px 18px;font-size:.97rem;margin:1.4em 0}
.paper table{width:100%;border-collapse:collapse;font-size:.95rem;margin:1em 0}
.paper th,.paper td{text-align:left;padding:10px 12px;border:1px solid var(--paper-line);vertical-align:top}
.paper th{background:var(--paper)}
.tbl-scroll{overflow-x:auto}
.paper a{color:#000}

/* ---------- Pied de page ---------- */
.site-foot{border-top:1px solid var(--line);padding:clamp(48px,7vw,90px) 0 28px;background:#000}
.foot-grid{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));gap:clamp(24px,4vw,56px)}
.foot-grid img{height:50px;width:auto;margin-bottom:16px}
.foot-grid p{color:var(--mut);font-size:.97rem}
.foot-grid h4{font-size:.95rem;color:var(--mut);font-family:var(--ff-b);font-weight:500;letter-spacing:0;margin-bottom:14px}
.foot-grid ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.foot-grid a,.foot-grid button.lnk{color:#fff;text-decoration:none;font-size:.98rem;background:none;border:0;padding:0;font-family:inherit;cursor:pointer}
.foot-grid a:hover,.foot-grid button.lnk:hover{text-decoration:underline;text-underline-offset:4px}
.foot-bottom{margin-top:clamp(36px,6vw,70px);padding-top:20px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:12px 30px;flex-wrap:wrap;color:var(--mut);font-size:.92rem}

/* ---------- Bannière cookies ---------- */
.cookie{position:fixed;left:0;right:0;bottom:0;z-index:150;background:#0b0b0b;border-top:1px solid var(--line2);padding:18px var(--pad);transform:translateY(110%);transition:transform .6s var(--ease)}
.cookie.show{transform:none}
.cookie-in{max-width:calc(var(--max) + 2*var(--pad));margin:auto;display:flex;gap:20px 36px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.cookie p{margin:0;font-size:.95rem;color:var(--soft);max-width:78ch}
.cookie a{color:#fff}
.cookie .btn{padding:.75em 1.4em;font-size:.92rem}

/* ---------- Responsive ---------- */
@media (max-width:960px){
  .burger{display:block}
  .nav{position:fixed;inset:var(--head) 0 0 0;background:#000;padding:30px var(--pad);transform:translateX(100%);transition:transform .45s var(--ease);overflow:auto}
  .nav.open{transform:none}
  .nav ul{flex-direction:column;align-items:flex-start;gap:6px}
  .nav a{font-size:1.7rem;font-family:var(--ff-d);padding:10px 0;color:#fff}
  .nav .btn{font-size:1.05rem;margin-top:14px}
  .site-head.menu-open{background:#000}
  .about,.contact,.svc,.doc-wrap{grid-template-columns:1fr}
  .portrait{max-width:420px}
  .svc-title,.toc{position:static}
  .toc{display:none}
  .svc-list a{grid-template-columns:1fr;gap:8px}
  .grid{grid-template-columns:1fr}
  .card{min-height:320px}
  .quotes{grid-template-columns:1fr}
  .foot-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  .two{grid-template-columns:1fr}
  .values li,.info li,.ident{grid-template-columns:1fr}
  .foot-grid{grid-template-columns:1fr}
  .hero-meta{flex-direction:column;gap:4px}
  .cookie-in{flex-direction:column;align-items:flex-start}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;transition-delay:0s!important}
  .reveal,.hero .lead,.hero .row,.hero h1 .ln>span,.hero-frame>.c{opacity:1!important;transform:none!important}
}
@media print{.site-head,.cookie,.site-foot,.toc{display:none}.paper{border:0;padding:0}body{background:#fff}.sec{padding:0}}
