/* ============================================================
   Verti'Calcaire — charte v1
   Fonds calcaire, texte roche d'ombre, accent lichen unique.
   Condensé = titres & étiquettes · Serif = lecture · Mono = données.
   Polices servies depuis ce serveur : aucune requête externe.
   ============================================================ */

@font-face{font-family:"Barlow Condensed";font-style:normal;font-weight:400;font-display:swap;
  src:url(/assets/fonts/barlow-condensed-latin-400-normal.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Barlow Condensed";font-style:normal;font-weight:400;font-display:swap;
  src:url(/assets/fonts/barlow-condensed-latin-ext-400-normal.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Barlow Condensed";font-style:normal;font-weight:500;font-display:swap;
  src:url(/assets/fonts/barlow-condensed-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Barlow Condensed";font-style:normal;font-weight:600;font-display:swap;
  src:url(/assets/fonts/barlow-condensed-latin-600-normal.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2212,U+FEFF,U+FFFD}
@font-face{font-family:"Barlow Condensed";font-style:normal;font-weight:600;font-display:swap;
  src:url(/assets/fonts/barlow-condensed-latin-ext-600-normal.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Barlow Condensed";font-style:normal;font-weight:700;font-display:swap;
  src:url(/assets/fonts/barlow-condensed-latin-700-normal.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2212,U+FEFF,U+FFFD}
@font-face{font-family:"Barlow Condensed";font-style:normal;font-weight:700;font-display:swap;
  src:url(/assets/fonts/barlow-condensed-latin-ext-700-normal.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+2C60-2C7F,U+A720-A7FF}

@font-face{font-family:"Newsreader";font-style:normal;font-weight:200 800;font-display:swap;
  src:url(/assets/fonts/newsreader-latin-wght-normal.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2212,U+FEFF,U+FFFD}
@font-face{font-family:"Newsreader";font-style:normal;font-weight:200 800;font-display:swap;
  src:url(/assets/fonts/newsreader-latin-ext-wght-normal.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+2C60-2C7F,U+A720-A7FF}

@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;
  src:url(/assets/fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2212,U+FEFF,U+FFFD}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;
  src:url(/assets/fonts/ibm-plex-mono-latin-ext-400-normal.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;
  src:url(/assets/fonts/ibm-plex-mono-latin-500-normal.woff2) format("woff2")}

:root{
  --ground:#F4F2EC; --surface:#FBFAF7; --sunk:#E4E0D6;
  --ink:#21251F; --muted:#5E6357; --line:#CFCABC; --line-fine:#E1DDD1;
  --accent:#6E7A26; --accent-soft:#E7EAD3; --signal:#96552A; --signal-soft:#F1E5D9;
  --link:#35617F;
  --shadow:0 1px 2px rgba(33,37,31,.07), 0 10px 28px -18px rgba(33,37,31,.35);
  --r:0px;
  color-scheme:light dark;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --ground:#14170F; --surface:#1C2018; --sunk:#232820;
    --ink:#E7E3D8; --muted:#949A88; --line:#333829; --line-fine:#282D21;
    --accent:#B6C24B; --accent-soft:#262C17; --signal:#D28C51; --signal-soft:#2A2017;
    --link:#84B3D2;
    --shadow:0 1px 2px rgba(0,0,0,.45), 0 12px 32px -20px rgba(0,0,0,.9);
  }
}
:root[data-theme="dark"]{
  --ground:#14170F; --surface:#1C2018; --sunk:#232820;
  --ink:#E7E3D8; --muted:#949A88; --line:#333829; --line-fine:#282D21;
  --accent:#B6C24B; --accent-soft:#262C17; --signal:#D28C51; --signal-soft:#2A2017;
  --link:#84B3D2;
  --shadow:0 1px 2px rgba(0,0,0,.45), 0 12px 32px -20px rgba(0,0,0,.9);
}

*{box-sizing:border-box}
body{
  margin:0; background:var(--ground); color:var(--ink);
  font-family:"Newsreader","Iowan Old Style",Georgia,serif;
  font-size:17px; line-height:1.62; font-weight:400; -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4,.disp{font-family:"Barlow Condensed","Arial Narrow",Helvetica,sans-serif;font-weight:600;line-height:1.06;text-wrap:balance;margin:0;letter-spacing:.01em}
h1,.band-head h2,.page-title{text-transform:uppercase;letter-spacing:.035em}
.mono,.kv dt,.tbl th,.eyebrow{font-family:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace}
.chip,button,input,select,textarea,label,nav.main a,.btn{font-family:"Barlow Condensed","Arial Narrow",Helvetica,sans-serif}
a{color:inherit}
img{max-width:100%;display:block}
button{cursor:pointer;font-size:13px}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.skip{position:absolute;left:-9999px;top:0;background:var(--accent);color:var(--ground);
  padding:10px 16px;z-index:100;font-family:"Barlow Condensed",sans-serif;text-transform:uppercase}
.skip:focus{left:0}

.wrap{max-width:1060px;margin:0 auto;padding:0 24px}
.prose{max-width:64ch}

/* ---------- wordmark ---------- */
.wm{display:inline-flex;align-items:center;gap:0;
  font-family:"Barlow Condensed","Arial Narrow",sans-serif;text-transform:uppercase;
  line-height:.86;letter-spacing:.005em;white-space:nowrap}
.wm b{font-weight:700}
.wm em{font-weight:400;font-style:normal;color:var(--muted)}
.wm .plaq{width:.27em;height:.58em;margin:0 .05em -.015em;flex:0 0 auto}
.wm .plaq path{fill:var(--accent)}

/* ---------- strate : le séparateur signature ---------- */
.strate{display:block;height:11px;width:100%;
  background:
    linear-gradient(var(--line),var(--line)) 0 0/100% 1px no-repeat,
    linear-gradient(var(--line-fine),var(--line-fine)) 0 4px/100% 1px no-repeat,
    linear-gradient(var(--line-fine),var(--line-fine)) 0 9px/100% 1px no-repeat;
}

/* ---------- header ---------- */
header.top{
  position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--ground) 90%,transparent);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line);
  box-shadow:0 4px 0 -3px var(--line-fine), 0 9px 0 -8px var(--line-fine);
}
.topbar{display:flex;align-items:center;gap:22px;min-height:64px;flex-wrap:wrap}
.brand{display:flex;flex-direction:column;gap:3px;text-decoration:none;margin-right:auto}
.brand .wm{font-size:23px}
.brand .baseline{font-family:"IBM Plex Mono",monospace;font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
nav.main{display:flex;gap:4px}
nav.main a{
  font-size:14px;letter-spacing:.11em;text-transform:uppercase;text-decoration:none;font-weight:500;
  color:var(--muted);padding:6px 10px;border-bottom:2px solid transparent;
}
nav.main a:hover{color:var(--ink)}
nav.main a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--accent)}

.btn{
  display:inline-block;border:1px solid var(--line);background:var(--surface);color:var(--ink);
  padding:6px 12px;border-radius:var(--r);font-size:14px;letter-spacing:.08em;
  text-transform:uppercase;font-weight:500;text-decoration:none;line-height:1.5;
}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--ground)}
.btn.primary:hover{filter:brightness(1.1);color:var(--ground)}
.btn.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.btn.ghost{background:transparent}
.btn.danger{color:var(--signal)}
.btn.danger:hover{border-color:var(--signal);color:var(--signal)}
.btn.sm{padding:3px 8px;font-size:12px}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}
.hero .contours{position:absolute;inset:0;width:100%;height:100%;color:var(--accent);opacity:.17;pointer-events:none}
.hero-in{position:relative;padding:66px 0 58px;max-width:40ch}
.hero h1{font-size:clamp(44px,8.4vw,86px);letter-spacing:0}
.hero h1 .wm{font-size:inherit}
.hero .tagline{margin:20px 0 0;color:var(--muted);font-size:18px;max-width:34ch;font-weight:300}

.eyebrow{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin:0}

/* ---------- fil d'Ariane ---------- */
.crumb{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:20px 0 0;
  font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--muted)}
.crumb a{text-decoration:none}
.crumb a:hover{color:var(--accent)}

/* ---------- sections ---------- */
section.band{padding:46px 0}
.band-head{display:flex;align-items:baseline;gap:14px;margin-bottom:22px;flex-wrap:wrap}
.band-head h2{font-size:23px}
.band-head .more{margin-left:auto;font-size:11px;font-family:"IBM Plex Mono",monospace;color:var(--muted);text-decoration:none;border-bottom:1px solid var(--line)}
.band-head .more:hover{color:var(--accent);border-color:var(--accent)}
.page-title{font-size:38px;margin:10px 0 24px}

.grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(268px,1fr))}

