/* search.css – page de recherche (index.html) : formulaire et blocs de résultats. */

.hero { padding: 2.5rem 0 1.5rem clamp(1rem, 3vw, 2rem); border-left: 4px solid var(--accent); margin-top: 1.5rem; }
.hero h1 { font-size: clamp(1.75rem, 4.5vw, 2.75rem); line-height: 1.15; margin: 0 0 .75rem; max-width: 24ch; }
.hero > p { margin: 0 0 2rem; color: var(--muted); max-width: 60ch; }

aveg-search form { display: grid; gap: .9rem; grid-template-columns: 1.7fr 1.2fr 1.6fr 1.3fr 1.9fr auto; align-items: end; }
aveg-search .periode { display: grid; gap: .3rem; font-size: .85rem; color: var(--muted); }
aveg-search .periode > div { display: grid; grid-template-columns: 1fr 1fr; gap: .4rem; }
aveg-search .periode input { padding: 0 .45rem; min-width: 4.2rem; }
aveg-search .nom input { font-family: var(--serif); font-size: 1.1rem; }
aveg-search .nom input:disabled { opacity: .5; }
aveg-search .checks { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: .4rem 1.75rem; }
aveg-search .check { display: flex; align-items: center; gap: .5rem; font-size: .85rem; }
aveg-search .check input { width: 1.1rem; height: 1.1rem; margin: 0; accent-color: var(--accent); }
aveg-search .error { grid-column: 1 / -1; }
@media (max-width: 52rem) {
  aveg-search form { grid-template-columns: 1fr 1fr; }
  aveg-search .nom, aveg-search button { grid-column: 1 / -1; }
  /* L'option « patronyme inconnu » remonte juste sous le champ du nom */
  aveg-search form > * { order: 2; }
  aveg-search .nom { order: 0; }
  aveg-search .checks { order: 1; flex-direction: column; }
}
@media (max-width: 30rem) { aveg-search form { grid-template-columns: 1fr; } }

/* Résultats */
aveg-results { display: block; padding: 1rem 0; }
aveg-results .summary { font: 600 1.35rem/1.3 var(--serif); margin: 0 0 1.25rem; }
aveg-results .badge { margin-left: .75rem; }
aveg-results .join { margin-top: 1.5rem; padding: 1.25rem; background: var(--surface); border: 1px solid var(--rule);
                     border-left: 4px solid var(--accent); border-radius: var(--radius); }
aveg-results .join p { margin: 0 0 .75rem; }

/* Un bloc par source (registres, arbres, bulletins) */
aveg-source-bms, aveg-source-tng, aveg-source-bulletins { display: block; border-top: 1px solid var(--rule); padding: 1.25rem 0; }
aveg-results h2 { font-size: 1.1rem; margin: 0; display: flex; justify-content: space-between; gap: .25rem 1rem; flex-wrap: wrap; }
aveg-results h2 small { font: 400 .9rem var(--sans); color: var(--muted); }
aveg-results .locked { margin: .75rem 0 0; font-size: .9rem; color: var(--muted); }
aveg-results .list { margin: .75rem 0 0; padding-left: 1.1rem; }
aveg-results .list li { margin: .3rem 0; }
aveg-results .list small { color: var(--muted); }

.counts { display: flex; gap: 1.5rem; flex-wrap: wrap; margin: .75rem 0 0; padding: 0; list-style: none; }
.counts b { font: 600 1.5rem/1 var(--serif); display: block; }
.counts span { font-size: .85rem; color: var(--muted); }

