
:root{
  --fond:#f7f5ef;
  --papier:#fffdf8;
  --texte:#252525;
  --muted:#68635c;
  --principal:#87372f;
  --principal-fonce:#652821;
  --ocre:#b58a45;
  --ligne:#ded8cc;
  --code:#f0ece2;
  --max:1120px;
  --rayon:14px;
}

*{box-sizing:border-box}

html{
  scroll-behavior:smooth;
}

body{
  margin:0;
  background:var(--fond);
  color:var(--texte);
  font-family:Georgia, "Times New Roman", serif;
  font-size:18px;
  line-height:1.65;
}

a{
  color:var(--principal);
  text-decoration-thickness:1px;
  text-underline-offset:3px;
}

a:hover{
  color:var(--principal-fonce);
}

.site-header{
  border-bottom:1px solid var(--ligne);
  background:rgba(255,253,248,.96);
}

.barre{
  max-width:var(--max);
  margin:auto;
  padding:18px 24px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  flex-wrap:wrap;
}

.marque{
  color:var(--texte);
  text-decoration:none;
  line-height:1.15;
}

.marque strong{
  display:block;
  font-size:1.1rem;
  letter-spacing:.02em;
}

.marque span{
  display:block;
  margin-top:4px;
  color:var(--muted);
  font-family:Arial, Helvetica, sans-serif;
  font-size:.77rem;
  letter-spacing:.08em;
  text-transform:uppercase;
}

nav{
  font-family:Arial, Helvetica, sans-serif;
  font-size:.9rem;
}

nav ul{
  margin:0;
  padding:0;
  list-style:none;
  display:flex;
  gap:8px 18px;
  flex-wrap:wrap;
}

nav a{
  color:var(--texte);
  text-decoration:none;
  padding:6px 0;
  border-bottom:2px solid transparent;
}

nav a:hover,
nav a[aria-current="page"]{
  color:var(--principal);
  border-bottom-color:var(--principal);
}

.hero{
  background:
    linear-gradient(120deg, rgba(135,55,47,.08), transparent 58%),
    var(--papier);
  border-bottom:1px solid var(--ligne);
}

.hero-inner{
  max-width:var(--max);
  margin:auto;
  padding:80px 24px 72px;
}

.surtitre{
  margin:0 0 12px;
  color:var(--principal);
  font-family:Arial, Helvetica, sans-serif;
  font-weight:700;
  font-size:.8rem;
  letter-spacing:.13em;
  text-transform:uppercase;
}

h1,h2,h3{
  line-height:1.18;
  text-wrap:balance;
}

h1{
  margin:.05em 0 .25em;
  font-size:clamp(2.25rem,6vw,4.8rem);
  font-weight:700;
  max-width:950px;
}

.hero h1 small{
  display:block;
  margin-top:12px;
  color:var(--principal);
  font-size:.36em;
  font-family:Arial, Helvetica, sans-serif;
  font-weight:600;
  letter-spacing:.02em;
}

.accroche{
  max-width:820px;
  margin:24px 0 0;
  font-size:1.2rem;
  color:#45413c;
}

.actions{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  margin-top:32px;
}

.bouton{
  display:inline-block;
  padding:11px 17px;
  border:1px solid var(--principal);
  border-radius:999px;
  background:var(--principal);
  color:white;
  text-decoration:none;
  font-family:Arial, Helvetica, sans-serif;
  font-size:.92rem;
  font-weight:700;
}

.bouton:hover{
  background:var(--principal-fonce);
  color:white;
}

.bouton.secondaire{
  background:transparent;
  color:var(--principal);
}

.bouton.secondaire:hover{
  background:#f2e8e5;
}

main{
  max-width:var(--max);
  margin:auto;
  padding:58px 24px 90px;
}

main > section{
  margin:0 0 76px;
}

h2{
  margin:0 0 24px;
  font-size:clamp(1.75rem,3.5vw,2.7rem);
}

h3{
  margin:0 0 12px;
  font-size:1.3rem;
}

.intro{
  max-width:840px;
  color:#45413c;
  font-size:1.08rem;
}

.grille{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:20px;
}

.carte{
  background:var(--papier);
  border:1px solid var(--ligne);
  border-radius:var(--rayon);
  padding:25px;
}

.numero{
  display:block;
  color:var(--ocre);
  font-family:Arial, Helvetica, sans-serif;
  font-size:.8rem;
  font-weight:700;
  letter-spacing:.12em;
  margin-bottom:8px;
}

.carte p:last-child{margin-bottom:0}

.mots{
  display:flex;
  flex-wrap:wrap;
  gap:9px;
}

