/* ============================================================
   Pages d'accueil, d'index et de parcours
   ============================================================ */

/* --- héros --- */
.hero{position:relative;padding-block:clamp(3rem,8vw,6.5rem) clamp(2rem,4vw,3.5rem);
  border-bottom:1px solid var(--rule);overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(60% 50% at 18% 0%,color-mix(in oklab,var(--accent) 12%,transparent),transparent 70%),
    radial-gradient(50% 60% at 88% 20%,color-mix(in oklab,var(--sea) 14%,transparent),transparent 70%);
  opacity:.5}
.hero-in{position:relative}
.hero h1{font-size:clamp(2.1rem,1rem + 4.6vw,4.4rem);font-weight:500;line-height:1.05;
  letter-spacing:-.018em;margin-bottom:.5em;max-width:18ch}
.hero h1 .thin{font-weight:400;font-style:italic;color:var(--ink-2);
  font-size:.62em;letter-spacing:-.005em;display:inline-block;margin-top:.15em}
.hero .lede{max-width:52ch;font-size:clamp(1.02rem,.95rem + .35vw,1.24rem)}
.hero-actions{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:2rem}

.btn{display:inline-block;font-family:var(--sans);font-size:.84rem;font-weight:500;
  padding:.68rem 1.2rem;border:1px solid var(--rule-2);border-radius:var(--r);
  text-decoration:none;color:var(--ink);background:var(--paper-2);
  transition:background .18s,border-color .18s,transform .18s}
.btn:hover{background:var(--paper-3);border-color:var(--ink-3);transform:translateY(-1px);color:var(--ink)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.primary:hover{background:var(--accent-2);border-color:var(--accent-2);color:#fff}
.btn.ghost{background:transparent}
.btn.small{font-size:.76rem;padding:.45rem .85rem}

.figures-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(7.5rem,1fr));gap:1px;
  margin:2.8rem 0 0;padding:0;background:var(--rule);border:1px solid var(--rule);border-radius:var(--r);overflow:hidden}
.figures-bar>div{background:var(--paper);padding:1rem .9rem;text-align:center}
.figures-bar dt{font-size:clamp(1.15rem,1rem + .7vw,1.7rem);font-weight:500;line-height:1;
  font-variant-numeric:tabular-nums}
.figures-bar dd{margin:.35rem 0 0;font-family:var(--sans);font-size:.68rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-3)}
.figures-bar.wide{margin-top:1rem}

/* --- bandes --- */
.band{padding-block:clamp(2.2rem,4vw,3.4rem)}
.band-title{font-size:clamp(1.3rem,1.1rem + .9vw,1.85rem);margin:0 0 .3em;
  padding-bottom:.5rem;border-bottom:1px solid var(--rule)}
.band-sub{color:var(--ink-3);max-width:60ch;margin:.8rem 0 1.4rem}
.more{margin-top:1.4rem;font-family:var(--sans);font-size:.86rem}

.page-head{padding-block:clamp(2rem,5vw,3.6rem) 1.6rem;border-bottom:1px solid var(--rule)}
.page-head h1{margin-bottom:.3em}
.page-head .lede{max-width:62ch}
.narrow-head{max-width:52rem}
.taglist{margin-top:1rem;display:flex;flex-wrap:wrap;gap:.35rem}

.card.static{cursor:default}
.card.static:hover{transform:none;box-shadow:none;border-color:var(--rule)}
.terr-grid .card{padding:.9rem 1rem}
.terr-card .terr-stats{display:block;margin-top:.7rem;font-family:var(--sans);font-size:.7rem;
  letter-spacing:.06em;color:var(--ink-3)}

