/* ==========================================================================
   GARDSTAFF — design tokens
   ========================================================================== */
:root{
  --rouge: #E21B1F;
  --rouge-dark: #A80F0F;
  --noir: #12163C;
  --anthracite: #1B2154;
  --anthracite-2: #232A63;
  --acier: #4C5180;
  --acier-clair: #9BA1CC;
  --brume: #ECEDEE;
  --brume-2: #F5F5F8;
  --blanc: #FFFFFF;
  --ligne: #DBDCE6;

  --display: "Barlow Condensed", sans-serif;
  --body: "Public Sans", sans-serif;
  --mono: "JetBrains Mono", monospace;

  --container: 1180px;
  --radius: 16px;
  --radius-sm: 10px;
  --shadow-card: 0 1px 2px rgba(11,11,12,.04), 0 8px 24px rgba(11,11,12,.05);
  --shadow-card-hover: 0 4px 10px rgba(11,11,12,.06), 0 20px 40px rgba(11,11,12,.09);
  --ease: cubic-bezier(.22,.61,.36,1);
}

*,*::before,*::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
#devis{ scroll-margin-top: 96px; }
body{
  margin:0;
  font-family: var(--body);
  color: var(--noir);
  background: var(--blanc);
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
img{ max-width:100%; display:block; }
a{ color: inherit; text-decoration: none; }
h1,h2,h3,h4{
  font-family: var(--display);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.01em;
  line-height: 1.05;
  margin: 0 0 .5em;
}
p{ margin: 0 0 1em; color: var(--acier); }
ul{ margin:0; padding:0; list-style:none; }
.container{ max-width: var(--container); margin: 0 auto; padding: 0 32px; }

::selection{ background: var(--rouge); color: var(--blanc); }

a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible{
  outline: 2px solid var(--rouge);
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce){
  *{ animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
}

.hero-agent-photo{
  position:absolute; right: 8%; top:50%; transform: translateY(-50%);
  width: 320px; height: 360px; border-radius: 20px;
  overflow:hidden; box-shadow: 0 26px 56px rgba(0,0,0,.42);
  border: 3px solid rgba(255,255,255,.18); z-index:2;
}
.hero-agent-photo img{ width:100%; height:100%; object-fit:cover; object-position: center 30%; display:block; }
.hero-map-watermark{
  position:absolute; top:50%; left:40%; transform:translate(-50%,-50%);
  width: 620px; max-width:66%; aspect-ratio: 667/698;
  background-image:url("morocco-silhouette.png");
  background-size:contain; background-repeat:no-repeat; background-position:center;
  opacity:.14; pointer-events:none;
}
@media (max-width: 1200px){
  .hero-agent-photo{ width:260px; height:300px; right:6%; }
}
@media (max-width: 880px){
  .hero-agent-photo{ display:none; }
}

/* ---- eyebrow / kicker ---- */
.kicker{
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--rouge);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 14px;
}
.kicker::before{
  content:"";
  width: 7px; height: 7px;
  border-radius: 50%;
  background: var(--rouge);
  display: inline-block;
}

/* ---- diagonal cut device — echoes the GARDSTAFF mark ---- */
.cut-tr{ clip-path: polygon(0 0, 100% 0, 100% 78%, 78% 100%, 0 100%); }
.cut-br{ clip-path: polygon(0 0, 100% 0, 100% 100%, 22% 100%, 0 82%); }
.cut-tl{ clip-path: polygon(22% 0, 100% 0, 100% 100%, 0 100%, 0 22%); }

/* ---- viewfinder corner brackets — CCTV framing motif ---- */
.bracket{ position: relative; }
.bracket::before,.bracket::after,
.bracket .bk-br,.bracket .bk-bl{
  content:""; position:absolute; width:18px; height:18px; pointer-events:none;
}
.bracket::before{ top:-1px; left:-1px; border-top:2px solid var(--rouge); border-left:2px solid var(--rouge); }
.bracket::after{ top:-1px; right:-1px; border-top:2px solid var(--rouge); border-right:2px solid var(--rouge); }
.bracket .bk-bl{ bottom:-1px; left:-1px; border-bottom:2px solid var(--rouge); border-left:2px solid var(--rouge); }
.bracket .bk-br{ bottom:-1px; right:-1px; border-bottom:2px solid var(--rouge); border-right:2px solid var(--rouge); }

/* ---- status chip: pulsing "on duty" indicator ---- */
.status-chip{
  display:inline-flex; align-items:center; gap:8px;
  font-family: var(--mono); font-size: 11px; letter-spacing: .08em;
  text-transform: uppercase; color: var(--brume);
  border:1px solid rgba(255,255,255,0.18); border-radius: 999px;
  padding: 7px 14px 7px 10px;
}
.status-dot{
  width:7px;height:7px;border-radius:50%; background:#33D17A; flex-shrink:0;
  box-shadow: 0 0 0 0 rgba(51,209,122,.6);
  animation: pulse 2.2s infinite;
}
@keyframes pulse{
  0%{ box-shadow: 0 0 0 0 rgba(51,209,122,.55); }
  70%{ box-shadow: 0 0 0 7px rgba(51,209,122,0); }
  100%{ box-shadow: 0 0 0 0 rgba(51,209,122,0); }
}

/* ---- credential stamp badge ---- */
.stamp{
  width: 108px; height: 108px; border-radius: 50%;
  border: 1.5px dashed var(--acier-clair);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; padding: 10px; flex-shrink: 0;
  transition: transform .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease);
}
.stamp:hover{ transform: translateY(-4px) rotate(-2deg); border-color: var(--rouge); box-shadow: 0 10px 22px rgba(226,20,20,.14); }
.stamp .n{ font-family: var(--mono); font-weight:700; font-size: 15px; color: var(--noir); line-height:1.15;}
.stamp .l{ font-family: var(--mono); font-size: 8.5px; letter-spacing:.06em; text-transform:uppercase; color: var(--acier); margin-top:4px; }