.card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  overflow:hidden;display:flex;flex-direction:column;text-decoration:none;
  transition:border-color .15s ease, transform .15s ease;
}
.card:hover{border-color:var(--accent);transform:translateY(-2px)}
.card .thumb{aspect-ratio:16/10;background:var(--sunk);position:relative;overflow:hidden}
.card .thumb img{width:100%;height:100%;object-fit:cover}
.card .thumb .ph{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);opacity:.45}
.card .body{padding:15px 16px 17px;display:flex;flex-direction:column;gap:9px;flex:1}
.card h3{font-size:20px;letter-spacing:.005em;font-weight:600}
.card p{margin:0;font-size:15px;color:var(--muted);line-height:1.5;font-weight:300}
.card .foot{margin-top:auto;padding-top:5px;display:flex;gap:7px;flex-wrap:wrap;align-items:center}

.chip{
  display:inline-block;font-size:12px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;
  padding:2px 7px;border-radius:0;background:var(--sunk);color:var(--muted);white-space:nowrap;
}
.chip.n{background:transparent;border:1px solid var(--line-fine);color:var(--muted);
  font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.06em;text-transform:none;padding:2px 6px}
.chip.s{background:var(--signal-soft);color:var(--signal)}

/* ---------- fiche ---------- */
article.doc{padding:18px 0 66px}
article.doc h1{font-size:clamp(30px,5vw,46px);margin:14px 0 0}
.meta-line{margin:16px 0 0;display:flex;gap:10px;flex-wrap:wrap;align-items:center;font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--muted)}
.lede{font-size:19.5px;line-height:1.55;margin:24px 0 0;max-width:60ch;font-weight:300}
.figure{margin:32px 0 0;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--sunk)}
.figure img{width:100%;max-height:min(64vh,520px);object-fit:cover}
.figure figcaption{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.06em;
  color:var(--muted);padding:7px 12px;border-top:1px solid var(--line-fine);background:var(--surface)}