/* --- listes de chapitres --- */
.vol-block{padding-block:2rem;border-bottom:1px solid var(--rule)}
.vol-block:last-child{border-bottom:0}
.vol-head{display:flex;gap:1.2rem;align-items:baseline;margin-bottom:1.2rem}
.vol-num{font-size:2.6rem;line-height:1;color:var(--rule-2);font-weight:500;min-width:2.2rem}
.vol-head h2{margin:0;font-size:1.5rem}
.vol-head h2 a{color:inherit;text-decoration:none}
.vol-head h2 a:hover{color:var(--accent)}
.part-block{padding-block:1.6rem;border-top:1px solid var(--rule)}
.part-block h2{margin-top:0;font-size:1.3rem}
.part-block h2 a{color:inherit;text-decoration:none}
.part-block h2 a:hover{color:var(--accent)}

.chaplist{list-style:none;margin:0;padding:0;display:grid;gap:.4rem}
.chaplist li a{display:grid;gap:.15rem;padding:.85rem 1rem;border:1px solid var(--rule);
  border-radius:var(--r);text-decoration:none;color:inherit;background:var(--paper-2);
  transition:border-color .18s,transform .18s}
.chaplist li a:hover{border-color:var(--rule-2);transform:translateX(3px)}
.chaplist .ci{font-family:var(--sans);font-size:.65rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}
.chaplist .ct{font-size:1.06rem;line-height:1.3}
.chaplist .cm{font-family:var(--sans);font-size:.72rem;color:var(--ink-3)}
.chaplist .cs{font-size:.88rem;color:var(--ink-3);line-height:1.5;margin-top:.3rem;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.chaplist.big li a{padding:1.1rem 1.25rem}

/* --- galerie --- */
.gallery{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,10.5rem),1fr))}
.gitem{display:flex;flex-direction:column;gap:.45rem;text-decoration:none;color:inherit}
.gitem img{width:100%;height:auto;background:var(--paper-3);border:1px solid var(--rule);
  border-radius:2px;aspect-ratio:4/3;object-fit:cover;object-position:center;
  transition:border-color .2s,transform .2s,box-shadow .2s}
.gitem:hover img{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow)}
.gitem span{font-family:var(--sans);font-size:.7rem;line-height:1.4;color:var(--ink-3)}
.gitem:hover span{color:var(--ink)}
.g-plates{grid-template-columns:repeat(auto-fill,minmax(min(100%,13rem),1fr))}
.g-plates img{aspect-ratio:3/4}

.fullfig{max-width:78rem;margin:2rem auto 3rem;padding-inline:clamp(1rem,4vw,2.5rem);
  display:grid;gap:1.8rem}
@media (min-width:1000px){.fullfig{grid-template-columns:minmax(0,1.6fr) minmax(16rem,1fr);align-items:start}}
.fullfig img{width:100%;height:auto;border:1px solid var(--rule);border-radius:2px;
  background:var(--paper-3);box-shadow:var(--shadow)}
.fullfig figcaption h1{font-size:clamp(1.2rem,1rem + 1vw,1.7rem);margin-bottom:.5rem}
.fullfig figcaption p{font-size:.94rem;color:var(--ink-2);margin:.6rem 0}

/* --- chronologie --- */
.chrono-tools{margin-top:1.6rem;display:grid;gap:.9rem}
.chrono-tools input[type=search]{width:100%;max-width:30rem}
input[type=search],input[type=number]{font-family:var(--sans);font-size:.92rem;padding:.6rem .85rem;
  border:1px solid var(--rule-2);border-radius:var(--r);background:var(--paper-2);color:var(--ink);width:100%}
input[type=search]:focus,input[type=number]:focus{outline:2px solid var(--accent);outline-offset:1px}
.chips{display:flex;flex-wrap:wrap;gap:.35rem}
.chip{font-family:var(--sans);font-size:.72rem;padding:.35rem .7rem;border:1px solid var(--rule-2);
  border-radius:99px;background:var(--paper-2);color:var(--ink-3);cursor:pointer;text-decoration:none}
.chip:hover{border-color:var(--accent);color:var(--accent)}
.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}