/* ==========================================================================
   Header / Nav
   ========================================================================== */
.site-header{
  position: sticky; top:0; z-index: 100;
  background: rgba(11,11,12,0.86);
  backdrop-filter: saturate(160%) blur(14px);
  box-shadow: 0 1px 0 rgba(255,255,255,0.07), 0 12px 30px rgba(0,0,0,.18);
  transition: background .25s var(--ease);
}
.site-header .container{
  display:flex; align-items:center; justify-content:space-between;
  height: 76px;
}
.brand{ display:flex; align-items:center; gap:12px; }
.brand img{ height: 52px; width:auto; border-radius:6px; }
.brand-text{ font-family: var(--display); font-weight:700; font-size: 20px; letter-spacing:.03em; color: var(--blanc); }
.brand-text b{ color: var(--rouge); }

.nav{ display:flex; align-items:center; gap: 34px; }
.nav a{
  font-family: var(--mono); font-size: 12.5px; letter-spacing:.06em; text-transform:uppercase;
  color: var(--brume); position:relative; padding: 4px 0;
}
.nav a.active, .nav a:hover{ color: var(--blanc); }
.nav a.active::after{
  content:""; position:absolute; left:0; right:0; bottom:-4px; height:2px; background: var(--rouge);
}
.nav-cta{
  font-family: var(--mono) !important; background: var(--rouge); color: var(--blanc) !important;
  padding: 9px 18px !important; border-radius: 999px; font-size: 12px !important;
}
.nav-cta:hover{ background: var(--rouge-dark); }

.lang-switch{
  display:inline-flex; align-items:center; gap:6px; font-family: var(--mono);
  font-size:11px; letter-spacing:.06em; color: var(--brume);
  border:1px solid rgba(255,255,255,.25); border-radius:999px; padding:7px 12px;
  margin-left: 6px; transition: border-color .2s var(--ease), color .2s var(--ease);
}
.lang-switch:hover{ border-color: var(--blanc); color: var(--blanc); }
.lang-switch svg{ width:13px; height:13px; flex-shrink:0; }

.nav-toggle{ display:none; }

@media (max-width: 880px){
  .nav{ position: fixed; top:76px; left:0; right:0; background: var(--noir); flex-direction:column;
    align-items:flex-start; gap:0; padding: 8px 32px 20px; transform: translateY(-8px); opacity:0;
    pointer-events:none; transition: all .25s ease; border-bottom: 1px solid rgba(255,255,255,.08); }
  .nav.open{ transform: translateY(0); opacity:1; pointer-events:auto; }
  .nav a{ width:100%; padding: 14px 0; border-bottom: 1px solid rgba(255,255,255,.06); }
  .nav-cta{ margin-top: 12px; display:inline-block; }
  .lang-switch{ width:fit-content; margin: 12px 0 0; }
  .nav-toggle{
    display:flex; flex-direction:column; gap:5px; background:none; border:none; cursor:pointer; padding: 8px;
  }
  .nav-toggle span{ width: 22px; height: 2px; background: var(--blanc); display:block; }
}