aveg-source-bms table { border-collapse: collapse; width: 100%; font-size: .92rem; margin-top: .75rem; }
aveg-source-bms th, aveg-source-bms td { text-align: left; padding: .45rem .75rem .45rem 0; border-bottom: 1px solid var(--rule); vertical-align: top; }
aveg-source-bms th { font-weight: 600; color: var(--muted); font-size: .8rem; }
aveg-source-bms .date { font-variant-numeric: tabular-nums; white-space: nowrap; }
/* Petit écran : chaque acte devient une fiche empilée */
@media (max-width: 36rem) {
  aveg-source-bms thead { display: none; }
  aveg-source-bms tr { display: grid; grid-template-columns: 6.5rem 1fr; gap: 0 .75rem; padding: .6rem 0; border-bottom: 1px solid var(--rule); }
  aveg-source-bms td { border: 0; padding: 0; }
  aveg-source-bms .date { grid-row: span 3; color: var(--muted); }
  aveg-source-bms .nom { font-weight: 600; }
  aveg-source-bms .acte, aveg-source-bms .paroisse { font-size: .85rem; color: var(--muted); grid-column: 2; }
  aveg-source-bms .detail { grid-column: 2; text-align: left; }
  aveg-source-bms tr.fiche-ligne { display: block; }
  aveg-source-bms tr.fiche-ligne td { display: block; }
}

/* Bloc ecclésiastiques : notices dépliables */
aveg-source-eccl { display: block; border-top: 1px solid var(--rule); padding: 1.25rem 0; }
aveg-source-eccl .eccl { list-style: none; margin: .75rem 0 0; padding: 0; }
aveg-source-eccl li + li { border-top: 1px solid var(--rule); }
aveg-source-eccl summary { display: flex; align-items: center; gap: .75rem; padding: .6rem 0; cursor: pointer; }
aveg-source-eccl summary img { width: 3rem; height: 3.75rem; object-fit: cover; border-radius: var(--radius); flex: none; }
aveg-source-eccl summary span { display: grid; }
aveg-source-eccl summary small { color: var(--muted); font-size: .85rem; }
aveg-source-eccl .eccl-text { margin: 0 0 1rem; max-width: 70ch; font-size: .95rem; }
aveg-source-eccl summary { list-style: none; }
aveg-source-eccl summary::-webkit-details-marker { display: none; }
aveg-source-eccl summary::after { content: "Lire la notice"; margin-left: auto; font-size: .85rem; color: var(--accent); text-decoration: underline; text-underline-offset: 3px; }
aveg-source-eccl details[open] summary::after { content: "Refermer"; }

/* Bloc armoiries : mention de l'armorial, puis une fiche par blason */
aveg-source-armoiries, aveg-source-ofs { display: block; border-top: 1px solid var(--rule); padding: 1.25rem 0; }
aveg-source-armoiries .armorial { margin: .75rem 0 0; }
aveg-source-armoiries .blasons { list-style: none; margin: .75rem 0 0; padding: 0; display: grid; gap: 1rem; }
aveg-source-armoiries .blason { display: grid; grid-template-columns: auto 1fr; gap: 1rem; align-items: start; padding-top: 1rem; border-top: 1px solid var(--rule); }
aveg-source-armoiries .blason:first-child { border-top: 0; padding-top: 0; }
aveg-source-armoiries .blason:not(:has(img)) { grid-template-columns: 1fr; }
aveg-source-armoiries .blason-img { display: block; width: 6.5rem; }
aveg-source-armoiries .blason img { display: block; width: 100%; height: auto; }
aveg-source-armoiries .blason p { margin: 0 0 .3rem; }
aveg-source-armoiries .blason-desc { max-width: 68ch; font-size: .95rem; font-style: italic; }
@media (max-width: 30rem) { aveg-source-armoiries .blason-img { width: 4.5rem; } }

