/* Oratorio — « Carte des Oratoires dans le monde » (js/oratoires.js). Couleurs : tokens de style.css uniquement.
   Catégories : congrégations = ciel, communautés en formation = or, projets de fondation = rouge, disparus = menthe. */
#oratoires{
  --or-cong:var(--sky); --or-cong-soft:var(--sky-soft);
  --or-form:var(--gold); --or-form-soft:var(--sun-soft);
  --or-fond:var(--red); --or-fond-soft:var(--soft);
  --or-disp:var(--mint); --or-disp-soft:var(--mint-soft);
}
#oratoires-root{gap:18px;min-width:0}
#oratoires .or-defs{position:absolute;width:0;height:0;overflow:hidden}
#oratoires .or-loading{margin:24px 0;text-align:center;color:var(--muted)}

/* ---------- légende ---------- */
#oratoires .or-map-sec{display:flex;flex-direction:column;gap:12px;min-width:0}
#oratoires .or-legend{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
#oratoires .or-legend button{appearance:none;display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:999px;border:1.5px solid var(--line);background:var(--paper);color:var(--ink);font:inherit;font-weight:700;font-size:14px;line-height:1.25;cursor:pointer;transition:opacity .2s ease,border-color .15s ease}
#oratoires .or-legend button:hover{border-color:var(--red)}
#oratoires .or-legend button .dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
#oratoires .or-legend button[data-cat="congregation"] .dot{background:var(--or-cong)}
#oratoires .or-legend button[data-cat="formation"] .dot{background:var(--or-form)}
#oratoires .or-legend button[data-cat="fondation"] .dot{background:var(--or-fond)}
#oratoires .or-legend button[data-cat="disparu"]{border-style:dashed}
#oratoires .or-legend button[data-cat="disparu"] .dot{background:var(--or-disp)}
#oratoires .or-legend button:not(.active){opacity:.5}
#oratoires .or-legend button:not(.active) .dot{background:var(--line)!important}
#oratoires .or-legend button .count{color:var(--muted);font-weight:400}
#oratoires .or-legend button:focus-visible,#oratoires .or-city:focus-visible,#oratoires .or-info:focus-visible,#oratoires .or-sort-btn:focus-visible,#oratoires .or-toggle:focus-visible{outline:2px solid var(--sun);outline-offset:2px}