/* ==========================================================================
   Buttons
   ========================================================================== */
.btn{
  display:inline-flex; align-items:center; gap:10px;
  font-family: var(--mono); font-size: 13px; letter-spacing:.06em; text-transform: uppercase;
  padding: 15px 26px; border-radius: 999px; border: 1px solid transparent; cursor:pointer;
  transition: transform .25s var(--ease), background .25s var(--ease), border-color .25s var(--ease), color .25s var(--ease), box-shadow .25s var(--ease);
}
.btn:hover{ transform: translateY(-2px); }
.btn-primary{ background: linear-gradient(135deg, var(--rouge) 0%, var(--rouge-dark) 100%); color: var(--blanc); box-shadow: 0 8px 20px rgba(226,20,20,.24); }
.btn-primary:hover{ box-shadow: 0 12px 28px rgba(226,20,20,.34); }
.btn-ghost{ border-color: rgba(255,255,255,0.3); color: var(--blanc); }
.btn-ghost:hover{ border-color: var(--blanc); background: rgba(255,255,255,.06); }
.btn-dark{ border-color: var(--noir); color: var(--noir); }
.btn-dark:hover{ background: var(--noir); color: var(--blanc); box-shadow: 0 10px 24px rgba(11,11,12,.18); }

/* ==========================================================================
   Hero (shared pattern across pages)
   ========================================================================== */
.hero{
  background: var(--noir); color: var(--blanc);
  position: relative; overflow: hidden;
  padding: 90px 0 110px;
}
.hero-grid-bg{
  position:absolute; inset:0; opacity:.5;
  background-image:
    linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
  background-size: 42px 42px;
  mask-image: radial-gradient(ellipse 70% 60% at 65% 30%, black 30%, transparent 75%);
}
.hero-slab{
  position:absolute; top:0; right:0; width: 46%; height:100%;
  background: linear-gradient(160deg, var(--rouge) 0%, var(--rouge-dark) 100%);
  clip-path: polygon(30% 0, 100% 0, 100% 100%, 6% 100%);
  opacity: .95;
}
.hero-glow{
  position:absolute; top:-10%; right:-6%; width:520px; height:520px; border-radius:50%;
  background: radial-gradient(circle, rgba(226,20,20,.35) 0%, rgba(226,20,20,0) 70%);
  filter: blur(10px); pointer-events:none;
}
.hero-inner{ position:relative; z-index:2; }
.hero h1{ font-size: clamp(40px, 6vw, 74px); max-width: 820px; margin-bottom: 22px; }
.hero h1 em{ font-style:normal; color: var(--rouge); }
.hero .lede{ max-width: 520px; color: var(--brume); font-size: 17px; }
.hero-actions{ display:flex; gap:16px; margin-top: 34px; flex-wrap:wrap; }
.hero-status{ margin-bottom: 26px; }
@media (max-width: 640px){
  .hero{ padding: 60px 0 64px; }
  .hero-slab{ display:none; }
  .hero-glow{ width:300px; height:300px; top:-12%; right:-18%; }
  .hero-map-watermark{ width: 420px; opacity:.06; }
}

.page-hero{
  background: var(--noir); color: var(--blanc); padding: 64px 0 60px; position:relative; overflow:hidden;
}
.page-hero .container{ position:relative; z-index:2; }
.page-hero h1{ font-size: clamp(36px, 5vw, 56px); max-width: 760px; }
.page-hero .lede{ color: var(--brume); max-width: 560px; font-size:16px; }

/* ==========================================================================
   Sections
   ========================================================================== */
section{ padding: 96px 0; }
.section-light{ background: var(--blanc); }
.section-brume{ background: var(--brume-2); }
.section-dark{ background: var(--anthracite); color: var(--blanc); }
.section-dark p{ color: var(--acier-clair); }
.section-dark h2{ color: var(--blanc); }

.section-head{ display:flex; justify-content:space-between; align-items:flex-end; gap: 40px; margin-bottom: 56px; flex-wrap: wrap;}
.section-head h2{ font-size: clamp(28px, 4vw, 42px); max-width: 620px; }
.section-head .desc{ max-width: 380px; margin:0; }

/* credential strip */
.stamp-row{ display:flex; gap: 28px; flex-wrap: wrap; align-items:center; }