/* Bloc OFS : barres proportionnelles au nombre de porteurs */
aveg-source-ofs .ofs { list-style: none; margin: .5rem 0; padding: 0; max-width: 40rem; }
aveg-source-ofs .ofs li { display: grid; grid-template-columns: minmax(8rem, 13rem) 1fr 3.5rem; gap: .75rem; align-items: center; padding: .25rem 0; font-size: .92rem; }
aveg-source-ofs .ofs small { color: var(--muted); }
aveg-source-ofs .ofs-bar { height: .55rem; background: var(--rule); border-radius: 3px; overflow: hidden; }
aveg-source-ofs .ofs-bar span { display: block; height: 100%; background: var(--accent); }
aveg-source-ofs .ofs-n { text-align: right; font-variant-numeric: tabular-nums; }
@media (max-width: 30rem) { aveg-source-ofs .ofs li { grid-template-columns: 1fr 3.5rem; } aveg-source-ofs .ofs-bar { grid-column: 1 / -1; grid-row: 2; } }

/* Question en langage naturel, au-dessus du formulaire */
aveg-ask { display: block; margin-bottom: 1.25rem; }
aveg-ask .ask-label { display: block; font: 600 1.05rem var(--serif); color: var(--ink); margin-bottom: .4rem; }
aveg-ask .ask-row { display: flex; gap: .6rem; }
aveg-ask .ask-row input { flex: 1 1 auto; font-size: 1.05rem; height: 3rem; min-height: 3rem; }
aveg-ask .ask-row button { min-height: 3rem; }
aveg-ask .note .link { font-size: inherit; text-align: left; }
aveg-ask .ask-out:empty { display: none; }
aveg-ask .ask-out { margin-top: .75rem; padding: .75rem 1rem; background: var(--surface); border: 1px solid var(--rule); border-radius: var(--radius); }
aveg-ask .ask-out p { margin: 0 0 .25rem; }
aveg-ask .ask-compris { font-size: .95rem; }
.hero .or { margin: 0 0 .75rem; font-size: .85rem; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; }
@media (max-width: 30rem) { aveg-ask .ask-row { flex-direction: column; } }

