/* ==========================================================================
   vmaurice.fr — design system « Blueprint »
   Bleu cyanotype + orange signal · Big Shoulders Display / IBM Plex / Caveat
   ========================================================================== */

:root {
  --paper: #10345C;
  --paper-deep: #0B2748;
  --panel: rgba(7, 25, 46, 0.3);
  --panel-solid: #10345C;
  --ink: #F4F8FC;
  --ink-2: #C9D9E9;
  --ink-3: #9FB8D2;
  --line: rgba(244, 248, 252, 0.3);
  --line-strong: rgba(244, 248, 252, 0.45);
  --line-frame: rgba(244, 248, 252, 0.55);
  --accent: #F2762E;
  --accent-ink: #1A0F04;
  --chalk: #F5C462;
  --display: "Big Shoulders Display", "Arial Narrow", "Segoe UI", sans-serif;
  --body: "IBM Plex Sans", "Segoe UI", system-ui, sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, monospace;
  --hand: "Caveat", cursive;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; overflow-x: clip; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

body {
  margin: 0;
  background-color: var(--paper);
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.05) 1px, transparent 1px),
    linear-gradient(rgba(255, 255, 255, 0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.025) 1px, transparent 1px);
  background-size: 140px 140px, 140px 140px, 28px 28px, 28px 28px;
  color: var(--ink);
  font-family: var(--body);
  font-size: 16px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}

/* ---- Cadre de planche technique ---- */
.sheet { padding: 14px; min-height: 100vh; }
.sheet__outer { border: 2px solid var(--line-frame); padding: 3px; }
.sheet__inner { border: 1px solid rgba(244, 248, 252, 0.35); }
@media (max-width: 640px) { .sheet { padding: 8px; } }

.container { max-width: 1220px; margin: 0 auto; padding: 0 32px; }
@media (max-width: 640px) { .container { padding: 0 18px; } }

/* ---- Typo ---- */
h1, h2, h3 { font-family: var(--display); text-transform: uppercase; line-height: 1.02; letter-spacing: 0.01em; margin: 0; text-wrap: balance; }
h1 { font-size: clamp(42px, 6vw, 72px); font-weight: 800; }
h2 { font-size: clamp(28px, 3.6vw, 42px); font-weight: 700; }
h3 { font-size: clamp(19px, 2vw, 23px); font-weight: 700; letter-spacing: 0.03em; }
p { margin: 0; max-width: 72ch; }
.lead { font-size: 17px; color: var(--ink-2); }
.muted { color: var(--ink-3); }
.accent { color: var(--accent); }