/* services grid */
.grid-3{ display:grid; grid-template-columns: repeat(3,1fr); gap: 20px; }
.grid-2{ display:grid; grid-template-columns: repeat(2,1fr); gap: 20px; }
.service-card{
  background: var(--blanc); padding: 38px 32px; position:relative;
  border: 1px solid var(--ligne); border-radius: var(--radius);
  box-shadow: var(--shadow-card);
  transition: transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease);
}
.service-card:hover{ transform: translateY(-5px); box-shadow: var(--shadow-card-hover); border-color: rgba(226,20,20,.25); }
.service-card .idx{ font-family: var(--mono); color: var(--rouge); font-size:13px; margin-bottom: 18px; display:block; }
.service-card h3{ font-size: 21px; margin-bottom: 10px; letter-spacing: 0; text-transform:none; }
.service-card p{ font-size: 14.5px; margin-bottom: 14px; }
.service-card ul{ margin-top: 12px; }
.service-card ul li{ font-size: 13.5px; color: var(--acier); padding-left: 16px; position:relative; margin-bottom:7px; }
.service-card ul li::before{ content:"—"; position:absolute; left:0; color: var(--rouge); }
.service-icon{ width:40px; height:40px; margin-bottom: 18px; }

@media (max-width: 900px){
  .grid-3{ grid-template-columns: 1fr; }
  .grid-2{ grid-template-columns: 1fr; }
}

.service-card-dark{
  background: var(--anthracite-2); color:#fff;
  border-color: rgba(255,255,255,.08);
  box-shadow: 0 1px 0 rgba(255,255,255,.04) inset, 0 10px 26px rgba(0,0,0,.28);
}
.service-card-dark:hover{ transform: translateY(-5px); border-color: rgba(226,20,20,.4); box-shadow: 0 1px 0 rgba(255,255,255,.04) inset, 0 16px 36px rgba(0,0,0,.36); }