/* ---------- carte (même allure que la carte de Rome) ---------- */
#oratoires .or-map{height:420px;width:100%;border-radius:var(--r-sm);overflow:hidden;border:1px solid var(--line);background:var(--ground);isolation:isolate;position:relative;z-index:0;font-family:var(--body);box-shadow:var(--shadow)}
@media (min-width:640px){#oratoires .or-map{height:560px}}
#oratoires .or-map.is-loading::after{content:"Chargement de la carte…";position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);font-size:15px}
#oratoires .or-map.is-offline{display:grid;place-items:center;height:auto;min-height:160px;padding:24px 18px;background:var(--paper)}
#oratoires .or-map-offline{margin:0;text-align:center;font-family:var(--display);font-size:19px;line-height:1.4}
#oratoires .or-map-offline small{font-family:var(--body);font-size:14.5px;color:var(--muted)}
#oratoires .or-map-offline .btn{margin-top:12px}
#oratoires .or-map.is-fullscreen{position:fixed;inset:0;z-index:1200;height:auto;border-radius:0;border:0}
html.or-map-lock,html.or-map-lock body{overflow:hidden}

#oratoires .or-dot{background:none;border:none}
#oratoires .or-dot span{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.35);transition:transform .15s ease}
#oratoires .or-dot svg{width:62%;height:62%;fill:#fff;margin-top:-1px}
#oratoires .or-dot:hover span,#oratoires .or-dot:focus-visible span{transform:scale(1.2)}
#oratoires .or-dot:focus-visible{outline:none}
#oratoires .or-dot:focus-visible span{box-shadow:0 0 0 3px var(--sun),0 1px 4px rgba(0,0,0,.35)}
#oratoires .or-dot.is-born span{animation:or-born 1.1s ease-out}
@keyframes or-born{0%{transform:scale(0)}45%{transform:scale(1.6);box-shadow:0 0 0 8px color-mix(in srgb,var(--sun) 55%,transparent)}100%{transform:scale(1)}}
#oratoires .or-dot-congregation span{background:var(--or-cong)}
#oratoires .or-dot-formation span{background:var(--or-form)}
#oratoires .or-dot-fondation span{background:var(--or-fond)}
#oratoires .or-dot-disparu span{background:var(--or-disp)}
#oratoires .or-dot-highlight span{border-width:3px;box-shadow:0 0 0 4px color-mix(in srgb,var(--red) 30%,transparent),0 2px 8px rgba(0,0,0,.4)}

#oratoires .or-cluster{border-radius:50%;background:color-mix(in srgb,var(--or-c) 32%,transparent)}
#oratoires .or-cluster div{width:calc(100% - 8px);height:calc(100% - 8px);margin:4px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--or-c);color:var(--paper);font-family:var(--body);font-weight:700;font-size:13px;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.3)}
#oratoires .or-cluster-congregation{--or-c:var(--or-cong)}
#oratoires .or-cluster-formation{--or-c:var(--or-form)}
#oratoires .or-cluster-fondation{--or-c:var(--or-fond)}
#oratoires .or-cluster-disparu{--or-c:var(--or-disp)}
#oratoires .or-cluster:hover div{filter:brightness(1.1)}

#oratoires .leaflet-tooltip.or-tooltip{background:var(--red);color:var(--red-ink);border:0;font-family:var(--sc);font-weight:700;letter-spacing:.06em;font-size:13px;padding:2px 9px;border-radius:999px;box-shadow:0 1px 4px rgba(0,0,0,.25)}
#oratoires .leaflet-tooltip-top.or-tooltip::before{border-top-color:var(--red)}
#oratoires .leaflet-popup-content-wrapper,#oratoires .leaflet-popup-tip{background:var(--paper);color:var(--ink);box-shadow:var(--shadow)}
#oratoires .leaflet-popup-content-wrapper{border-radius:var(--r-sm);border:1px solid var(--line)}
#oratoires .leaflet-popup-content{margin:12px 14px;font-family:var(--body);font-size:14.5px;line-height:1.45}
#oratoires .leaflet-popup-scrolled{border:0}
#oratoires .leaflet-container a.leaflet-popup-close-button{color:var(--muted)}
#oratoires .leaflet-control-attribution{background:color-mix(in srgb,var(--paper) 85%,transparent);color:var(--muted)}
#oratoires .leaflet-control-attribution a{color:var(--muted)}
#oratoires .leaflet-bar a{background:var(--paper);color:var(--ink);border-color:var(--line)}

#oratoires .oratoire-popup h4{font-family:var(--display);font-weight:700;font-size:18px;line-height:1.2;margin:0 0 2px;color:var(--ink);padding-right:14px}
#oratoires .oratoire-popup p{margin:0 0 6px;color:var(--ink)}
#oratoires .oratoire-popup > p:nth-of-type(1){color:var(--muted);font-size:14px}
#oratoires .oratoire-popup small{font-size:.9em}
#oratoires .oratoire-popup-source{font-size:13px}
#oratoires .oratoire-popup a{color:var(--red)}
#oratoires .oratoire-popup-figures{margin:8px 0 8px;display:grid;gap:6px}
#oratoires .oratoire-popup-figures-title{font-family:var(--sc);font-weight:700;letter-spacing:.1em;font-size:12px;color:var(--gold)}
#oratoires a.oratoire-popup-figure,#oratoires span.oratoire-popup-figure{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;line-height:1.25;color:var(--ink);text-decoration:none}
#oratoires a.oratoire-popup-figure:hover span{color:var(--red);text-decoration:underline}
#oratoires .oratoire-popup-figure img{width:30px;height:30px;border-radius:50%;object-fit:cover;object-position:top;flex-shrink:0;box-shadow:0 0 0 2px var(--gold)}
#oratoires .oratoire-popup-figure-dot{width:30px;height:30px;border-radius:50%;background:var(--sun-soft);flex-shrink:0;box-shadow:inset 0 0 0 2px var(--paper),0 0 0 1px var(--line)}
#oratoires .oratoire-popup-figure small{display:block;font-weight:400;color:var(--muted);font-size:12.5px}
#oratoires .oratoire-popup-link{margin:8px 0 0!important}

/* ---------- fiche (bulle et notice) ---------- */
#oratoires .oratoire-facts{margin:8px 0 6px;padding-top:7px;border-top:1px solid var(--line)}
#oratoires .oratoire-facts strong{font-weight:700;color:var(--ink)}
#oratoires .oratoire-facts .of-lieu{margin:0 0 6px;font-style:italic;color:var(--muted)}
#oratoires .oratoire-facts .of-rows{margin:0 0 4px}
#oratoires .oratoire-facts .of-row{display:flex;gap:8px;padding:2px 0;line-height:1.4}
#oratoires .oratoire-facts .of-label{flex:0 0 78px;font-family:var(--sc);font-weight:700;letter-spacing:.06em;font-size:12px;color:var(--muted);padding-top:2px}
#oratoires .oratoire-facts .of-value{min-width:0}
#oratoires .oratoire-facts .of-dates{list-style:none;margin:4px 0 5px;padding:6px 0 0;border-top:1px dashed var(--line)}
#oratoires .oratoire-facts .of-dates li{display:flex;gap:10px;padding:3px 0;line-height:1.4;font-size:.95em}
#oratoires .oratoire-facts .of-dates li + li{border-top:1px dashed var(--line)}
#oratoires .oratoire-facts .of-year{flex:0 0 36px;font-weight:700;color:var(--red);font-variant-numeric:lining-nums tabular-nums}
#oratoires .oratoire-facts .of-meta{margin:6px 0 0;font-size:12.5px;color:var(--muted)}
#oratoires .oratoire-facts .of-meta a{color:var(--muted)}

/* ---------- étiquettes et liens ---------- */
#oratoires .or-tag{display:inline-block;padding:2px 10px;border-radius:999px;font-family:var(--sc);font-weight:700;letter-spacing:.04em;font-size:12.5px;line-height:1.5;white-space:nowrap}
#oratoires .or-tag-congregation{background:var(--or-cong-soft);color:var(--or-cong)}
#oratoires .or-tag-formation{background:var(--or-form-soft);color:var(--or-form)}
#oratoires .or-tag-fondation{background:var(--or-fond-soft);color:var(--or-fond)}
#oratoires .or-tag-disparu{background:var(--or-disp-soft);color:var(--or-disp)}
#oratoires .or-socials{display:inline-flex;flex-wrap:wrap;align-items:center;gap:10px}
#oratoires .or-socials a{display:inline-flex;width:22px;height:22px;align-items:center;justify-content:center;border-radius:50%;transition:transform .15s ease}
#oratoires .or-socials a:hover{transform:translateY(-2px)}
#oratoires .or-socials svg{width:20px;height:20px;display:block}
#oratoires .or-socials a.or-ico-globe,#oratoires .or-socials a.or-ico-x{color:var(--ink)}
#oratoires .or-socials a.or-ico-globe svg{width:19px;height:19px}

/* ---------- curseur chronologique ---------- */
#oratoires .or-timeline{background:var(--paper);border-radius:var(--r);box-shadow:var(--shadow);padding:16px clamp(14px,4vw,24px) 14px;border:1.5px solid transparent;min-width:0}
#oratoires .or-timeline.is-time-mode{border-color:var(--gold)}
#oratoires .or-tl-head{display:flex;align-items:center;gap:8px 16px;flex-wrap:wrap;margin-bottom:8px}
#oratoires .or-tl-count{flex:1 1 260px;font-size:15px;color:var(--muted);line-height:1.4}
#oratoires .or-tl-count strong{font-family:var(--display);font-weight:700;font-size:24px;color:var(--ink);margin-right:4px;font-variant-numeric:lining-nums}
#oratoires .or-tl-year{font-family:var(--display);font-weight:700;font-size:26px;color:var(--red);min-width:110px;text-align:center;font-variant-numeric:lining-nums}
#oratoires .or-tl-actions{display:flex;gap:8px;flex-wrap:wrap}
#oratoires .or-tl-chart{position:relative;height:80px}
#oratoires .or-tl-chart svg{width:100%;height:100%;display:block}
#oratoires .or-tl-area{fill:color-mix(in srgb,var(--sky) 16%,transparent)}
#oratoires .or-tl-line{fill:none;stroke:var(--sky);stroke-width:2;vector-effect:non-scaling-stroke}
#oratoires .or-tl-cursor{stroke:var(--red);stroke-width:2;vector-effect:non-scaling-stroke}
#oratoires .or-tl-max{position:absolute;top:0;right:4px;font-size:12.5px;color:var(--muted)}
#oratoires .or-timeline input[type=range]{width:100%;margin:6px 0 0;accent-color:var(--red);cursor:pointer}
#oratoires .or-tl-ticks{display:flex;justify-content:space-between;font-size:12.5px;color:var(--muted);padding:0 2px;font-variant-numeric:lining-nums}
#oratoires .or-tl-note{margin:8px 0 0;font-size:14px;color:var(--muted);line-height:1.45}
@media (max-width:600px){
  #oratoires .or-tl-year{font-size:22px;min-width:0}
  #oratoires .or-tl-ticks span:nth-child(even){display:none}
}
#oratoires .or-caption{margin:0;font-size:14.5px;line-height:1.5;color:var(--muted);text-align:center}

/* ---------- liste ---------- */
#oratoires .or-list-sec{display:flex;flex-direction:column;gap:12px;min-width:0}
#oratoires .or-list-intro{margin:0;background:var(--paper);border-radius:var(--r);box-shadow:var(--shadow);padding:16px clamp(16px,4vw,24px);font-size:16px;line-height:1.5}
#oratoires .or-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
#oratoires .or-search{flex:1 1 280px;min-width:0;display:flex;align-items:center;gap:10px;background:var(--paper);border:1.5px solid var(--line);border-radius:999px;padding:0 16px;cursor:text}
#oratoires .or-search:focus-within{border-color:var(--red)}
#oratoires .or-search svg{width:18px;height:18px;flex-shrink:0;color:var(--muted)}
#oratoires .or-search input{flex:1;min-width:0;border:0;background:none;padding:11px 0;font:inherit;font-size:16px;color:var(--ink);outline:none}
#oratoires .or-toggle{appearance:none;display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;border:1.5px dashed var(--line);background:var(--paper);color:var(--ink);font:inherit;font-weight:700;font-size:14px;line-height:1.3;cursor:pointer;text-align:left}
#oratoires .or-toggle:hover{border-color:var(--or-disp)}
#oratoires .or-toggle .dot{width:10px;height:10px;border-radius:50%;background:var(--or-disp);flex-shrink:0}
#oratoires .or-toggle.active{background:var(--or-disp-soft);border-color:var(--or-disp);border-style:solid}
#oratoires .or-toggle-count{color:var(--muted);font-weight:400}
#oratoires .or-count{flex:0 0 100%;margin:0;font-family:var(--sc);font-weight:700;letter-spacing:.08em;font-size:13.5px;color:var(--gold)}
#oratoires .or-sort{flex:0 0 100%;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
#oratoires .or-sort-label{font-size:14.5px;color:var(--muted);margin-right:2px}
#oratoires .or-sort-btn{appearance:none;display:inline-flex;align-items:center;gap:4px;padding:4px 11px;border-radius:999px;border:1.5px solid var(--line);background:var(--paper);color:var(--ink);font:inherit;font-size:14px;cursor:pointer}
#oratoires .or-sort-btn:hover{border-color:var(--red)}
#oratoires .or-sort-btn.is-asc,#oratoires .or-sort-btn.is-desc{background:var(--ink);border-color:var(--ink);color:var(--paper);font-weight:700}
#oratoires .or-sort-btn.is-asc .or-sort-arrow::after{content:"▲";font-size:10px}
#oratoires .or-sort-btn.is-desc .or-sort-arrow::after{content:"▼";font-size:10px}

#oratoires .or-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;align-items:start}
@media (max-width:420px){#oratoires .or-list{grid-template-columns:minmax(0,1fr)}}
#oratoires .or-item{background:var(--paper);border:1.5px solid var(--line);border-left:4px solid var(--or-c,var(--line));border-radius:var(--r-sm);padding:10px 12px 10px 14px;display:flex;flex-direction:column;gap:4px;min-width:0;scroll-margin:90px 0 24px;transition:border-color .2s ease,box-shadow .2s ease}
#oratoires .or-item-congregation{--or-c:var(--or-cong)}
#oratoires .or-item-formation{--or-c:var(--or-form)}
#oratoires .or-item-fondation{--or-c:var(--or-fond)}
#oratoires .or-item-disparu{--or-c:var(--or-disp);border-style:dashed;border-left-style:solid}
#oratoires .or-item.is-open{grid-column:1/-1}
#oratoires .or-item.is-current{border-color:var(--or-c)}
#oratoires .or-item.is-highlighted{border-color:var(--gold);box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 35%,transparent)}
#oratoires .or-item-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
#oratoires .or-city{appearance:none;border:0;background:none;padding:0;margin:0;color:var(--ink);font-family:var(--display);font-weight:700;font-size:19px;line-height:1.2;text-align:left;cursor:pointer;min-width:0;overflow-wrap:anywhere}
#oratoires .or-city:hover{color:var(--red);text-decoration:underline;text-underline-offset:3px}
#oratoires .or-item-head .or-tag{margin-top:2px}
#oratoires .or-item-facts{margin:0;display:flex;flex-wrap:wrap;gap:2px 14px;font-size:15px;line-height:1.4;color:var(--ink)}
#oratoires .or-item-facts small{font-family:var(--sc);font-weight:700;letter-spacing:.05em;font-size:12px;color:var(--muted);margin-right:2px}
#oratoires .or-item-facts em{color:var(--muted);font-size:.93em}
#oratoires .or-item-facts .or-country{flex:0 0 100%;color:var(--muted)}
#oratoires .or-eff.is-empty{color:var(--muted)}
#oratoires .or-item-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:2px;min-height:30px}
#oratoires .or-info{appearance:none;display:inline-flex;align-items:center;gap:6px;margin-left:auto;padding:3px 11px 3px 4px;border-radius:999px;border:1.5px solid var(--line);background:var(--paper);color:var(--ink);font:inherit;font-size:14px;cursor:pointer;flex-shrink:0}
#oratoires .or-info > span:first-child{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--sky-soft);color:var(--sky);font-family:var(--display);font-weight:700;font-style:italic;font-size:14px}
#oratoires .or-info:hover{border-color:var(--red)}
#oratoires .or-info[aria-expanded="true"]{background:var(--sky-soft);border-color:var(--sky)}
#oratoires .or-detail{margin-top:6px;padding:10px 12px;border-radius:var(--r-sm);background:var(--ground);font-size:15.5px;line-height:1.5;min-width:0;overflow-wrap:anywhere}
#oratoires .or-detail > p{margin:0 0 6px}
#oratoires .or-detail > p:last-child{margin-bottom:0}
#oratoires .or-detail .oratoire-facts{margin-top:0;padding-top:0;border-top:0}
#oratoires .or-detail a{color:var(--red)}
#oratoires .or-detail-saints a{font-weight:700}
#oratoires .or-detail-source,#oratoires .or-detail-report{font-size:14px}
#oratoires .or-detail-report a{color:var(--muted)}
#oratoires .or-none{margin:0;text-align:center;color:var(--muted)}
#oratoires .or-foot{margin:4px 0 0;text-align:center;font-size:14.5px;color:var(--muted)}
#oratoires .or-foot a{color:var(--red)}

/* ---------- tableau (écran large, ≥ 900px) ; cartes en dessous ---------- */
#oratoires .or-vh{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
#oratoires .or-table-wrap{display:none}
@media (min-width:900px){
  #oratoires .or-list,#oratoires .or-sort{display:none}
  #oratoires .or-table-wrap{display:block;background:var(--paper);border-radius:var(--r);box-shadow:var(--shadow)}
}
#oratoires .or-table{width:100%;border-collapse:separate;border-spacing:0;font-size:15.5px;line-height:1.4}
#oratoires .or-table thead th{position:sticky;top:calc(var(--or-top,64px) + 3px);z-index:5;background:var(--ink);color:var(--paper);text-align:left;padding:0;font-weight:700;white-space:nowrap}
#oratoires .or-table thead th:first-child{border-top-left-radius:var(--r)}
#oratoires .or-table thead th:last-child{border-top-right-radius:var(--r);padding:10px 14px;font-family:var(--sc);letter-spacing:.08em;font-size:14px}
#oratoires .or-th-sort{appearance:none;display:inline-flex;align-items:center;gap:6px;width:100%;padding:10px 14px;border:0;background:none;color:inherit;font-family:var(--sc);font-weight:700;letter-spacing:.08em;font-size:14px;cursor:pointer;text-align:left}
#oratoires .or-th-sort:hover{color:var(--sun)}
#oratoires .or-th-sort:focus-visible{outline:2px solid var(--sun);outline-offset:-3px}
#oratoires .or-th-arrow{width:14px;height:14px;fill:currentColor;opacity:.35;transition:transform .15s ease}
#oratoires .or-th-sort.is-asc .or-th-arrow,#oratoires .or-th-sort.is-desc .or-th-arrow{opacity:1;color:var(--sun)}
#oratoires .or-th-sort.is-desc .or-th-arrow{transform:rotate(180deg)}
#oratoires .or-table td{padding:9px 14px;border-bottom:1px solid var(--line);vertical-align:middle;color:var(--ink)}
#oratoires .or-table tbody tr.or-row:last-of-type td{border-bottom:0}
#oratoires .or-row.is-even td{background:color-mix(in srgb,var(--ground) 70%,var(--paper))}
#oratoires .or-row:hover td{background:var(--sun-soft)}
#oratoires .or-row.is-current td:first-child{box-shadow:inset 4px 0 0 var(--red)}
#oratoires .or-row.is-highlighted td{background:var(--sun-soft);box-shadow:inset 0 2px 0 var(--gold),inset 0 -2px 0 var(--gold)}
#oratoires .or-row.is-open td{border-bottom:0}
#oratoires .or-row.is-disparu td{color:var(--muted)}
#oratoires .or-td-city-in{display:flex;align-items:center;gap:8px}
#oratoires .or-td-city .or-city{font-size:17px}
#oratoires .or-row.is-disparu .or-city{color:var(--muted)}
#oratoires .or-td-year em{display:block;font-size:.9em;color:var(--muted)}
#oratoires .or-td-num{font-variant-numeric:lining-nums tabular-nums}
#oratoires .or-td-num.is-empty{color:var(--muted)}
#oratoires .or-row td:nth-child(6){text-align:right}
#oratoires .or-info.or-info-sm{padding:0;border:0;background:none;margin:0}
#oratoires .or-info.or-info-sm[aria-expanded="true"] > span:first-child{background:var(--sky);color:var(--paper)}
#oratoires .or-row-detail td{padding:0 14px 12px;border-bottom:1px solid var(--line)}
#oratoires .or-row-detail .or-detail{margin-top:0}
#oratoires .or-table .or-socials svg{width:18px;height:18px}
#oratoires .or-table .or-socials a{width:20px;height:20px}
#oratoires .or-table .or-socials{gap:6px 8px}
@media (max-width:1099px){
  #oratoires .or-table td{padding:8px 9px}
  #oratoires .or-th-sort{padding:10px 9px;gap:4px}
  #oratoires .or-table thead th:last-child{padding:10px 9px}
}
@media (prefers-reduced-motion:reduce){#oratoires .or-th-arrow{transition:none}}

/* ---------- bouton plein écran et rappel molette ---------- */
#oratoires .or-fs-btn{position:absolute;top:10px;right:10px;z-index:800;width:36px;height:36px;border-radius:8px;border:1px solid var(--line);background:var(--paper);color:var(--ink);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.2)}
#oratoires .or-fs-btn:hover{color:var(--red)}
#oratoires .or-fs-btn svg{width:18px;height:18px}
#oratoires .or-scroll-hint{position:absolute;left:50%;bottom:16px;transform:translate(-50%,6px);background:var(--ink);color:var(--paper);font-size:14px;padding:6px 14px;border-radius:999px;pointer-events:none;opacity:0;transition:opacity .2s ease,transform .2s ease;z-index:500;white-space:nowrap}
#oratoires .or-scroll-hint.is-visible{opacity:1;transform:translate(-50%,0)}
@media (prefers-reduced-motion:reduce){#oratoires .or-item,#oratoires .or-socials a,#oratoires .or-scroll-hint{transition:none}}

/* ---------- en-tête : chiffres clés ---------- */
#oratoires .or-hero{background:var(--paper);border-radius:var(--r);box-shadow:var(--shadow);padding:clamp(18px,3.5vw,32px);display:flex;flex-direction:column;gap:20px;min-width:0;position:relative;overflow:hidden}
#oratoires .or-hero::before{content:"";position:absolute;inset:0 0 auto 0;height:5px;background:linear-gradient(90deg,var(--or-cong) 0 55%,var(--or-form) 55% 80%,var(--or-fond) 80% 90%,var(--or-disp) 90%)}
#oratoires .or-hero-text{max-width:72ch}
#oratoires .or-hero-text .eyebrow{margin:0 0 6px;color:var(--red)}
#oratoires .or-hero h2{font-family:var(--display);font-weight:700;font-size:clamp(27px,4.2vw,44px);line-height:1.08;margin:0 0 10px;color:var(--ink);letter-spacing:-.01em}
#oratoires .or-hero-lead{margin:0;font-size:clamp(16px,1.6vw,18px);line-height:1.55;color:var(--muted)}
#oratoires .or-hero-grid{display:grid;gap:18px;min-width:0}
@media (min-width:1100px){#oratoires .or-hero-grid{grid-template-columns:minmax(0,1.7fr) minmax(280px,1fr);align-items:stretch}}
#oratoires .or-stats{margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;min-width:0}
@media (max-width:420px){#oratoires .or-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:640px){#oratoires .or-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}
#oratoires .or-stat{--t:var(--sky);--t-soft:var(--sky-soft);background:var(--t-soft);border-radius:var(--r-sm);padding:12px 14px 13px;min-width:0;display:flex;flex-direction:column;gap:2px;border-top:3px solid var(--t)}
#oratoires .or-stat-gold{--t:var(--gold);--t-soft:var(--sun-soft)}
#oratoires .or-stat-mint{--t:var(--mint);--t-soft:var(--mint-soft)}
#oratoires .or-stat-lilac{--t:var(--lilac);--t-soft:var(--lilac-soft)}
#oratoires .or-stat-red{--t:var(--red);--t-soft:var(--soft)}
#oratoires .or-stat dt{font-family:var(--sc);font-weight:700;letter-spacing:.08em;font-size:12.5px;color:var(--muted)}
#oratoires .or-stat dd{margin:0;display:flex;flex-direction:column;gap:4px;min-width:0}
#oratoires .or-stat b{font-family:var(--display);font-weight:700;font-size:clamp(30px,3.4vw,40px);line-height:1;color:var(--ink);font-variant-numeric:lining-nums}
#oratoires .or-stat dd > span{font-size:14px;line-height:1.35;color:var(--ink);overflow-wrap:anywhere}
#oratoires .or-stat .or-house{background:var(--paper)}

#oratoires .or-cent{margin:0;background:var(--ground);border-radius:var(--r-sm);padding:12px 14px 10px;display:flex;flex-direction:column;gap:8px;min-width:0}
#oratoires .or-cent figcaption{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px}
#oratoires .or-cent-title{font-family:var(--sc);font-weight:700;letter-spacing:.08em;font-size:13.5px;color:var(--ink)}
#oratoires .or-cent-legend{display:flex;gap:12px;font-size:13px;color:var(--muted)}
#oratoires .or-cent-legend span{display:inline-flex;align-items:center;gap:5px}
#oratoires .or-cent-legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
#oratoires .or-cent-legend .k-live,#oratoires .or-cent-stack .s-live{background:var(--or-cong)}
#oratoires .or-cent-legend .k-disp,#oratoires .or-cent-stack .s-disp{background:var(--or-disp)}
#oratoires .or-cent-bars{display:flex;align-items:flex-end;gap:8px;height:150px;flex:1;min-height:130px;padding-top:4px}
#oratoires .or-cent-col{flex:1;min-width:0;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px}
#oratoires .or-cent-n{font-size:13px;font-weight:700;color:var(--ink);font-variant-numeric:lining-nums}
#oratoires .or-cent-stack{width:100%;max-width:46px;display:flex;flex-direction:column;gap:2px;min-height:4px}
#oratoires .or-cent-stack i{display:block;min-height:2px}
#oratoires .or-cent-stack i:first-child{border-radius:4px 4px 0 0}
#oratoires .or-cent-col:hover .or-cent-stack{filter:brightness(1.08)}
#oratoires .or-cent-lab{font-size:12.5px;color:var(--muted);font-variant-numeric:lining-nums;border-top:1px solid var(--line);width:100%;text-align:center;padding-top:3px}
#oratoires .or-cent-note{margin:0;font-size:12.5px;color:var(--muted)}

/* ---------- pastilles « maison » (cliquables partout) ---------- */
#oratoires .or-house{--c:var(--or-cong);appearance:none;display:inline-flex;align-items:center;gap:6px;padding:4px 11px 4px 8px;border-radius:999px;border:1.5px solid var(--line);background:var(--paper);color:var(--ink);font:inherit;font-weight:700;font-size:14.5px;line-height:1.25;cursor:pointer;text-align:left;max-width:100%;min-width:0;transition:border-color .15s ease,transform .15s ease}
#oratoires .or-house:hover{border-color:var(--c)}
#oratoires .or-house:active{transform:scale(.97)}
#oratoires .or-house:focus-visible{outline:2px solid var(--sun);outline-offset:2px}
#oratoires .or-house-formation{--c:var(--or-form)}
#oratoires .or-house-fondation{--c:var(--or-fond)}
#oratoires .or-house-disparu{--c:var(--or-disp);border-style:dashed;font-weight:400}
#oratoires .or-house-dot{width:9px;height:9px;border-radius:50%;background:var(--c);flex-shrink:0}
#oratoires .or-house-name{min-width:0;overflow-wrap:anywhere}
#oratoires .or-house small{font-weight:400;color:var(--muted);font-size:12.5px;white-space:nowrap}
#oratoires .or-house-row{display:flex;flex-wrap:wrap;gap:6px}

/* ---------- carte + panneau ---------- */
#oratoires .or-stage{display:grid;gap:14px;min-width:0}
#oratoires .or-map-col{display:flex;flex-direction:column;gap:10px;min-width:0}
@media (min-width:1100px){
  #oratoires .or-stage{grid-template-columns:minmax(0,1fr) 380px;align-items:start}
  #oratoires .or-map{height:660px}
  #oratoires .or-panel{height:660px}
  #oratoires .or-tp-wrap{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}
}
@media (min-width:1400px){#oratoires .or-stage{grid-template-columns:minmax(0,1fr) 420px}}

#oratoires .or-panel{background:var(--paper);border-radius:var(--r);box-shadow:var(--shadow);border:1px solid var(--line);display:flex;flex-direction:column;min-width:0;overflow:hidden;scroll-margin-top:calc(var(--or-top,64px) + 8px)}
#oratoires .or-tabs{display:flex;gap:2px;padding:6px 8px 0;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none;flex-shrink:0}
#oratoires .or-tabs::-webkit-scrollbar{display:none}
#oratoires .or-tab{appearance:none;border:0;background:none;padding:10px 10px 9px;font-family:var(--sc);font-weight:700;letter-spacing:.05em;font-size:14px;color:var(--muted);cursor:pointer;white-space:nowrap;border-bottom:3px solid transparent;margin-bottom:-1px;border-radius:8px 8px 0 0}
#oratoires .or-tab:hover{color:var(--ink);background:var(--ground)}
#oratoires .or-tab[aria-selected="true"]{color:var(--red);border-bottom-color:var(--red)}
#oratoires .or-tab:focus-visible{outline:2px solid var(--sun);outline-offset:-2px}
#oratoires .or-tp{padding:14px 16px 16px;min-width:0}
#oratoires .or-tp:focus-visible{outline:2px solid var(--sun);outline-offset:-2px}
#oratoires .or-tp-intro{margin:0 0 12px;font-size:15px;line-height:1.5;color:var(--muted)}
#oratoires .or-tp-intro b{color:var(--ink)}

/* fiche */
#oratoires .or-fiche.is-new{animation:or-fiche-in .28s ease-out}
@keyframes or-fiche-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
#oratoires .or-fiche{--c:var(--or-cong)}
#oratoires .or-fiche-formation{--c:var(--or-form)}
#oratoires .or-fiche-fondation{--c:var(--or-fond)}
#oratoires .or-fiche-disparu{--c:var(--or-disp)}
#oratoires .or-fiche-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
#oratoires .or-fiche-top .or-tag{margin-left:auto}
#oratoires .or-fiche-back{appearance:none;border:0;background:none;padding:2px 0;font:inherit;font-size:14px;color:var(--muted);cursor:pointer}
#oratoires .or-fiche-back:hover{color:var(--red)}
#oratoires .or-fiche-back:focus-visible{outline:2px solid var(--sun);outline-offset:2px;border-radius:4px}
#oratoires .or-fiche-city{font-family:var(--display);font-weight:700;font-size:28px;line-height:1.1;margin:0;color:var(--ink);overflow-wrap:anywhere;padding-left:12px;border-left:4px solid var(--c)}
#oratoires .or-fiche-sub{margin:6px 0 0;color:var(--muted);font-size:15px}
#oratoires .or-fiche-year{font-weight:700;color:var(--ink);font-variant-numeric:lining-nums}
#oratoires .or-fiche-lead{margin:10px 0 0;font-style:italic;line-height:1.5;color:var(--ink)}
#oratoires .or-fiche .oratoire-facts{margin-top:12px;font-size:15px}
#oratoires .or-fiche .oratoire-facts .of-label{flex-basis:92px}
#oratoires .or-fiche .oratoire-facts .of-value .or-house{font-size:13.5px;padding:2px 9px 2px 7px}
#oratoires .or-fiche .oratoire-popup-figures{margin:12px 0}
#oratoires .or-fiche .oratoire-popup-source{font-size:14px}
#oratoires .or-fiche .oratoire-popup-source a{color:var(--red)}
#oratoires .or-fiche-socials{margin:10px 0 0}
#oratoires .or-fiche-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
#oratoires .or-fiche-empty{text-align:center;padding:18px 4px 8px;display:flex;flex-direction:column;align-items:center;gap:12px}
#oratoires .or-fiche-empty p{margin:0;line-height:1.5;color:var(--muted);max-width:34ch}
#oratoires .or-fiche-empty p b{color:var(--ink)}
#oratoires .or-fiche-empty-art{width:64px;height:64px;border-radius:50%;background:var(--soft);display:grid;place-items:center}
#oratoires .or-fiche-empty-art svg{width:32px;height:32px;fill:var(--red)}
#oratoires .or-fiche-starts{display:flex;flex-direction:column;align-items:center;gap:8px}

/* par pays */
#oratoires .or-conts{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
#oratoires .or-conts span{background:var(--ground);border-radius:999px;padding:3px 10px;font-size:13.5px;color:var(--muted)}
#oratoires .or-conts b{color:var(--ink)}
#oratoires .or-ctys{list-style:none;margin:0;padding:0}
#oratoires .or-cty + .or-cty{border-top:1px solid var(--line)}
#oratoires .or-cty-head{appearance:none;width:100%;display:grid;grid-template-columns:minmax(0,1fr) 34% 30px;align-items:center;gap:10px;padding:8px 4px;border:0;background:none;color:var(--ink);font:inherit;text-align:left;cursor:pointer;border-radius:8px}
#oratoires .or-cty-head:hover{background:var(--ground)}
#oratoires .or-cty-head:focus-visible{outline:2px solid var(--sun);outline-offset:-2px}
#oratoires .or-cty-head[aria-expanded="true"]{background:var(--sky-soft)}
#oratoires .or-cty-name{font-weight:700;font-size:15.5px;line-height:1.25;min-width:0;overflow-wrap:anywhere}
#oratoires .or-cty-name small{display:block;font-weight:400;font-size:12.5px;color:var(--muted)}
#oratoires .or-cty.is-past .or-cty-name{color:var(--muted);font-weight:400}
#oratoires .or-cty-bar{height:8px;border-radius:999px;background:var(--ground);overflow:hidden}
#oratoires .or-cty-bar i{display:block;height:100%;background:var(--or-cong);border-radius:999px}
#oratoires .or-cty-n{text-align:right;font-weight:700;font-variant-numeric:lining-nums tabular-nums}
#oratoires .or-cty.is-past .or-cty-n{color:var(--muted);font-weight:400}
#oratoires .or-cty-houses{display:flex;flex-wrap:wrap;gap:6px;padding:8px 4px 12px}

/* filiations */
#oratoires .or-tree-fams{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
#oratoires .or-tree-fam{background:var(--ground);border-radius:var(--r-sm);padding:10px 12px}
#oratoires .or-tree,#oratoires .or-tree ul{list-style:none;margin:0;padding:0}
#oratoires .or-tree li{position:relative;padding:3px 0}
#oratoires .or-tree ul{margin-left:12px}
#oratoires .or-tree ul > li{padding-left:18px;border-left:2px solid var(--line)}
#oratoires .or-tree ul > li:last-child{border-left-color:transparent}
#oratoires .or-tree ul > li::before{content:"";position:absolute;left:-2px;top:0;width:14px;height:19px;border-left:2px solid var(--line);border-bottom:2px solid var(--line);border-bottom-left-radius:8px}
#oratoires .or-tree .or-house{flex-wrap:wrap;row-gap:0}
#oratoires .or-tree-note{margin:6px 0 0;font-size:13.5px;color:var(--muted);font-style:italic}

/* près de chez vous */
#oratoires .or-near-form{position:relative;display:flex;flex-wrap:wrap;gap:8px}
#oratoires .or-near-field{flex:1 1 200px;min-width:0;display:flex;align-items:center;gap:8px;background:var(--paper);border:1.5px solid var(--line);border-radius:999px;padding:0 14px}
#oratoires .or-near-field:focus-within{border-color:var(--red)}
#oratoires .or-near-field svg{width:17px;height:17px;color:var(--muted);flex-shrink:0}
#oratoires .or-near-field input{flex:1;min-width:0;border:0;background:none;padding:10px 0;font:inherit;font-size:16px;color:var(--ink);outline:none}
#oratoires .or-near-sugg{position:absolute;left:0;right:0;top:48px;z-index:30;list-style:none;margin:0;padding:6px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow)}
#oratoires .or-near-sugg li{padding:8px 10px;border-radius:8px;cursor:pointer;display:flex;align-items:baseline;justify-content:space-between;gap:10px}
#oratoires .or-near-sugg li small{color:var(--muted);font-size:12.5px;white-space:nowrap}
#oratoires .or-near-sugg li:hover,#oratoires .or-near-sugg li[aria-selected="true"]{background:var(--sun-soft)}
#oratoires .or-near-pick{display:inline-flex;align-items:center;gap:6px}
#oratoires .or-near-pick svg{width:16px;height:16px}
#oratoires .or-near-pick[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
#oratoires .or-near-res{margin-top:12px}
#oratoires .or-near-res:empty{display:none}
#oratoires .or-near-none{margin:0;font-size:14.5px;color:var(--muted)}
#oratoires .or-near-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:8px;font-size:15px;color:var(--muted)}
#oratoires .or-near-head b{color:var(--ink)}
#oratoires .or-near-clear{appearance:none;border:0;background:none;padding:0;font:inherit;font-size:14px;color:var(--muted);text-decoration:underline;cursor:pointer;flex-shrink:0}
#oratoires .or-near-clear:hover{color:var(--red)}
#oratoires .or-near-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
#oratoires .or-near-list li{display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:8px;padding:5px 6px;border-radius:10px}
#oratoires .or-near-list li.is-first{background:var(--sun-soft);padding:9px 8px}
#oratoires .or-near-list li.is-first .or-house{font-size:16px}
#oratoires .or-near-list .or-house{justify-self:start}
#oratoires .or-near-rank{width:22px;height:22px;border-radius:50%;background:var(--ground);display:grid;place-items:center;font-size:12.5px;font-weight:700;color:var(--muted)}
#oratoires .or-near-list li.is-first .or-near-rank{background:var(--sun);color:var(--sun-ink)}
#oratoires .or-near-km{font-size:14px;font-weight:700;color:var(--ink);white-space:nowrap;font-variant-numeric:lining-nums}
#oratoires .or-here span{display:block;width:100%;height:100%;border-radius:50%;background:var(--lilac);border:3px solid #fff;box-sizing:border-box;box-shadow:0 1px 5px rgba(0,0,0,.4);animation:or-here 1.8s ease-out infinite}
@keyframes or-here{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--lilac) 55%,transparent),0 1px 5px rgba(0,0,0,.4)}100%{box-shadow:0 0 0 16px transparent,0 1px 5px rgba(0,0,0,.4)}}
#oratoires path.or-near-line{stroke:var(--lilac);stroke-opacity:.8}
#oratoires .or-map.is-picking,#oratoires .or-map.is-picking .leaflet-grab,#oratoires .or-map.is-picking .leaflet-interactive{cursor:crosshair}
#oratoires .or-pick-hint{position:absolute;left:50%;top:12px;transform:translate(-50%,-6px);background:var(--red);color:var(--red-ink);font-weight:700;font-size:14px;padding:6px 14px;border-radius:999px;pointer-events:none;opacity:0;transition:opacity .2s ease,transform .2s ease;z-index:800;max-width:calc(100% - 110px);text-align:center}
#oratoires .or-map.is-picking .or-pick-hint{opacity:1;transform:translate(-50%,0)}

/* filtre pays dans les outils de la liste */
#oratoires .or-country-chip{appearance:none;display:inline-flex;align-items:center;gap:8px;padding:8px 12px 8px 14px;border-radius:999px;border:1.5px solid var(--or-cong);background:var(--sky-soft);color:var(--ink);font:inherit;font-size:14px;cursor:pointer}
#oratoires .or-country-chip:hover{border-color:var(--red)}
#oratoires .or-country-chip:focus-visible{outline:2px solid var(--sun);outline-offset:2px}
#oratoires .or-country-chip .or-x{font-size:12px;color:var(--muted)}

/* chronologie : actualité de l'année pendant le défilement */
#oratoires .or-tl-news{margin:6px 0 0;min-height:1.45em;font-size:14.5px;line-height:1.45;color:var(--ink);display:flex;flex-wrap:wrap;gap:2px 12px}
#oratoires .or-tl-news:empty{visibility:hidden}
#oratoires .or-tl-news b{color:var(--red);font-variant-numeric:lining-nums}
#oratoires .or-tl-closed{color:var(--muted)}

@media (prefers-reduced-motion:reduce){
  #oratoires .or-fiche.is-new,#oratoires .or-dot.is-born span,#oratoires .or-here span{animation:none}
  #oratoires .or-house,#oratoires .or-dot span,#oratoires .or-pick-hint{transition:none}
}
@media (max-width:480px){
  #oratoires .or-tabs{padding:6px 4px 0;gap:0}
  #oratoires .or-tab{padding:10px 6px 9px;font-size:13px;letter-spacing:.03em}
  #oratoires .or-tp{padding:14px 12px 16px}
  #oratoires .or-fiche-city{font-size:25px}
}
@media (max-width:600px){
  #oratoires .or-hero{gap:14px}
  #oratoires .or-hero-lead{font-size:15.5px;line-height:1.5}
  #oratoires .or-stats{gap:8px}
  #oratoires .or-stat{padding:9px 11px 10px}
  #oratoires .or-stat b{font-size:28px}
  #oratoires .or-stat dt{font-size:11.5px;letter-spacing:.06em}
  #oratoires .or-stat dd > span{font-size:13px}
  #oratoires .or-stat .or-house{font-size:13.5px;padding:2px 9px 2px 7px}
  #oratoires .or-cent-bars{height:120px;min-height:110px}
}

/* Téléphone : chiffres clés compacts (2 colonnes), graphique des siècles replié, pour arriver vite à la carte */
@media (max-width:699px){
  #oratoires .or-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
  #oratoires .or-stat{padding:10px 12px!important;min-height:0!important}
  #oratoires .or-stat b,#oratoires .or-stat strong{font-size:24px!important;line-height:1.1!important}
  #oratoires .or-stat small,#oratoires .or-stat span{font-size:12.5px!important;line-height:1.3!important}
}

/* Affichée dans un autre site (iframe, ex. « Qui sommes-nous » de l'Oratoire d'Angoulême) :
   seulement la carte, sans menu, présentation, panneau ni liste. */
.embarque body{padding:0;background:transparent}
.embarque body > .wrap{gap:0}
.embarque .topbar,
.embarque #oratoires .or-hero,
.embarque #oratoires .or-panel,
.embarque #oratoires .or-caption,
.embarque #oratoires .or-timeline,
.embarque #oratoires .or-list-sec{display:none!important}
.embarque #oratoires .or-map-sec{margin:0;padding:0}
.embarque #oratoires .or-legend{display:none!important}
.embarque #oratoires .or-stage{display:block!important}
.embarque #oratoires .or-map{height:100vh!important;border-radius:0;border:0;box-shadow:none}
.embarque,.embarque body{overflow:hidden}
.embarque main.view,.embarque #oratoires .or-map-sec{padding:0!important;margin:0!important}
.embarque #oratoires-root{gap:0!important}