article.doc h2{font-size:22px;margin:40px 0 10px;text-transform:none;letter-spacing:.005em}
article.doc p{margin:0 0 14px}
article.doc .prose a{color:var(--link)}
.warn{margin:40px 0 0;padding:14px 16px;border:1px solid var(--line);border-left:3px solid var(--signal);
  background:var(--surface);font-size:14.5px;color:var(--muted);max-width:64ch;font-weight:300}

.kv{display:grid;grid-template-columns:auto 1fr;gap:2px 18px;margin:28px 0 0;
  border-top:1px solid var(--line);padding-top:15px;
  background:linear-gradient(var(--line-fine),var(--line-fine)) 0 4px/100% 1px no-repeat}
.kv dt{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding-top:6px}
.kv dd{margin:0;padding-top:3px;font-size:15.5px;font-weight:300}

.tblwrap{overflow-x:auto;margin:28px 0 0;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
.tbl{border-collapse:collapse;width:100%;min-width:520px}
.tbl th,.tbl td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line-fine);vertical-align:top;font-size:15px;font-weight:300}
.tbl th{font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);background:var(--sunk);font-weight:400}
.tbl tr:last-child td{border-bottom:0}
.tbl .num{font-variant-numeric:tabular-nums;font-family:"IBM Plex Mono",monospace;font-size:12.5px;white-space:nowrap;font-weight:400;color:var(--ink)}
.tbl .dim{color:var(--muted)}
.plus,.minus{margin:0;font-size:14.5px;line-height:1.45;list-style:none;padding-left:0}
.plus li,.minus li{padding-left:16px;position:relative}
.plus li:before{content:"+";position:absolute;left:0;color:var(--accent);font-family:"IBM Plex Mono",monospace;font-size:12px}
.minus li:before{content:"−";position:absolute;left:0;color:var(--signal);font-family:"IBM Plex Mono",monospace;font-size:12px}