/* methodology strip (4 real steps => numbered) */
.method-strip{ display:grid; grid-template-columns: repeat(4,1fr); gap: 16px; }
.method-step{
  background: var(--anthracite-2); padding: 32px 26px; border-radius: var(--radius);
  border: 1px solid rgba(255,255,255,.06);
  transition: transform .3s var(--ease), border-color .3s var(--ease);
}
.method-step:hover{ transform: translateY(-5px); border-color: rgba(226,20,20,.4); }
.method-step .num{ font-family: var(--mono); color: var(--rouge); font-size: 13px; display:block; margin-bottom:16px; }
.method-step h4{ font-size:18px; color:var(--blanc); margin-bottom:8px; letter-spacing:0; text-transform:none; }
.method-step p{ font-size: 13.5px; margin:0; }
@media (max-width: 900px){ .method-strip{ grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px){ .method-strip{ grid-template-columns: 1fr; } }

/* id card */
.id-card{
  background: var(--noir); color: var(--blanc); padding: 6px; border-radius: calc(var(--radius) + 6px);
  box-shadow: var(--shadow-card-hover);
}
.id-card-inner{ border: 1px dashed rgba(255,255,255,.25); padding: 36px; border-radius: var(--radius); }
.id-row{ display:flex; justify-content:space-between; gap: 20px; padding: 13px 0; border-bottom: 1px solid rgba(255,255,255,.1); font-family: var(--mono); font-size: 13.5px; }
.id-row:last-child{ border-bottom:none; }
.id-row .k{ color: var(--acier-clair); text-transform:uppercase; letter-spacing:.05em; font-size:11px; padding-top:2px; }
.id-row .v{ text-align:right; color: var(--blanc); }

/* org / team table */
.team-table{ width:100%; border-collapse: collapse; }
.team-table th{
  font-family: var(--mono); font-size: 11px; text-transform:uppercase; letter-spacing:.06em;
  text-align:left; color: var(--acier); border-bottom: 1px solid var(--ligne); padding: 12px 4px;
}
.team-table tr{ transition: background .2s var(--ease); }
.team-table tbody tr:hover{ background: var(--brume-2); }
.team-table td{ padding: 16px 8px; border-bottom: 1px solid var(--ligne); font-size: 15px; }
.team-table td.role{ font-family:var(--display); text-transform:uppercase; letter-spacing:.02em; }
.team-table td.exp{ font-family: var(--mono); font-size: 13px; color: var(--acier); }
.team-table td.empty{ color: var(--acier-clair); font-style:italic; }

.agent-showcase{ display:grid; grid-template-columns: 0.85fr 1.15fr; gap: 48px; align-items:center; }
.agent-showcase-text .kicker{ margin-bottom:14px; }
.agent-showcase-text h2{ font-size: clamp(26px, 3vw, 34px); max-width: 460px; margin-bottom:16px; }
.agent-showcase-text p{ max-width: 460px; font-size: 15.5px; margin-bottom: 26px; }
.agent-showcase-media{ border-radius: var(--radius); overflow:hidden; box-shadow: var(--shadow-card-hover); max-width: 620px; margin: 0 auto; }
.agent-showcase-media img{ width:100%; height:auto; display:block; }
@media (max-width: 860px){
  .agent-showcase{ grid-template-columns: 1fr; gap: 32px; }
  .agent-showcase-media{ order:-1; max-width: 480px; }
}

.clients-section{ padding-bottom: 8px; }
.clients-marquee{
  overflow:hidden; width:100%;
  -webkit-mask-image: linear-gradient(90deg, transparent, black 6%, black 94%, transparent);
  mask-image: linear-gradient(90deg, transparent, black 6%, black 94%, transparent);
}
.clients-track{
  display:flex; align-items:center; gap:20px; width:max-content;
  animation: clientsScroll 40s linear infinite;
}
.clients-marquee:hover .clients-track{ animation-play-state: paused; }
.client-logo{
  height:96px; min-width:170px; display:flex; align-items:center; justify-content:center;
  background:var(--blanc); border:1px solid var(--ligne); border-radius: var(--radius);
  padding:16px 28px; flex-shrink:0;
}
.client-logo img{
  max-height:100%; max-width:170px; object-fit:contain;
  filter:grayscale(1) opacity(.72); transition: filter .3s var(--ease);
}
.client-logo:hover img{ filter:none; }
@keyframes clientsScroll{ 0%{ transform:translateX(0); } 100%{ transform:translateX(-50%); } }
@media (max-width:700px){
  .client-logo{ height:76px; min-width:130px; padding:10px 18px; }
}

.stats-ticker{
  background: var(--rouge); overflow:hidden; padding: 14px 0;
  border-top: 1px solid rgba(255,255,255,.15); border-bottom: 1px solid rgba(255,255,255,.15);
}
.stats-ticker-track{
  display:flex; align-items:center; gap:14px; width:max-content;
  animation: statsScroll 22s linear infinite;
  font-family: var(--mono); font-size:13px; letter-spacing:.04em; color:#fff; white-space:nowrap;
}
.stats-ticker:hover .stats-ticker-track{ animation-play-state: paused; }
.stat-chip strong{ font-family: var(--display); font-weight:800; font-size:16px; letter-spacing:0; margin-right:5px; }
.stat-dot{ color: rgba(255,255,255,.5); }
@keyframes statsScroll{ 0%{ transform:translateX(0); } 100%{ transform:translateX(-50%); } }

/* training numbered grid (real 14-step sequence) */
.training-grid{ display:grid; grid-template-columns: repeat(2,1fr); gap: 10px; }
.training-item{
  background: var(--blanc); padding: 17px 20px; display:flex; gap:16px; align-items:baseline;
  border: 1px solid var(--ligne); border-radius: var(--radius-sm);
  transition: transform .25s var(--ease), border-color .25s var(--ease), background .25s var(--ease);
}
.training-item:hover{ transform: translateX(3px); border-color: rgba(226,20,20,.3); background: var(--brume-2); }
.training-item .num{ font-family:var(--mono); color: var(--rouge); font-size:13px; flex-shrink:0; width:22px; }
.training-item .t{ font-size: 14.5px; }
@media (max-width: 700px){ .training-grid{ grid-template-columns: 1fr; } }

/* profile spec list */
.spec-list{ display:grid; grid-template-columns: 1fr 1fr; gap: 22px 40px; }
.spec-list dt{ font-family: var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--rouge); margin-bottom:4px;}
.spec-list dd{ margin:0; font-size:14.5px; color: var(--acier); }
@media (max-width:700px){ .spec-list{ grid-template-columns:1fr; } }