a { color: var(--chalk); text-decoration: none; }
a:hover { color: #FFDD9A; text-decoration: underline; text-underline-offset: 3px; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

.eyebrow {
  display: block; font-family: var(--mono); font-size: 12px;
  letter-spacing: 0.18em; text-transform: uppercase; color: var(--chalk);
}
.mono { font-family: var(--mono); font-size: 12.5px; color: var(--ink-3); }
a.mono, .mono a { color: var(--chalk); }
a.mono:hover, .mono a:hover { color: #FFDD9A; }
.hand { font-family: var(--hand); font-size: 24px; color: var(--chalk); }
.todo { color: var(--chalk); font-style: italic; }

/* ---- Sections ---- */
.section { padding: clamp(44px, 6vw, 72px) 0; border-bottom: 1px solid var(--line); }
.section--tint { background: var(--panel); }
.section__head { display: flex; flex-direction: column; gap: 12px; margin-bottom: clamp(24px, 3vw, 36px); }

/* ---- Boutons ---- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  padding: 14px 24px; border-radius: 2px; font-weight: 600; font-size: 15px;
  font-family: var(--body); border: 0; cursor: pointer; text-decoration: none;
}
.btn--primary { background: var(--accent); color: var(--accent-ink); }
.btn--primary:hover { background: #FF8A45; color: var(--accent-ink); text-decoration: none; }
.btn--ghost { background: transparent; color: var(--ink); border: 1px solid rgba(244, 248, 252, 0.5); font-weight: 500; }
.btn--ghost:hover { border-color: var(--ink); color: var(--ink); text-decoration: none; }
.btn-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }

/* ---- Nav ---- */
.nav { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 16px 32px; border-bottom: 1px solid var(--line); position: relative; }
.nav__brand { display: flex; align-items: center; gap: 12px; color: var(--ink); text-decoration: none; }
.nav__brand:hover { text-decoration: none; color: var(--ink); }
.nav__name { font-family: var(--display); font-weight: 800; font-size: 21px; letter-spacing: 0.04em; text-transform: uppercase; line-height: 1.1; }
.nav__sub { font-family: var(--mono); font-size: 9.5px; letter-spacing: 0.22em; color: var(--ink-3); }
.nav__links { display: flex; align-items: center; gap: 26px; list-style: none; margin: 0; padding: 0; }
.nav__links a { color: #D6E3F0; font-size: 14px; font-weight: 500; }
.nav__links a:hover { color: var(--ink); text-decoration: none; }
.nav__links a[aria-current="page"] { color: var(--chalk); border-bottom: 2px solid var(--accent); padding-bottom: 3px; }
.nav__toggle { display: none; background: none; border: 1px solid var(--line-strong); border-radius: 2px; padding: 8px 10px; cursor: pointer; }
.nav__toggle svg { display: block; }
@media (max-width: 980px) {
  .nav { flex-wrap: wrap; }
  .nav__toggle { display: block; }
  .nav__links {
    display: none; flex-direction: column; align-items: flex-start; gap: 4px;
    width: 100%; padding-top: 14px;
  }
  .nav__links.is-open { display: flex; }
  .nav__links li { width: 100%; }
  .nav__links a { display: block; padding: 10px 4px; font-size: 16px; }
  .nav__links a[aria-current="page"] { border-bottom: 0; border-left: 3px solid var(--accent); padding-left: 10px; }
  .nav__cta { margin-top: 8px; }
}

/* ---- Fil d'ariane ---- */
.crumb { display: flex; justify-content: space-between; gap: 16px; align-items: center; padding: 12px 32px; border-bottom: 1px solid var(--line); font-family: var(--mono); font-size: 11px; letter-spacing: 0.1em; color: var(--ink-3); text-transform: uppercase; flex-wrap: wrap; }
.crumb a { color: var(--chalk); }
.crumb a:hover { color: #FFDD9A; }
.crumb strong { color: var(--ink); font-weight: 500; }

/* ---- Grilles ---- */
.grid { display: grid; gap: 16px; }
.grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.grid--5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
@media (max-width: 980px) {
  .grid--3, .grid--4, .grid--5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .grid--2, .grid--3, .grid--4, .grid--5 { grid-template-columns: 1fr; }
}

/* ---- Cartes ---- */
.card { border: 1px solid rgba(244, 248, 252, 0.4); background: var(--panel); padding: 24px; display: flex; flex-direction: column; gap: 12px; }
.card--solid { background: var(--panel-solid); }
.card--dashed { border-style: dashed; align-items: center; justify-content: center; text-align: center; }
.card--featured { border: 2px solid var(--accent); }
.card__kicker { font-family: var(--mono); font-size: 11px; letter-spacing: 0.14em; color: var(--chalk); text-transform: uppercase; }
.card__kicker--accent { color: var(--accent); }

/* ---- Listes techniques ---- */
.dash-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 9px; }
.dash-list li { display: flex; gap: 10px; font-size: 14px; line-height: 1.55; color: var(--ink-2); }
.dash-list li::before { content: "—"; color: var(--accent); flex: none; }
.rule-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 40px; }
.rule-list li { display: flex; gap: 10px; font-size: 14.5px; color: #E4EDF5; border-bottom: 1px solid rgba(244, 248, 252, 0.2); padding-bottom: 10px; }
.rule-list li::before { content: "—"; color: var(--accent); flex: none; }
@media (max-width: 700px) { .rule-list { grid-template-columns: 1fr; } }

.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { font-family: var(--mono); font-size: 12px; border: 1px solid rgba(244, 248, 252, 0.4); padding: 6px 10px; color: var(--ink-2); }
.chip--todo { border-style: dashed; color: var(--chalk); }

/* ---- Cartouche ---- */
.cartouche { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border: 1px solid var(--line-strong); }
.cartouche > div { display: flex; flex-direction: column; gap: 2px; padding: 9px 12px; border-right: 1px solid var(--line); }
.cartouche > div:last-child { border-right: 0; }
.cartouche dt { font-family: var(--mono); font-size: 8.5px; letter-spacing: 0.12em; color: var(--ink-3); text-transform: uppercase; }
.cartouche dd { font-family: var(--mono); font-size: 11.5px; margin: 0; color: var(--ink); }
@media (max-width: 640px) {
  .cartouche { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cartouche > div:nth-child(2n) { border-right: 0; }
  .cartouche > div:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
}

/* ---- Photo épinglée ---- */
.pin-photo { position: relative; width: min(430px, 100%); }
.pin-photo__frame { background: var(--ink); padding: 8px 8px 14px; transform: rotate(-1.4deg); box-shadow: 6px 8px 0 rgba(7, 25, 46, 0.55); }
.pin-photo__frame img { display: block; width: 100%; height: auto; }
.pin-photo__caption { display: flex; justify-content: space-between; align-items: center; padding: 10px 4px 0; }
.pin-photo__sign { font-family: var(--hand); font-size: 24px; color: #1E3A5C; }
.pin-photo__loc { font-family: var(--mono); font-size: 10px; letter-spacing: 0.1em; color: #6B84A0; }
.pin-photo__tape { position: absolute; top: -13px; left: 35%; width: 130px; height: 26px; background: rgba(244, 248, 252, 0.28); border: 1px solid rgba(244, 248, 252, 0.18); transform: rotate(1.8deg); }

/* ---- Phases ---- */
.phase { display: flex; flex-direction: column; gap: 10px; border: 1px solid rgba(244, 248, 252, 0.4); padding: 18px; background: var(--panel-solid); }
.phase--first { border-top: 3px solid var(--accent); }
.phase__num { font-family: var(--display); font-weight: 800; font-size: 30px; color: var(--ink-3); line-height: 1; }
.phase--first .phase__num { color: var(--accent); }
.phase__title { font-weight: 600; font-size: 15px; font-family: var(--body); text-transform: none; letter-spacing: 0; }
.phase p { font-size: 12.5px; line-height: 1.55; color: var(--ink-2); }

/* ---- Prix ---- */
.price { display: flex; align-items: baseline; gap: 8px; }
.price__amount { font-family: var(--display); font-weight: 800; font-size: clamp(38px, 4vw, 52px); font-variant-numeric: tabular-nums; line-height: 1; }
.price__ht { font-family: var(--mono); font-size: 13px; color: var(--ink-3); }

/* ---- Bande références ---- */
.proof { display: flex; align-items: center; gap: 34px; padding: 20px 32px; border-bottom: 1px solid var(--line); flex-wrap: wrap; }
.proof__label { font-family: var(--mono); font-size: 10.5px; letter-spacing: 0.18em; color: var(--ink-3); }
.proof__names { display: flex; align-items: center; gap: 16px 38px; flex-wrap: wrap; font-family: var(--display); font-weight: 700; font-size: 19px; letter-spacing: 0.12em; color: #E9F0F6; text-transform: uppercase; }
.proof__names img { display: block; height: 30px; width: auto; opacity: 0.95; }

/* ---- Vidéo placeholder ---- */
.video-slot { position: relative; min-height: 300px; background: rgba(7, 25, 46, 0.5); border: 1px solid var(--line-strong); display: flex; align-items: center; justify-content: center; }
.video-slot__corners { position: absolute; inset: 0; pointer-events: none; }
.video-slot__play { width: 84px; height: 84px; border-radius: 50%; background: var(--accent); display: flex; align-items: center; justify-content: center; box-shadow: 5px 6px 0 rgba(7, 25, 46, 0.55); }
.video-slot__bar { display: flex; align-items: center; gap: 12px; margin-top: 10px; }
.video-slot__track { flex: 1; height: 4px; background: rgba(244, 248, 252, 0.2); }
.video-slot__progress { width: 18%; height: 100%; background: var(--accent); }

/* ---- Formulaire ---- */
.form__notice { border: 1px solid var(--accent); background: rgba(242, 118, 46, 0.12); color: var(--ink); padding: 14px 18px; margin-bottom: 18px; font-size: 14.5px; }
.form__notice.is-err { border-color: var(--accent); }
.cf-turnstile { min-height: 65px; }
.form { display: flex; flex-direction: column; gap: 14px; }
.form label { display: flex; flex-direction: column; gap: 6px; font-family: var(--mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink-3); }
.form input[type="text"], .form input[type="email"], .form textarea {
  background: rgba(7, 25, 46, 0.5); border: 1px solid var(--line-strong); border-radius: 2px;
  color: var(--ink); font-family: var(--body); font-size: 15px; padding: 12px 14px;
}
.form input:focus, .form textarea:focus { outline: 2px solid var(--accent); outline-offset: 0; border-color: transparent; }
.form textarea { min-height: 130px; resize: vertical; }
.form__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
@media (max-width: 640px) { .form__row { grid-template-columns: 1fr; } }
.form__consent { display: flex; gap: 10px; align-items: flex-start; font-family: var(--body); font-size: 13px; color: var(--ink-2); text-transform: none; letter-spacing: 0; }
.form__consent input { margin-top: 3px; accent-color: var(--accent); }

/* ---- Footer ---- */
.footer { display: flex; justify-content: space-between; align-items: center; gap: 24px; padding: 22px 32px; flex-wrap: wrap; }
.footer p { font-size: 13px; color: var(--ink-3); }
.footer nav { display: flex; align-items: center; gap: 12px 22px; flex-wrap: wrap; }
.footer nav a { font-family: var(--mono); font-size: 12px; color: var(--chalk); }

@media (max-width: 640px) {
  .nav { padding: 14px 18px; }
  .crumb { padding: 10px 18px; }
  .proof { padding: 16px 18px; gap: 12px; flex-direction: column; align-items: flex-start; }
  .proof__names { gap: 12px 22px; font-size: 15px; }
  .footer { padding: 18px; }
}

/* ---- Divers ---- */
.hero { padding: clamp(40px, 6vw, 72px) 0; border-bottom: 1px solid var(--line); }
.hero__grid { display: grid; grid-template-columns: 1.15fr 1fr; gap: 48px; align-items: center; }
@media (max-width: 980px) { .hero__grid { grid-template-columns: 1fr; } }
.stack { display: flex; flex-direction: column; gap: 18px; }
.stack--sm { gap: 10px; }
.center { text-align: center; align-items: center; }
.quote { font-family: var(--hand); font-size: clamp(26px, 3vw, 34px); line-height: 1.3; color: var(--ink); max-width: 30ch; }
.stars { display: flex; gap: 5px; justify-content: center; }
img { max-width: 100%; height: auto; }
.skip-link { position: absolute; left: -9999px; top: 0; background: var(--accent); color: var(--accent-ink); padding: 10px 16px; z-index: 100; }
.skip-link:focus { left: 12px; top: 12px; }
.table-wrap { overflow-x: auto; }

/* ---- Prose (études de cas, pages légales) ---- */
.prose { display: flex; flex-direction: column; gap: 16px; max-width: 76ch; }
.prose h2 { font-size: clamp(24px, 3vw, 32px); margin-top: 18px; }
.prose h3 { font-family: var(--body); text-transform: none; font-size: 18px; font-weight: 600; letter-spacing: 0; margin-top: 8px; }
.prose ul { margin: 0; padding-left: 0; list-style: none; display: flex; flex-direction: column; gap: 8px; }
.prose ul li { display: flex; gap: 10px; color: var(--ink-2); }
.prose ul li::before { content: "—"; color: var(--accent); flex: none; }
.prose p { color: var(--ink-2); }
.prose strong { color: var(--ink); }