.mot{
  display:inline-block;
  padding:5px 10px;
  border:1px solid #d5cec1;
  border-radius:7px;
  background:var(--papier);
  font-family:"Courier New", monospace;
  font-size:.86rem;
}

.exemple{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:20px;
}

pre{
  overflow:auto;
  margin:0;
  padding:22px;
  border:1px solid var(--ligne);
  border-radius:12px;
  background:var(--code);
  font-size:.93rem;
  line-height:1.6;
}

code{
  font-family:"Courier New", monospace;
}

.etiquette{
  margin:0 0 8px;
  font-family:Arial, Helvetica, sans-serif;
  font-size:.76rem;
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--muted);
}

.encadre{
  margin:28px 0;
  padding:24px 27px;
  border-left:5px solid var(--ocre);
  background:#fffaf0;
}

.frise{
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:0;
  counter-reset:etape;
}

.etape{
  position:relative;
  padding:22px 18px;
  background:var(--papier);
  border-top:1px solid var(--ligne);
  border-bottom:1px solid var(--ligne);
  border-left:1px solid var(--ligne);
}

.etape:first-child{
  border-radius:12px 0 0 12px;
}

.etape:last-child{
  border-right:1px solid var(--ligne);
  border-radius:0 12px 12px 0;
}

.etape strong{
  display:block;
  color:var(--principal);
  font-family:Arial, Helvetica, sans-serif;
}

.table-wrap{
  overflow-x:auto;
  border:1px solid var(--ligne);
  border-radius:12px;
  background:var(--papier);
}

table{
  width:100%;
  border-collapse:collapse;
  min-width:680px;
}

th,td{
  padding:13px 15px;
  border-bottom:1px solid var(--ligne);
  vertical-align:top;
  text-align:left;
}

th{
  background:#eee8dc;
  font-family:Arial, Helvetica, sans-serif;
  font-size:.86rem;
}

tr:last-child td{border-bottom:0}

td code{
  font-size:.89rem;
}

.note{
  color:var(--muted);
  font-size:.9rem;
}

.meta{
  font-family:Arial, Helvetica, sans-serif;
  color:var(--muted);
  font-size:.87rem;
}

.sommaire{
  padding:20px 24px;
  border:1px solid var(--ligne);
  border-radius:12px;
  background:var(--papier);
}

.sommaire a{
  display:inline-block;
  margin:4px 15px 4px 0;
}

.chrono{
  border-left:3px solid var(--ligne);
  margin-left:8px;
  padding-left:28px;
}

.chrono article{
  position:relative;
  margin:0 0 36px;
}

.chrono article::before{
  content:"";
  position:absolute;
  left:-36px;
  top:.45em;
  width:13px;
  height:13px;
  border-radius:50%;
  background:var(--principal);
  border:3px solid var(--fond);
}

.source-card{
  display:grid;
  grid-template-columns:150px 1fr;
  gap:22px;
  padding:23px 0;
  border-top:1px solid var(--ligne);
}

.source-card:first-child{
  border-top:0;
}

.source-type{
  font-family:Arial, Helvetica, sans-serif;
  font-size:.75rem;
  font-weight:700;
  color:var(--principal);
  text-transform:uppercase;
  letter-spacing:.1em;
}

.pied{
  border-top:1px solid var(--ligne);
  background:#eee9df;
}

.pied-inner{
  max-width:var(--max);
  margin:auto;
  padding:30px 24px 40px;
  display:flex;
  justify-content:space-between;
  gap:30px;
  flex-wrap:wrap;
  color:#5c5751;
  font-family:Arial, Helvetica, sans-serif;
  font-size:.84rem;
}

.pied a{color:inherit}

@media (max-width:900px){
  .grille{grid-template-columns:1fr 1fr}
  .frise{grid-template-columns:1fr}
  .etape,
  .etape:first-child,
  .etape:last-child{
    border:1px solid var(--ligne);
    border-bottom:0;
    border-radius:0;
  }
  .etape:first-child{border-radius:12px 12px 0 0}
  .etape:last-child{
    border-bottom:1px solid var(--ligne);
    border-radius:0 0 12px 12px;
  }
}

@media (max-width:680px){
  body{font-size:17px}
  .barre{align-items:flex-start}
  nav ul{gap:5px 13px}
  .hero-inner{padding-top:55px;padding-bottom:55px}
  main{padding-top:42px}
  .grille,.exemple{grid-template-columns:1fr}
  .source-card{grid-template-columns:1fr;gap:5px}
}

@media print{
  .site-header,.actions,.pied{display:none}
  body{background:white}
  main{max-width:none}
  .carte,.table-wrap{break-inside:avoid}
}