/* CTA banner */
.cta-banner{
  background: linear-gradient(135deg, var(--rouge) 0%, var(--rouge-dark) 100%);
  color: var(--blanc); padding: 76px 0; text-align:center; position:relative; overflow:hidden;
}
.cta-banner::before{
  content:""; position:absolute; top:-40%; left:-10%; width:420px; height:420px; border-radius:50%;
  background: radial-gradient(circle, rgba(255,255,255,.14) 0%, rgba(255,255,255,0) 70%);
}
.cta-banner h2{ color: var(--blanc); font-size: clamp(28px,4.5vw,46px); max-width: 680px; margin: 0 auto 16px; }
.cta-banner p{ color: rgba(255,255,255,.85); max-width: 520px; margin: 0 auto 30px; }
.cta-banner .btn-ghost{ border-color: rgba(255,255,255,.5); }
.cta-banner .btn-ghost:hover{ background: rgba(255,255,255,.12); }
.cta-banner .btn-light{ background: var(--noir); color: var(--blanc); }
.cta-banner .btn-light:hover{ background: #000; }

/* Contact page */
.contact-grid{ display:grid; grid-template-columns: 1.1fr 0.9fr; gap: 64px; align-items:start; }
@media (max-width: 900px){ .contact-grid{ grid-template-columns:1fr; } }
.form-field{ margin-bottom: 22px; }
.form-field label{ display:block; font-family: var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.06em; color: var(--acier); margin-bottom: 8px; }
.form-field input, .form-field select, .form-field textarea{
  width:100%; border: 1px solid var(--ligne); background: var(--brume-2); padding: 14px 16px; font-family: var(--body);
  font-size: 16px; color: var(--noir); border-radius: var(--radius-sm); resize: vertical;
  transition: border-color .2s var(--ease), background .2s var(--ease), box-shadow .2s var(--ease);
}
.form-field input:focus, .form-field select:focus, .form-field textarea:focus{ outline:none; border-color: var(--rouge); background: var(--blanc); box-shadow: 0 0 0 4px rgba(226,20,20,.1); }
.form-row{ display:grid; grid-template-columns: 1fr 1fr; gap: 20px; }
@media (max-width:560px){ .form-row{ grid-template-columns: 1fr; } }

.contact-info-card{ background: var(--noir); color: var(--blanc); padding: 40px 36px; border-radius: var(--radius); box-shadow: var(--shadow-card-hover); }
.contact-info-card h3{ color: var(--blanc); font-size: 20px; }
.contact-line{ display:flex; gap: 14px; padding: 16px 0; border-bottom: 1px solid rgba(255,255,255,.1); }
.contact-line:last-child{ border-bottom:none; }
.contact-line .lab{ font-family: var(--mono); font-size:10.5px; text-transform:uppercase; color: var(--acier-clair); width: 90px; flex-shrink:0; padding-top:2px; letter-spacing:.05em; }
.contact-line .val{ font-size: 14.5px; color: var(--brume); }
.map-frame{ margin-top: 24px; border: 1px solid rgba(255,255,255,.15); border-radius: var(--radius-sm); filter: grayscale(1) contrast(1.05); transition: filter .3s var(--ease); }
.map-frame:hover{ filter:none; }

/* ==========================================================================
   Footer
   ========================================================================== */
.site-footer{ background: var(--noir); color: var(--brume); padding: 64px 0 28px; }
.footer-top{ display:grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 40px; padding-bottom: 48px; border-bottom: 1px solid rgba(255,255,255,.07); }
@media (max-width: 800px){ .footer-top{ grid-template-columns: 1fr 1fr; } }
.footer-brand .brand-text{ margin-bottom: 14px; }
.footer-brand p{ font-size: 13.5px; max-width: 280px; }
.footer-col h5{ font-family: var(--mono); font-size: 11px; text-transform:uppercase; letter-spacing:.08em; color: var(--acier-clair); margin-bottom: 18px; }
.footer-col a, .footer-col span{ display:block; font-size: 14px; color: var(--brume); margin-bottom: 11px; transition: color .2s var(--ease), transform .2s var(--ease); }
.footer-col a:hover{ color: var(--rouge); transform: translateX(3px); }
.footer-bottom{ display:flex; justify-content:space-between; align-items:center; padding-top: 26px; flex-wrap:wrap; gap:12px; }
.footer-bottom span{ font-family: var(--mono); font-size: 11.5px; color: var(--acier-clair); }
.footer-stamps{ display:flex; gap:14px; }
.footer-stamps .stamp{ width:64px; height:64px; border-color: rgba(255,255,255,.25); }
.footer-stamps .stamp .n{ color: var(--blanc); font-size:11px; }
.footer-stamps .stamp .l{ color: var(--acier-clair); font-size:7px; }

/* reveal-on-scroll */
.reveal{ opacity:0; transform: translateY(18px); transition: opacity .6s ease, transform .6s ease; }
.reveal.in{ opacity:1; transform:none; }