.timeline{list-style:none;margin:2rem 0 0;padding:0;position:relative}
.timeline .ev{display:grid;grid-template-columns:4.2rem 1fr;gap:1rem;padding:.7rem 0;
  border-bottom:1px solid var(--rule)}
.timeline .ty{font-family:var(--sans);font-size:.82rem;font-weight:600;color:var(--accent);
  font-variant-numeric:tabular-nums;padding-top:.1rem}
.timeline .tt{font-size:.98rem;line-height:1.55}
.timeline .src{display:block;margin-top:.3rem;font-family:var(--sans);font-size:.72rem;
  color:var(--ink-3);text-decoration:none}
.timeline .src:hover{color:var(--accent)}
.timeline .decade-head{margin:2.4rem 0 .6rem;border:0}
.timeline .decade-head h2{font-size:1.1rem;font-family:var(--sans);font-weight:600;letter-spacing:.06em;
  color:var(--ink-3);border-bottom:1px solid var(--rule-2);padding-bottom:.4rem;margin:0}
.timeline li:not(.ev):not(.decade-head){display:grid;grid-template-columns:4.2rem 1fr;gap:1rem;
  padding:.7rem 0;border-bottom:1px solid var(--rule)}
@media (max-width:560px){.timeline .ev,.timeline li:not(.decade-head){grid-template-columns:3.2rem 1fr;gap:.7rem}}

/* --- index alphabétiques --- */
.bigsearch{max-width:26rem;margin-top:1.4rem}
.alpha{display:flex;flex-wrap:wrap;gap:.2rem;margin-top:1.2rem;font-family:var(--sans);font-size:.78rem}
.alpha a{padding:.25rem .5rem;border-radius:var(--r);text-decoration:none;color:var(--ink-3)}
.alpha a:hover{background:var(--paper-3);color:var(--ink)}
.alpha-sec{padding-block:1.6rem;scroll-margin-top:5rem}
.alpha-h{font-size:1.5rem;color:var(--accent);border-bottom:1px solid var(--rule);
  padding-bottom:.3rem;margin:0 0 .9rem}
.ixlist{list-style:none;margin:0;padding:0;columns:3;column-gap:2rem;font-size:.95rem}
@media (max-width:900px){.ixlist{columns:2}}
@media (max-width:560px){.ixlist{columns:1}}
.ixlist li{break-inside:avoid;display:flex;gap:.5rem;align-items:baseline;padding:.16rem 0}
.ixlist a{text-decoration:none}
.ixlist a:hover{text-decoration:underline}
.ixlist .occ{margin-left:auto;font-family:var(--sans);font-size:.68rem;color:var(--ink-3);
  font-variant-numeric:tabular-nums}
.gloss{columns:2;column-gap:2.4rem}
@media (max-width:760px){.gloss{columns:1}}
.gloss>div{break-inside:avoid;margin-bottom:1.1rem;scroll-margin-top:5rem}
.gloss dt{font-weight:600;font-size:1.02rem;margin-bottom:.15rem}
.gloss dd{margin:0;font-size:.92rem;line-height:1.55;color:var(--ink-2)}

.quotes{display:grid;gap:1rem;margin-bottom:2rem}
.quotes blockquote{margin:0;padding:1rem 1.2rem;background:var(--paper-2);
  border-left:2px solid var(--accent);border-radius:0 var(--r) var(--r) 0}
.quotes blockquote p{margin:0 0 .5rem;font-size:1rem;line-height:1.6}
.quotes cite{font-style:normal;font-family:var(--sans);font-size:.74rem;color:var(--ink-3)}

/* --- barres de données --- */
.bars{display:grid;gap:.5rem;margin:1.2rem 0 2rem}
.bar-row{display:grid;grid-template-columns:minmax(6rem,15rem) 1fr auto;gap:.9rem;align-items:center;
  font-family:var(--sans);font-size:.8rem}
