@font-face {
  font-family:'Bebas Neue';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('assets/fonts/bebas-neue-latin.woff2') format('woff2');
}
@font-face {
  font-family:'Merriweather';
  font-style:normal;
  font-weight:300 900;
  font-display:swap;
  src:url('assets/fonts/merriweather-latin-variable.woff2') format('woff2');
}

:root { --font-display:"Bebas Neue",Impact,sans-serif; --font-body:"Merriweather",Georgia,serif; --ink:#050505; --paper:#f2efe8; --white:#fff; --red:#c10000; --muted:#6f6c65; --line:rgba(5,5,5,.16); }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:var(--font-body),Georgia,serif; }
a { color:inherit; text-decoration:none; }
button,a { -webkit-tap-highlight-color:transparent; }
.site-header { position:fixed; inset:0 0 auto; z-index:50; height:72px; padding:0 clamp(24px,5vw,76px); display:flex; align-items:center; justify-content:space-between; color:var(--white); background:rgba(5,5,5,.96); border-bottom:1px solid rgba(255,255,255,.13); }
.brand { display:inline-flex; align-items:center; gap:12px; font:26px var(--font-display); letter-spacing:.06em; }
.brand img { width:32px; height:40px; object-fit:contain; }
.brand b { color:var(--red); font-weight:400; }
.nav { display:flex; align-items:center; gap:clamp(20px,2.6vw,42px); font-family:var(--font-display); letter-spacing:.08em; }
.nav a { position:relative; font-size:16px; }
.nav a:not(.nav-cta)::after { content:''; position:absolute; left:0; right:100%; bottom:-7px; height:2px; background:var(--red); transition:right .2s ease; }
.nav a:hover::after,.nav a:focus-visible::after { right:0; }
.nav-cta { padding:12px 18px; border:1px solid var(--red); }
.nav-cta:hover { background:var(--red); }
.menu-toggle { display:none; }
.hero { position:relative; min-height:760px; padding:150px clamp(24px,7vw,108px) 80px; display:grid; grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr); align-items:center; gap:6vw; overflow:hidden; color:var(--white); background:var(--ink); }
.hero-grid { position:absolute; inset:0; opacity:.08; background-image:linear-gradient(rgba(255,255,255,.8) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.8) 1px,transparent 1px); background-size:44px 44px; mask-image:linear-gradient(90deg,transparent,black 40%,black); }
.hero-copy,.hero-visual { position:relative; z-index:1; }
.eyebrow { margin:0 0 20px; color:var(--red); font:17px var(--font-display); letter-spacing:.18em; text-transform:uppercase; }
.hero h1,h2 { margin:0; font-family:var(--font-display); font-weight:400; line-height:.94; letter-spacing:.02em; text-transform:uppercase; }
.hero h1 { max-width:820px; font-size:clamp(62px,7.1vw,116px); }
.hero h1 span,h2 span { color:var(--red); }
.hero-lead { max-width:690px; margin:30px 0 0; color:#d8d5cf; font-size:clamp(16px,1.25vw,20px); line-height:1.75; }
.hero-actions { display:flex; flex-wrap:wrap; gap:14px; margin-top:34px; }
.button { display:inline-flex; min-height:52px; padding:0 25px; align-items:center; justify-content:center; border:1px solid var(--red); font:18px var(--font-display); letter-spacing:.08em; text-transform:uppercase; transition:transform .18s ease,background .18s ease; }
.button:hover { transform:translateY(-2px); }
.button-primary { background:var(--red); color:white; }
.button-ghost { border-color:rgba(255,255,255,.45); }
.hero-facts { display:flex; margin:48px 0 0; padding:0; list-style:none; border-top:1px solid rgba(255,255,255,.18); }
.hero-facts li { min-width:145px; padding:20px 24px 0 0; }
.hero-facts li+li { padding-left:24px; border-left:1px solid rgba(255,255,255,.18); }
.hero-facts strong { display:block; color:white; font:34px var(--font-display); }
.hero-facts span { color:#aaa69f; font-size:12px; }
.hero-visual { min-height:510px; display:grid; place-items:center; }
.plan-frame { position:relative; width:min(100%,560px); aspect-ratio:1.08; border:2px solid rgba(255,255,255,.75); background:rgba(255,255,255,.025); transform:rotate(-2deg); box-shadow:18px 18px 0 rgba(193,0,0,.18); }
.plan-frame::before,.plan-frame::after { content:''; position:absolute; inset:11% 9% 18%; border:1px solid rgba(255,255,255,.55); }
.plan-frame::after { inset:22% 22% 32%; border-width:2px; }
.plan-title,.plan-note,.plan-scale { position:absolute; font-family:var(--font-display); letter-spacing:.1em; }
.plan-title { top:4%; left:5%; font-size:20px; }.plan-note { bottom:8%; left:6%; color:var(--red); }.plan-scale { bottom:8%; right:6%; font-size:12px; }
.plan-core { position:absolute; left:42%; top:31%; width:16%; height:24%; border:5px double white; }
.plan-axis { position:absolute; display:grid; width:27px; height:27px; place-items:center; border:1px solid white; border-radius:50%; font:14px var(--font-display); }
.axis-a { left:4%; top:29%; }.axis-b { right:4%; top:29%; }.axis-1 { left:35%; top:10%; }.axis-2 { left:35%; bottom:19%; }
.stamp { position:absolute; right:-2%; bottom:2%; padding:12px 22px; border:3px solid var(--red); color:var(--red); font:22px/.8 var(--font-display); text-align:center; transform:rotate(-8deg); }
.stamp b { font-size:48px; font-weight:400; }
.signal-band { min-height:76px; padding:18px clamp(24px,7vw,108px); display:flex; align-items:center; justify-content:space-between; gap:20px; color:white; background:var(--red); font:clamp(17px,1.6vw,25px) var(--font-display); letter-spacing:.13em; }
.signal-band i { width:5px; height:5px; border-radius:50%; background:var(--ink); }
.section { padding:120px clamp(24px,7vw,108px); }
.section-heading { display:grid; grid-template-columns:minmax(240px,.65fr) minmax(420px,1.35fr); column-gap:7vw; align-items:end; margin-bottom:62px; }
.section-heading .eyebrow { grid-column:1; }.section-heading h2 { grid-column:1/-1; font-size:clamp(50px,6vw,88px); }
.section-heading>p:last-child { grid-column:2; margin:24px 0 0; max-width:620px; color:var(--muted); line-height:1.75; }
.service-grid { display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid var(--line); }
.service-card { position:relative; min-height:325px; padding:34px 26px; border-right:1px solid var(--line); }
.service-card:first-child { border-left:1px solid var(--line); }
.service-number { color:var(--red); font:20px var(--font-display); letter-spacing:.1em; }
.service-card h3,.process-list h3 { margin:60px 0 14px; font:32px/1 var(--font-display); text-transform:uppercase; }
.service-card p { margin:0; color:var(--muted); font-size:14px; line-height:1.75; }
.card-line { position:absolute; left:26px; right:calc(100% - 78px); bottom:28px; height:4px; background:var(--red); transition:right .25s ease; }
.service-card:hover .card-line { right:26px; }
.profile { display:grid; grid-template-columns:.8fr 1.2fr; gap:8vw; align-items:center; color:white; background:var(--ink); }
.profile-portrait { position:relative; min-height:600px; display:grid; place-items:end center; overflow:hidden; background:radial-gradient(circle at 50% 45%,#282828,#090909 68%); border:1px solid rgba(255,255,255,.14); }
.profile-portrait::before { content:''; position:absolute; inset:24px; border:1px solid rgba(255,255,255,.14); }
.profile-portrait img { position:relative; width:92%; max-height:570px; object-fit:contain; filter:contrast(1.15); }
.portrait-label { position:absolute; left:0; bottom:0; padding:13px 18px; color:white; background:var(--red); font:18px var(--font-display); letter-spacing:.08em; }
.profile h2,.scope h2 { font-size:clamp(50px,5.2vw,80px); }
.profile-intro { max-width:720px; margin:30px 0; color:#ccc8c0; font-size:17px; line-height:1.8; }
.experience-list { border-top:1px solid rgba(255,255,255,.18); }
.experience-list div { display:grid; grid-template-columns:190px 1fr; gap:25px; padding:20px 0; border-bottom:1px solid rgba(255,255,255,.18); }
.experience-list strong { color:white; font:20px var(--font-display); letter-spacing:.05em; text-transform:uppercase; }
.experience-list span { color:#aaa69f; font-size:14px; line-height:1.6; }
.credentials { display:flex; flex-wrap:wrap; gap:8px; margin-top:28px; }
.credentials span { padding:8px 11px; border:1px solid rgba(255,255,255,.28); color:#d6d1c8; font-size:11px; text-transform:uppercase; letter-spacing:.08em; }
.method { background:#e6e1d7; }.section-heading.narrow { display:block; }
.process-list { margin:0; padding:0; list-style:none; border-top:1px solid var(--ink); }
.process-list li { display:grid; grid-template-columns:130px 1fr; gap:36px; padding:31px 0; border-bottom:1px solid var(--line); }
.process-index { color:var(--red); font:30px var(--font-display); }.process-list h3 { margin:0 0 8px; }.process-list p { max-width:680px; margin:0; color:var(--muted); line-height:1.7; }
.scope { display:grid; grid-template-columns:1fr 1fr; gap:8vw; align-items:start; }
.scope-panel { padding:38px; border:1px solid var(--ink); background:white; box-shadow:12px 12px 0 var(--red); }
.scope-panel>p:first-child { margin-top:0; font-size:17px; line-height:1.7; }.scope-panel ul { margin:26px 0; padding:0; list-style:none; border-top:1px solid var(--line); }
.scope-panel li { position:relative; padding:15px 0 15px 26px; border-bottom:1px solid var(--line); font-size:14px; }.scope-panel li::before { content:'✓'; position:absolute; left:0; color:var(--red); font-weight:bold; }
.scope-limit { margin:0; padding:16px; color:#5f0000; background:#f4dddd; font-size:13px; line-height:1.6; }
.contact { position:relative; min-height:500px; display:grid; place-items:center; overflow:hidden; color:white; background:var(--red); text-align:center; }
.contact-mark { position:absolute; left:5%; top:-130px; color:rgba(0,0,0,.11); font:620px/.8 var(--font-display); }.contact-copy { position:relative; z-index:1; max-width:880px; }
.contact .eyebrow { color:var(--ink); }.contact h2 { font-size:clamp(58px,8vw,112px); }.contact p:not(.eyebrow) { max-width:720px; margin:28px auto; line-height:1.75; }
.button-light { border-color:white; background:white; color:var(--red); }.contact small { display:block; margin-top:18px; color:#ffd8d8; }
footer { min-height:110px; padding:28px clamp(24px,7vw,108px); display:flex; align-items:center; justify-content:space-between; gap:30px; color:#aaa69f; background:var(--ink); font-size:12px; }
.footer-brand { color:white; } footer>div { display:flex; gap:24px; } footer a:hover { color:white; }

@media (max-width:1000px) {
  .nav { position:fixed; inset:72px 0 auto; display:none; padding:28px; flex-direction:column; align-items:stretch; background:var(--ink); border-top:1px solid rgba(255,255,255,.12); }
  .nav.open { display:flex; }.menu-toggle { width:42px; height:42px; display:grid; place-content:center; gap:7px; border:0; background:transparent; }.menu-toggle span { display:block; width:25px; height:2px; background:white; }
  .hero { grid-template-columns:1fr; padding-top:135px; }.hero-visual { min-height:420px; }.service-grid { grid-template-columns:repeat(2,1fr); }.service-card:nth-child(3) { border-left:1px solid var(--line); }.profile { grid-template-columns:1fr; }.profile-portrait { min-height:480px; }
}
@media (max-width:680px) {
  .site-header { height:64px; }.nav { top:64px; }.hero { min-height:auto; padding-top:112px; }.hero h1 { font-size:clamp(54px,16vw,80px); }
  .hero-facts { display:grid; grid-template-columns:repeat(3,1fr); }.hero-facts li { min-width:0; padding-right:10px; }.hero-facts li+li { padding-left:10px; }.hero-facts strong { font-size:25px; }.hero-facts span { font-size:9px; }
  .hero-visual { min-height:300px; }.stamp { right:0; }.signal-band { justify-content:center; flex-wrap:wrap; }.signal-band i { display:none; }.section { padding-top:82px; padding-bottom:82px; }
  .section-heading { display:block; }.section-heading h2,.profile h2,.scope h2 { font-size:clamp(45px,13vw,64px); }.section-heading>p:last-child { margin-top:22px; }
  .service-grid { grid-template-columns:1fr; }.service-card,.service-card:nth-child(3) { min-height:270px; border-left:1px solid var(--line); border-bottom:1px solid var(--line); }
  .profile-portrait { min-height:370px; }.experience-list div { grid-template-columns:1fr; gap:5px; }.process-list li { grid-template-columns:65px 1fr; gap:14px; }.scope { grid-template-columns:1fr; }.scope-panel { padding:25px; box-shadow:7px 7px 0 var(--red); } footer { flex-direction:column; text-align:center; }
}
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { transition-duration:.01ms!important; } }


/* Formulaire de contact */
.contact { padding-top:100px; padding-bottom:100px; }
.contact-copy { width:min(100%,980px); }
.contact-copy>p:not(.eyebrow) { max-width:760px; }
.contact-form { margin:40px auto 0; padding:34px; color:var(--ink); background:var(--paper); text-align:left; border:1px solid rgba(255,255,255,.75); box-shadow:12px 12px 0 rgba(5,5,5,.2); }
.form-row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.form-group { margin-bottom:20px; }
.form-group label { display:block; margin-bottom:8px; font:16px var(--font-display); letter-spacing:.08em; text-transform:uppercase; }
.form-group label span { color:var(--red); }
.form-group input,.form-group textarea { width:100%; padding:14px 15px; border:1px solid rgba(5,5,5,.42); border-radius:0; color:var(--ink); background:white; font:14px var(--font-body); outline:none; transition:border-color .18s ease,box-shadow .18s ease; }
.form-group textarea { min-height:150px; resize:vertical; line-height:1.6; }
.form-group input:focus,.form-group textarea:focus { border-color:var(--red); box-shadow:0 0 0 3px rgba(193,0,0,.12); }
.form-group input::placeholder,.form-group textarea::placeholder { color:#89857d; }
.form-footer { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-top:5px; }
.form-footer .button { border:0; color:white; background:var(--red); cursor:pointer; }
.form-footer .button:disabled { opacity:.55; cursor:wait; transform:none; }
.contact .form-footer small { margin:0; color:var(--muted); text-align:right; }
.form-status { min-height:24px; margin:18px 0 0!important; color:var(--ink); font-size:14px; text-align:left; }
.form-status.success { color:#176b32; }
.form-status.error { color:#8a0000; }
.form-trap { position:absolute!important; width:1px!important; height:1px!important; overflow:hidden!important; clip:rect(0 0 0 0)!important; white-space:nowrap!important; }
@media (max-width:680px) {
  .contact-form { padding:24px 18px; box-shadow:7px 7px 0 rgba(5,5,5,.2); }
  .form-row { grid-template-columns:1fr; gap:0; }
  .form-footer { align-items:stretch; flex-direction:column; }
  .form-footer .button { width:100%; }
  .contact .form-footer small { text-align:center; }
}

/* Véritable extrait de plan dans le visuel d’accueil */
.hero-visual { min-width:0; }
.real-plan { position:relative; width:128%; margin:0 0 0 -14%; aspect-ratio:2.65; overflow:hidden; border:1px solid rgba(255,255,255,.68); background:#111; transform:rotate(-2.2deg); box-shadow:18px 18px 0 rgba(193,0,0,.2),0 22px 55px rgba(0,0,0,.45); }
.real-plan::after { content:''; position:absolute; inset:0; pointer-events:none; box-shadow:inset 0 0 0 1px rgba(255,255,255,.12); }
.real-plan img { display:block; width:100%; height:100%; object-fit:cover; object-position:center 48%; filter:contrast(1.04) brightness(.96); }
.real-plan figcaption { position:absolute; left:0; bottom:0; padding:10px 15px; color:white; background:var(--red); font:16px var(--font-display); letter-spacing:.1em; text-transform:uppercase; }
@media (max-width:1000px) {
  .real-plan { width:min(920px,112%); margin-left:-6%; }
}
@media (max-width:680px) {
  .hero-visual { min-height:260px; }
  .real-plan { width:110%; margin-left:-5%; aspect-ratio:2.15; box-shadow:10px 10px 0 rgba(193,0,0,.2); }
  .real-plan figcaption { padding:8px 11px; font-size:13px; }
}

/* Positionnement desktop et visionneuse du plan */
@media (min-width:1001px) {
  .real-plan { width:118%; margin-left:8%; transform:rotate(-5deg); transform-origin:center; }
}
.real-plan { cursor:zoom-in; transition:transform .22s ease,box-shadow .22s ease; }
.real-plan:hover,.real-plan:focus-visible { box-shadow:22px 22px 0 rgba(193,0,0,.24),0 28px 65px rgba(0,0,0,.55); outline:none; }
.real-plan:focus-visible { outline:2px solid white; outline-offset:7px; }
.plan-viewer[hidden] { display:none; }
.plan-viewer { position:fixed; inset:0; z-index:1000; display:grid; grid-template-rows:auto 1fr auto; color:white; background:rgba(3,3,3,.97); }
.plan-viewer-toolbar { min-height:68px; padding:12px clamp(16px,3vw,44px); display:flex; align-items:center; justify-content:space-between; gap:20px; border-bottom:1px solid rgba(255,255,255,.18); background:#080808; }
.plan-viewer-toolbar p { margin:0; display:flex; align-items:baseline; gap:14px; font-family:var(--font-display); letter-spacing:.09em; text-transform:uppercase; }
.plan-viewer-toolbar p strong { font-size:22px; font-weight:400; }
.plan-viewer-toolbar p span { color:var(--red); font-size:16px; }
.plan-viewer-toolbar>div { display:flex; gap:8px; }
.plan-viewer-toolbar button { min-width:42px; height:42px; padding:0 13px; border:1px solid rgba(255,255,255,.4); color:white; background:transparent; font:17px var(--font-display); cursor:pointer; }
.plan-viewer-toolbar button:hover,.plan-viewer-toolbar button:focus-visible { border-color:var(--red); background:var(--red); outline:none; }
.plan-viewer-toolbar .plan-viewer-close { margin-left:10px; font-size:27px; }
.plan-viewer-stage { position:relative; min-width:0; min-height:0; overflow:hidden; cursor:grab; touch-action:none; background-color:#111; background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px); background-size:32px 32px; }
.plan-viewer-stage.dragging { cursor:grabbing; }
.plan-viewer-stage img { position:absolute; left:50%; top:50%; width:auto; height:auto; max-width:none; max-height:none; transform-origin:center; user-select:none; will-change:transform; pointer-events:none; }
.plan-viewer-help { margin:0; padding:10px 20px; color:#b9b5ad; background:#080808; font-size:12px; text-align:center; }
body.plan-viewer-open { overflow:hidden; }
@media (max-width:680px) {
  .plan-viewer-toolbar { align-items:flex-start; }
  .plan-viewer-toolbar p { display:block; }
  .plan-viewer-toolbar p span { display:block; margin-top:2px; }
  .plan-viewer-toolbar button { min-width:38px; height:38px; padding:0 10px; }
  .plan-viewer-help { font-size:10px; }
}

/* Cadrage resserré du portrait */
.profile-portrait { width:min(100%,500px); min-height:0; aspect-ratio:3/4; justify-self:center; }
.profile-portrait::before { inset:14px; }
.profile-portrait img { width:100%; height:100%; max-height:none; object-fit:cover; object-position:center center; }
@media (max-width:1000px) {
  .profile-portrait { min-height:0; }
}
@media (max-width:680px) {
  .profile-portrait { width:min(100%,430px); min-height:0; aspect-ratio:3/4; }
  .profile-portrait::before { inset:10px; }
  .portrait-label { right:0; padding:11px 12px; font-size:15px; }
}

/* Information RGPD sous le formulaire */
.form-privacy { margin:20px 0 0!important; padding-top:18px; border-top:1px solid var(--line); color:var(--muted)!important; font-size:11px!important; line-height:1.7!important; text-align:left!important; }
.form-privacy a { color:var(--red); text-decoration:underline; text-underline-offset:3px; }
.form-privacy a:hover,.form-privacy a:focus-visible { color:var(--ink); }

/* Mentions légales et données personnelles */
.legal-body { background:#e6e1d7; }
.legal-header { position:relative; }
.legal-back { color:white; font:16px var(--font-display); letter-spacing:.08em; text-transform:uppercase; }
.legal-page { width:min(100% - 48px,1040px); margin:0 auto; padding:95px 0 120px; }
.legal-intro { padding:70px 0 60px; border-bottom:1px solid var(--ink); }
.legal-intro h1 { margin:0; font:clamp(58px,8vw,110px)/.9 var(--font-display); letter-spacing:.02em; text-transform:uppercase; }
.legal-intro h1 span { color:var(--red); }
.legal-intro>p:last-child { margin:28px 0 0; color:var(--muted); font-size:13px; }
.legal-section { padding:54px 0; border-bottom:1px solid var(--line); }
.legal-section h2 { margin:0 0 30px; font:clamp(34px,4vw,52px)/1 var(--font-display); color:var(--ink); text-transform:uppercase; }
.legal-section h3 { margin:32px 0 10px; font:23px/1 var(--font-display); letter-spacing:.04em; text-transform:uppercase; }
.legal-section p,.legal-section address { max-width:850px; margin:0 0 16px; color:#4e4b45; font-size:14px; font-style:normal; line-height:1.85; }
.legal-section a { color:var(--red); text-decoration:underline; text-underline-offset:3px; }
.legal-section a:hover,.legal-section a:focus-visible { color:var(--ink); }
.legal-details { margin:0; border-top:1px solid var(--line); }
.legal-details div { display:grid; grid-template-columns:210px 1fr; gap:30px; padding:17px 0; border-bottom:1px solid var(--line); }
.legal-details dt { font:18px var(--font-display); letter-spacing:.05em; text-transform:uppercase; }
.legal-details dd { margin:0; color:#4e4b45; font-size:14px; line-height:1.6; }
.legal-footer { position:relative; }
@media (max-width:680px) {
  .legal-page { width:min(100% - 36px,1040px); padding-top:40px; padding-bottom:80px; }
  .legal-intro { padding:45px 0; }
  .legal-details div { grid-template-columns:1fr; gap:5px; }
  .legal-back { padding:9px 12px; font-size:13px; }
}

