/* ABK Architecture & Ingénierie
   Base : couleurs, typographie, en-tête, pied de page, éléments communs */

:root {
  --calque: #eef1f5;
  --blanc: #ffffff;
  --bleu: #193786;
  --nuit: #0d1d4a;
  --encre: #141821;
  --gris: #5c6475;
  --trait: rgba(25, 55, 134, .2);
  --trait-clair: rgba(255, 255, 255, .22);
  --laterite: #b5562b;

  --police: "Archivo", "Helvetica Neue", Arial, sans-serif;
  --mono: "IBM Plex Mono", "Courier New", monospace;

  --marge: clamp(16px, 4vw, 64px);
  --mesure: 36rem;
  --courbe: cubic-bezier(.65, .05, .36, 1);
  --hauteur-entete: 76px;

  /* Hachures et motif de grille (tirage bleu) */
  --hachures: repeating-linear-gradient(-45deg, currentColor 0 1.5px, transparent 1.5px 5px);
  --grille: linear-gradient(rgba(255,255,255,.055) 1px, transparent 1px) 0 0 / 48px 48px,
            linear-gradient(90deg, rgba(255,255,255,.055) 1px, transparent 1px) 0 0 / 48px 48px;
}

*, *::before, *::after { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--calque);
  color: var(--encre);
  font-family: var(--police);
  font-size: 17px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