.bl{color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bt{height:.55rem;background:var(--paper-3);border-radius:99px;overflow:hidden}
.bf{display:block;height:100%;width:var(--w);border-radius:99px;
  background:linear-gradient(90deg,var(--accent),var(--accent-2))}
.bv{font-variant-numeric:tabular-nums;color:var(--ink-3);min-width:5rem;text-align:right}
@media (max-width:640px){.bar-row{grid-template-columns:1fr auto;gap:.4rem}.bt{grid-column:1/-1}}

.tablewrap{overflow-x:auto;margin:1.2rem 0 2rem;border:1px solid var(--rule);border-radius:var(--r)}
table.doc{border-collapse:collapse;width:100%;font-family:var(--sans);font-size:.82rem}
table.doc td,table.doc th{padding:.5rem .8rem;border-bottom:1px solid var(--rule);text-align:left;
  vertical-align:top;white-space:nowrap}
table.doc th{background:var(--paper-2);font-weight:600;font-size:.7rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-3)}
table.doc tr:last-child td{border-bottom:0}
table.doc .tot td{font-weight:600;background:var(--paper-2)}
table.doc td:not(:first-child){font-variant-numeric:tabular-nums}

.ranklist{margin:0 0 2rem;padding:0 0 0 1.6rem;display:grid;gap:.3rem}
.ranklist a{display:flex;gap:1rem;justify-content:space-between;text-decoration:none;color:inherit;
  padding:.3rem 0;border-bottom:1px solid var(--rule)}
.ranklist a:hover{color:var(--accent)}
.ranklist .muted{white-space:nowrap;font-size:.75rem}

/* --- pagination --- */
.pager{display:flex;flex-wrap:wrap;gap:.3rem;justify-content:center;margin:2.5rem 0 1rem;
  font-family:var(--sans);font-size:.8rem}
.pg{padding:.4rem .7rem;border:1px solid var(--rule);border-radius:var(--r);text-decoration:none;
  color:var(--ink-3);min-width:2.2rem;text-align:center}
.pg:hover{border-color:var(--accent);color:var(--accent)}
.pg.on{background:var(--accent);border-color:var(--accent);color:#fff}
.pg.dots{border:0}

/* --- recherche --- */
.searchbox{display:flex;gap:.5rem;margin-top:1.6rem;max-width:40rem}
.searchbox input{flex:1;font-size:1.02rem;padding:.75rem 1rem}
.searchbox button{font-family:var(--sans);font-size:.86rem;padding:.7rem 1.3rem;border:1px solid var(--accent);
  background:var(--accent);color:#fff;border-radius:var(--r);cursor:pointer}
.searchbox button:hover{background:var(--accent-2);border-color:var(--accent-2)}
.suggest{margin-top:.9rem;font-size:.8rem;color:var(--ink-3);display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}
.results{padding-block:2rem;display:grid;gap:1rem}
.res{padding:1.1rem 1.25rem;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper-2)}
.res h3{margin:0 0 .3rem;font-size:1.06rem}
.res h3 a{text-decoration:none;color:inherit}
.res h3 a:hover{color:var(--accent)}
.res .rm{font-family:var(--sans);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-3);margin-bottom:.5rem}
.res p{margin:.4rem 0 0;font-size:.95rem;line-height:1.6;color:var(--ink-2)}
.res mark{background:var(--sel);color:var(--ink);padding:0 .1em;border-radius:2px}
.res .hit{display:block;margin-top:.5rem;padding-left:.8rem;border-left:2px solid var(--rule-2)}
.res .hit a{font-family:var(--sans);font-size:.7rem;color:var(--ink-3);text-decoration:none}
.searching{color:var(--ink-3);font-family:var(--sans);font-size:.9rem}

/* --- plan --- */
.plan{padding-block:2rem}
.plan h2{font-size:1.4rem;border-bottom:1px solid var(--rule);padding-bottom:.3rem}
.plan h3{font-size:1.05rem;margin-top:1.6rem}
.plan .pl{font-size:.9rem;line-height:1.9;color:var(--ink-3)}
.plan .pl a{text-decoration:none}
.plan .pl a:hover{text-decoration:underline}