.verdict{
  margin:32px 0 0;padding:18px 22px;background:var(--accent-soft);
  border-left:3px solid var(--accent);border-radius:0;max-width:64ch;
}
.verdict .eyebrow{color:var(--accent)}
.verdict p{margin:7px 0 0;font-size:17px}

.linklist{display:flex;flex-wrap:wrap;gap:8px;margin:26px 0 0;padding:0;list-style:none}
.linklist a{font-family:"IBM Plex Mono",monospace;font-size:11px;text-decoration:none;border:1px solid var(--line);padding:5px 9px;border-radius:var(--r);color:var(--link)}
.linklist a:hover{border-color:var(--link);background:var(--surface)}

/* ---------- filtre ---------- */
.filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 24px}
.filters input[type=search]{
  background:var(--surface);border:1px solid var(--line);color:var(--ink);
  padding:8px 11px;border-radius:var(--r);font-size:15px;min-width:220px;letter-spacing:.02em;
}
.empty{color:var(--muted);font-size:15px;padding:34px 0;border-top:1px solid var(--line);font-weight:300}

/* ---------- formulaires (back-office) ---------- */
fieldset{border:1px solid var(--line);border-radius:var(--r);padding:14px 16px 16px;margin:0 0 16px;background:var(--ground)}
legend{font-family:"IBM Plex Mono",monospace;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);padding:0 6px}
.f{display:flex;flex-direction:column;gap:5px;margin:0 0 12px}
.f label{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.f input,.f textarea,.f select{
  background:var(--surface);border:1px solid var(--line);color:var(--ink);
  border-radius:var(--r);padding:8px 10px;font-size:14.5px;font-family:"Newsreader",Georgia,serif;width:100%;
}
.f textarea{min-height:80px;resize:vertical;line-height:1.5}
.f .hint{font-size:12px;color:var(--muted);letter-spacing:.02em}
.f.check{flex-direction:row;align-items:center;gap:8px}
.f.check input{width:auto}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
@media(max-width:620px){.f2{grid-template-columns:1fr}}
.sub{border:1px dashed var(--line);border-radius:var(--r);padding:12px 14px 2px;margin:0 0 12px;background:var(--surface)}
.sub-hd{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.sub-hd b{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:400;margin-right:auto}
.imgprev{width:100%;max-height:190px;object-fit:cover;border:1px solid var(--line);border-radius:var(--r);margin-bottom:8px}

/* ---------- pied de page ---------- */
footer.site{border-top:1px solid var(--line);padding:26px 0 44px;color:var(--muted);font-size:12.5px;
  font-family:"IBM Plex Mono",monospace;
  background:linear-gradient(var(--line-fine),var(--line-fine)) 0 4px/100% 1px no-repeat}
footer.site .wrap{display:flex;gap:14px;flex-wrap:wrap;align-items:center}
footer.site a{text-decoration:none;border-bottom:1px solid var(--line-fine)}
footer.site a:hover{color:var(--accent);border-color:var(--accent)}
footer.site .grow{flex:1 1 auto}
@media(max-width:700px){footer.site .grow{display:none}}

@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}