/* Carte des porteurs du nom (OFS) : points semi-transparents, du plus gros au plus petit */
aveg-source-ofs .carte-ofs { height: clamp(18rem, 48vh, 30rem); margin: .75rem 0; }
.point-ofs { background: rgb(200 16 46 / .55); border: 1.5px solid #fff; box-shadow: 0 0 0 1px rgb(143 11 33 / .6); }
.point-ofs:hover, .point-ofs:focus-visible { background: rgb(143 11 33 / .85); }
aveg-source-ofs .ofs-liste { margin-top: .5rem; font-size: .92rem; }
aveg-source-ofs .ofs-liste summary { cursor: pointer; color: var(--accent); }

/* Fiche complète d'un acte, dépliée sous sa ligne */
aveg-source-bms .detail { text-align: right; white-space: nowrap; }
aveg-source-bms tr.fiche-ligne td { padding: 0 0 1rem; border-bottom: 1px solid var(--rule); }
.fiche { margin-top: .25rem; padding: 1rem 1.25rem; background: var(--surface); border: 1px solid var(--rule);
         border-left: 4px solid var(--accent); border-radius: var(--radius); font-size: .93rem; }
.fiche h3 { font-size: 1.05rem; margin: 0 0 .6rem; }
.fiche h4 { font-size: .95rem; margin: .8rem 0 .4rem; }
/* Colonne des libellés de largeur fixe : les blocs successifs d'une fiche restent alignés */
.fiche dl { display: grid; grid-template-columns: 7rem 1fr; gap: .25rem 1rem; margin: 0; }
.fiche dl + dl { margin-top: .25rem; }
.fiche dt { color: var(--muted); }
.fiche dd { margin: 0; }
.fiche-conjoints { display: grid; grid-template-columns: 1fr 1fr; gap: 0 2rem; }
@media (max-width: 40rem) { .fiche-conjoints { grid-template-columns: 1fr; } }
.fiche-remarques p { margin: 0; }
.fiche-source { margin-top: .8rem; font-size: .88rem; }
.fiche-source summary { cursor: pointer; color: var(--accent); }
.fiche-source p { margin: .35rem 0 0; }
.fiche > .note { margin-top: .8rem; }

/* Arbres : filtre, groupes par arbre, pages */
.tng-outils { margin: .75rem 0 0; max-width: 24rem; }
.tng-groupe h3 { font-size: .95rem; margin: 1rem 0 .1rem; color: var(--muted); font-family: var(--sans); font-weight: 600; }
.tng-groupes.chargement { opacity: .5; }
.tng-pages { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap;
             margin-top: 1rem; padding-top: .75rem; border-top: 1px solid var(--rule); font-size: .9rem; }
.tng-pages span { color: var(--muted); }
.tng-pages button:disabled { color: var(--muted); text-decoration: none; cursor: default; }

/* Lien vers les recensements de l'État du Valais, sous les résultats */
aveg-results .autres-sources { margin: 1.25rem 0 0; padding-top: 1rem; border-top: 1px solid var(--rule); font-size: .95rem; }
aveg-results .autres-sources small { color: var(--muted); }

/* Fiche d'une commune (recherche par commune) */
aveg-source-commune { display: block; border-top: 1px solid var(--rule); padding: 1.25rem 0; }
.commune-tete { display: flex; gap: 1.25rem; align-items: flex-start; }
.commune-tete h2 { margin: 0 0 .2rem; }
.commune-armoiries { flex: none; width: 5.5rem; height: auto; }
.commune-blason { font-style: italic; margin: .5rem 0; max-width: 60ch; }
.commune-tete details { font-size: .92rem; max-width: 65ch; }
.commune-tete summary, .commune-paroisses summary { cursor: pointer; color: var(--accent); }
.commune-bloc { margin-top: 1.25rem; }
.commune-bloc h3 { font-size: 1.05rem; margin: 0 0 .5rem; }
.commune-bloc h3 small { font: 400 .8rem var(--sans); color: var(--muted); margin-left: .5rem; }
.commune-paroisses { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.commune-paroisses li { padding: .6rem .9rem; background: var(--surface); border: 1px solid var(--rule); border-left: 4px solid var(--accent); border-radius: var(--radius); }
.commune-paroisses p { margin: 0 0 .15rem; }
.commune-paroisses details { font-size: .88rem; margin-top: .3rem; }
.commune-paroisses details div { margin-top: .3rem; color: var(--muted); }
.commune-noms { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.commune-nom { display: inline-flex; gap: .4rem; align-items: baseline; padding: .3rem .65rem; border: 1px solid var(--rule); border-radius: 999px;
               background: var(--surface); color: var(--ink); font: inherit; font-size: .9rem; cursor: pointer; }
.commune-nom small { color: var(--muted); font-size: .75rem; }
.commune-nom:hover, .commune-nom:focus-visible { border-color: var(--accent); color: var(--accent); }
.commune-liste { margin: 0; padding-left: 1.1rem; }
.commune-liste li { margin: .2rem 0; }
.commune-liste small { color: var(--muted); }
.commune-portee { margin: .25rem 0 .75rem; }
@media (max-width: 36rem) { .commune-tete { flex-direction: column; } .commune-armoiries { width: 4.5rem; } }

/* Tombes : noms relevés sur les photos (components/aveg-source-tombes.js) */
aveg-source-tombes { display: block; border-top: 1px solid var(--rule); padding: 1.25rem 0; }
.tombes-res { list-style: none; margin: .5rem 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)); gap: .5rem; }
.tombes-res a { display: flex; gap: .7rem; align-items: center; padding: .4rem .7rem .4rem .4rem; border: 1px solid var(--rule); border-radius: 10px;
  background: var(--surface); color: var(--ink); text-decoration: none; }
.tombes-res a:hover { border-color: var(--accent); }
.tombes-res img { width: 56px; height: 56px; object-fit: cover; border-radius: 6px; flex: none; background: var(--bg); }
.tombes-res small { color: var(--muted); }