.region{padding-block:1.6rem}
.gotopage{display:flex;gap:.35rem;margin-top:.4rem}
.gotopage input{width:5.5rem;font-size:.8rem;padding:.4rem .5rem}
.gotopage button{font-family:var(--sans);font-size:.75rem;padding:.4rem .7rem;border:1px solid var(--rule-2);
  background:var(--paper-2);color:var(--ink-2);border-radius:var(--r);cursor:pointer}
.gotopage button:hover{border-color:var(--accent);color:var(--accent)}

/* --- frise des territoires --- */
.frise{padding-block:1.5rem 2.5rem}
.frise-grid{display:grid;gap:.18rem;margin-top:1.4rem;font-family:var(--sans)}
.frise-axis{position:relative;height:1.3rem;margin-left:12.5rem;margin-right:5.4rem;
  border-bottom:1px solid var(--rule)}
.frise-axis span{position:absolute;left:var(--x);transform:translateX(-50%);font-size:.66rem;
  color:var(--ink-3);letter-spacing:.06em}
.frise-row{display:grid;grid-template-columns:12.5rem 1fr 5.4rem;gap:0;align-items:center;
  text-decoration:none;color:inherit;padding:.12rem 0;border-radius:2px}
.frise-row:hover{background:var(--paper-2)}
.frise-row .fl{font-size:.74rem;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;padding-right:.6rem}
.frise-row:hover .fl{color:var(--accent)}
.frise-row .ft{position:relative;height:.72rem;background:
  repeating-linear-gradient(90deg,var(--rule) 0 1px,transparent 1px 11.11%)}
.frise-row .fb{position:absolute;left:var(--a);width:var(--w);top:.08rem;bottom:.08rem;
  border-radius:99px;background:linear-gradient(90deg,var(--accent),var(--accent-2));opacity:.85}
.frise-row:hover .fb{opacity:1}
.frise-row .fb.cut{background:linear-gradient(90deg,transparent,var(--accent) 5%,var(--accent-2));
  border-radius:0 99px 99px 0}
.frise-row .fy{white-space:nowrap}
.frise-row .fy{font-size:.64rem;color:var(--ink-3);text-align:right;font-variant-numeric:tabular-nums}
@media (max-width:760px){
  .frise-axis{margin-left:7.5rem;margin-right:0}
  .frise-row{grid-template-columns:7.5rem 1fr}
  .frise-row .fy{display:none}
}

/* --- bloc de citation --- */
.cite-block{margin-top:2.5rem;padding:1.1rem 1.3rem;border:1px solid var(--rule);
  border-radius:var(--r);background:var(--paper-2);max-width:var(--measure)}
.cite-block h4{font-family:var(--sans);font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink-3);margin:0 0 .6rem}
.cite-block .ref{margin:0 0 .5rem;font-size:.92rem;line-height:1.55;text-indent:0}
.cite-block p.sans{margin:0;font-size:.74rem;text-indent:0}
.cite-block .urlref{word-break:break-all}

/* --- bandeau d'ouverture --- */
.hero-strip{display:flex;gap:.5rem;margin-top:2.6rem;overflow:hidden;
  mask-image:linear-gradient(90deg,transparent,#000 6%,#000 82%,transparent);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 82%,transparent)}
.hero-strip img{height:9.5rem;width:auto;max-width:none;border:1px solid var(--rule);
  border-radius:2px;object-fit:cover;filter:saturate(.82) contrast(1.02);
  background:var(--paper-3);flex:0 0 auto}
@media (max-width:760px){.hero-strip img{height:6.5rem}}
@media (prefers-color-scheme:dark){.hero-strip img{filter:saturate(.7) brightness(.86)}}
:root[data-theme="dark"] .hero-strip img{filter:saturate(.7) brightness(.86)}