img { display: block; max-width: 100%; }
a { color: inherit; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
h1, h2, h3, h4, p, figure, dl, dd { margin: 0; }
ul, ol { margin: 0; padding: 0; list-style: none; }
table { border-collapse: collapse; width: 100%; }
::selection { background: var(--bleu); color: var(--blanc); }
:focus-visible { outline: 2px solid var(--laterite); outline-offset: 3px; }

.cadre { padding-inline: var(--marge); }
.masque { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* -- Typographie ------------------------------------------------------ */

.t-ouverture {
  font-size: clamp(34px, 6.2vw, 100px);
  font-stretch: 125%;
  font-weight: 300;
  line-height: 1.02;
  text-transform: uppercase;
}
.t-1 { font-size: clamp(32px, 4.6vw, 68px); font-stretch: 112%; font-weight: 350; line-height: 1.06; }
.t-2 { font-size: clamp(22px, 2.3vw, 32px); font-weight: 500; line-height: 1.2; }
.t-3 { font-size: 19px; font-weight: 600; line-height: 1.3; }
.texte-grand { font-size: clamp(19px, 1.6vw, 23px); line-height: 1.5; }
.note { font-family: var(--mono); font-size: 12px; letter-spacing: .04em; color: var(--gris); }
.bleu .note { color: rgba(255,255,255,.6); }
.mesure { max-width: var(--mesure); }
.paragraphes p + p { margin-top: 1em; }

/* -- Sections --------------------------------------------------------- */

.planche { padding-block: clamp(80px, 10vw, 150px); }
.planche--serree { padding-block: clamp(56px, 7vw, 100px); }
.bleu { background: var(--nuit); background-image: none; color: var(--blanc); position: relative; }
.bleu::before { content: ""; position: absolute; inset: 0; background: var(--grille); pointer-events: none; }
.bleu > * { position: relative; }

/* Cartouche de section : référence de planche, rubrique, information */
.cartouche {
  display: flex; flex-wrap: wrap;
  border: 1px solid var(--trait);
  font-family: var(--mono); font-size: 12px; letter-spacing: .06em; text-transform: uppercase;
  margin-bottom: clamp(32px, 4vw, 56px);
}
.cartouche > * { padding: 9px 14px; }
.cartouche > * + * { border-left: 1px solid var(--trait); }
.cartouche b { flex: 1; font-weight: 500; color: var(--bleu); }
.bleu .cartouche, .bleu .cartouche > * + * { border-color: var(--trait-clair); }
.bleu .cartouche b { color: var(--blanc); }
@media (max-width: 640px) {
  .cartouche > :nth-child(3) { display: none; }
}

.entree { display: grid; grid-template-columns: 1fr; gap: 24px; margin-bottom: clamp(40px, 5vw, 72px); }
.entree p { color: var(--gris); }
.bleu .entree p { color: rgba(255,255,255,.72); }

/* -- Boutons ---------------------------------------------------------- */

.bouton {
  display: inline-flex; align-items: center; gap: 12px;
  padding: 13px 20px; border: 1.5px solid currentColor;
  font-size: 15px; font-weight: 500; text-decoration: none; color: var(--bleu);
  transition: background-color .25s, color .25s, border-color .25s;
}
.bouton:hover { background: var(--bleu); border-color: var(--bleu); color: var(--blanc); }
.bouton--plein { background: var(--bleu); border-color: var(--bleu); color: var(--blanc); }
.bouton--plein:hover { background: var(--nuit); border-color: var(--nuit); }
.bleu .bouton { color: var(--blanc); }
.bleu .bouton:hover { background: var(--blanc); border-color: var(--blanc); color: var(--nuit); }
.bouton svg { width: 18px; height: 10px; }

.lien { color: var(--bleu); font-weight: 500; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 5px; }
.lien:hover { text-decoration-thickness: 2px; }
.bleu .lien { color: var(--blanc); }

/* Symboles de statut (convention de plan) :
   hachuré = en travaux, tireté = projeté, plein = existant */
.statut { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; }
.symbole { width: 13px; height: 13px; border: 1.5px solid var(--bleu); flex: none; color: var(--bleu); }
.symbole--en-cours { background: var(--hachures); }
.symbole--a-venir { border-style: dashed; }
.symbole--termine { background: var(--bleu); }
.bleu .symbole { border-color: var(--blanc); color: var(--blanc); }
.bleu .symbole--termine { background: var(--blanc); }

/* -- En-tête ---------------------------------------------------------- */

.entete {
  position: sticky; top: 0; z-index: 50; height: var(--hauteur-entete);
  display: flex; align-items: center; justify-content: space-between; gap: 24px;
  padding-inline: var(--marge); background: var(--calque); border-bottom: 1px solid var(--trait);
}
.entete__logo img { height: 46px; width: auto; }
.entete__nav { display: flex; align-items: center; gap: clamp(20px, 3vw, 40px); font-size: 15px; font-weight: 500; }
.entete__nav a { text-decoration: none; position: relative; padding-block: 8px; }
/* Lien actif : le toit du logo au-dessus du mot */
.entete__nav a[aria-current]::before {
  content: ""; position: absolute; left: -6%; right: -6%; top: -4px; height: 9px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath d='M0 9 C25 8 45 1 64 1 C78 1 90 5 100 8' fill='none' stroke='%23193786' stroke-width='1.6' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") no-repeat center / 100% 100%;
}
.entete__nav a:hover { color: var(--bleu); }
.entete__nav a.bouton:hover { color: var(--blanc); }
.entete__menu { display: none; font-family: var(--mono); font-size: 13px; text-transform: uppercase; letter-spacing: .06em; border: 1px solid var(--trait); padding: 8px 14px; }

@media (max-width: 860px) {
  .entete__logo img { height: 38px; }
  .entete__menu { display: block; }
  .entete__nav {
    position: absolute; left: 0; right: 0; top: 100%; flex-direction: column; align-items: stretch; gap: 0;
    background: var(--calque); border-bottom: 1px solid var(--trait); padding: 8px var(--marge) 24px;
    font-size: 22px; display: none;
  }
  .entete__nav a { padding-block: 14px; border-bottom: 1px solid var(--trait); }
  .entete__nav a[aria-current]::before { display: none; }
  .entete__nav a[aria-current] { color: var(--bleu); }
  .entete__nav .bouton { margin-top: 20px; justify-content: center; border-bottom: 1.5px solid currentColor; }
  .entete.ouvert .entete__nav { display: flex; }
}

/* -- Pied de page ----------------------------------------------------- */

.pied { padding: clamp(64px, 8vw, 110px) var(--marge) var(--marge); }
.pied__toit { width: 100%; height: auto; margin-bottom: clamp(48px, 6vw, 80px); overflow: visible; }
.pied__toit path { fill: none; stroke: var(--blanc); stroke-width: 1.5; vector-effect: non-scaling-stroke; stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset 1.8s var(--courbe); }
.pied__toit path + path { transition-delay: .5s; }
.pied__toit.vu path { stroke-dashoffset: 0; }
@media (prefers-reduced-motion: reduce) { .pied__toit path { stroke-dashoffset: 0; transition: none; } }
.pied__grille { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 40px; margin-bottom: clamp(48px, 6vw, 80px); }
.pied__grille img { width: 200px; }
.pied__grille h2 { font-family: var(--mono); font-size: 12px; font-weight: 400; letter-spacing: .06em; text-transform: uppercase; opacity: .6; margin-bottom: 14px; }
.pied__grille li { margin-bottom: 6px; }
.pied__grille a { text-decoration: none; }
.pied__grille a:hover { text-decoration: underline; text-underline-offset: 4px; }
.pied__cartouche { display: grid; grid-template-columns: repeat(3, auto) 1fr; border: 1px solid var(--trait-clair); font-size: 13px; }
.pied__cartouche > div { padding: 12px 16px; }
.pied__cartouche > div + div { border-left: 1px solid var(--trait-clair); }
.pied__cartouche small { display: block; font-family: var(--mono); font-size: 11px; letter-spacing: .06em; text-transform: uppercase; opacity: .55; margin-bottom: 2px; }
@media (max-width: 860px) {
  .pied__grille { grid-template-columns: 1fr 1fr; }
  .pied__grille > :first-child { grid-column: 1 / -1; }
  .pied__cartouche { grid-template-columns: 1fr 1fr; }
  .pied__cartouche > div { border-top: 1px solid var(--trait-clair); }
  .pied__cartouche > div + div { border-left: 0; }
  .pied__cartouche > div:nth-child(2n) { border-left: 1px solid var(--trait-clair); }
}

/* -- Bloc « Venir à l'agence » --------------------------------------- */

.rendez-vous { display: grid; grid-template-columns: 1.2fr 1fr; gap: var(--marge); align-items: end; }
.rendez-vous__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 32px; }
.rendez-vous dl, .coordonnees { display: grid; grid-template-columns: auto 1fr; border-top: 1px solid var(--trait); }
.rendez-vous dt, .rendez-vous dd, .coordonnees dt, .coordonnees dd { padding: 14px 0; border-bottom: 1px solid var(--trait); }
.rendez-vous dt, .coordonnees dt { font-family: var(--mono); font-size: 12px; text-transform: uppercase; letter-spacing: .06em; color: var(--gris); padding-right: 24px; padding-top: 17px; }
@media (max-width: 860px) { .rendez-vous { grid-template-columns: 1fr; } }

/* Icônes des réseaux sociaux (pied de page) */
.reseaux { display: flex; gap: 14px; align-items: center; padding-top: 2px; }
.reseaux svg { width: 20px; height: 20px; fill: currentColor; display: block; }
.reseaux a { opacity: .9; transition: opacity .2s, color .2s; }
.reseaux a:hover { opacity: 1; color: var(--laterite); }
.reseaux > span { opacity: .45; cursor: default; }
