/* ==========================================================================
   Oratoire d'Angoulême — feuille de style
   ========================================================================== */

:root{
  --navy-950:#060f2a;
  --navy-900:#0b1f42;
  --navy-800:#0f3a5f;
  --navy-700:#154a76;
  --navy-600:#2f6a96;
  --navy-100:#e7eef4;
  --gold:#c68a2e;
  --gold-light:#e0ad57;
  --brick:#8f2027;
  --brick-light:#b23e3e;
  --cream:#faf7f1;
  --cream-2:#f2ece1;
  --ink:#182233;
  --ink-soft:#4b5568;
  --line:#e3ddd0;
  --radius:14px;
  --shadow-sm:0 2px 10px rgba(11,31,66,.06);
  --shadow-md:0 12px 30px rgba(11,31,66,.12);
  --shadow-lg:0 24px 60px rgba(11,31,66,.18);
  --container:1180px;
  --ff-serif:'Sora', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --ff-sans:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:var(--ff-sans);
  color:var(--ink);
  background:var(--cream);
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto;display:block;}
a{color:inherit;text-decoration:none;}
ul{margin:0;padding:0;list-style:none;}
h1,h2,h3,h4{font-family:var(--ff-serif);color:var(--navy-900);line-height:1.15;margin:0 0 .5em;font-weight:600;}
h3{font-size:1.3rem;}
p{margin:0 0 1em;}
main p{text-align:justify;}
.container{max-width:var(--container);margin:0 auto;padding:0 24px;}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}

section{padding:88px 0;}
@media(max-width:768px){ section{padding:56px 0;} }

.eyebrow{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--ff-sans);font-weight:700;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gold);margin-bottom:14px;
}
.eyebrow::before{content:"";width:26px;height:2px;background:var(--gold);display:inline-block;}

.section-head{max-width:720px;margin:0 0 48px;}
.section-head.center{margin-left:auto;margin-right:auto;text-align:center;}
.section-head h2{font-size:clamp(1.7rem,3vw,2.5rem);}
.section-head h2.fit-line{font-size:clamp(.85rem,3.8vw,2.5rem);white-space:nowrap;}
.section-head p{color:var(--ink-soft);font-size:1.08rem;}
.section-head p.hero-lead{
  font-family:var(--ff-serif);font-weight:500;color:var(--navy-900);
  font-size:clamp(1.15rem,2.1vw,1.4rem);line-height:1.4;margin-bottom:10px;
}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:14px 28px;border-radius:999px;font-weight:700;font-size:.95rem;
  border:2px solid transparent;background:transparent;cursor:pointer;transition:.25s ease;white-space:nowrap;
  font-family:var(--ff-sans);
}
.btn-gold{background:var(--gold);color:#241503;}
.btn-gold:hover{background:var(--gold-light);}
.btn-outline{border-color:rgba(255,255,255,.55);color:#fff;}
.btn-outline:hover{background:rgba(255,255,255,.12);border-color:#fff;}
.btn-navy{background:var(--navy-800);color:#fff;}
.btn-navy:hover{background:var(--navy-900);transform:translateY(-2px);}
.btn-whatsapp{background:#25D366;color:#fff;}
.btn-whatsapp:hover{background:#1DA851;transform:translateY(-2px);}
.btn-whatsapp svg{width:18px;height:18px;}
.btn-ghost-navy{border-color:var(--navy-800);color:var(--navy-800);}
.btn-ghost-navy:hover{background:var(--navy-800);color:#fff;}
.btn-block{width:100%;}
.btn-sm{padding:10px 20px;font-size:.85rem;}

/* ==========================================================================
   Header
   ========================================================================== */
.topbar{
  background:var(--navy-950);color:#cfe0ee;font-size:.85rem;
}
.topbar .container{display:flex;align-items:center;justify-content:space-between;padding-top:9px;padding-bottom:9px;}
.topbar-social{display:flex;gap:10px;}
.topbar-social a{
  width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.08);
  display:flex;align-items:center;justify-content:center;transition:.2s;
}
.topbar-social a:hover{background:var(--gold);color:var(--navy-950);}
.topbar-social svg{width:15px;height:15px;fill:currentColor;}
.topbar-contact{display:flex;align-items:center;gap:18px;color:#9fb4c9;}
.topbar-contact a:hover{color:#fff;}
.topbar .btn{padding:8px 18px;font-size:.8rem;}

.site-header{
  background:#fff;border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:100;
  transition:box-shadow .25s ease;
}
.site-header .container{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-top:12px;padding-bottom:12px;transition:padding .25s ease;}
.brand{display:flex;align-items:center;gap:12px;flex-shrink:0;}
.brand img{height:84px;width:auto;max-width:none;flex-shrink:0;display:block;object-fit:contain;transition:height .25s ease;}
body.scrolled .site-header .container{padding-top:6px;padding-bottom:6px;}
body.scrolled .site-header .brand img{height:56px;}
body.scrolled .site-header{box-shadow:0 4px 16px rgba(10,20,40,.08);}
.brand-text{font-family:var(--ff-serif);line-height:1.1;}
.brand-text strong{display:block;color:var(--navy-900);font-size:1.05rem;font-weight:700;white-space:nowrap;}
.brand-text span{display:block;font-size:.72rem;letter-spacing:.06em;color:var(--ink-soft);text-transform:uppercase;white-space:nowrap;}
@media(max-width:480px){
  .brand{flex-shrink:1;min-width:0;}
  .brand-text{min-width:0;overflow:hidden;}
  .brand-text strong{overflow:hidden;text-overflow:ellipsis;}
  .brand-text span{overflow:hidden;text-overflow:ellipsis;}
  .brand{gap:9px;}
  .brand img{height:50px;}
  .brand-text strong{font-size:.8rem;letter-spacing:-.01em;}
  .brand-text span{font-size:.56rem;letter-spacing:.04em;}
  .header-cta{gap:8px;}
}

.main-nav{display:flex;align-items:center;gap:6px;}
.main-nav > ul{display:flex;align-items:center;gap:4px;}
.main-nav-cta{display:none;}
.main-nav a.nav-link{
  padding:12px 16px;font-weight:600;font-size:.95rem;color:var(--navy-900);white-space:nowrap;
  border-radius:8px;display:flex;align-items:center;gap:6px;transition:.2s;
}
.main-nav a.nav-link:hover,.main-nav li.active > a.nav-link{color:var(--brick);}
@media(min-width:961px) and (max-width:1300px){
  .main-nav a.nav-link{padding:12px 9px;font-size:.86rem;gap:4px;}
  .main-nav > ul{gap:0;}
}
.has-dropdown{position:relative;}
.dropdown{
  position:absolute;top:100%;left:0;background:#fff;min-width:300px;
  border-radius:var(--radius);box-shadow:var(--shadow-lg);border:1px solid var(--line);
  padding:10px;opacity:0;visibility:hidden;transform:translateY(8px);transition:.2s;
}
.has-dropdown:hover .dropdown{opacity:1;visibility:visible;transform:translateY(0);}
.dropdown a{display:block;padding:11px 14px;border-radius:8px;font-size:.92rem;color:var(--ink);font-weight:500;}
.dropdown a:hover{background:var(--cream-2);color:var(--brick);}
.header-cta{display:flex;align-items:center;gap:14px;}

.nav-search-toggle{
  display:flex;align-items:center;justify-content:center;width:38px;height:38px;
  background:none;border:1.5px solid var(--line);border-radius:50%;color:var(--navy-900);
  cursor:pointer;transition:.2s;flex-shrink:0;
}
.nav-search-toggle svg{width:18px;height:18px;}
.nav-search-toggle:hover{background:var(--cream-2);border-color:var(--navy-800);}

/* Site search bar (dropdown below the header) */
.site-search{
  position:fixed;top:0;left:0;right:0;z-index:95;background:#fff;border-bottom:1px solid var(--line);
  box-shadow:var(--shadow-md);
}
.site-search[hidden]{display:none;}
.site-search .container{padding-top:18px;padding-bottom:18px;}
.site-search-input-wrap{
  display:flex;align-items:center;gap:10px;background:var(--cream-2);
  border-radius:999px;padding:0 18px;border:1.5px solid var(--line);
}
.site-search-icon{width:18px;height:18px;color:var(--ink-soft);flex-shrink:0;}
#siteSearchInput{
  flex:1;border:0;background:none;padding:13px 0;font:inherit;font-size:1rem;color:var(--navy-900);outline:none;
}
.site-search-close{
  display:flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;
  background:none;border:0;color:var(--ink-soft);cursor:pointer;font-size:1rem;border-radius:50%;transition:.2s;
}
.site-search-close:hover{background:var(--line);color:var(--navy-900);}
.site-search-results{margin-top:10px;max-height:60vh;overflow-y:auto;}
.site-search-results:empty{margin-top:0;}
.site-search-result{
  display:flex;align-items:center;gap:12px;
  padding:12px 14px;border-radius:10px;color:var(--navy-900);
}
.site-search-result:hover,.site-search-result.is-active{background:var(--cream-2);}
.site-search-result-title{font-weight:600;font-size:.94rem;flex:1;min-width:0;}
.site-search-result-title em{font-style:italic;font-weight:600;}
.site-search-result-author{font-style:normal;font-weight:500;color:var(--ink-soft);}
.site-search-result-cat{
  flex:0 0 108px;display:inline-flex;justify-content:flex-start;
  font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;
  color:var(--brick);white-space:nowrap;
}
.site-search-result-cat span{background:rgba(143,32,39,.08);padding:3px 9px;border-radius:999px;}
.site-search-empty{padding:14px;color:var(--ink-soft);font-size:.9rem;text-align:center;}
@media(max-width:640px){
  .site-search-result{gap:8px;}
  .site-search-result-cat{flex:0 0 auto;}
  .site-search-result-cat span{font-size:.6rem;padding:2px 7px;white-space:nowrap;}
  .site-search-result-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
}

.nav-toggle{display:none;background:none;border:0;width:42px;height:42px;position:relative;cursor:pointer;}
.nav-toggle span,.nav-toggle span::before,.nav-toggle span::after{
  content:"";display:block;height:2px;width:24px;background:var(--navy-900);
  position:absolute;left:9px;transition:.25s;
}
.nav-toggle span{top:20px;}
.nav-toggle span::before{top:-8px;}
.nav-toggle span::after{top:8px;}
.nav-toggle.open span{background:transparent;}
.nav-toggle.open span::before{transform:rotate(45deg);top:0;}
.nav-toggle.open span::after{transform:rotate(-45deg);top:0;}

@media(max-width:1180px){
  .header-cta .btn-gold{display:none;}
}

@media(max-width:960px){
  .topbar-contact{display:none;}
  .main-nav{
    position:fixed;inset:0 0 0 auto;width:min(84vw,360px);height:100vh;
    background:#fff;transform:translateX(100%);transition:.3s ease;
    flex-direction:column;align-items:stretch;padding:90px 22px 30px;overflow-y:auto;
    box-shadow:var(--shadow-lg);
  }
  .main-nav.open{transform:translateX(0);}
  .main-nav > ul{flex-direction:column;align-items:stretch;gap:0;}
  .main-nav a.nav-link{padding:15px 6px;border-bottom:1px solid var(--line);border-radius:0;}
  .has-dropdown > .nav-link{justify-content:space-between;}
  .has-dropdown > .nav-link::after{
    content:"";width:8px;height:8px;flex-shrink:0;
    border-right:2px solid currentColor;border-bottom:2px solid currentColor;
    transform:rotate(45deg);transition:transform .25s;opacity:.45;
  }
  .has-dropdown.open > .nav-link::after{transform:rotate(-135deg);}
  .dropdown{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:0;display:none;padding:0 0 0 14px;}
  .has-dropdown.open .dropdown{display:block;}
  .header-cta .btn-gold{display:none;}
  .main-nav-cta{display:flex;justify-content:center;margin-top:22px;}
  .nav-toggle{display:block;}
  .nav-overlay{position:fixed;inset:0;background:rgba(6,15,42,.5);opacity:0;visibility:hidden;transition:.25s;z-index:90;}
  .nav-overlay.open{opacity:1;visibility:visible;}
}

/* ==========================================================================
   Hero
   ========================================================================== */
.hero{
  position:relative;color:#fff;overflow:hidden;
  background:var(--navy-950);
  padding:110px 0 120px;
}
.hero-video{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;
}
.hero::before{
  content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(100deg,rgba(6,15,42,.9) 0%,rgba(11,31,66,.82) 45%,rgba(15,58,95,.64) 100%);
}
.hero .container{position:relative;z-index:2;}
.hero-inner{max-width:760px;}
.hero-kicker{
  font-family:var(--ff-sans);font-weight:700;font-size:.82rem;letter-spacing:.12em;text-transform:uppercase;color:#c3d7e8;margin-bottom:14px;
}
.hero h1{
  color:#fff;font-size:clamp(2rem,4.6vw,3.4rem);text-transform:uppercase;letter-spacing:.01em;line-height:1.08;
  margin-bottom:20px;text-wrap:balance;text-shadow:0 2px 24px rgba(6,15,42,.45);
}
@media(max-width:600px){
  /* Sur téléphone, l'affiche de la vidéo sert de fond au cas où la lecture
     automatique est bloquée : le bandeau ne reste jamais uni. */
  .hero{padding:64px 0 72px;background:var(--navy-950) url("../img/hero-video-poster.jpg") center/cover no-repeat;}
  .hero-kicker{font-size:.72rem;letter-spacing:.1em;margin-bottom:12px;line-height:1.4;}
  .hero h1{font-size:1.85rem;line-height:1.1;margin-bottom:16px;}
  .hero h1 br{display:none;}
  .hero .hero-sub{font-size:.95rem;margin:28px 0 16px;}
}
.hero-sub{color:#c3d7e8;font-size:1.05rem;line-height:1.55;max-width:560px;margin-top:14px;margin-bottom:32px;text-align:left;}
.hero-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap;}

.page-hero{
  position:relative;color:#fff;
  background:linear-gradient(100deg,var(--navy-950) 0%,var(--navy-800) 65%,var(--navy-600) 100%);
  padding:80px 0 64px;overflow:hidden;
}
.page-hero .container{position:relative;z-index:2;}
.page-hero .eyebrow{color:var(--gold-light);}
.page-hero .eyebrow::before{background:var(--gold-light);}
.page-hero h1{color:#fff;font-size:clamp(1.9rem,3.6vw,2.9rem);max-width:760px;text-transform:uppercase;letter-spacing:.02em;}
.page-hero h1.fit-line{font-size:clamp(.7rem,4vw,2.9rem);white-space:nowrap;max-width:100%;letter-spacing:.01em;}
.page-hero p{color:#c3d7e8;max-width:640px;font-size:1.05rem;margin-bottom:0;}
.page-hero p.hero-lead{
  color:#fff;font-family:var(--ff-serif);font-weight:500;
  font-size:clamp(1.2rem,2.2vw,1.55rem);max-width:680px;line-height:1.4;
}
.page-hero .doc-link{color:#dce8f3;border-color:rgba(255,255,255,.4);margin-bottom:18px;}
.page-hero-compact{padding:44px 0 36px;}
@media(max-width:768px){
  .page-hero{padding:24px 0 18px;}
  .page-hero p{font-size:.95rem;line-height:1.5;}
  .page-hero-compact{padding:22px 0 16px;}
}

/* ==========================================================================
   Home — intro / project teaser
   ========================================================================== */
.home-intro{background:var(--cream);position:relative;padding:88px 0 96px;}
.intro-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:64px;align-items:center;}
.intro-media{position:relative;}
.intro-media img{border-radius:var(--radius);box-shadow:var(--shadow-md);}
.intro-media-video{position:relative;padding:0 22px 22px 0;}
.intro-media-video::before{
  content:"";position:absolute;inset:22px 0 0 22px;z-index:0;
  background:linear-gradient(135deg,var(--gold-light),var(--gold));border-radius:var(--radius);
}
.media-main-video{
  position:relative;z-index:1;width:100%;aspect-ratio:16/9;object-fit:cover;display:block;
  border-radius:var(--radius);box-shadow:var(--shadow-lg);
}
.intro-eyebrow{font-size:1.05rem;font-weight:800;letter-spacing:.1em;}
.intro-eyebrow::before{width:34px;height:3px;}
.intro-text h2{font-size:clamp(1.5rem,2.6vw,2.1rem);line-height:1.2;text-wrap:balance;}
.intro-text p{color:var(--ink-soft);font-size:1.05rem;line-height:1.6;text-align:left;}
.intro-cta{display:flex;gap:14px;margin-top:28px;flex-wrap:wrap;}
.intro-cta .btn{box-shadow:var(--shadow-sm);}
.intro-cta .btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);}
@media(max-width:880px){
  .intro-grid{grid-template-columns:1fr;gap:56px;}
  .intro-media-video{padding-right:16px;max-width:420px;margin:0 auto;}
}
@media(max-width:600px){
  .home-intro{padding:52px 0 64px;}
  .intro-grid{gap:34px;}
  .intro-eyebrow{font-size:.9rem;}
  .intro-text h2{font-size:1.45rem;}
  .intro-text p{font-size:1rem;}
  .intro-cta{margin-top:22px;gap:10px;}
  .intro-media-video{padding:0 14px 14px 0;}
  .intro-media-video::before{inset:14px 0 0 14px;}
}

/* ==========================================================================
   Pied de page (commun à toutes les pages)
   ========================================================================== */
.site-footer{background:var(--navy-950);color:#c3d7e8;padding:40px 0 30px;}
.footer-simple{display:flex;flex-direction:column;gap:22px;}
.footer-top{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;}
.site-footer .brand{display:inline-flex;align-items:center;gap:12px;text-decoration:none;}
.site-footer .brand img{height:40px;width:auto;}
.site-footer .brand-text strong{color:#fff;font-size:1rem;font-weight:700;white-space:normal;line-height:1.15;}
.site-footer .brand-text span{display:block;font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:#8fa6bf;margin-top:3px;white-space:normal;}
.footer-social{display:flex;gap:8px;}
.footer-social a{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;border:1px solid rgba(255,255,255,.18);color:#c3d7e8;transition:.2s;}
.footer-social a:hover{border-color:var(--gold);color:var(--gold);}
.footer-social svg{width:13px;height:13px;fill:currentColor;}
.footer-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px 24px;flex-wrap:wrap;padding-top:18px;border-top:1px solid rgba(255,255,255,.1);}
.footer-line{margin:0;padding:0;border:0;font-size:.76rem;color:#8fa6bf;line-height:1.6;}
.footer-links{display:flex;gap:22px;flex-wrap:wrap;}
.footer-links a{font-size:.76rem;color:#c3d7e8;text-decoration:none;letter-spacing:.02em;transition:.2s;}
.footer-links a:hover{color:#fff;}
@media(max-width:760px){
  .site-footer{padding:32px 0 26px;}
  .footer-simple{gap:18px;}
  .site-footer .brand img{height:36px;}
  .footer-bottom{flex-direction:column;align-items:flex-start;gap:12px;}
  .footer-links{gap:18px;}
}

/* contact strip (home) */
.contact-strip{background:var(--cream-2);}
.contact-strip-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:40px;align-items:center;}
.contact-strip h2{font-size:clamp(1.5rem,2.6vw,2.1rem);}
.contact-cards{display:grid;gap:14px;}
.contact-card{
  display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow-sm);
}
.contact-card .ic{
  width:42px;height:42px;border-radius:10px;background:var(--navy-900);color:var(--gold-light);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.contact-card .ic svg{width:20px;height:20px;fill:currentColor;}
.contact-card strong{display:block;font-size:.95rem;color:var(--navy-900);}
.contact-card span{color:var(--ink-soft);font-size:.92rem;}
@media(max-width:880px){ .contact-strip-grid{grid-template-columns:1fr;} }

/* ==========================================================================
   Sub navigation (page "le projet")
   ========================================================================== */
.subnav-wrap{
  position:sticky;z-index:60;
  background:#fff;border-bottom:1px solid var(--line);box-shadow:var(--shadow-sm);
  top:var(--header-h,71px);
}
.subnav-wrap::after{
  content:"";position:absolute;top:0;right:0;bottom:1px;width:28px;pointer-events:none;z-index:1;
  background:linear-gradient(to left,#fff,rgba(255,255,255,0));
}
.subnav{display:flex;justify-content:center;gap:18px;overflow-x:auto;padding:12px 24px;max-width:var(--container);margin:0 auto;scrollbar-width:none;}
@media(max-width:900px){ .subnav{justify-content:flex-start;} }
.subnav::-webkit-scrollbar{display:none;}
.subnav a{white-space:nowrap;padding:9px 2px;font-size:.86rem;font-weight:600;color:var(--ink-soft);border-bottom:2px solid transparent;padding:8px 14px;border-radius:999px;}
.subnav a:hover{color:var(--navy-900);background:var(--cream-2);}
.subnav a.active{color:var(--navy-900);border-bottom-color:var(--gold);background:var(--navy-100);border-radius:999px;padding:8px 14px;border-bottom-color:transparent;color:var(--navy-900);}

/* ==========================================================================
   Generic content blocks
   ========================================================================== */
.block{scroll-margin-top:calc(var(--header-h,71px) + 90px);}
#livres{padding-bottom:36px;}
#textes{padding-top:36px;padding-bottom:36px;}
#films{padding-top:36px;padding-bottom:36px;}
#reportages{padding-top:36px;padding-bottom:36px;}
#chants{padding-top:36px;}
.block-alt{background:var(--cream-2);}

.two-col{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start;}
.two-col.reverse .col-media{order:2;}
.col-media img{border-radius:var(--radius);box-shadow:var(--shadow-md);}
.laic-photo{max-height:440px;object-fit:cover;width:100%;}
@media(max-width:880px){ .two-col{grid-template-columns:1fr;gap:36px;} .col-media img{width:100%;max-height:380px;object-fit:cover;} }
@media(max-width:600px){ .col-media img.laic-photo{width:65%;max-width:260px;height:auto;max-height:none;object-fit:contain;display:block;margin:0 auto;} }

.map-mini{
  width:100%;height:420px;border-radius:var(--radius);overflow:hidden;
  box-shadow:var(--shadow-md);border:1px solid var(--line);background:var(--cream-2);
  isolation:isolate;position:relative;z-index:0;
}
.map-embed{width:100%;height:520px;border-radius:12px;overflow:hidden;border:1px solid var(--line);background:var(--cream-2);}
.map-embed iframe{display:block;width:100%;height:100%;border:0;}
@media(max-width:880px){ .map-embed{height:440px;} }
.map-mini-link{margin:14px 0 0;text-align:center;font-size:.84rem;}
.map-mini-link a{color:var(--navy-800);font-weight:600;}
@media(max-width:880px){ .map-mini{height:340px;} }

.contact-map-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-md);padding:22px;margin-top:28px;}
.contact-map-title{margin:0 0 6px;font-size:1.05rem;color:var(--navy-900);}
.contact-map-address{margin:0 0 14px;color:var(--ink-soft);font-size:.92rem;}
.contact-map-embed{border-radius:calc(var(--radius) - 4px);overflow:hidden;border:1px solid var(--line);}
.contact-map-embed iframe{display:block;width:100%;height:260px;}
.contact-map-link{display:inline-block;margin-top:14px;font-weight:600;color:var(--navy-800);font-size:.9rem;}
.contact-map-link:hover{text-decoration:underline;}

.identity-list{
  display:grid;grid-template-columns:repeat(3,1fr);gap:4px 32px;margin:24px 0 32px;max-width:1100px;
}
.identity-list li{
  display:flex;align-items:center;gap:12px;font-weight:600;color:var(--navy-800);font-size:.95rem;
  padding:13px 0;border-bottom:1px solid var(--line);
}
.identity-list svg{width:20px;height:20px;flex-shrink:0;}
@media(max-width:880px){.identity-list{grid-template-columns:1fr 1fr;}}
@media(max-width:640px){.identity-list{grid-template-columns:1fr;}}
.float-portrait{float:left;width:250px;max-width:42%;margin:4px 28px 18px 0;}
.float-portrait img{width:100%;display:block;border-radius:var(--radius);box-shadow:var(--shadow-md);}
.float-portrait figcaption{margin-top:8px;}
@media(max-width:600px){.float-portrait{float:none;width:100%;max-width:300px;margin:0 auto 22px;}}

.prose p{color:var(--ink-soft);}
.prose h3{margin-top:1.6em;font-size:1.3rem;}
.prose{text-align:justify;}
.step p{text-align:justify;margin:0;color:var(--ink-soft);font-size:.92rem;}
.apo-card p{text-align:justify;color:var(--ink-soft);font-size:.94rem;hyphens:auto;}
.col-media img.no-shadow{box-shadow:none;}
.pull-quote{
  margin:28px 0;
  font-family:var(--ff-sans);font-style:italic;font-weight:500;font-size:1.1rem;color:var(--navy-900);
}
.caption{font-size:.85rem;color:var(--ink-soft);margin-top:10px;text-align:center;}

/* Model / universal (numbered feature list) */
.feature-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-top:10px;}
.feature-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px;}
.feature-card h4{font-size:1rem;color:var(--navy-900);margin-bottom:6px;font-family:var(--ff-sans);font-weight:700;}
.feature-card p{font-size:.92rem;color:var(--ink-soft);margin:0;}
@media(max-width:700px){ .feature-grid{grid-template-columns:1fr;} }

/* Timeline (historique) */
.timeline{position:relative;margin-top:10px;}
.timeline-item{
  position:relative;padding:0 0 30px 34px;border-left:2px solid var(--line);
}
.timeline-item:last-child{padding-bottom:0;}
.timeline-item.future{border-left-style:dashed;}
.timeline-item.dash-after{border-left-style:dashed;}
.timeline-item::before{
  content:"";position:absolute;left:-8px;top:2px;width:16px;height:16px;border-radius:50%;
  background:var(--navy-900);border:3px solid var(--gold-light);
}
.timeline-item.future::before{background:#fff;border-color:var(--line);}
.timeline-date{font-weight:700;color:var(--brick);font-size:.86rem;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px;}
.timeline-item p{margin:0;color:var(--ink-soft);}
.timeline-item.future .timeline-date{color:var(--ink-soft);}

/* Members grid */
.members-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;}
.members-grid-3{grid-template-columns:repeat(3,1fr);max-width:980px;}
.members-grid-3 .member-body{display:flex;flex-direction:column;gap:4px;}
.members-grid-3 .member-link{margin-top:12px;align-self:stretch;justify-content:center;white-space:nowrap;font-size:.86rem;}
.page-devenir #temoignages .container > .members-grid-3{grid-column:1/-1;max-width:none;margin-top:8px;}
.page-devenir #temoignages .section-head{position:static;grid-column:1/-1;max-width:720px;}
.temoignage-thumb{position:relative;display:block;aspect-ratio:9/16;overflow:hidden;background:#0b1f42;cursor:pointer;}
.temoignage-thumb:hover .video-play-btn{background:var(--brick);border-color:var(--brick);color:#fff;transform:translate(-50%,-50%) scale(1.08);box-shadow:0 8px 24px rgba(0,0,0,.35);}
.temoignage-card .member-body{padding:14px 18px 16px;text-align:center;}
.temoignage-card .member-body h3{margin:0;}
.page-devenir #temoignages .container > .members-grid-3{max-width:640px;gap:18px;}
.page-devenir .charisme-links p{color:var(--ink-soft);line-height:1.65;text-align:left;margin:0 0 18px;}
.charisme-links-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;}
.charisme-links-row .link-discreet{font-weight:600;}
.charisme-links-secondary{margin-top:6px;gap:12px 22px;}
.charisme-links-secondary .link-discreet{font-size:1rem;}
.btn-outline-navy{background:transparent;color:var(--navy-900);border:1.5px solid var(--navy-900);}
.btn-outline-navy:hover{background:var(--navy-900);color:#fff;}
.member-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;}
/* Repère quand la recherche du site amène directement sur la fiche d'un
   membre (ex. taper "Florian Marchand") : décalage pour ne pas la cacher
   sous l'en-tête fixe, halo doré temporaire pour la repérer d'un coup d'œil. */
.member-card[id]{scroll-margin-top:calc(var(--header-h,71px) + 24px);transition:box-shadow .3s ease,border-color .3s ease;}
.member-card[id]:target{border-color:var(--gold);box-shadow:0 0 0 3px rgba(198,138,46,.3),var(--shadow-md);}
.member-card-compact{display:flex;align-items:stretch;}
.member-card-compact .member-photo{width:110px;flex-shrink:0;aspect-ratio:3/3.4;}
.member-card-compact .member-body{flex:1;min-width:0;overflow-wrap:break-word;}
@media(max-width:960px){
  .member-card-compact{align-items:center;}
  .member-card-compact .member-photo{width:84px;margin:0;background:var(--navy-900);-webkit-mask-image:none;mask-image:none;}
  .member-card-compact .member-body{text-align:left;padding:16px 18px;}
}
.member-photo{aspect-ratio:3/3.4;overflow:hidden;background:var(--navy-900);}
.member-photo img{width:100%;height:100%;object-fit:cover;}
.member-photo-placeholder{display:flex;align-items:center;justify-content:center;}
.member-photo-placeholder span{font-family:var(--ff-serif);font-size:3.6rem;font-weight:700;color:#fff;}
.member-body{padding:20px;}
.member-role{color:var(--brick);font-weight:700;font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px;display:block;}
.member-body h3{font-size:1.08rem;margin-bottom:8px;}
.member-body p{font-size:.86rem;color:var(--ink-soft);margin-bottom:6px;}
.member-body a{color:var(--navy-800);font-weight:600;font-size:.92rem;}
.member-body a:hover{color:var(--brick);}
.member-link{
  font-size:.82rem;font-weight:700;color:var(--navy-900);
  display:inline-flex;align-items:center;gap:6px;margin:2px 0 14px;
  background:var(--cream-2);border:1px solid var(--line);border-radius:999px;
  padding:9px 16px;transition:.2s;
}
.member-link:hover{background:var(--navy-900);color:#fff;border-color:var(--navy-900);}
@media(max-width:960px){
  .members-grid{grid-template-columns:1fr;max-width:480px;margin:0 auto;gap:14px;}
  .member-photo{
    width:210px;aspect-ratio:3/3.4;margin:26px auto 0;background:none;
    -webkit-mask-image:linear-gradient(to bottom,#000 62%,transparent 100%);
    mask-image:linear-gradient(to bottom,#000 62%,transparent 100%);
  }
  .member-photo-placeholder{background:var(--navy-900);}
  .member-body{text-align:center;padding-top:6px;}
  .member-link{justify-content:center;}
}

/* Pôle spirituel list */
.check-list{display:grid;gap:14px;margin:22px 0;}
.check-list li{display:flex;gap:12px;align-items:flex-start;font-size:1rem;color:var(--ink);}
.check-list li a{transition:font-weight .15s;}
.check-list li:hover a,.check-list li:focus-within a{font-weight:600;}
.check-list li svg{width:22px;height:22px;flex-shrink:0;color:var(--gold);margin-top:2px;}

/* Text-group cards (Recension de textes) */
.text-group{margin-bottom:36px;}
.text-group:last-child{margin-bottom:0;}
.text-group h3{
  margin:0 0 14px;font-family:var(--ff-sans);font-weight:700;font-size:.8rem;
  text-transform:uppercase;letter-spacing:.06em;color:var(--navy-800);
  padding-bottom:6px;border-bottom:1px solid var(--line);
}
.text-group.gold h3{color:var(--gold);}
.text-group.brick h3{color:var(--brick);}
/* Books grid (ressources-oratoriennes) */
.book-grid{display:grid;grid-template-columns:repeat(auto-fill,150px);justify-content:start;align-items:start;gap:18px;max-width:1100px;margin:0 auto;}
#chants-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));max-width:1100px;}
@media(min-width:701px){ #videos-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));max-width:660px;} }
@media(max-width:520px){ .book-grid{grid-template-columns:repeat(2,1fr);gap:16px;} }
@media(max-width:520px){ #foyer-etudiant .book-grid{grid-template-columns:150px;max-width:150px;} }
.book-card{display:flex;flex-direction:column;text-align:center;color:inherit;}
.book-cover{
  position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:2/3;
  background:var(--cream-2);border-radius:12px;
  margin-bottom:10px;padding:0;overflow:hidden;
  box-shadow:var(--shadow-sm);transition:transform .3s ease,box-shadow .3s ease;
}
.book-card:hover .book-cover{box-shadow:var(--shadow-md);}
.book-cover img{width:100%;height:100%;object-fit:cover;border-radius:0;display:block;}
.book-cover span:not(.book-cover-hint){font-size:.78rem;color:var(--ink-soft);font-style:italic;padding:16px;}
.book-cover-hint{
  position:absolute;left:0;right:0;bottom:0;padding:9px 8px;
  background:var(--navy-900);color:#fff;font-size:.68rem;font-weight:700;
  letter-spacing:.02em;text-align:center;line-height:1.3;
  transform:translateY(100%);transition:transform .25s ease;
}
.book-card:hover .book-cover-hint,
.book-card:focus-within .book-cover-hint{transform:translateY(0);}
.book-card h4{
  font-family:var(--ff-serif);font-weight:600;font-size:.96rem;color:var(--navy-900);
  margin:0 0 2px;line-height:1.35;
}
.book-tile{background:none;border:0;padding:0;margin:0;width:100%;font:inherit;cursor:pointer;}

.film-feature{display:flex;gap:32px;align-items:flex-start;}
.film-feature-cover{width:160px;flex-shrink:0;aspect-ratio:2/3;border-radius:12px;overflow:hidden;box-shadow:var(--shadow-sm);}
.film-feature-cover img{width:100%;height:100%;object-fit:cover;display:block;}
.film-feature-body h4{font-family:var(--ff-serif);font-weight:600;font-size:1.15rem;color:var(--navy-900);margin:0 0 6px;}
.film-feature-body .book-author{margin-bottom:20px;}
.itineraire-sommaire{list-style:none;margin:0 0 18px;padding:0;}
.itineraire-sommaire li{padding:6px 0 6px 14px;border-left:2px solid rgba(198,138,46,.35);}
.itineraire-sommaire li+li{margin-top:3px;}
.itineraire-sommaire-title{display:block;font-weight:600;color:var(--navy-900);font-size:.94rem;}
.itineraire-sommaire-sub{display:block;margin-top:3px;font-size:.8rem;color:var(--ink-soft);line-height:1.5;}
.film-feature-links{display:flex;flex-direction:column;align-items:flex-start;gap:10px;}
.film-feature-links .link-discreet{
  margin-top:0;display:inline-flex;align-items:center;gap:6px;
  padding:9px 18px;border:1.5px solid var(--navy-900);border-radius:999px;
}
.film-feature-links .link-discreet:hover{background:var(--navy-900);color:#fff;}
@media(max-width:600px){
  .film-feature{flex-direction:column;align-items:center;text-align:center;}
  .film-feature-cover{width:150px;}
  .film-feature-links{align-items:center;}
}

.book-detail .film-feature{display:block;}
.book-detail .film-feature-cover{float:right;width:190px;margin:0 0 16px 24px;}
.book-detail p:not(.book-author){text-align:justify;}
.book-detail .film-feature-links{clear:both;padding-top:4px;}
@media(max-width:600px){
  .book-detail .film-feature-cover{float:none;width:150px;margin:0 auto 16px;}
  .book-detail p{text-align:left;}
}

/* Saints et bienheureux de l'Oratoire (saints-oratoriens.html) */
.figure-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;max-width:1100px;margin:0 auto;}
@media(max-width:520px){ .figure-grid{grid-template-columns:repeat(2,1fr);gap:12px;} }
.figure-card{
  position:relative;overflow:hidden;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:14px 16px;box-shadow:var(--shadow-sm);transition:box-shadow .3s ease;
}
.figure-cover{
  position:relative;display:block;width:100%;aspect-ratio:4/5;border-radius:8px;overflow:hidden;
  margin:0 0 10px;background:var(--cream-2);
}
.figure-cover img{width:100%;height:100%;object-fit:cover;display:block;}
.figure-cover::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:22%;
  background:linear-gradient(to bottom, rgba(255,255,255,0), #fff);
  pointer-events:none;
}
.figure-card h4{font-family:var(--ff-serif);font-weight:600;font-size:.86rem;color:var(--navy-900);margin:0 0 4px;line-height:1.3;}
.figure-card .figure-dates{margin:0;font-size:.72rem;color:var(--ink-soft);line-height:1.3;}
.figure-card .figure-feast{
  display:inline-block;margin-top:8px;font-size:.66rem;font-weight:700;
  color:var(--gold);letter-spacing:.02em;text-transform:uppercase;
}
.figure-prayer-box{
  margin:16px 0 0;padding:16px 18px;border-radius:10px;
  background:var(--navy-100);border-left:3px solid var(--gold);
}
.figure-prayer-label{
  margin:0 0 6px;font-size:.72rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.03em;color:var(--brick);
}
.figure-prayer{
  margin:0;font-family:var(--ff-serif);font-style:italic;font-size:.88rem;
  line-height:1.55;color:var(--navy-900);
}
.figure-prayer-cite{margin:8px 0 0;font-size:.72rem;color:var(--navy-600);}
.figure-tile{width:100%;text-align:left;font:inherit;cursor:pointer;margin:0;}
.figure-tile:hover,.figure-tile:focus-visible{box-shadow:var(--shadow-md);}
.figure-card-hint{
  position:absolute;left:0;right:0;bottom:0;margin:0;padding:9px 8px;
  background:var(--navy-900);color:#fff;font-size:.68rem;font-weight:700;
  letter-spacing:.02em;text-align:center;line-height:1.3;text-transform:none;
  transform:translateY(100%);transition:transform .25s ease;
}
.figure-tile:hover .figure-card-hint,.figure-tile:focus-visible .figure-card-hint{transform:translateY(0);}
.figure-tile-row{
  grid-column:1/-1;display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  background:none;border:0;border-top:1px solid var(--line);border-radius:0;padding:6px 4px;
  margin:-6px 0;transition:background-color .15s ease;
}
.figure-tile-row:hover,.figure-tile-row:focus-visible{background:var(--cream-2);}
.figure-tile-row .figure-row-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.figure-tile-row .figure-row-name{font-family:var(--ff-serif);font-weight:600;font-size:.86rem;color:var(--navy-900);}
.figure-tile-row .figure-row-dates{font-size:.78rem;color:var(--ink-soft);}
.figure-tile-row .figure-row-arrow{flex-shrink:0;color:var(--ink-soft);font-size:1rem;line-height:1;}
@media(max-width:520px){ .figure-tile-row{grid-column:1/-1;padding:10px 6px;} }
.figure-detail h3{font-family:var(--ff-serif);font-size:1.4rem;color:var(--navy-900);margin:0 0 6px;}
.figure-detail .figure-dates{margin:0 0 18px;font-size:.9rem;color:var(--ink-soft);}
/* Same look as the neighbouring "En savoir plus" link (.link-discreet) —
   plain text in .figure-source, bordered pill in .film-feature-links —
   just with margin-top removed since it sits inline next to it. */
.figure-detail-map-link{margin-top:0 !important;}
.figure-detail .film-feature-links{flex-direction:row;flex-wrap:wrap;align-items:center;gap:14px;}
/* Même rendu sobre (texte discret, sans pastille) que .figure-source, quel
   que soit le conteneur d'origine de la fiche — pour que "En savoir plus"
   et "Voir l'Oratoire sur la carte" soient toujours identiques entre eux. */
.figure-detail .film-feature-links .link-discreet{
  margin-top:0;padding:0;border:none;border-radius:0;background:none;font-size:.78rem;
}
.figure-detail .film-feature-links .link-discreet:hover{background:none;}
.figure-detail .film-feature{display:block;}
.figure-detail .film-feature-cover{float:right;width:190px;margin:0 0 16px 24px;}
.figure-detail p:not(.figure-dates){text-align:justify;}
.figure-detail .figure-prayer-box{clear:none;}
@media(max-width:600px){
  .figure-detail .film-feature-cover{float:none;width:150px;margin:0 auto 16px;}
  .figure-detail p{text-align:left;}
}
.figure-source{margin:14px 0 0;font-size:.78rem;color:var(--ink-soft);clear:both;}
.figure-source-row{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;}
.figure-source-row+.figure-source-row{margin-top:8px;}
.figure-source-label{font-weight:600;color:var(--navy-900);flex-shrink:0;}
.figure-source .link-discreet{padding:4px 12px;font-size:.78rem;border-width:1px;}
.book-card .book-author{
  font-size:.8rem;color:var(--ink-soft);margin:0;
  font-style:italic;font-weight:500;letter-spacing:.01em;
}
.book-category-title{
  text-align:left;font-family:var(--ff-serif);font-weight:700;font-size:1.2rem;color:var(--navy-900);
  padding-bottom:10px;margin:0 0 24px;border-bottom:2px solid var(--gold);
}
h2.book-category-title{font-size:clamp(1.5rem,2.6vw,2rem);padding-bottom:14px;border-bottom-width:3px;margin-bottom:32px;}

/* Location facts (immobilier) */

.plan-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-top:16px;}
.plan-grid figure{margin:0;background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden;}
.plan-grid img{aspect-ratio:4/3;object-fit:cover;}
.plan-grid figcaption{padding:8px 10px;font-size:.78rem;font-weight:600;color:var(--ink-soft);text-align:center;}
@media(max-width:880px){ .plan-grid{grid-template-columns:repeat(3,1fr);} }
@media(max-width:560px){ .plan-grid{grid-template-columns:repeat(2,1fr);} }

/* Démarche steps */
.steps{counter-reset:step;display:grid;gap:0;margin-top:10px;}
.step{
  display:grid;grid-template-columns:52px 1fr;gap:18px;padding:20px 0;border-bottom:1px solid var(--line);
}
.step:last-child{border-bottom:0;}
.step .num{
  counter-increment:step;width:44px;height:44px;border-radius:50%;background:var(--navy-900);color:#fff;
  display:flex;align-items:center;justify-content:center;font-family:var(--ff-serif);font-weight:700;
}
.step .num::before{content:counter(step);}

.plans-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:24px;max-width:1100px;margin:48px auto 0;}
.plan-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;cursor:pointer;transition:box-shadow .2s,transform .2s;}
.plan-card:hover{box-shadow:var(--shadow-md);transform:translateY(-3px);}
.plan-card img{width:100%;display:block;}
.swipe-hint{display:none;}
@media(max-width:600px){
  .swipe-hint{
    display:block;text-align:center;margin:20px 0 0;font-size:.82rem;font-weight:600;
    color:var(--ink-soft);letter-spacing:.02em;animation:swipe-hint-pulse 1.8s ease-in-out infinite;
  }
  .plans-grid{
    display:flex;grid-template-columns:none;overflow-x:auto;scroll-snap-type:x mandatory;
    gap:14px;margin-top:14px;padding:4px 24px 8px;scroll-padding:0 24px;
    -webkit-overflow-scrolling:touch;scrollbar-width:none;
  }
  .plans-grid::-webkit-scrollbar{display:none;}
  .plan-card{flex:0 0 92%;scroll-snap-align:center;scroll-snap-stop:always;}
}
@keyframes swipe-hint-pulse{
  0%,100%{opacity:.55;}
  50%{opacity:1;}
}

.lightbox-overlay{background:rgba(6,12,24,.94);}
.lightbox-image{max-width:min(88vw,1100px);max-height:84vh;border-radius:var(--radius);box-shadow:var(--shadow-lg);}
.lightbox-close,.lightbox-nav{
  position:absolute;border-radius:50%;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.3);
  color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;transition:.2s;
}
.lightbox-close:hover,.lightbox-nav:hover{background:rgba(255,255,255,.24);}
.lightbox-close{top:22px;right:26px;width:44px;height:44px;font-size:1.7rem;}
.lightbox-nav{top:50%;transform:translateY(-50%);width:52px;height:52px;font-size:2rem;}
.lightbox-prev{left:20px;}
.lightbox-next{right:20px;}
@media(max-width:640px){
  .lightbox-nav{width:40px;height:40px;font-size:1.5rem;}
  .lightbox-prev{left:8px;}
  .lightbox-next{right:8px;}
  .lightbox-close{top:12px;right:12px;width:38px;height:38px;font-size:1.4rem;}
}
.step h4{margin:0 0 4px;font-size:1rem;color:var(--navy-900);}

/* Budget table */
.budget-table{width:100%;border-collapse:collapse;background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);}
.budget-table thead th{background:var(--navy-900);color:#fff;text-align:left;padding:16px 20px;font-family:var(--ff-serif);font-weight:600;}
.budget-table td{padding:16px 20px;border-bottom:1px solid var(--line);}
.budget-table tbody tr:nth-child(even){background:var(--navy-100);}
.budget-table td.amount{text-align:right;font-weight:700;color:var(--navy-900);white-space:nowrap;}
.budget-table .step-badge{
  display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;
  background:var(--gold);color:#241503;font-weight:800;font-size:.8rem;margin-right:10px;
}
.budget-table tr.total td{background:var(--navy-800);color:#fff;font-family:var(--ff-serif);font-size:1.05rem;font-weight:700;}
.budget-table tr.grand-total td{background:var(--brick);color:#fff;font-family:var(--ff-serif);font-size:1.15rem;font-weight:700;}

.phase-list{display:flex;flex-direction:column;gap:0;margin:18px auto 0;max-width:640px;background:#fff;border-radius:var(--radius);border:1px solid var(--line);overflow:hidden;}
.phase-item{display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:start;padding:20px 22px;border-bottom:1px solid var(--line);}
.phase-item:last-child{border-bottom:0;}
.phase-item .phase-num{
  padding:6px 14px;border-radius:999px;background:var(--navy-900);color:#fff;font-family:var(--ff-serif);font-weight:700;
  display:inline-flex;align-items:center;justify-content:center;font-size:.85rem;white-space:nowrap;
}
.phase-item h4{margin:0 0 4px;font-size:.98rem;color:var(--navy-900);}
.phase-item p{margin:0;font-size:.86rem;color:var(--ink-soft);}
.phase-item .phase-amount{font-family:var(--ff-serif);font-weight:700;color:var(--brick);white-space:nowrap;align-self:center;}
@media(max-width:600px){
  .phase-item{
    display:flex;flex-wrap:wrap;justify-content:center;align-items:center;
    text-align:left;gap:10px 14px;padding:22px;
  }
  .phase-item .phase-num{order:1;margin:0;}
  .phase-item h4{font-size:1rem;}
  .phase-item p{max-width:none;}
  .phase-item .phase-amount{
    order:2;margin:0;display:inline-block;padding:6px 16px;
    background:var(--cream-2);border-radius:999px;font-size:1rem;
  }
  .phase-item > div{order:3;flex-basis:100%;width:100%;}
}
.table-scroll{overflow-x:auto;max-width:640px;margin:0 auto;}

/* Progress / collecte */
.progress-card{position:relative;margin-top:8px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:24px 28px 18px;margin-top:0;}
.progress-bar-wrap{position:relative;margin:58px 0 52px;}
.progress-bar-track{height:16px;border-radius:999px;background:#d7dfe7;box-shadow:inset 0 1px 3px rgba(11,31,66,.15);overflow:hidden;position:relative;}
.progress-bar-fill{
  height:100%;border-radius:999px;
  background:linear-gradient(90deg,var(--navy-700),var(--gold));
  width:0%;transition:width 2.6s cubic-bezier(.22,1,.36,1);
}
.progress-marker{position:absolute;top:-4px;left:0;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;z-index:4;}
.progress-marker .pole{width:2px;height:26px;background:var(--navy-950);border-radius:1px;}
.progress-marker .marker-tag{
  margin-top:6px;width:96px;text-align:center;background:var(--navy-950);color:#fff;font-size:.68rem;font-weight:700;
  line-height:1.3;padding:6px 8px;border-radius:8px;box-shadow:var(--shadow-sm);
}
.progress-marker[data-flag-auto] .marker-tag{
  position:absolute;left:50%;bottom:100%;transform:translateX(-50%);margin:0 0 8px;
}
.progress-marker-fill{top:-50px;transition:left 2.6s cubic-bezier(.22,1,.36,1);}
.progress-marker-fill .pole{background:var(--gold);height:16px;}
.progress-marker-fill .marker-tag{
  background:var(--gold);color:#241503;width:auto;white-space:nowrap;margin-top:0;margin-bottom:8px;
  font-size:1.1rem;padding:8px 16px;border-radius:10px;
}
.progress-scale{position:relative;height:34px;margin-top:8px;}
.progress-scale span{position:absolute;top:8px;transform:translateX(-50%);font-size:.72rem;font-weight:700;color:var(--navy-700);white-space:nowrap;}
.progress-scale span::before{content:"";position:absolute;left:50%;top:-8px;width:1px;height:6px;background:var(--navy-700);}
@media(max-width:560px){ .progress-scale span{font-size:.6rem;} }
.fund-updated-note{margin:4px 0 0;text-align:justify;font-size:1rem;color:var(--ink-soft);}
.fund-updated-note--italic{font-style:italic;}
.fund-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:24px;margin-top:18px;}
.fund-stat{background:#fff;border:1px solid var(--line);border-top:3px solid var(--navy-700);border-radius:12px;padding:20px 14px;text-align:center;box-shadow:var(--shadow-sm);}
.fund-stat--pledged{border-top-color:var(--gold);}
.fund-stat--remaining{border-top-color:var(--brick);}
.fund-stat-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;margin:0 auto 10px;color:var(--navy-700);}
.fund-stat-icon svg{width:100%;height:100%;}
.fund-stat--pledged .fund-stat-icon{color:var(--gold);}
.fund-stat--remaining .fund-stat-icon{color:var(--brick);}
.fund-stat>strong{display:block;margin-top:6px;font-family:var(--ff-serif);font-size:1.55rem;color:var(--navy-900);}
.fund-stat span:not(.fund-stat-icon){font-size:.8rem;color:var(--ink-soft);}
.fund-stat-note{display:block;margin-top:8px;font-size:.74rem;color:var(--ink-soft);}
@media(max-width:600px){
  .fund-stats{grid-template-columns:1fr 1fr;gap:10px;}
  .fund-stat{padding:16px 10px;}
  .fund-stat--remaining{grid-column:1 / -1;}
}

.phase-pct-strip{display:flex;flex-wrap:wrap;margin-top:24px;border-top:1px solid var(--line);padding-top:18px;}
.phase-pct-item{flex:1 1 0;text-align:center;padding:0 10px;border-left:1px solid var(--line);}
.phase-pct-item:first-child{border-left:none;}
.phase-pct-label{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);margin-bottom:6px;}
.phase-pct-value{font-family:var(--ff-serif);font-weight:700;font-size:1.2rem;color:var(--navy-800);}
@media(max-width:600px){
  .phase-pct-item{flex:1 1 40%;border-left:none;}
  .phase-pct-item:nth-child(n+3){border-top:1px solid var(--line);padding-top:12px;margin-top:12px;}
}

/* Support / soutiens */
.support-card{
  display:grid;grid-template-columns:220px 1fr;align-items:center;gap:32px;margin-bottom:48px;
}
.support-photo{overflow:hidden;align-self:stretch;aspect-ratio:3/3.4;border-radius:var(--radius);box-shadow:var(--shadow-md);}
.support-photo img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block;}
.support-card-wide{grid-template-columns:360px 1fr;}
.support-card-wide .support-photo{aspect-ratio:4/3;}
.support-card-reverse{grid-template-columns:1fr 220px;}
.support-card-reverse .support-photo{order:2;}
.support-card-reverse .support-body{order:1;}
.support-card h4{margin:0 0 4px;font-size:1.1rem;}
.support-card .role{color:var(--brick);font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-bottom:14px;display:block;}
.support-card p{margin:0;color:var(--ink-soft);font-size:.94rem;}
.support-card .pull-quote{margin:0;}
@media(max-width:960px){
  .support-card{grid-template-columns:1fr;gap:18px;margin-bottom:48px;}
  .support-card-reverse .support-photo,
  .support-card-reverse .support-body{order:initial;}
  .support-photo{
    width:calc(100% + 48px);margin:0 -24px;aspect-ratio:4/3;border-radius:0;box-shadow:none;
  }
  /* The reverse card (a portrait, e.g. Père Nicolis) gets the same small
     centered, bottom-faded treatment as the team member photos, instead of
     the wide/full-bleed style meant for the group photo above — a plain
     portrait that large read as oversized on a phone screen. */
  .support-card-reverse .support-photo{
    width:210px;aspect-ratio:3/3.4;margin:0 auto;border-radius:var(--radius);box-shadow:none;
    -webkit-mask-image:linear-gradient(to bottom,#000 62%,transparent 100%);
    mask-image:linear-gradient(to bottom,#000 62%,transparent 100%);
  }
  /* Title before photo before body text: .support-body's own children
     become direct grid items (display:contents drops its box) so each
     piece can be ordered independently of the photo. */
  .support-body{display:contents;}
  .support-card .role,.support-card h4{order:1;text-align:left;}
  .support-photo{order:2;}
  .support-card p{order:3;text-align:left;}
}

.fruit-list{display:grid;grid-template-columns:1fr 1fr;gap:0 48px;margin-top:8px;}
.fruit-row{padding:20px 0;border-bottom:1px solid var(--line);}
.fruit-row h4{margin:0 0 5px;font-size:1rem;color:var(--navy-900);font-family:var(--ff-sans);font-weight:700;}
.fruit-row p{margin:0;font-size:.9rem;color:var(--ink-soft);}
@media(max-width:760px){ .fruit-list{grid-template-columns:1fr;} }

/* ==========================================================================
   Apostolats
   ========================================================================== */
.agenda-embed{
  position:relative;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-md);
  border:1px solid var(--line);max-width:900px;margin:0 auto;background:#fff;padding:8px;
}
.agenda-embed::before{
  content:"";position:absolute;top:0;left:0;right:0;height:4px;
  background:var(--gold);
}
.agenda-embed-crop{height:600px;overflow:hidden;border-radius:calc(var(--radius) - 6px);}
.agenda-embed-crop iframe{display:block;width:100%;height:660px;border:0;}
@media(max-width:600px){
  .agenda-embed-crop{height:480px;}
  .agenda-embed-crop iframe{height:540px;}
}
.agenda-subscribe{
  display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;
  max-width:900px;margin:16px auto 0;font-size:.88rem;color:var(--ink-soft);text-align:center;
}
.agenda-subscribe svg{width:16px;height:16px;flex-shrink:0;color:var(--gold);}
.agenda-subscribe .link-discreet{margin-top:0;}
.agenda-subscribe span{color:var(--line);}
.apo-category{margin-bottom:8px;scroll-margin-top:calc(var(--header-h,71px) + 90px);}
.apo-card{scroll-margin-top:calc(var(--header-h,71px) + 90px);position:relative;overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;transition:transform .25s ease,border-color .25s ease,background-color .25s ease;box-shadow:var(--shadow-sm);}
.apo-category h3{display:flex;align-items:center;gap:16px;font-family:var(--ff-serif);font-size:clamp(1.3rem,2.2vw,1.6rem);font-weight:700;color:var(--navy-900);margin-bottom:30px;font-size:1.55rem;margin-bottom:22px;}
.apo-category h3::before{content:"";width:36px;height:3px;border-radius:2px;background:var(--gold);flex-shrink:0;}
.apo-category-sub{display:flex;align-items:center;gap:7px;font-size:.88rem;color:var(--ink-soft);margin:-14px 0 26px;}
.apo-category-sub svg{width:15px;height:15px;color:var(--gold);flex-shrink:0;}
.apo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px;margin-bottom:64px;align-items:start;}
.apo-category:last-child .apo-grid{margin-bottom:0;}
.apo-card::before{
  content:"";position:absolute;top:0;left:0;right:0;height:4px;
  background:var(--gold);opacity:0;
}
.apo-card h4{font-size:1.15rem;margin-bottom:12px;}
.apo-meta{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0;padding:0;}
.apo-meta li{
  display:flex;gap:6px;align-items:center;font-size:.8rem;color:var(--navy-800);font-weight:700;
  background:var(--cream-2);border:1px solid var(--line);padding:7px 13px;border-radius:999px;
}
.apo-meta li svg{width:14px;height:14px;color:var(--gold);flex-shrink:0;}
.apo-meta-plain{display:flex;flex-direction:column;gap:9px;margin:16px 0;padding:0;}
.apo-meta-plain li{display:flex;align-items:center;gap:9px;font-size:.88rem;color:var(--ink-soft);}
.apo-meta-plain li svg{width:15px;height:15px;color:var(--gold);flex-shrink:0;}
.next-mass{margin-top:14px;padding-top:14px;border-top:1px solid var(--line);}
.next-mass-label{font-size:.8rem;color:var(--ink-soft);margin:0 0 6px;}
.next-mass-date{display:flex;align-items:center;gap:12px;}
.next-mass-value{font-weight:700;color:var(--navy-900);font-family:var(--ff-serif);font-size:1.05rem;min-width:11ch;}
.next-mass-arrow{
  width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:#fff;
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--navy-800);
  transition:.2s;flex-shrink:0;padding:0;
}
.next-mass-arrow svg{width:14px;height:14px;fill:currentColor;}
.next-mass-arrow:hover:not(:disabled){background:var(--navy-900);color:#fff;border-color:var(--navy-900);transform:scale(1.08);}
.next-mass-arrow:disabled{opacity:.3;cursor:not-allowed;}
.song-tile{background:none;border:0;padding:0;font:inherit;cursor:pointer;}
.song-tile-cover{aspect-ratio:16/9;padding:0;position:relative;}
.song-tile-cover img{border-radius:0;}
.song-tile-play{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:rgba(11,31,66,0);transition:background .25s ease;
}
.song-tile-play svg{
  width:34px;height:34px;fill:#fff;opacity:0;transform:scale(.8);
  transition:opacity .25s ease,transform .25s ease;filter:drop-shadow(0 2px 6px rgba(0,0,0,.4));
}
.song-tile:hover .song-tile-play{background:rgba(11,31,66,.28);}
.song-tile:hover .song-tile-play svg{opacity:1;transform:scale(1);}
.song-tile-cover.vertical{aspect-ratio:9/16;}
.video-embed.vertical{max-width:320px;padding-top:0;aspect-ratio:9/16;margin-left:auto;margin-right:auto;}
.song-credit{
  font-family:var(--ff-serif);font-style:italic;font-weight:400;font-size:.9rem;color:var(--ink-soft);margin:0 0 20px;
}
.song-detail .video-embed{margin:0 0 10px;}
.youtube-open-link{
  display:inline-flex;align-items:center;gap:7px;margin:0 10px 22px 0;
  padding:9px 16px;border-radius:999px;background:var(--navy-900);color:#fff;
  font-family:var(--ff-sans);font-size:.82rem;font-weight:600;transition:.2s;
}
.youtube-open-link svg{width:14px;height:14px;flex-shrink:0;fill:currentColor;}
.youtube-open-link:hover{background:var(--brick);color:#fff;transform:translateY(-1px);}
button.youtube-open-link{border:0;cursor:pointer;font-family:var(--ff-sans);}
.youtube-open-link.partition-btn{background:var(--gold);color:var(--navy-950);}
.youtube-open-link.partition-btn:hover{background:var(--brick);color:#fff;}
.lyrics-pending{margin-top:10px;padding:16px 18px;background:var(--cream-2);border-radius:var(--radius);}
.lyrics-text{margin-top:10px;padding:20px 22px;background:var(--cream-2);border-radius:var(--radius);}
.lyrics-refrain{font-size:.95rem;color:var(--navy-900);margin-bottom:16px;line-height:1.6;}
.lyrics-refrain em{font-style:italic;}
.lyrics-trad{display:block;margin-top:4px;color:var(--ink-soft);font-size:.88rem;}
.lyrics-verses{list-style:none;counter-reset:verse;display:flex;flex-direction:column;gap:14px;}
.lyrics-verses li{position:relative;padding-left:26px;font-size:.92rem;color:var(--ink);line-height:1.55;counter-increment:verse;}
.lyrics-verses li::before{content:counter(verse);position:absolute;left:0;top:0;color:var(--brick);font-weight:800;font-size:.85rem;}
.lyrics-refrain-inline{display:block;margin-top:8px;font-style:italic;color:var(--brick);font-size:.9rem;}
.lyrics-trad-block{margin-top:18px;padding-top:16px;border-top:1px solid var(--line);}
.lyrics-trad-block p{font-size:.9rem;color:var(--ink-soft);line-height:1.6;margin-bottom:10px;}
.lyrics-trad-block p:last-child{margin-bottom:0;}
.lyrics-trad-title{color:var(--navy-900)!important;font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px!important;}
.camp-ways{display:grid;grid-template-columns:repeat(4,1fr);gap:36px;}
.camp-way{padding-left:28px;border-left:1px solid var(--line);}
.camp-way:first-child{padding-left:0;border-left:0;}
.camp-way h4{
  font-size:1.15rem;font-weight:700;color:var(--brick);text-transform:uppercase;letter-spacing:.03em;
  margin-bottom:14px;padding-bottom:12px;border-bottom:2px solid var(--line);
}
.camp-way-age{
  display:block;font-size:.78rem;font-weight:500;color:var(--ink-soft);text-transform:none;
  letter-spacing:0;margin-top:4px;
}
@media(max-width:880px){
  .camp-ways{grid-template-columns:1fr 1fr;row-gap:40px;}
  .camp-way:nth-child(2n+1){padding-left:0;border-left:0;}
}
@media(max-width:560px){
  .camp-ways{grid-template-columns:1fr;}
  .camp-way{padding-left:0;border-left:0;}
}
.apo-card.wide{grid-column:1/-1;}
.apo-card.wide h4{
  font-size:1.4rem;font-weight:700;color:var(--navy-900);
  padding-bottom:12px;margin-bottom:20px;border-bottom:2px solid var(--gold);
}
.apo-card.wide .apo-body{display:grid;grid-template-columns:1fr 1fr;gap:36px;}
.apo-card.wide .apo-body>div{display:flow-root;}
.apo-media{margin-bottom:16px;}
.apo-media img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:14px;box-shadow:var(--shadow-sm);display:block;}
@media(max-width:600px){ .apo-media img{aspect-ratio:16/9;max-height:200px;} }
/* Photo réduite (ex. Oratoire séculier) : illustre la fiche sans dominer,
   flotte à côté du texte plutôt que de s'étaler en bannière pleine largeur. */
.apo-media-small{width:200px;margin:0 0 16px;}
.apo-media-small img{aspect-ratio:4/3;}
@media(max-width:600px){ .apo-media-small{width:100%;max-width:260px;margin:0 auto 16px;} }
@media(max-width:880px){ .apo-grid{grid-template-columns:1fr;} .apo-card.wide .apo-body{grid-template-columns:1fr;} }

.pelerinage-body{grid-template-columns:280px 1fr!important;align-items:start;}
.pelerinage-poster img{width:100%;border-radius:14px;box-shadow:var(--shadow-md);display:block;}
.pelerinage-body .apo-meta{margin:18px 0;}
.pelerinage-body .caption{margin-top:12px;}
@media(max-width:880px){ .pelerinage-body{grid-template-columns:1fr!important;} .pelerinage-poster{max-width:280px;margin:0 auto;} }

.foyer-body{grid-template-columns:1fr 210px!important;align-items:start;gap:36px;}
.foyer-body .apo-meta{margin:10px 0 18px;}
.foyer-video-tile{background:none;border:0;padding:0;cursor:pointer;justify-self:end;}
.foyer-video-tile .song-tile-cover{width:210px;box-shadow:var(--shadow-md);}
.song-tile-play.visible{background:none;}
.play-badge{
  width:52px;height:52px;border-radius:50%;background:rgba(11,31,66,.6);
  display:flex;align-items:center;justify-content:center;transition:.25s;
  box-shadow:0 4px 16px rgba(0,0,0,.35);
}
.play-badge svg{width:22px;height:22px;fill:#fff;margin-left:2px;opacity:1;transform:none;filter:none;}
.foyer-video-tile:hover .play-badge{background:var(--brick);transform:scale(1.08);}
@media(max-width:700px){ .foyer-body{grid-template-columns:1fr!important;} .foyer-video-tile{justify-self:center;margin-top:8px;} }

.camp-musique-body{grid-template-columns:1fr 280px!important;align-items:start;gap:36px;}
.camp-musique-body .apo-meta{margin:14px 0 18px;}
.camp-musique-tile{background:none;border:0;padding:0;cursor:pointer;justify-self:end;}
.camp-musique-tile .song-tile-cover{width:280px;box-shadow:var(--shadow-md);}
@media(max-width:700px){ .camp-musique-body{grid-template-columns:1fr!important;} .camp-musique-tile{justify-self:center;margin-top:8px;width:100%;max-width:340px;} .camp-musique-tile .song-tile-cover{width:100%;} }

.patronage-banner{margin-bottom:26px;}
.patronage-banner img{aspect-ratio:21/8;}
@media(max-width:600px){ .patronage-banner img{aspect-ratio:16/9;max-height:none;} }
.patronage-quote{
  font-family:var(--ff-serif);font-style:italic;color:var(--navy-800);font-size:1.02rem;
  line-height:1.6;margin:0 0 20px;
}
.link-discreet{
  display:inline-block;font-size:.95rem;font-weight:500;color:var(--navy-900);
  margin-top:14px;transition:font-weight .15s,color .15s;
}
.free-amount-box{
  max-width:440px;margin:0 auto 36px;padding:26px 28px;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);text-align:center;
}
.free-amount-box label{
  display:block;font-size:.82rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
  color:var(--ink-soft);margin-bottom:14px;
}
.free-amount-row{display:flex;gap:10px;}
.free-amount-field{position:relative;flex:1;}
.free-amount-field input{
  width:100%;padding:14px 34px 14px 16px;border:1px solid var(--line);border-radius:10px;
  font-size:1.05rem;font-weight:600;color:var(--navy-900);box-sizing:border-box;
}
.free-amount-field input::placeholder{font-weight:400;color:var(--ink-soft);}
.free-amount-suffix{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--ink-soft);font-weight:600;font-size:1rem;}
.free-amount-row .btn{flex-shrink:0;padding:14px 22px;font-size:.95rem;}
.free-amount-row .btn svg{width:18px;height:18px;flex-shrink:0;}
@media(max-width:600px){
  .free-amount-row{flex-direction:column;}
  .free-amount-row .btn{justify-content:center;}
}
.link-discreet:hover{font-weight:700;color:var(--brick);}

/* ==========================================================================
   Nous aider
   ========================================================================== */
.give-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;}
.give-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:28px;}
.prayer-list{
  display:flex;flex-direction:column;gap:0;margin:0;max-width:640px;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
}
.prayer-row{
  cursor:pointer;width:100%;padding:19px 24px;background:#fff;border:0;border-bottom:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  transition:background-color .2s ease;
}
.prayer-row:last-child{border-bottom:0;}
.prayer-row:hover{background:var(--cream-2);}
.prayer-row-text{flex:1 1 auto;min-width:0;}
.prayer-row-text h3{
  font-family:var(--ff-serif);font-weight:600;font-size:1.02rem;margin:0;color:var(--navy-900);
  letter-spacing:.005em;transition:color .2s ease;
}
.prayer-row-arrow{width:16px;height:16px;color:var(--ink-soft);flex-shrink:0;transition:.2s ease;}
.prayer-row:hover .prayer-row-text h3{color:var(--brick);}
.prayer-row:hover .prayer-row-arrow{color:var(--brick);transform:translateX(3px);}
.prayer-row-placeholder{cursor:default;opacity:.7;}
.prayer-row-placeholder:hover{background:#fff;}
.prayer-row-placeholder:hover .prayer-row-text h3{color:var(--navy-900);}
.prayer-row-badge{
  flex-shrink:0;font-family:var(--ff-sans);font-weight:700;font-size:.68rem;text-transform:uppercase;
  letter-spacing:.04em;color:var(--ink-soft);background:var(--cream-2);padding:5px 11px;border-radius:999px;
}

body.prayer-modal-open{overflow:hidden;}
.prayer-modal{
  position:fixed;inset:0;z-index:300;
  background:rgba(11,31,66,0);
  display:flex;align-items:center;justify-content:center;
  padding:80px 24px;
  opacity:0;visibility:hidden;
  transition:opacity .4s ease,background-color .4s ease,visibility 0s linear .4s;
}
.prayer-modal[hidden]{display:none;}
.prayer-modal.open{
  opacity:1;visibility:visible;background:rgba(11,31,66,.78);
  transition:opacity .4s ease,background-color .4s ease,visibility 0s linear 0s;
}
.prayer-modal-panel{
  background:#fff;border-radius:var(--radius);width:100%;max-width:640px;max-height:100%;
  overflow-y:auto;padding:40px 44px;
  transform:scale(.82);opacity:0;
  transition:transform .4s cubic-bezier(.2,.8,.2,1),opacity .4s ease;
}
.prayer-modal-panel-wide{max-width:820px;padding:32px;position:relative;}
.prayer-modal-panel-wide .support-card{margin-bottom:0;}
.prayer-modal-panel-wide .prayer-modal-close{
  position:absolute;top:14px;right:14px;width:36px;height:36px;font-size:.95rem;
  background:var(--navy-900);border-color:var(--navy-900);color:#fff;
}
.prayer-modal-panel-wide .prayer-modal-close:hover{background:var(--brick);border-color:var(--brick);}
.prayer-modal.open .prayer-modal-panel{transform:scale(1);opacity:1;}
.prayer-modal-content h3{
  font-family:var(--ff-serif);font-size:1.4rem;color:var(--navy-900);text-align:center;
  padding-bottom:14px;margin:0 0 22px;border-bottom:2px solid var(--gold);
}
.prayer-modal-close{
  position:fixed;top:24px;right:24px;width:44px;height:44px;
  display:flex;align-items:center;justify-content:center;
  border-radius:50%;background:rgba(255,255,255,.14);border:1.5px solid rgba(255,255,255,.55);
  color:#fff;cursor:pointer;transition:.2s;font-size:1.1rem;
}
.prayer-modal-close:hover{background:var(--brick);border-color:var(--brick);}
@media(max-width:700px){
  .prayer-modal{padding:70px 12px;}
  .prayer-modal-panel{padding:26px;}
  .prayer-modal-close{top:14px;right:14px;}
}
.give-card h3{font-size:1.15rem;display:flex;align-items:center;gap:10px;}
.give-card h3 .ic{
  width:36px;height:36px;border-radius:9px;background:var(--navy-900);color:var(--gold-light);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.give-card h3 .ic svg{width:18px;height:18px;fill:currentColor;}
.give-card ol,.give-card ul{margin:14px 0 0;padding-left:20px;color:var(--ink-soft);font-size:.94rem;}
.give-card ol li,.give-card ul li{margin-bottom:8px;}
.give-card-link{display:block;cursor:pointer;transition:.2s ease;}
.give-card-link:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);border-color:var(--navy-700);}
.give-card-link .cta-hint{display:inline-flex;align-items:center;gap:6px;margin-top:16px;font-weight:700;font-size:.9rem;color:var(--navy-800);}
.give-card-link .cta-hint svg{width:16px;height:16px;fill:currentColor;transition:transform .2s ease;}
.give-card-link:hover .cta-hint{color:var(--brick);}
.give-card-link:hover .cta-hint svg{transform:translateX(3px);}
.iban-box{
  background:var(--navy-100);border-radius:10px;padding:14px 16px;margin-top:14px;font-family:monospace;
  font-size:.92rem;color:var(--navy-900);word-break:break-all;
}
.fiscal-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.fiscal-card{background:#fff;border:1px solid var(--line);color:var(--ink);border-radius:var(--radius);padding:26px;}
.fiscal-card .pct{font-family:var(--ff-serif);font-size:2.4rem;color:var(--brick);display:block;margin-bottom:6px;}
.fiscal-card p{color:var(--ink-soft);font-size:.92rem;margin:0;}
@media(max-width:880px){ .give-grid,.fiscal-grid{grid-template-columns:1fr;} }

.closing-note{text-align:center;max-width:620px;margin:0 auto;}
.closing-note h2{font-size:clamp(1.3rem,2.4vw,1.7rem);}
.closing-note p{color:var(--ink-soft);font-size:1.02rem;margin:0;}
.closing-note.wide{max-width:none;}

/* ==========================================================================
   Contact
   ========================================================================== */
.contact-grid{display:grid;grid-template-columns:3fr 2fr;gap:40px;align-items:start;}
.contact-form{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:32px;}
.form-row{margin-bottom:18px;}
.form-row label{display:block;font-weight:700;font-size:.88rem;color:var(--navy-900);margin-bottom:6px;}
.form-row input,.form-row textarea{
  width:100%;padding:13px 14px;border:1px solid var(--line);border-radius:10px;font-family:var(--ff-sans);
  font-size:.95rem;color:var(--ink);background:var(--cream);
}
.form-row input:focus,.form-row textarea:focus{outline:2px solid var(--navy-700);outline-offset:1px;}
.form-row textarea{resize:vertical;min-height:130px;}
.form-note{font-size:.8rem;color:var(--ink-soft);margin-top:14px;}
.contact-form button[type="submit"]{width:100%;}
.contact-form-status{margin-top:16px;font-weight:600;color:var(--navy-900);}
.contact-form-status.is-error{color:var(--brick);}

@media(max-width:880px){ .contact-grid{grid-template-columns:1fr;} }

/* Video */
.video-embed{position:relative;padding-top:56.25%;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-md);background:#0b1f42;}
.video-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
.video-embed[data-yt]{cursor:pointer;}
.video-thumb{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .2s;}
.video-embed[data-yt]:hover .video-thumb{opacity:.85;}
.video-play-btn{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:64px;height:64px;border-radius:50%;border:1.5px solid rgba(255,255,255,.75);cursor:pointer;
  background:rgba(255,255,255,.14);color:#fff;display:flex;align-items:center;justify-content:center;
  transition:.2s;
}
.video-embed[data-yt]:hover .video-play-btn{background:var(--brick);border-color:var(--brick);color:#fff;transform:translate(-50%,-50%) scale(1.08);box-shadow:0 8px 24px rgba(0,0,0,.35);}
.video-play-btn svg{width:26px;height:26px;fill:currentColor;margin-left:4px;}
.video-link{display:inline-flex;align-items:center;gap:10px;background:var(--navy-900);color:#fff;padding:10px 20px 10px 12px;border-radius:999px;font-weight:700;font-size:.86rem;margin-top:16px;transition:.2s;}
.video-link .play{width:24px;height:24px;border-radius:50%;background:var(--gold);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.video-link .play svg{width:10px;height:10px;fill:#241503;margin-left:2px;}
.video-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:10px;}
.video-item h4{font-size:.9rem;font-weight:400;margin:14px 0 0;color:var(--ink-soft);}
@media(max-width:820px){ .video-grid{grid-template-columns:1fr;} }
.video-link:hover{background:var(--brick);transform:translateY(-1px);}
.doc-link{display:inline-flex;align-items:center;gap:10px;color:var(--navy-800);font-weight:700;font-size:.9rem;border-bottom:2px solid var(--gold);padding-bottom:2px;margin-top:10px;}
.doc-link:hover{color:var(--brick);}
/* FAQ accordion */
.faq-list{max-width:1180px;margin:0 auto;}
.faq-category{margin-bottom:0;}
.faq-category-title{font-family:var(--ff-sans);text-transform:uppercase;font-size:.82rem;letter-spacing:.08em;color:var(--brick);font-weight:800;margin:0;background:var(--cream-2);border:1px solid var(--line);border-top:0;padding:16px;text-align:left;cursor:pointer;display:flex;align-items:center;width:100%;transition:background .2s ease,color .2s ease;}
.faq-category:first-child .faq-category-title{border-top:1px solid var(--line);border-radius:10px 10px 0 0;}
.faq-category:last-child .faq-category-title{border-radius:0 0 10px 10px;}
.faq-category:last-child .faq-category-title[aria-expanded="true"]{border-radius:0;}
.faq-category .faq-item:first-child{border-top:1px solid var(--line);}
.faq-answer-pending{font-style:italic;color:var(--ink-soft);opacity:.75;}
.faq-item{border-bottom:1px solid var(--line);}
.faq-question{
  width:100%;display:flex;align-items:center;justify-content:space-between;gap:20px;
  background:none;border:0;text-align:left;padding:22px 4px;cursor:pointer;
  font-family:var(--ff-sans);font-weight:700;font-size:1rem;color:var(--navy-900);
}
.faq-question:hover{color:var(--brick);}
.faq-icon{
  width:28px;height:28px;border-radius:50%;background:var(--cream-2);border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;transition:.25s;
}
.faq-icon::before,.faq-icon::after{content:"";position:absolute;background:var(--navy-900);transition:.25s;}
.faq-icon::before{width:12px;height:2px;}
.faq-icon::after{width:2px;height:12px;}
.faq-item.open .faq-icon{background:var(--brick);border-color:var(--brick);transform:rotate(180deg);}
.faq-item.open .faq-icon::before,.faq-item.open .faq-icon::after{background:#fff;}
.faq-item.open .faq-icon::after{transform:scaleY(0);}
.faq-answer{max-height:0;overflow:hidden;transition:max-height .3s ease;}
.faq-answer-inner{padding:0 4px 22px;color:var(--ink-soft);font-size:.95rem;max-width:700px;}
.faq-personal{
  max-width:600px;margin:56px auto 0;text-align:center;padding:36px 30px;
  background:var(--cream-2);border-radius:var(--radius);border:1px solid var(--line);
}
.faq-personal p{color:var(--ink-soft);margin-bottom:20px;}

.voice-tracks{display:grid;gap:10px;margin-top:8px;}
.voice-track{display:grid;grid-template-columns:64px 1fr;align-items:center;gap:10px;}
.voice-track span{font-size:.8rem;font-weight:700;color:var(--navy-800);}
.voice-track audio{width:100%;height:32px;}
/* Costed items list (nous-aider) */
.cat-icon{
  width:34px;height:34px;border-radius:9px;background:#fff;border:1px solid var(--line);color:var(--navy-800);
  display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;margin-right:12px;
}
.cat-icon svg{width:19px;height:19px;}
.faq-category-title:hover{opacity:.8;background:#fff;color:var(--navy-900);}
.cat-label{white-space:nowrap;}
.cost-cat-count{font-weight:500;color:var(--ink-soft);font-size:.85rem;margin-left:8px;white-space:nowrap;}
.cat-chevron{
  margin-left:auto;flex-shrink:0;width:32px;height:32px;border-radius:50%;
  background:#fff;border:1px solid var(--line);color:var(--navy-800);
  display:flex;align-items:center;justify-content:center;transition:.25s ease;
}
.cat-chevron svg{width:16px;height:16px;}
.faq-category-title:hover .cat-chevron{border-color:var(--brick);color:var(--brick);}
.faq-category-title[aria-expanded="true"] .cat-chevron{transform:rotate(180deg);background:var(--brick);border-color:var(--brick);color:#fff;}

.cost-rows{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1px;
  margin:0;background:var(--line);border:1px solid var(--line);border-top:0;align-items:stretch;
}
.cost-rows.is-collapsed{display:none;}
.faq-category:last-child .cost-rows{border-radius:0 0 10px 10px;overflow:hidden;}
.cost-row{
  position:relative;overflow:hidden;
  display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px 14px;
  grid-template-areas:"info info" "stepper amount";
  background:#fff;
  padding:16px;transition:background .2s;
}
.cost-row.funded::after{
  content:"Financé";position:absolute;top:20px;right:-42px;width:160px;
  background:var(--brick);color:#fff;font-family:var(--ff-serif);font-weight:800;font-size:.85rem;
  text-transform:uppercase;letter-spacing:.05em;text-align:center;padding:6px 0;
  transform:rotate(35deg);box-shadow:0 2px 8px rgba(0,0,0,.25);pointer-events:none;
}
.cost-row:hover{background:var(--cream-2);}
.cost-row.active{background:var(--cream-2);}
.row-icon{
  width:30px;height:30px;border-radius:8px;background:var(--cream-2);color:var(--navy-700,var(--navy-800));
  display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;
}
.row-icon svg{width:16px;height:16px;}
.cost-row-info{grid-area:info;flex:1;min-width:0;display:flex;align-items:center;gap:12px;}
.cost-row-text{display:flex;flex-direction:column;gap:3px;min-width:0;}
.cost-row-label{font-size:.92rem;color:var(--navy-900);font-weight:600;}
.cost-row-unit{font-size:.78rem;color:var(--ink-soft);}
.cost-row-amount{
  grid-area:amount;justify-self:end;
  font-family:var(--ff-serif);font-weight:700;color:var(--brick);white-space:nowrap;font-size:.98rem;
  min-width:0;text-align:right;
}

.qty-stepper{grid-area:stepper;justify-self:start;display:flex;align-items:center;gap:2px;flex-shrink:0;background:#fff;border:1px solid var(--line);border-radius:999px;padding:3px;}
.qty-btn{
  width:26px;height:26px;border-radius:50%;border:0;background:var(--cream-2);color:var(--navy-900);
  font-size:1rem;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;
  line-height:1;transition:.2s;flex-shrink:0;
}
.qty-btn:hover{background:var(--gold);color:#fff;}
.qty-input{
  width:44px;text-align:center;border:0;background:none;font-weight:700;color:var(--navy-900);
  font-size:.88rem;font-family:var(--ff-sans);-moz-appearance:textfield;
}
.qty-input::-webkit-outer-spin-button,.qty-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.qty-input:focus{outline:none;}
.qty-btn:disabled,.qty-input:disabled{opacity:.35;cursor:not-allowed;}
.remaining-note{color:var(--brick);font-weight:600;}
.funded-badge{color:var(--gold);font-weight:700;}
.cost-row.funded{grid-template-areas:"info info";}
.cost-row.funded .cost-row-info{opacity:.55;}
.cost-row.funded .qty-stepper,.cost-row.funded .cost-row-amount{display:none;}

@media(max-width:480px){
  .faq-category-title{flex-wrap:wrap;row-gap:6px;}
  .cat-label{flex:1 1 100%;white-space:normal;}
  .cost-cat-count{margin-left:46px;}
  .cost-row{padding:16px 14px;gap:14px;}
  .cost-row-info{padding-bottom:14px;border-bottom:1px solid var(--line);}
  .row-icon{width:28px;height:28px;}
  .row-icon svg{width:15px;height:15px;}
  .cost-row-label{font-size:.9rem;}
  .cost-row-unit{font-size:.76rem;line-height:1.4;}
  .qty-stepper{padding:4px;}
  .qty-btn{width:28px;height:28px;font-size:1.05rem;}
  .qty-input{width:36px;}
  .cost-row-amount{font-size:1.05rem;align-self:center;}
}

/* Sticky offering cart bar */
.cart-bar{
  position:fixed;left:0;right:0;bottom:0;z-index:150;background:var(--navy-950);
  box-shadow:0 -8px 24px rgba(0,0,0,.25);border-top:1px solid rgba(255,255,255,.1);
}
.cart-bar[hidden]{display:none;}
.cart-bar-inner{
  max-width:var(--container);margin:0 auto;padding:16px 24px;display:flex;align-items:center;
  justify-content:space-between;gap:20px;flex-wrap:wrap;
}
.cart-bar-total{color:#fff;font-size:.95rem;}
.cart-bar-total strong{font-family:var(--ff-serif);color:var(--gold-light);font-size:1.2rem;margin-left:6px;}
.cart-offer-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;}

/* Custom confirmation modal (offer flow) */
.modal-overlay{position:fixed;inset:0;background:rgba(10,20,35,.6);display:flex;align-items:center;justify-content:center;z-index:300;padding:24px;}
.modal-overlay[hidden]{display:none;}
.modal-box{background:#fff;border-radius:var(--radius);padding:36px;max-width:460px;box-shadow:var(--shadow-md);text-align:center;}
.modal-box p{font-size:1.15rem;line-height:1.5;color:var(--navy-900);margin-bottom:18px;}
.modal-box p:last-of-type{font-size:1.05rem;color:var(--ink-soft);margin-bottom:26px;}
.modal-box strong{color:var(--brick);}
.modal-thanks{font-family:var(--ff-serif);font-size:2.6rem;font-weight:700;color:var(--brick);margin-bottom:10px;line-height:1;}
@media(max-width:480px){
  .modal-box{padding:26px 22px;}
  .modal-box p{font-size:1.05rem;}
  .modal-box p:last-of-type{font-size:.98rem;}
  .modal-thanks{font-size:2.1rem;}
}

.badge-complet{
  display:inline-block;background:var(--brick);color:#fff;font-weight:800;font-size:.7rem;
  text-transform:uppercase;letter-spacing:.04em;padding:3px 9px;border-radius:999px;margin-left:6px;
  vertical-align:middle;
}

/* misc */
.mt-0{margin-top:0;}
.center{text-align:center;}
.skip-link{position:absolute;left:-999px;top:0;background:var(--navy-900);color:#fff;padding:10px 16px;z-index:200;}
.skip-link:focus{left:10px;top:10px;}

/* 404 page */
.error-404{min-height:60vh;display:flex;align-items:center;justify-content:center;text-align:center;padding:80px 24px;}
.error-404 .eyebrow{justify-content:center;}
.error-404 h1{font-size:clamp(2.4rem,6vw,4rem);color:var(--navy-900);margin-bottom:14px;}
.error-404 p{color:var(--ink-soft);font-size:1.1rem;max-width:480px;margin:0 auto 28px;}

/* Song modal (ressources-oratoriennes) */
body.song-modal-open,body.book-modal-open,body.saint-modal-open,body.modal-open{overflow:hidden;}
.song-modal{
  position:fixed;inset:0;z-index:300;
  background:rgba(11,31,66,0);
  display:flex;align-items:center;justify-content:center;
  padding:80px 24px;
  opacity:0;visibility:hidden;
  transition:opacity .4s ease,background-color .4s ease,visibility 0s linear .4s;
}
.song-modal[hidden]{display:none;}
.song-modal.open{
  opacity:1;visibility:visible;background:rgba(11,31,66,.78);
  transition:opacity .4s ease,background-color .4s ease,visibility 0s linear 0s;
}
.song-modal-panel{
  background:#fff;border-radius:var(--radius);width:100%;max-width:720px;max-height:100%;
  overflow-y:auto;padding:40px 44px;
  transform:scale(.82);opacity:0;
  transition:transform .4s cubic-bezier(.2,.8,.2,1),opacity .4s ease;
}
.song-modal.open .song-modal-panel{transform:scale(1);opacity:1;}
.song-modal-content h3{font-family:var(--ff-serif);font-size:1.4rem;color:var(--navy-900);margin:0 0 6px;}
.song-modal-close{
  position:fixed;display:flex;align-items:center;justify-content:center;
  border-radius:50%;background:rgba(255,255,255,.14);border:1.5px solid rgba(255,255,255,.55);
  color:#fff;cursor:pointer;transition:.2s;
  top:24px;right:24px;width:44px;height:44px;font-size:1.1rem;
}
.song-modal-close:hover{background:var(--brick);border-color:var(--brick);}
.song-modal-nav-group{
  position:fixed;top:50%;transform:translateY(-50%);z-index:1;
  display:flex;flex-direction:column;align-items:center;gap:9px;
}
.song-modal-nav-group-prev{left:24px;}
.song-modal-nav-group-next{right:24px;}
.song-modal-nav{
  display:flex;align-items:center;justify-content:center;
  border-radius:50%;background:rgba(255,255,255,.14);border:1.5px solid rgba(255,255,255,.55);
  color:#fff;cursor:pointer;transition:.2s;
  width:52px;height:52px;font-size:1.6rem;
}
.song-modal-nav:hover{background:var(--brick);border-color:var(--brick);}
.song-modal-nav:disabled{opacity:.3;cursor:not-allowed;background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.55);}
.song-modal-nav-label{
  max-width:96px;font-size:.7rem;font-weight:600;color:#fff;text-align:center;line-height:1.3;
  text-shadow:0 1px 4px rgba(0,0,0,.5);
}
.song-modal-nav:disabled + .song-modal-nav-label,
.song-modal-nav-label:empty{opacity:0;}
@media(max-width:700px){
  .song-modal{padding:70px 12px;}
  .song-modal-panel{padding:26px;}
  /* On mobile the panel can run almost the full height of the screen, so a
     nav group stacked as icon-above-label (the desktop layout) is taller
     than the reserved gap below the panel and ends up overlapping its
     bottom edge, with the label sometimes clipped by the viewport. Laying
     each group out as icon-beside-label keeps it short enough to fit. */
  .song-modal-nav-group{top:auto;bottom:16px;transform:none;flex-direction:row;gap:8px;}
  .song-modal-nav-group-next{flex-direction:row-reverse;}
  .song-modal-nav{width:36px;height:36px;font-size:1.2rem;flex-shrink:0;}
  .song-modal-nav-label{max-width:90px;font-size:.66rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .song-modal-nav-group-prev{left:8px;}
  .song-modal-nav-group-next{right:8px;text-align:right;}
  .song-modal-close{top:14px;right:14px;}
}
@media(max-width:900px){
  /* Book and figure covers both float to the right inside .book-detail /
     .figure-detail, so on narrower viewports the fixed side nav buttons
     (sized for the 700px breakpoint above) start to overlap the cover
     image before that breakpoint kicks in. Switch these modals to the
     bottom-stacked nav layout earlier. */
  .book-modal .song-modal-nav-group,.saint-modal .song-modal-nav-group{top:auto;bottom:16px;transform:none;flex-direction:row;gap:8px;}
  .book-modal .song-modal-nav-group-next,.saint-modal .song-modal-nav-group-next{flex-direction:row-reverse;}
  .book-modal .song-modal-nav,.saint-modal .song-modal-nav{width:36px;height:36px;font-size:1.2rem;flex-shrink:0;}
  .book-modal .song-modal-nav-label,.saint-modal .song-modal-nav-label{max-width:140px;font-size:.66rem;white-space:normal;}
  .book-modal .song-modal-nav-group-prev,.saint-modal .song-modal-nav-group-prev{left:8px;}
  .book-modal .song-modal-nav-group-next,.saint-modal .song-modal-nav-group-next{right:8px;text-align:right;}
}

/* Carte des Oratoires dans le monde (carte-oratoires.html) */
/* Instant hover tooltip: add data-tooltip="…" to any element. */
[data-tooltip]{position:relative;}
[data-tooltip]::after{
  content:attr(data-tooltip);position:absolute;bottom:calc(100% + 8px);left:50%;
  transform:translateX(-50%);background:var(--navy-950);color:#fff;font-size:.72rem;
  font-weight:600;line-height:1.3;padding:6px 10px;border-radius:6px;
  width:max-content;max-width:200px;text-align:center;
  opacity:0;visibility:hidden;pointer-events:none;transition:opacity .05s linear;z-index:60;
}
[data-tooltip]:hover::after,[data-tooltip]:focus-visible::after{opacity:1;visibility:visible;}
/* Left-aligned instead of centered: centering would push the tooltip past
   the table's left edge for cities in the first column. */
.city-name-btn[data-tooltip]::after{left:0;transform:none;text-align:left;}
.map-caption{margin:14px 0 0;font-size:.82rem;line-height:1.55;color:var(--ink-soft);text-align:center;}
/* Barre d'outils du tableau : recherche à gauche, bouton des disparus à
   droite, compteur de lignes sur toute la largeur. */
.map-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 18px;margin:22px 0 4px;}
.map-toolbar .map-search{flex:1 1 300px;max-width:460px;margin:0;}
.map-toolbar .map-table-toggle-row{margin:0;text-align:left;}
.map-table-count{flex:0 0 100%;margin:0;font-size:.78rem;font-weight:600;letter-spacing:.02em;color:var(--ink-soft);}
.map-search{max-width:420px;margin:40px auto 18px;}
.map-search-input-wrap{
  display:flex;align-items:center;gap:10px;background:var(--cream-2);border-radius:999px;
  padding:0 18px;border:1.5px solid var(--line);
}
.map-search-icon{width:18px;height:18px;color:var(--ink-soft);flex-shrink:0;}
#mapSearchInput{flex:1;border:0;background:none;padding:12px 0;font:inherit;font-size:.95rem;color:var(--navy-900);outline:none;}
.oratoires-table tbody tr.is-highlighted{background:var(--gold-light) !important;}
.map-legend{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:0 0 14px;}
.oratoires-table td.cell-effectifs{text-align:right;font-variant-numeric:tabular-nums;}
.oratoires-table td.cell-effectifs.is-empty{color:var(--ink-soft);opacity:.6;}
.map-legend button{
  display:inline-flex;align-items:center;gap:8px;
  padding:8px 16px;border-radius:999px;border:1.5px solid var(--line);
  background:#fff;font-family:var(--ff-sans);font-weight:600;font-size:.82rem;color:var(--ink-soft);
  cursor:pointer;transition:opacity .2s ease,box-shadow .2s ease;
}
.map-legend button .dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;}
.map-legend button[data-cat="congregation"] .dot{background:var(--navy-900);}
.map-legend button[data-cat="formation"] .dot{background:var(--gold);}
.map-legend button[data-cat="fondation"] .dot{background:var(--brick);}
.map-legend button[data-cat="disparu"]{border-style:dashed;}
.map-legend button[data-cat="disparu"] .dot{background:#3f7a52;}
.map-legend button.active{color:var(--navy-900);box-shadow:var(--shadow-sm);}
.map-legend button:not(.active){opacity:.45;}
.map-legend button:not(.active) .dot{background:var(--line) !important;}
.map-legend button .count{opacity:.65;font-weight:500;}
.map-legend-mini{justify-content:flex-start;margin:0 0 14px;}
.map-legend-mini button{padding:6px 12px;font-size:.72rem;}
#oratoires-map{
  height:640px;width:100%;border-radius:var(--radius);overflow:hidden;
  box-shadow:var(--shadow-md);border:1px solid var(--line);background:var(--cream-2);
  isolation:isolate;position:relative;z-index:0;
}
@media(max-width:640px){ #oratoires-map{height:440px;} }
#rome-map{
  height:640px;width:100%;border-radius:var(--radius);overflow:hidden;
  box-shadow:var(--shadow-md);border:1px solid var(--line);background:var(--cream-2);
  isolation:isolate;position:relative;z-index:0;
}
@media(max-width:640px){ #rome-map{height:440px;} }

/* Frise chronologique (carte-rome.html) */
.timeline-frise-legend{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0;}
.timeline-frise-legend button{
  display:inline-flex;align-items:center;gap:8px;
  padding:9px 16px;border-radius:999px;border:1.5px solid var(--line);
  background:#fff;font-family:var(--ff-sans);font-weight:600;font-size:.82rem;color:var(--ink-soft);
  cursor:pointer;transition:opacity .2s ease,box-shadow .2s ease;
}
.timeline-frise-legend button .dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;}
.timeline-frise-legend button[data-cat="philippine"] .dot{background:var(--navy-900);}
.timeline-frise-legend button[data-cat="eglise"] .dot{background:var(--gold);}
.timeline-frise-legend button[data-cat="universelle"] .dot{background:var(--brick);}
.timeline-frise-legend button.active{color:var(--navy-900);box-shadow:var(--shadow-sm);}
.timeline-frise-legend button:not(.active){opacity:.45;}
.timeline-frise-legend button:not(.active) .dot{background:var(--line) !important;}
/* Légende de la galaxie : sert de raccourci fiable de mise au point (voir
   buildLegend dans philippe-neri-network.js), la puce active reste dorée. */
#neriNetworkLegend button.is-focused{background:var(--navy-900);color:#fff;box-shadow:var(--shadow-md);}
#neriNetworkLegend button.is-focused .dot{box-shadow:0 0 0 2px rgba(255,255,255,.6);}
.timeline-frise-zoom{display:inline-flex;gap:2px;margin-left:auto;}
.timeline-frise-zoom button{
  width:36px;height:36px;border-radius:8px;border:1px solid var(--line);background:#fff;
  color:var(--navy-900);font-size:1.1rem;font-weight:700;cursor:pointer;transition:.15s ease;
}
.timeline-frise-zoom button:hover{background:var(--cream-2);}
.timeline-frise-zoom button:disabled{opacity:.35;cursor:not-allowed;}

/* Dates clés + repère des années visibles, entre la légende et la frise */
.timeline-frise-keys-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:-6px 0 14px;}
.timeline-frise-keys-label{font-family:var(--ff-sans);font-weight:700;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--gold);}
.timeline-frise-keys{display:flex;flex-wrap:wrap;gap:6px;}
.timeline-frise-keys button{
  display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;
  border:1px solid var(--line);background:var(--cream-2);color:var(--navy-900);
  font-family:var(--ff-sans);font-weight:500;font-size:.74rem;cursor:pointer;transition:.15s ease;
}
.timeline-frise-keys button strong{font-weight:800;color:var(--gold);}
.timeline-frise-keys button:hover{background:var(--gold-light);border-color:var(--gold-light);color:#241503;}
.timeline-frise-keys button:hover strong{color:#241503;}
.timeline-frise-range{
  margin-left:auto;font-family:var(--ff-sans);font-weight:700;font-size:.78rem;color:var(--ink-soft);
  font-variant-numeric:tabular-nums;white-space:nowrap;
}
@media(max-width:600px){ .timeline-frise-range{margin-left:0;width:100%;} }

/* Vue d'ensemble ("minimap") : tout le siècle en un coup d'œil, avec un
   cadre montrant la portion actuellement visible de la frise — cliquer
   ou faire glisser le cadre pour s'y déplacer directement. */
.timeline-frise-minimap{
  position:relative;height:22px;margin-top:8px;padding:0 30px;
  display:flex;align-items:center;
}
.timeline-frise-minimap::before{
  content:"";position:absolute;left:30px;right:30px;top:50%;transform:translateY(-50%);
  height:8px;border-radius:5px;background:var(--cream-2);border:1px solid var(--line);
}
.timeline-frise-minimap-start,.timeline-frise-minimap-end{
  position:absolute;font-family:var(--ff-sans);font-weight:700;font-size:.66rem;color:var(--ink-soft);
  font-variant-numeric:tabular-nums;
}
.timeline-frise-minimap-start{left:0;}
.timeline-frise-minimap-end{right:0;}
.timeline-frise-minimap-viewport{
  position:absolute;top:50%;height:14px;min-width:14px;transform:translateY(-50%);
  border-radius:5px;background:var(--gold);opacity:.7;cursor:grab;
  transition:opacity .15s ease;
}
.timeline-frise-minimap-viewport:hover,.timeline-frise-minimap-viewport:active{opacity:.9;}
.timeline-frise-minimap-viewport:active{cursor:grabbing;}

/* Liste numérotée des lieux romains, sous la carte */
.rome-places{list-style:none;margin:18px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;}
.rome-places button{
  display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:10px 14px 10px 10px;
  border-radius:12px;border:1px solid var(--line);background:#fff;cursor:pointer;
  font-family:var(--ff-sans);transition:.15s ease;
}
.rome-places button:hover{box-shadow:var(--shadow-sm);border-color:var(--gold-light);transform:translateY(-1px);}
.rome-places-num{
  flex:0 0 26px;width:26px;height:26px;border-radius:50%;background:#8f2027;color:#fff;
  display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:.76rem;
}
.rome-places-body{display:flex;flex-direction:column;min-width:0;}
.rome-places-body strong{font-size:.86rem;color:var(--navy-900);line-height:1.25;}
.rome-places-body span{font-size:.72rem;color:var(--ink-soft);margin-top:2px;}
.rome-places-italian{opacity:.75;}
.rome-popup-frise-btn{
  display:block;width:100%;margin-top:10px;padding:7px 10px;border-radius:8px;
  border:1.5px solid var(--line);background:var(--cream-2);color:var(--navy-900);
  font-family:var(--ff-sans);font-weight:600;font-size:.76rem;text-align:center;cursor:pointer;transition:.15s ease;
}
.rome-popup-frise-btn:hover{background:var(--gold-light);border-color:var(--gold-light);color:#241503;}

.timeline-frise-search{position:relative;max-width:420px;margin:6px 0 18px;}
.timeline-frise-search-icon{position:absolute;left:16px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--ink-soft);pointer-events:none;}
.timeline-frise-search input{
  width:100%;background:var(--cream-2);border:1.5px solid var(--line);border-radius:999px;
  padding:11px 16px 11px 40px;font:inherit;font-size:.9rem;color:var(--navy-900);outline:none;
  box-sizing:border-box;
}
.timeline-frise-search-results{
  position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:40;max-height:280px;overflow-y:auto;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-md);padding:6px;
}
.timeline-frise-search-item{
  display:block;width:100%;text-align:left;padding:9px 12px;border:none;background:none;border-radius:8px;
  font:inherit;font-size:.85rem;color:var(--navy-900);cursor:pointer;
}
.timeline-frise-search-item:hover{background:var(--cream-2);}
.timeline-frise-search-empty{padding:9px 12px;font-size:.85rem;color:var(--ink-soft);margin:0;}

.timeline-frise-wrap{position:relative;margin-top:0;display:flex;align-items:stretch;gap:8px;}
.timeline-frise-nav{
  flex:0 0 auto;width:40px;border-radius:var(--radius);border:1px solid var(--line);
  background:#fff;color:var(--navy-900);font-size:1.4rem;line-height:1;cursor:pointer;transition:.15s ease;
}
.timeline-frise-nav:hover{background:var(--cream-2);box-shadow:var(--shadow-sm);}
@media(max-width:600px){ .timeline-frise-nav{width:32px;font-size:1.15rem;} }

.timeline-frise{
  flex:1 1 auto;min-width:0;overflow-x:auto;-webkit-overflow-scrolling:touch;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);
}
.timeline-frise-track{position:relative;padding:20px 32px 24px;}
.timeline-frise-axis{position:relative;height:22px;margin-bottom:10px;border-bottom:1px solid var(--line);}
.timeline-frise-tick{
  position:absolute;bottom:6px;transform:translateX(-50%);font-size:.68rem;font-weight:700;
  color:var(--ink-soft);white-space:nowrap;
}
.timeline-frise-tick::after{content:"";position:absolute;left:50%;bottom:-6px;width:1px;height:6px;background:var(--line);}

/* Trois groupes (un par fil), chacun avec son liseré et un fond très léger ;
   à l'intérieur, chaque piste porte une étiquette collante à gauche, et
   réserve --lane-pad en haut pour elle (les barres et points démarrent
   dessous ; la hauteur des pistes d'événements est calculée par le JS). */
.timeline-frise-group{position:relative;z-index:1;border-left:3px solid;border-radius:0 10px 10px 0;padding:2px 0 2px;margin-bottom:6px;}
.timeline-frise-group-universelle{border-color:var(--brick);background:rgba(143,32,39,.035);}
.timeline-frise-group-eglise{border-color:var(--gold);background:rgba(198,138,46,.05);}
.timeline-frise-group-philippine{border-color:var(--navy-900);background:rgba(11,31,66,.035);}
.timeline-frise-lane{position:relative;--lane-pad:18px;margin-bottom:2px;}
.timeline-frise-lane-florence,.timeline-frise-lane-france,.timeline-frise-lane-empire{height:44px;}
.timeline-frise-lane-papes{height:46px;}
.timeline-frise-lane-periodes,.timeline-frise-lane-periodes-universelle,.timeline-frise-lane-periodes-eglise{height:70px;}
.timeline-frise-lane-title{position:sticky;left:10px;top:0;z-index:5;display:inline-flex;align-items:center;height:18px;margin:2px 0 0 10px;padding:0 8px;border-radius:999px;font-family:var(--ff-sans);font-size:.6rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;background:rgba(255,255,255,.9);box-shadow:0 1px 3px rgba(11,31,66,.12);height:16px;font-size:.58rem;margin-top:1px;}
.timeline-frise-group-universelle .timeline-frise-lane-title{color:#8f2027;}
.timeline-frise-group-eglise .timeline-frise-lane-title{color:#8a611f;}
.timeline-frise-group-philippine .timeline-frise-lane-title{color:var(--navy-900);}
.timeline-frise-gridline{position:absolute;top:32px;bottom:0;width:1px;background:rgba(11,31,66,.07);pointer-events:none;}
/* Le libellé d'une barre longue (pontificat, règne, période) reste visible
   tant que la barre traverse l'écran, au lieu de rester accroché à son bord
   gauche parti hors champ. */
.timeline-frise-pope-bar > span,.timeline-frise-florence-bar > span,.timeline-frise-france-bar > span,.timeline-frise-empire-bar > span,.timeline-frise-period-bar > span{position:sticky;left:12px;}

.timeline-frise-point{
  position:absolute;top:var(--lane-pad);transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:0;
  background:none;border:none;cursor:pointer;padding:0 4px;
}
.timeline-frise-point-body{display:flex;flex-direction:column;align-items:center;gap:3px;padding-top:4px;gap:2px;padding-top:3px;}
.timeline-frise-point-dot{width:16px;height:16px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1.5px var(--line);transition:transform .15s ease;width:13px;height:13px;}
.timeline-frise-philippine .timeline-frise-point-dot{background:var(--navy-900);}
.timeline-frise-eglise .timeline-frise-point-dot{background:var(--gold);}
.timeline-frise-universelle .timeline-frise-point-dot{background:var(--brick);}
.timeline-frise-point-year{font-size:.8rem;font-weight:700;color:var(--ink-soft);white-space:nowrap;font-size:.74rem;}
.timeline-frise-point-label{width:140px;font-size:.68rem;line-height:1.3;color:var(--ink-soft);text-align:center;white-space:normal;max-width:124px;font-size:.72rem;line-height:1.25;width:124px;}
.timeline-frise-point:hover .timeline-frise-point-dot,.timeline-frise-point:focus-visible .timeline-frise-point-dot{transform:scale(1.25);}

/* Vignette de détail : position:fixed calculée en JS par rapport au point
   cliqué (voir timeline-frise.js) — jamais rognée par le défilement
   horizontal de la frise, quelle que soit la piste. */
.timeline-frise-card{
  position:fixed;z-index:1100;width:240px;max-width:calc(100vw - 16px);
  background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-md);border:1px solid var(--line);
  padding:16px;text-align:left;
}
.timeline-frise-card img{width:100%;aspect-ratio:1/1.2;object-fit:cover;border-radius:8px;margin-bottom:12px;display:block;}
.timeline-frise-card strong{display:block;font-family:var(--ff-serif);font-size:1rem;color:var(--navy-900);padding-right:20px;}
.timeline-frise-card-dates{display:block;font-size:.74rem;color:var(--gold);font-weight:700;margin:2px 0 8px;}
.timeline-frise-card p{margin:0;font-size:.86rem;line-height:1.55;color:var(--ink-soft);}
.timeline-frise-card p+p{margin-top:8px;}
.timeline-frise-card.is-long{width:360px;max-height:calc(100vh - 24px);overflow-y:auto;}
.timeline-frise-card-close{
  position:absolute;top:10px;right:10px;width:22px;height:22px;border-radius:50%;border:none;
  background:var(--cream-2);color:var(--navy-900);font-size:.7rem;cursor:pointer;
}
.timeline-frise-card-map-btn{
  display:block;width:100%;margin-top:12px;padding:8px 10px;border-radius:8px;
  border:1.5px solid var(--line);background:var(--cream-2);color:var(--navy-900);
  font-family:var(--ff-sans);font-weight:600;font-size:.78rem;text-align:center;cursor:pointer;transition:.15s ease;
}
.timeline-frise-card-map-btn:hover{background:var(--gold-light);border-color:var(--gold-light);color:#241503;}

.timeline-frise-pope-bar{
  position:absolute;top:var(--lane-pad);height:30px;border-radius:6px;border:none;cursor:pointer;
  background:rgba(198,138,46,.2);color:#8a611f;font-family:var(--ff-sans);font-weight:700;font-size:.72rem;
  padding:0 10px;display:flex;align-items:center;transition:background .15s ease;
}
.timeline-frise-pope-bar:hover,.timeline-frise-pope-bar:focus-visible{background:rgba(198,138,46,.36);}
/* overflow:hidden lives on the label span, not the button — the button
   itself must stay overflow:visible so the click-to-open detail card
   (appended as its child) isn't clipped away and silently invisible. */
.timeline-frise-pope-bar > span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;}

/* Barres de règne côté histoire universelle (figures florentines, rois de
   France) : même principe que les papes, mais dans la teinte "histoire
   universelle" (brique) puisqu'elles ne concernent pas directement Philippe. */
.timeline-frise-florence-bar,.timeline-frise-france-bar,.timeline-frise-empire-bar{
  position:absolute;top:var(--lane-pad);height:28px;border-radius:6px;border:none;cursor:pointer;
  background:rgba(143,32,39,.15);color:#8f2027;font-family:var(--ff-sans);font-weight:700;font-size:.7rem;
  padding:0 10px;display:flex;align-items:center;transition:background .15s ease;
}
.timeline-frise-florence-bar:hover,.timeline-frise-florence-bar:focus-visible,
.timeline-frise-france-bar:hover,.timeline-frise-france-bar:focus-visible,
.timeline-frise-empire-bar:hover,.timeline-frise-empire-bar:focus-visible{background:rgba(143,32,39,.28);background:rgba(143,32,39,.14);}
.timeline-frise-florence-bar > span,.timeline-frise-france-bar > span,.timeline-frise-empire-bar > span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;}
/* Empereurs : bordure pointillée, troisième traitement de la même teinte. */
.timeline-frise-empire-bar{background:rgba(143,32,39,.06);border:1.5px dashed rgba(143,32,39,.45);}
/* Les rois de France en barre cerclée (fond blanc), pour ne pas les
   confondre avec les Médicis, en aplat juste au-dessus. */
.timeline-frise-france-bar{background:#fff;border:1.5px solid rgba(143,32,39,.45);}
.timeline-frise-france-bar:hover,.timeline-frise-france-bar:focus-visible{background:rgba(143,32,39,.1);}

/* Bandes de grandes périodes de la vie de Philippe (ex. la décennie de
   laïc à Rome) : même principe, teinte "histoire philippine" (bleu nuit). */
.timeline-frise-period-bar{
  position:absolute;top:var(--lane-pad);height:24px;border-radius:6px;border:none;cursor:pointer;
  background:rgba(11,31,66,.12);color:var(--navy-900);font-family:var(--ff-sans);font-weight:700;font-size:.7rem;
  padding:0 10px;display:flex;align-items:center;transition:background .15s ease;
}
.timeline-frise-period-bar:hover,.timeline-frise-period-bar:focus-visible{background:rgba(11,31,66,.22);}
.timeline-frise-period-universelle{background:rgba(143,32,39,.12);color:#8f2027;}
.timeline-frise-period-universelle:hover,.timeline-frise-period-universelle:focus-visible{background:rgba(143,32,39,.22);}
.timeline-frise-period-eglise{background:rgba(198,138,46,.16);color:#8a611f;}
.timeline-frise-period-eglise:hover,.timeline-frise-period-eglise:focus-visible{background:rgba(198,138,46,.28);}
.timeline-frise-period-bar > span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;}
.is-fullscreen{
  position:fixed !important;inset:0;z-index:1000 !important;width:100vw !important;height:100vh !important;
  border-radius:0;box-shadow:none;border:none;
}
body.map-fullscreen-lock{overflow:hidden;}
.map-fullscreen-btn{
  position:absolute;top:12px;right:12px;z-index:900;
  width:38px;height:38px;display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.95);border:1px solid var(--line);border-radius:8px;
  color:var(--navy-900);cursor:pointer;box-shadow:var(--shadow-sm);transition:.15s ease;
}
.map-fullscreen-btn:hover{background:#fff;box-shadow:var(--shadow-md);}
.map-fullscreen-btn svg{width:18px;height:18px;}
.timeline-frise-zoom .timeline-frise-fullscreen-btn{display:inline-flex;align-items:center;justify-content:center;padding:0;}
.timeline-frise-zoom .timeline-frise-fullscreen-btn svg{display:block;width:18px;height:18px;}
/* Frise en plein écran : le panneau (légende, recherche, frise, minimap)
   recouvre la page ; la frise prend toute la largeur et la hauteur restante
   défile verticalement si les pistes dépassent l'écran. */
.timeline-frise-panel.is-fullscreen{background:var(--cream);padding:10px 16px 8px;overflow:auto;display:flex;flex-direction:column;width:auto;margin-left:0;}
/* En plein écran, l'en-tête (légende, plage, recherche) est resserré au
   maximum pour laisser toute la hauteur aux trois fils. */
.timeline-frise-panel.is-fullscreen .timeline-frise-legend{margin:0 0 8px;}
.timeline-frise-panel.is-fullscreen .timeline-frise-keys-row{display:none;}
.timeline-frise-panel.is-fullscreen .timeline-frise-search{margin:0 0 8px;max-width:420px;}
@media(min-width:1200px){
  .timeline-frise-panel.is-fullscreen{position:fixed;}
  .timeline-frise-panel.is-fullscreen .timeline-frise-search{position:absolute;top:10px;right:170px;width:320px;margin:0;}
}
.timeline-frise-panel.is-fullscreen .timeline-frise-minimap{margin-top:8px;}
.timeline-frise-panel.is-fullscreen .timeline-frise-track{padding:12px 32px 12px;}
.timeline-frise-panel.is-fullscreen .timeline-frise-wrap{flex:1 1 auto;min-height:0;}
.timeline-frise-panel.is-fullscreen .timeline-frise{overflow:auto;}
@media(max-width:600px){ .timeline-frise-panel.is-fullscreen{padding:10px;} }

/* Galaxie de Philippe Néri (carte-rome.html) */
.neri-network-panel{position:relative;background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:16px 16px 20px;margin-top:16px;}
/* overflow:hidden seulement pendant la transition "plongée" (contient le
   zoom transitoire du plein écran de la scène) : en permanence, ça coupait
   le popover d'un nœud groupe dès qu'il se trouvait près du bord du panneau,
   rendant son bouton Déployer invisible et inatteignable. */
.neri-network-panel.is-containing{overflow:hidden;}
.neri-network-panel .timeline-frise-search{margin:10px 0 0;max-width:420px;}
.neri-network-panel.is-fullscreen{background:var(--cream);padding:14px 16px;display:flex;flex-direction:column;}
.neri-network-panel.is-fullscreen .neri-network-stage{flex:1 1 auto;min-height:0;}
/* Contrôles de zoom + plein écran, groupés en haut à droite. */
.neri-network-controls{position:absolute;top:12px;right:12px;z-index:900;display:flex;gap:6px;}
.neri-network-controls .map-fullscreen-btn{position:static;font-size:1.1rem;font-weight:700;line-height:1;}
.neri-network-stage{
  position:relative;width:100%;height:clamp(640px,82vh,920px);overflow:visible;cursor:grab;
  transition:transform .32s ease,opacity .32s ease;
  background:radial-gradient(circle at 50% 50%,rgba(198,138,46,.09),rgba(11,31,66,.04) 42%,transparent 68%);
  border-radius:12px;
}
.neri-network-stage.is-panning{cursor:grabbing;}
.neri-network-panel.is-fullscreen .neri-network-stage{height:auto;}
/* Transition "plongée dans la bulle" (voir animatedTransition dans le JS) :
   la scène zoome et s'efface sur le nœud d'origine, puis réapparaît une fois
   la nouvelle disposition calculée. */
.neri-network-stage.is-diving{transform:scale(3.4);opacity:0;}
.neri-network-stage.is-arriving{transition:none;transform:scale(.82);opacity:0;}
/* La "caméra" porte le panoramique/zoom (glisser + molette/boutons) ; les
   nœuds et les traits restent positionnés dans son repère logique interne,
   inchangé par le zoom (voir toScreen() dans le JS pour le popover, qui lui
   reste hors caméra pour ne pas être redimensionné). */
.neri-network-camera{position:absolute;inset:0;transform-origin:0 0;}
.neri-network-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}
.neri-network-edge{stroke-width:1.5;opacity:.45;transition:opacity .15s ease;}
.neri-network-edge.is-dimmed{opacity:.1;}
/* Lien direct entre deux personnes déjà reliées entre elles (pas seulement
   via le centre) : pointillé, pour se distinguer d'un coup d'œil des
   rayons qui partent tous de l'origine. */
.neri-network-edge.is-cross{stroke-width:1.75;opacity:.55;stroke-dasharray:5 4;}
.neri-network-node{position:absolute;display:flex;flex-direction:column;align-items:center;gap:6px;background:none;border:none;padding:0;cursor:pointer;}
.neri-network-node.center{z-index:3;pointer-events:none;transform:translate(-50%,-50%);}
.neri-network-node.satellite{
  transform:translate(-50%,-50%) translate(var(--flip-x,0px),var(--flip-y,0px));
  z-index:2;opacity:1;
  transition:opacity .35s ease,transform .48s cubic-bezier(.22,.68,.36,1);
}
.neri-network-node.satellite.is-dimmed{opacity:.25;}
/* La taille de chaque vignette est fixée nœud par nœud en JS via --size,
   proportionnellement à l'importance de la personne (voir sizeFor()). */
.neri-network-node img,.neri-network-node .neri-network-initials,.neri-network-node .neri-network-cloud{
  width:var(--size,64px);height:var(--size,64px);border-radius:50%;object-fit:cover;
  /* La plupart des portraits sont des gravures/tableaux en buste (format
     vertical) où la tête est proche du haut : centrer le cadrage (défaut
     CSS) coupe le visage. On cale donc sur le haut de l'image. */
  object-position:top center;
  border:3px solid var(--node-color,var(--navy-900));background:#fff;box-shadow:var(--shadow-sm);
  transition:transform .18s ease,box-shadow .18s ease;
}
.neri-network-initials{display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:700;color:var(--node-color,var(--navy-900));font-size:.95rem;}
.neri-network-node.center img{border-color:var(--gold);box-shadow:0 0 0 6px rgba(198,138,46,.14),var(--shadow-md);}
.neri-network-node.satellite:hover img,.neri-network-node.satellite:hover .neri-network-initials,.neri-network-node.satellite:hover .neri-network-cloud,
.neri-network-node.satellite:focus-visible img,.neri-network-node.satellite:focus-visible .neri-network-initials,.neri-network-node.satellite:focus-visible .neri-network-cloud{
  transform:scale(1.08);box-shadow:0 0 0 4px rgba(11,31,66,.1),var(--shadow-md);
}
.neri-network-node.is-selected img,.neri-network-node.is-selected .neri-network-initials,.neri-network-node.is-selected .neri-network-cloud{box-shadow:0 0 0 4px rgba(198,138,46,.35),var(--shadow-md);}
.neri-network-node.is-expanded .neri-network-cloud{border-style:solid;}
/* Résultat de recherche : grossi et cerné d'un halo doré pour sauter aux
   yeux immédiatement, surtout quand la recherche renvoie plusieurs
   personnes à la fois (ex. un prénom partagé). */
.neri-network-node.is-search-match img,
.neri-network-node.is-search-match .neri-network-initials,
.neri-network-node.is-search-match .neri-network-cloud{
  transform:scale(1.38);
  box-shadow:0 0 0 5px rgba(198,138,46,.55),0 0 22px rgba(198,138,46,.5),var(--shadow-md);
  border-color:var(--gold);
}
.neri-network-node.is-search-match .neri-network-node-label{
  opacity:1;pointer-events:auto;background:var(--gold);color:#fff;font-weight:700;
}
/* Étiquette cliquable d'une nébuleuse de catégorie : ne remplace jamais les
   vignettes (toutes restent visibles avec leur nom), sert juste à "mettre au
   point" — cliquer agrandit son secteur et ses vignettes, resserre les
   autres catégories sans les faire disparaître. */
.neri-network-category-tag{
  position:absolute;transform:translate(-50%,-50%) translate(var(--flip-x,0px),var(--flip-y,0px));
  background:#fff;border:2px solid var(--node-color,var(--navy-900));color:var(--node-color,var(--navy-900));
  font-family:var(--ff-sans);font-weight:700;font-size:.72rem;letter-spacing:.01em;
  padding:6px 14px;border-radius:999px;cursor:pointer;white-space:nowrap;
  box-shadow:var(--shadow-sm);z-index:1;opacity:.85;
  transition:opacity .35s ease,transform .48s cubic-bezier(.22,.68,.36,1),background-color .15s ease,color .15s ease;
}
.neri-network-category-tag:hover{opacity:1;}
.neri-network-category-tag.is-focused{background:var(--node-color,var(--navy-900));color:#fff;opacity:1;box-shadow:var(--shadow-md);}
/* Sous-nœuds : membres d'un groupe déplié, en plus petit autour de leur nœud. */
.neri-network-node.satellite.sub{z-index:1;}
.neri-network-node.satellite.sub .neri-network-node-label{font-size:.6rem;max-width:78px;padding:1px 5px;}
.neri-network-edge.is-sub{stroke-width:1;opacity:.3;}
/* Nœud "nuage" (groupe de personnes ou nébuleuse de catégorie) : petit amas
   de cercles superposés dans un contour pointillé, pour signaler avant même
   le clic qu'il y a plusieurs personnes derrière ce nœud. */
.neri-network-cloud{position:relative;border-style:dashed;}
.neri-network-cloud span{position:absolute;border-radius:50%;background:var(--node-color,var(--navy-900));opacity:.75;}
.neri-network-cloud span:nth-child(1){width:34%;height:34%;top:19%;left:19%;}
.neri-network-cloud span:nth-child(2){width:28%;height:28%;top:22%;right:16%;}
.neri-network-cloud span:nth-child(3){width:25%;height:25%;bottom:16%;left:34%;}
.neri-network-node-label{font-size:.72rem;font-weight:600;color:var(--ink);background:rgba(255,255,255,.9);padding:2px 7px;border-radius:20px;white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis;}
.neri-network-node.center .neri-network-node-label{font-size:.8rem;background:var(--navy-900);color:#fff;}
/* Un nœud "groupe" ou "nébuleuse" affiche son nom en entier (ex. la
   compagnie de dames), quitte à passer sur plusieurs lignes, plutôt que de
   le tronquer. */
.neri-network-node.is-group .neri-network-node-label{white-space:normal;max-width:150px;line-height:1.2;border-radius:10px;text-align:center;}
/* Nom masqué par défaut pour les figures secondaires (voir renderCluster) :
   la photo reste toujours visible, le nom apparaît au survol/focus clavier,
   ou automatiquement dès que la catégorie de la personne est mise au point. */
.neri-network-node.label-collapsed .neri-network-node-label{opacity:0;pointer-events:none;transition:opacity .15s ease;}
.neri-network-node.label-collapsed:hover,
.neri-network-node.label-collapsed:focus-visible{z-index:6 !important;}
.neri-network-node.label-collapsed:hover .neri-network-node-label,
.neri-network-node.label-collapsed:focus-visible .neri-network-node-label{opacity:1;pointer-events:auto;}
/* Le nom complet (prénom + nom de famille) doit toujours être lisible au
   survol, même quand la vignette est assez serrée pour que son étiquette
   soit normalement coupée (ex. "Giovanni Pierlui…") : au survol/focus, on
   annule la troncature pour révéler l'intégralité du nom, et on remonte le
   nœud au-dessus de ses voisins pour que l'étiquette élargie ne soit pas
   recouverte. */
.neri-network-node:hover,
.neri-network-node:focus-visible{z-index:7 !important;}
.neri-network-node:hover .neri-network-node-label,
.neri-network-node:focus-visible .neri-network-node-label{max-width:none;overflow:visible;text-overflow:clip;}
.neri-network-breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:10px 0 0;}
.neri-network-breadcrumb-back,.neri-network-breadcrumb-item{background:none;border:none;font-size:.8rem;color:var(--ink-soft);cursor:pointer;padding:2px 4px;}
.neri-network-breadcrumb-back{font-weight:600;color:var(--navy-900);}
.neri-network-breadcrumb-item:not(:last-child)::after{content:'›';margin-left:6px;color:var(--ink-soft);}
.neri-network-breadcrumb-item.is-current{color:var(--navy-900);font-weight:600;cursor:default;}
/* Piste des groupes actuellement dépliés "en bulle", avec bouton de sortie. */
.neri-network-zoom-trail{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 0;}
.neri-network-zoom-pill{display:inline-flex;align-items:center;gap:8px;background:rgba(11,31,66,.06);border:1px solid var(--line);border-radius:20px;padding:4px 6px 4px 12px;font-size:.78rem;color:var(--ink-soft);}
.neri-network-zoom-pill button{background:var(--navy-900);color:#fff;border:none;border-radius:16px;padding:4px 10px;font-size:.72rem;font-weight:600;cursor:pointer;}
.neri-network-zoom-pill button:hover{background:var(--brick,#8f2027);}
/* Popover ancré sur un nœud "groupe" : reste dans la même vue, jamais de
   fenêtre séparée (voir renderPopover dans philippe-neri-network.js). */
.neri-network-popover{
  position:absolute;left:0;top:0;transform:translate(-50%,calc(-100% - 14px));
  width:240px;max-width:70vw;background:#fff;border:1px solid var(--line);border-radius:12px;
  padding:14px 16px;box-shadow:var(--shadow-md);z-index:10;text-align:left;
}
.neri-network-popover::after{content:'';position:absolute;left:50%;bottom:-7px;transform:translateX(-50%);border-width:7px 7px 0;border-style:solid;border-color:#fff transparent transparent;}
/* Si le nœud est trop près du haut, le popover s'affiche sous lui plutôt
   qu'au-dessus, pour rester dans le cadre visible. */
.neri-network-popover.flip-below{transform:translate(-50%,14px);}
.neri-network-popover.flip-below::after{top:-7px;bottom:auto;border-width:0 7px 7px;border-color:transparent transparent #fff;}
.neri-network-popover h4{margin:0 0 4px;font-family:var(--font-display);font-size:1rem;color:var(--navy-900);}
.neri-network-popover-relation{color:var(--gold-dark,#8a611f);font-weight:600;font-size:.75rem;margin:0 0 6px;}
.neri-network-popover-text{font-size:.8rem;color:var(--ink-soft);margin:0 0 6px;}
.neri-network-popover-source{font-size:.7rem;color:var(--ink-soft);font-style:italic;margin:0 0 10px;}
.neri-network-popover-btn{width:100%;font-size:.85rem;padding:8px 10px;}
/* Fiche personne (réutilise la base .song-modal) : z-index relevé pour
   passer au-dessus du panneau de galaxie en plein écran (z-index 1000). */
.neri-modal{z-index:1100;}
.neri-modal-body{display:flex;gap:22px;align-items:flex-start;margin-bottom:4px;}
.neri-modal-photo{flex:0 0 auto;}
.neri-modal-photo img,.neri-modal-photo .neri-network-initials,.neri-modal-photo .neri-network-cloud{
  width:96px;height:96px;border-radius:50%;object-fit:cover;object-position:top center;
  border:3px solid var(--navy-900);box-shadow:var(--shadow-sm);background:#fff;display:flex;
}
.neri-modal-photo .neri-network-initials{align-items:center;justify-content:center;font-family:var(--font-display);font-weight:700;color:var(--navy-900);font-size:1.3rem;}
.neri-modal-info{flex:1 1 auto;min-width:0;}
@media(max-width:600px){
  .neri-modal-body{flex-direction:column;align-items:center;text-align:center;gap:12px;}
}
.neri-modal .neri-modal-years{color:var(--ink-soft);font-size:.85rem;margin:0 0 8px;}
.neri-modal .neri-modal-relation{color:var(--gold-dark,#8a611f);font-weight:600;font-size:.85rem;margin:0 0 10px;}
.neri-modal .neri-modal-text{color:var(--ink-soft);margin:0 0 10px;}
.neri-modal .neri-modal-source{font-size:.8rem;color:var(--ink-soft);font-style:italic;margin:0 0 16px;}
.neri-modal .neri-modal-explore-btn{width:100%;}
.neri-modal .neri-modal-explore-btn:disabled{opacity:.5;cursor:not-allowed;}
/* Liste extensible de personnalités oratoriennes hors galaxie (carte-rome.html) :
   même vocabulaire visuel que les fiches de la galaxie (année, relation en
   doré, texte, source), en cartes statiques plutôt qu'en nœuds de graphe. */
.oratory-figures-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;margin-top:20px;}
.oratory-figure-card{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:20px 22px;box-shadow:var(--shadow-sm);}
.oratory-figure-card h3{margin:0 0 4px;font-family:var(--font-display);font-size:1.1rem;color:var(--navy-900);}
.oratory-figure-years{color:var(--ink-soft);font-size:.85rem;margin:0 0 8px;}
.oratory-figure-relation{color:var(--gold-dark,#8a611f);font-weight:600;font-size:.85rem;margin:0 0 10px;}
.oratory-figure-card p{color:var(--ink-soft);margin:0 0 10px;}
.oratory-figure-source{font-size:.8rem;color:var(--ink-soft);font-style:italic;margin:0 !important;}
/* Repère temporaire quand la recherche de la galaxie amène ici (figure hors
   graphe, ex. Bacci) : attire l'œil un instant puis s'efface. */
.oratory-figure-card.is-search-highlight{
  border-color:var(--gold);box-shadow:0 0 0 3px rgba(198,138,46,.3),var(--shadow-md);
  transition:box-shadow .3s ease,border-color .3s ease;
}
@media(max-width:600px){
  .neri-network-stage{height:420px;}
  .neri-network-node-label{font-size:.65rem;max-width:80px;}
  .neri-network-controls{top:8px;right:8px;}
  .neri-network-controls .map-fullscreen-btn{width:32px;height:32px;}
}
.map-scroll-hint{
  position:absolute;left:50%;bottom:16px;transform:translate(-50%,6px);
  background:rgba(11,31,66,.9);color:#fff;font-family:var(--ff-sans);font-size:.78rem;font-weight:600;
  padding:8px 16px;border-radius:999px;box-shadow:var(--shadow-sm);pointer-events:none;
  opacity:0;transition:opacity .2s ease,transform .2s ease;z-index:500;white-space:nowrap;
}
.map-scroll-hint.is-visible{opacity:1;transform:translate(-50%,0);}

.map-table-wrap{overflow-x:auto;margin-top:12px;}
.map-table-scroll-hint{display:none;}
.oratoires-table{
  width:100%;border-collapse:collapse;background:#fff;border-radius:var(--radius);
  overflow:hidden;box-shadow:var(--shadow-sm);font-size:.82rem;
}
.oratoires-table thead th{
  background:var(--navy-900);color:#fff;text-align:left;padding:0;
  font-family:var(--ff-sans);font-weight:700;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;
  white-space:nowrap;
}
.oratoires-table thead th:last-child{padding:10px 14px;}
.th-sort{
  display:inline-flex;align-items:center;gap:5px;width:100%;padding:10px 14px;
  background:none;border:none;color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;
  cursor:pointer;transition:background .15s ease;
}
.th-sort:hover{background:rgba(255,255,255,.08);}
.th-sort-icon{width:11px;height:11px;fill:currentColor;opacity:.4;transition:opacity .15s ease,transform .15s ease;}
.th-sort.is-asc .th-sort-icon{opacity:1;color:var(--gold-light);}
.th-sort.is-desc .th-sort-icon{opacity:1;color:var(--gold-light);transform:rotate(180deg);}
.oratoires-table td{padding:9px 14px;border-bottom:1px solid var(--line);color:var(--ink-soft);vertical-align:middle;}
.oratoires-table tbody tr.row-even{background:var(--navy-100);}
.oratoires-table tbody tr{scroll-margin-top:150px;}
.oratoires-table tbody tr:target{background:var(--gold-light);}
.oratoires-table td:first-child{font-weight:600;color:var(--navy-900);white-space:nowrap;}
.oratoires-table td:nth-child(3){max-width:170px;white-space:normal;}
.oratoires-table td em{display:block;font-style:italic;font-size:.9em;margin-top:2px;}
.status-tag{
  display:inline-block;white-space:nowrap;font-size:.68rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.03em;padding:3px 9px;border-radius:999px;
}
.status-tag.status-congregation{background:rgba(11,31,66,.1);color:var(--navy-900);}
.status-tag.status-formation{background:rgba(198,138,46,.15);color:#8a611f;}
.status-tag.status-fondation{background:rgba(143,32,39,.1);color:var(--brick);}
.status-tag.status-disparu{background:rgba(63,122,82,.12);color:#2f5f3f;}
/* Lignes des oratoires disparus (générées par carte-oratoires.js) :
   masquées tant que le bouton d'ajout au tableau n'est pas actif. */
.oratoires-table tbody:not(.show-disparu) tr.row-disparu{display:none;}
.oratoires-table tr.row-disparu td{color:var(--ink-soft);}
/* Bouton « i » et volet de notice sous la ligne. */
.row-info-btn{
  display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin-left:8px;
  border-radius:50%;border:1.5px solid var(--line);background:#fff;color:var(--ink-soft);
  font-family:var(--ff-serif);font-style:italic;font-weight:700;font-size:.72rem;line-height:1;cursor:pointer;
  vertical-align:middle;transition:.15s ease;
}
.row-info-btn:hover,.row-info-btn[aria-expanded="true"]{background:var(--navy-900);border-color:var(--navy-900);color:#fff;}
.oratoires-table tr.is-open td{border-bottom:none;}
.oratoires-table tr.row-detail td{
  padding:4px 18px 16px 18px;background:var(--cream-2);color:var(--navy-900);font-size:.84rem;line-height:1.6;
  white-space:normal;font-weight:400;max-width:0;
}
.oratoires-table tr.row-detail p{margin:6px 0 0;}
.oratoires-table tr.row-detail .row-detail-saints a{color:var(--gold);font-weight:700;text-decoration:underline;}
.oratoires-table tr.row-detail .row-detail-source a{color:var(--ink-soft);text-decoration:underline;font-size:.78rem;}
.map-table-toggle-row{text-align:center;margin:0 0 -14px;}
.map-table-toggle{
  display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:999px;
  border:1px solid var(--line);background:#fff;color:var(--navy-900);
  font-family:var(--ff-sans);font-weight:600;font-size:.82rem;cursor:pointer;transition:.15s ease;
}
.map-table-toggle:hover{background:var(--cream-2);box-shadow:var(--shadow-sm);}
.map-table-toggle.active{background:rgba(63,122,82,.12);border-color:rgba(63,122,82,.4);color:#2f5f3f;}
.map-table-toggle .dot{width:9px;height:9px;border-radius:50%;background:#3f7a52;flex-shrink:0;}
.map-table-socials{display:inline-flex;align-items:center;gap:6px;}
.map-table-socials a{display:inline-flex;width:15px;height:15px;}
.map-table-socials svg{width:15px;height:15px;}
.js-locate-btn.city-name-btn{
  display:inline;border:0;background:none;padding:0;margin:0;cursor:pointer;
  font:inherit;font-weight:600;color:var(--navy-900);text-align:left;
}
.js-locate-btn.city-name-btn:hover{color:var(--brick);text-decoration:underline;}

@media(max-width:700px){
  /* Below 700px the table becomes a stack of cards instead of a
     horizontally-scrolling grid: on narrow screens a scrollable table
     forces the reader to drag sideways to see the status or links, and
     fixed column widths make long country/status text wrap mid-word.
     Cards need no horizontal scroll and each field gets full-width room
     to wrap normally. The <thead> sort buttons stay real <th>/<button>
     elements (the JS in carte-oratoires.js queries `th .th-sort`), just
     restyled as a pill toolbar above the cards. */
  .map-table-wrap{overflow-x:visible;}
  .map-table-scroll-hint{display:none;}
  .oratoires-table{display:block;width:100%;background:none;box-shadow:none;border-radius:0;font-size:.85rem;}

  .oratoires-table thead{display:block;background:var(--navy-900);border-radius:999px;padding:5px;margin-bottom:14px;}
  .oratoires-table thead tr{display:flex;flex-wrap:wrap;gap:2px;}
  .oratoires-table thead th{display:block;background:none;padding:0;flex:0 0 auto;}
  .oratoires-table thead th:last-child{display:none;}
  .th-sort{width:auto;padding:7px 12px;border-radius:999px;font-size:.68rem;}

  .oratoires-table tbody{display:block;}
  .oratoires-table tbody tr{
    display:grid;grid-template-columns:auto auto 1fr auto;align-items:start;
    row-gap:6px;column-gap:8px;
    background:#fff;border-radius:12px;box-shadow:var(--shadow-sm);
    padding:12px 14px;margin-bottom:10px;
  }
  .oratoires-table tbody tr[hidden]{display:none;}
  .oratoires-table tbody tr.row-even{background:#fff;}
  .oratoires-table tbody tr:target,
  .oratoires-table tbody tr.is-highlighted{background:var(--gold-light) !important;}

  .oratoires-table td{border:none;padding:0;color:var(--ink-soft);white-space:normal;word-break:normal;max-width:none;}
  .oratoires-table td:first-child{
    grid-column:1/4;grid-row:1;min-width:0;font-weight:700;color:var(--navy-900);font-size:.95rem;
    white-space:normal;display:flex;flex-wrap:wrap;align-items:center;column-gap:6px;row-gap:4px;
  }
  .oratoires-table td:nth-child(5){grid-column:4;grid-row:1;justify-self:end;text-align:right;}
  .oratoires-table td:nth-child(2){grid-column:1;grid-row:2;font-size:.8rem;}
  .oratoires-table td:nth-child(3){grid-column:2;grid-row:2;font-size:.8rem;}
  .oratoires-table td:nth-child(3)::before{content:"· ";color:var(--line);}
  .oratoires-table td:nth-child(4){grid-column:3/5;grid-row:2;font-size:.8rem;}
  .oratoires-table td:nth-child(4)::before{content:"– ";color:var(--line);}
  .oratoires-table thead th:nth-child(6){display:none;}
  .oratoires-table td.cell-closed.is-empty{display:none;}
  .oratoires-table td:nth-child(6){display:none;}
  .oratoires-table td:nth-child(7){grid-column:1/5;grid-row:3;}
  .oratoires-table td:nth-child(7):not(:has(.map-table-socials > *)){display:none;}
  .oratoires-table tbody tr.row-detail{display:block;margin:-16px 0 10px;border-radius:0 0 12px 12px;background:var(--cream-2);box-shadow:none;}
  .oratoires-table tbody tr.row-detail[hidden]{display:none;}
  .oratoires-table tr.row-detail td{font-weight:400;font-size:.84rem;color:var(--navy-900);max-width:none;padding:8px 14px 14px;}

  .map-table-socials{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-top:8px;border-top:1px solid var(--line);}
  .map-table-socials a{width:18px;height:18px;}
  .map-table-socials svg{width:18px;height:18px;}
}

.oratoire-dot{background:none;border:none;}
.oratoire-dot span{
  display:block;width:100%;height:100%;border-radius:50%;
  border:2px solid #fff;box-shadow:0 1px 4px rgba(11,31,66,.4);
}
.oratoire-dot-highlight span{border-width:3px;box-shadow:0 2px 8px rgba(143,32,39,.6);}
.oratoire-cluster{background:none;border:none;}
.oratoire-cluster span{
  display:flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:50%;
  background:var(--navy-900);color:#fff;font-family:var(--ff-sans);font-weight:800;font-size:12px;
  border:2px solid #fff;box-shadow:0 2px 6px rgba(11,31,66,.5);cursor:pointer;
}
.oratoire-cluster:hover span{background:var(--brick);}
.oratoire-label{
  background:rgba(255,255,255,.92);color:var(--navy-900);border:1px solid var(--line);
  font-family:var(--ff-sans);font-weight:700;font-size:.68rem;padding:2px 7px;border-radius:5px;
  box-shadow:0 1px 4px rgba(11,31,66,.18);white-space:nowrap;
}
.oratoire-label:before{border-top-color:var(--line) !important;}
.oratoire-tooltip{
  background:var(--brick);color:#fff;border:none;font-family:var(--ff-sans);font-weight:700;
  font-size:.72rem;padding:3px 9px;border-radius:6px;box-shadow:var(--shadow-sm);
}
.oratoire-tooltip::before{border-top-color:var(--brick);}

.leaflet-popup-content-wrapper{border-radius:10px;}
.leaflet-popup-content{margin:12px 14px;font-family:var(--ff-sans);}
.oratoire-popup h4{font-family:var(--ff-serif);font-size:.95rem;margin:0 0 2px;color:var(--navy-900);}
.oratoire-popup p{margin:0 0 4px;color:var(--ink-soft);font-size:.8rem;}
.oratoire-popup-italian{font-size:.72rem !important;color:var(--ink-soft);opacity:.8;margin:0 0 6px !important;}
.oratoire-popup .cat-tag{
  display:inline-block;margin-top:4px;font-size:.64rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.03em;padding:3px 9px;border-radius:999px;
}
.oratoire-popup-source{font-size:.7rem !important;}
.oratoire-popup-source a{color:var(--ink-soft);text-decoration:underline;}
.oratoire-popup-saints{font-size:.72rem !important;}
.oratoire-popup-saints a{color:var(--gold);font-weight:700;text-decoration:underline;}
.oratoire-popup-link{margin:8px 0 0 !important;}
.oratoire-popup-socials{display:inline-flex;align-items:center;gap:9px;}
.oratoire-popup-socials a{
  display:inline-flex;align-items:center;justify-content:center;
  width:28px;height:28px;transition:transform .15s ease;
}
.oratoire-popup-socials a:hover{transform:translateY(-2px);}
.oratoire-popup-socials a[aria-label="Site internet"]{
  border-radius:50%;background:var(--navy-900);color:#fff;
  box-shadow:0 1px 4px rgba(11,31,66,.35);
}
.oratoire-popup-socials a[aria-label="Site internet"] svg{width:16px;height:16px;fill:none;}
.oratoire-popup-socials a[aria-label="Facebook"] svg,
.oratoire-popup-socials a[aria-label="Instagram"] svg,
.oratoire-popup-socials a[aria-label="YouTube"] svg{width:28px;height:28px;}
.oratoire-popup-socials a[aria-label="X"]{
  border-radius:50%;background:#000;color:#fff;
  box-shadow:0 1px 4px rgba(0,0,0,.35);
}
.oratoire-popup-socials a[aria-label="X"] svg{width:14px;height:14px;fill:currentColor;}
.oratoire-popup-socials a[aria-label="Bluesky"] svg{width:28px;height:28px;}
.oratoire-popup-socials a[aria-label="Flickr"] svg{width:28px;height:28px;}

.marker-cluster{border-radius:50%;}
.marker-cluster div{
  border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-family:var(--ff-sans);font-weight:700;font-size:.72rem;color:#fff;
  width:100%;height:100%;
}
.marker-cluster-congregation{background:rgba(11,31,66,.35);}
.marker-cluster-congregation div{background:rgba(11,31,66,.85);}
.marker-cluster-formation{background:rgba(198,138,46,.35);}
.marker-cluster-formation div{background:rgba(198,138,46,.9);}
.marker-cluster-fondation{background:rgba(143,32,39,.35);}
.marker-cluster-fondation div{background:rgba(143,32,39,.9);}
.marker-cluster-disparu{background:rgba(63,122,82,.35);}
.marker-cluster-disparu div{background:rgba(63,122,82,.9);}

/* Citation du jour (page Ressources oratoriennes uniquement) */
.citation-jour-block{margin:14px 0 4px;border-left:3px solid var(--gold);padding:4px 0 4px 18px;}
.citation-jour-block .citation-jour-date{display:block;margin:0 0 6px;font-family:var(--ff-sans);font-weight:700;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);}
.citation-jour-block .citation-jour-text{margin:0;font-family:var(--ff-serif);font-style:italic;font-size:1.02rem;line-height:1.6;color:var(--navy-900);}
.citation-jour-block .citation-jour-text::before{content:"« ";}
.citation-jour-block .citation-jour-text::after{content:" »";}
.figure-credit{font-size:.8rem;color:var(--ink-soft);margin:6px 0 0;}
.pdf-highlight-link{font-weight:700;}

/* Maximes de saint Philippe Néri — accès par code */
.access-gate{
  min-height:60vh;display:flex;align-items:center;justify-content:center;padding:60px 20px;
  background:var(--cream);
}
.access-gate[hidden]{display:none;}
.access-gate-panel{
  max-width:420px;width:100%;text-align:center;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow-md);padding:40px 32px;
}
.access-gate-panel h2{margin:6px 0 12px;font-size:1.4rem;}
.access-gate-panel p{color:var(--ink-soft);font-size:.92rem;margin-bottom:20px;}
.access-gate-panel form{display:flex;gap:10px;}
.access-gate-panel input{
  flex:1;min-width:0;border:1.5px solid var(--line);border-radius:8px;padding:11px 14px;
  font:inherit;font-size:1rem;text-align:center;letter-spacing:.1em;
}
.access-gate-error{color:var(--brick);font-size:.85rem;margin:14px 0 0;}

/* Gated links (e.g. sheet music) opened from an otherwise public page */
.gated-link-modal{
  position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;
  background:rgba(6,15,42,.55);padding:20px;
}
.gated-link-modal[hidden]{display:none;}
.gated-link-modal-panel{position:relative;}
.gated-link-modal-close{
  position:absolute;top:14px;right:14px;width:28px;height:28px;border:0;background:none;
  color:var(--ink-soft);font-size:1rem;cursor:pointer;border-radius:50%;transition:.2s;
}
.gated-link-modal-close:hover{background:var(--cream-2);color:var(--navy-900);}

/* Recensement des œuvres d'art représentant saint Philippe Néri */
.oeuvres-legend{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:0 0 20px;}
.oeuvres-legend button{
  display:inline-flex;align-items:center;gap:8px;
  padding:8px 16px;border-radius:999px;border:1.5px solid var(--line);
  background:#fff;font-family:var(--ff-sans);font-weight:600;font-size:.82rem;color:var(--ink-soft);
  cursor:pointer;transition:opacity .2s ease,box-shadow .2s ease;
}
.oeuvres-legend button .dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;}
.oeuvres-legend button[data-type="peinture"] .dot{background:var(--navy-900);}
.oeuvres-legend button[data-type="fresque"] .dot{background:var(--brick);}
.oeuvres-legend button[data-type="sculpture"] .dot{background:var(--gold);}
.oeuvres-legend button[data-type="dessin"] .dot{background:#3f7a52;}
.oeuvres-legend button[data-type="gravure"] .dot{background:#6b5ca5;}
.oeuvres-legend button[data-type="objet"] .dot{background:#8f6b4a;}
.oeuvres-legend button.active{color:var(--navy-900);box-shadow:var(--shadow-sm);}
.oeuvres-legend button:not(.active){opacity:.45;}

.oeuvres-search{max-width:520px;margin:0 auto 6px;}
.oeuvres-count{text-align:center;margin:0 0 20px;font-size:.78rem;font-weight:600;color:var(--ink-soft);}

.oeuvres-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px;
}
.oeuvres-empty{grid-column:1/-1;text-align:center;color:var(--ink-soft);padding:40px 0;}
/* Galerie des gravures de la vie du saint : planches verticales, légende
   courte sous chacune. */
.vie-gravures-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:18px;margin-top:22px;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;}
.vie-gravure{margin:0;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;}
.vie-gravure-img{display:block;width:100%;aspect-ratio:3/4;overflow:hidden;background:var(--cream-2);border:none;padding:0;cursor:zoom-in;}
.vie-gravure-img img{width:100%;height:100%;object-fit:cover;object-position:top;display:block;transition:transform .3s ease;}
.vie-gravure-img:hover img{transform:scale(1.04);}
.vie-gravure figcaption{padding:12px 14px 14px;display:flex;flex-direction:column;gap:4px;}
.vie-gravure figcaption strong{font-family:var(--ff-serif);font-size:.92rem;color:var(--navy-900);line-height:1.3;}
.vie-gravure figcaption span{font-size:.78rem;line-height:1.5;color:var(--ink-soft);}
.oeuvre-card{
  display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow-sm);overflow:hidden;
}
/* Image entière et aussi grande que possible : pleine largeur de la carte,
   hauteur naturelle de l'œuvre — jamais recadrée, jamais réduite dans un
   cadre fixe. Les cartes d'une même rangée n'ont donc pas toutes la même
   hauteur, c'est voulu. */
.oeuvre-card-img{
  display:block;width:100%;overflow:hidden;background:var(--cream-2);
  border:none;padding:0;cursor:zoom-in;
}
.oeuvre-card-img img{width:100%;height:auto;display:block;transition:transform .3s ease;}
.oeuvre-card-img:hover img{transform:scale(1.02);}
/* Les planches de la vie du saint gardent leur format vertical recadré. */
.oeuvre-card-img.vie-gravure-img{aspect-ratio:3/4;}
.oeuvre-card-img.vie-gravure-img img{height:100%;object-fit:cover;object-position:top;}

/* Visionneuse : image à gauche, notice à droite, flèches de part et d'autre. */
.oeuvres-lightbox{
  position:fixed;inset:0;z-index:1000;background:rgba(6,12,24,.9);
  display:flex;align-items:center;justify-content:center;padding:28px 84px;
  animation:oeuvres-lightbox-in .2s ease;
}
@keyframes oeuvres-lightbox-in{from{opacity:0;}to{opacity:1;}}
.oeuvres-lightbox-box{
  display:grid;grid-template-columns:minmax(0,1fr) 400px;width:min(1240px,100%);height:min(86vh,900px);
  background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.55);
  animation:oeuvres-lightbox-pop .25s cubic-bezier(.2,.8,.2,1);
}
@keyframes oeuvres-lightbox-pop{from{transform:scale(.96);opacity:0;}to{transform:none;opacity:1;}}
.oeuvres-lightbox-stage{min-width:0;min-height:0;background:#0d1526;display:flex;align-items:center;justify-content:center;padding:28px;}
.oeuvres-lightbox-stage img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;box-shadow:0 12px 40px rgba(0,0,0,.6);}
.oeuvres-lightbox-panel{
  min-height:0;overflow:auto;box-sizing:border-box;border-left:1px solid var(--line);
  padding:30px 32px 26px;display:flex;flex-direction:column;gap:8px;background:#fff;
}
.oeuvres-lightbox-counter{font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--brick);background:var(--navy-100);border-radius:999px;padding:4px 10px;align-self:flex-start;}
.oeuvres-lightbox-panel h3{font-family:var(--ff-serif);font-size:1.35rem;line-height:1.25;color:var(--navy-900);margin:6px 0 2px;}
.oeuvres-lightbox-panel .oeuvre-card-meta{margin:0;}
.oeuvres-lightbox-panel .oeuvre-card-place{margin:0 0 6px;padding-bottom:12px;border-bottom:1px solid var(--line);}
.oeuvres-lightbox-panel .oeuvre-card-text{font-size:.93rem;line-height:1.65;text-align:left;}
.oeuvres-lightbox-hint{margin:auto 0 0;padding-top:14px;font-size:.7rem;color:var(--ink-soft);}
.oeuvres-lightbox-close{
  position:fixed;top:18px;right:22px;width:42px;height:42px;border-radius:50%;border:none;z-index:2;
  background:rgba(255,255,255,.16);color:#fff;font-size:1rem;cursor:pointer;transition:background .15s ease;
}
.oeuvres-lightbox-close:hover{background:var(--brick);}
.oeuvres-lightbox-nav{
  position:fixed;top:50%;transform:translateY(-50%);width:52px;height:52px;border-radius:50%;border:none;z-index:2;
  background:rgba(255,255,255,.16);color:#fff;font-size:1.9rem;line-height:1;cursor:pointer;transition:background .15s ease;
}
.oeuvres-lightbox-nav:hover{background:var(--brick);}
.oeuvres-lightbox-prev{left:18px;}
.oeuvres-lightbox-next{right:18px;}
body.oeuvres-lightbox-open{overflow:hidden;}
@media(max-width:1100px){ .oeuvres-lightbox-box{grid-template-columns:minmax(0,1fr) 340px;} .oeuvres-lightbox{padding:20px 72px;} }
@media(max-width:820px){
  .oeuvres-lightbox{padding:56px 10px 72px;align-items:stretch;}
  .oeuvres-lightbox-box{grid-template-columns:1fr;grid-template-rows:minmax(0,46%) minmax(0,1fr);height:100%;border-radius:14px;}
  .oeuvres-lightbox-stage{padding:14px;}
  .oeuvres-lightbox-panel{border-left:0;border-top:1px solid var(--line);padding:18px 20px 20px;}
  .oeuvres-lightbox-panel h3{font-size:1.15rem;}
  .oeuvres-lightbox-nav{top:auto;bottom:14px;transform:none;width:44px;height:44px;}
  .oeuvres-lightbox-close{top:10px;right:12px;}
  .oeuvres-lightbox-hint{display:none;}
}
.oeuvre-card-body{padding:18px 20px;display:flex;flex-direction:column;gap:6px;flex:1;}
.oeuvre-card-type{
  align-self:flex-start;font-family:var(--ff-sans);font-weight:700;font-size:.64rem;text-transform:uppercase;
  letter-spacing:.04em;color:var(--gold);
}
.oeuvre-card-body h3{font-family:var(--ff-serif);font-size:1.08rem;color:var(--navy-900);margin:0;}
.oeuvre-card-meta{margin:0;font-size:.86rem;color:var(--ink-soft);}
.oeuvre-card-place{margin:0;font-size:.8rem;color:var(--ink-soft);}
.oeuvre-card-text{margin:4px 0 0;font-size:.86rem;line-height:1.55;color:var(--navy-900);}
.oeuvre-card-source{margin:auto 0 0;padding-top:8px;font-size:.74rem;}
.oeuvre-card-source a{color:var(--ink-soft);text-decoration:underline;}
@media(max-width:600px){
  .oeuvres-grid{grid-template-columns:1fr;}
}

/* Répertoire des personnages autour de Philippe Néri (carte-rome.html) */
.personnages-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px;margin-top:20px;
}
.personnage-card{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);
  padding:18px 20px;
}
.personnage-card h3{font-family:var(--ff-serif);font-size:1.05rem;color:var(--navy-900);margin:0 0 2px;}
.personnage-card-role{
  display:block;font-family:var(--ff-sans);font-weight:700;font-size:.66rem;text-transform:uppercase;
  letter-spacing:.04em;color:var(--gold);margin-bottom:8px;
}
.personnage-card p{margin:0;font-size:.86rem;line-height:1.55;color:var(--ink-soft);text-align:left;}

/* ==========================================================================
   Apostolats — finitions de mise en page
   ========================================================================== */
.apo-category-agenda{max-width:900px;margin:0 auto 18px;}
.apo-card:hover{box-shadow:var(--shadow-md);border-color:rgba(198,138,46,.4);}
@media(max-width:768px){
  .apo-category h3{font-size:1.3rem;margin-bottom:16px;}
  .apo-card{padding:22px 18px;}
  .apo-card p{text-align:left;hyphens:manual;}
  .apo-card.wide .apo-body{gap:14px;}
}
/* Patronage et jeudi des pères : la photo n'est plus un bandeau pleine
   largeur mais une colonne à gauche, le texte à droite. */
@media(min-width:881px){
  .apo-card.patronage-card,.apo-card#jeudi-des-peres{display:grid;grid-template-columns:minmax(300px,400px) 1fr;column-gap:36px;align-items:start;}
  .apo-card.patronage-card > h4,.apo-card#jeudi-des-peres > h4{grid-column:1/-1;}
  .apo-card.patronage-card .patronage-banner,.apo-card#jeudi-des-peres .patronage-banner{margin:0;}
  .apo-card.patronage-card .patronage-banner img,.apo-card#jeudi-des-peres .patronage-banner img{aspect-ratio:4/3;border-radius:14px;box-shadow:var(--shadow-md);}
  .apo-card.patronage-card .apo-body,.apo-card#jeudi-des-peres .apo-body{grid-template-columns:1fr;gap:6px;}
  .apo-card.patronage-card .apo-body p:first-child,.apo-card#jeudi-des-peres .apo-body p:first-child{margin-top:0;}
}
@media(max-width:880px){ .patronage-banner img{aspect-ratio:16/9;} }

/* ==========================================================================
   Devenir oratorien — titre de section en colonne fixe, étapes en frise
   ========================================================================== */
.page-devenir .block .container{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,760px);column-gap:64px;justify-content:start;align-items:start;}
.page-devenir .section-head{margin:0;position:sticky;top:calc(var(--header-h,71px) + 28px);}
.page-devenir .section-head h2,.page-devenir .section-head h2.fit-line{font-size:clamp(1.5rem,2.3vw,2rem);white-space:normal;line-height:1.2;}
.page-devenir .steps{margin:0;position:relative;}
.page-devenir .steps::before{content:"";position:absolute;left:22px;top:30px;bottom:30px;width:2px;background:var(--line);}
.page-devenir .step{border-bottom:0;padding:14px 0;gap:22px;align-items:start;}
.page-devenir .step .num{position:relative;z-index:1;box-shadow:0 0 0 6px var(--cream);}
.page-devenir .block-alt .step .num{box-shadow:0 0 0 6px var(--cream-2);}
.page-devenir .step h4{margin:9px 0 6px;font-size:1.1rem;}
.page-devenir .step p{margin:0;text-align:left;line-height:1.65;color:var(--ink-soft);}
.page-devenir .block .container > .caption{grid-column:2;margin-top:8px;}
.page-devenir .block .container > .closing-note{grid-column:1/-1;}
@media(max-width:1000px){
  .page-devenir .block .container{display:block;}
  .page-devenir .section-head{position:static;margin-bottom:28px;}
  .page-devenir .step{gap:16px;}
}

/* ==========================================================================
   Nous aider — finitions de mise en page
   ========================================================================== */
.progress-card .progress-meta{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.progress-card .progress-meta span{font-family:var(--ff-serif);font-weight:700;color:var(--navy-900);font-size:1.05rem;}
.progress-card .progress-bar-wrap{margin:54px 0 44px;}
.progress-card .fund-updated-note{display:inline;font-size:.8rem;color:var(--ink-soft);margin:0;}
.progress-card .fund-updated-note + .fund-updated-note::before{content:" · ";color:var(--gold);font-weight:700;}
#offrir .book-category-title{margin-top:56px;}
.give-card,.fiscal-card{box-shadow:var(--shadow-sm);}
@media(max-width:600px){
  .progress-card{padding:18px 16px 14px;}
  .progress-card .progress-bar-wrap{margin:50px 0 40px;}
  .progress-scale span:nth-child(even){display:none;}
}

/* ==========================================================================
   Contact — coordonnées et plan à gauche, formulaire à droite
   ========================================================================== */
.contact-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:28px;align-items:start;max-width:1080px;margin:0 auto;}
.contact-side{display:grid;gap:22px;}
.contact-side .member-card{box-shadow:var(--shadow-md);}
.contact-layout .contact-form{margin-top:0;box-shadow:var(--shadow-md);padding:34px 36px;}
.contact-layout .contact-form .btn{width:100%;}
@media(max-width:880px){
  .contact-layout{grid-template-columns:1fr;max-width:600px;}
  .contact-layout .contact-form{padding:26px 22px;}
}
/* Contact : fiche compacte, petite photo ronde et coordonnées. */
.contact-side .member-card-compact{align-items:center;}
.contact-side .member-card-compact .member-photo{width:96px;height:96px;aspect-ratio:1/1;border-radius:50%;margin:22px 0 22px 22px;flex-shrink:0;}
.contact-side .member-photo img{object-position:center 20%;}
.contact-side .member-body{padding:20px 22px;text-align:left;}
.contact-side .member-body h3{font-size:1.12rem;margin-bottom:4px;}
.contact-side .member-body p{font-size:.88rem;text-align:left;margin-bottom:10px;}
.contact-side .member-body a{display:block;margin:0 0 4px;font-size:.9rem;overflow-wrap:anywhere;}
@media(max-width:880px){
  .contact-side .member-card-compact .member-photo{width:80px;height:80px;margin:18px 0 18px 18px;}
  .contact-side .member-body{padding:16px 18px;}
}

/* ==========================================================================
   Qui sommes-nous ? (le-projet.html) — mise en page
   ========================================================================== */
/* Vidéos : cartes blanches avec légende intégrée */
.page-projet .video-item{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);}
.page-projet .video-item .video-embed{border-radius:0;box-shadow:none;}
.page-projet .video-item h4{margin:0;padding:14px 18px 18px;font-size:.92rem;line-height:1.5;display:flex;flex-direction:column;gap:8px;align-items:flex-start;}

/* Être Oratorien : mesure de lecture et source de la citation */
.page-projet #etre-oratorien .prose{max-width:960px;}
.page-projet #etre-oratorien .prose > .caption{margin-top:20px;padding-left:14px;border-left:3px solid var(--gold);font-style:italic;color:var(--ink-soft);}
.page-projet .float-portrait figcaption{font-size:.8rem;}

/* Six traits du charisme : trois colonnes, liseré doré */
.page-projet .feature-card{border-top:3px solid var(--gold);box-shadow:var(--shadow-sm);}
@media(min-width:1000px){ .page-projet .feature-grid{grid-template-columns:repeat(3,1fr);} }

/* Historique : date à gauche, fil au centre, événement en carte à droite */
.page-projet #historique .container > .prose{max-width:900px;}
.page-projet .timeline{max-width:900px;margin:0;}
.page-projet .timeline-item p{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 18px;box-shadow:var(--shadow-sm);color:var(--ink);line-height:1.55;text-align:left;}
.page-projet .timeline-item.future p{background:transparent;border-style:dashed;box-shadow:none;color:var(--ink-soft);}
.page-projet .timeline-item::before{background:var(--navy-900);border:3px solid var(--gold);box-shadow:0 0 0 3px #fff;}
.page-projet .block-alt .timeline-item::before{box-shadow:0 0 0 3px var(--cream-2);}
.page-projet .timeline-item.future::before{background:#fff;border-color:var(--line);}
.page-projet .timeline-item{padding-bottom:18px;}
.page-projet .timeline-item .timeline-date{margin-bottom:6px;}
@media(min-width:761px){
  .page-projet .timeline-item{display:grid;grid-template-columns:150px 1fr;column-gap:58px;border-left:0;padding:0 0 16px;}
  .page-projet .timeline-item .timeline-date{text-align:right;margin:0;padding-top:14px;line-height:1.3;}
  .page-projet .timeline-item::before{left:171px;top:14px;}
  .page-projet .timeline-item::after{content:"";position:absolute;left:178px;top:32px;bottom:-4px;border-left:2px solid var(--line);}
  .page-projet .timeline-item.future::after,.page-projet .timeline-item.dash-after::after{border-left-style:dashed;}
  .page-projet .timeline-item:last-child::after{display:none;}
  .page-projet .timeline-item p{font-size:1rem;}
}

/* Membres : cartes de même hauteur, bouton aligné en bas */
.page-projet .member-card{display:flex;flex-direction:column;box-shadow:var(--shadow-sm);}
.page-projet .member-body{display:flex;flex-direction:column;flex:1;gap:0;}
.page-projet .member-body p{line-height:1.55;margin-bottom:8px;text-align:left;}
.page-projet .member-link{margin-top:auto;align-self:flex-start;margin:auto 0 0;padding:9px 16px 9px 10px;}
.page-projet .member-body p + .member-link{margin-top:16px;}
@media(max-width:960px){ .page-projet .member-link{align-self:center;} }

/* Finalités / démarche : fil vertical entre les numéros */
.page-projet .steps{position:relative;}
.page-projet .steps::before{content:"";position:absolute;left:22px;top:30px;bottom:30px;width:2px;background:var(--line);}
.page-projet .step{border-bottom:0;padding:14px 0;gap:22px;align-items:start;}
.page-projet .step .num{position:relative;z-index:1;box-shadow:0 0 0 6px var(--cream);}
.page-projet .block-alt .step .num{box-shadow:0 0 0 6px var(--cream-2);}
.page-projet .step h4{margin:9px 0 6px;font-size:1.06rem;}
.page-projet .step p{text-align:left;line-height:1.65;}

/* Appel final : titre équilibré sur deux lignes */
.page-projet .closing-note{max-width:760px;}
.page-projet .closing-note h2{text-wrap:balance;}

/* Paroles de donateurs : puce dorée devant chaque titre */
.page-projet .fruit-row h4::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--gold);margin:0 10px 2px 0;display:none;}
.page-projet .fruit-row p{line-height:1.6;text-align:left;}
.page-projet .members-grid{align-items:start;}

/* Membres (Qui sommes-nous ?) : fiches horizontales, rôle en pastille, texte replié, témoignage vidéo */
.page-projet .member-role{order:-1;align-self:flex-start;background:var(--navy-100);color:var(--brick);border-radius:999px;padding:5px 12px;margin:0 0 12px;font-size:.72rem;letter-spacing:.06em;}
.page-projet .member-body h3{font-size:1.18rem;margin-bottom:12px;}
.page-projet .member-body p:last-of-type{margin-bottom:16px;}
.page-projet .member-link::before{content:"";width:22px;height:22px;border-radius:50%;background:var(--gold) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%230b1f42' d='M8 5v14l11-7z'/%3E%3C/svg%3E") center/13px no-repeat;flex-shrink:0;}
.page-projet .member-link:hover::before{background-color:#fff;}
@media(min-width:961px){
  .page-projet .members-grid{grid-template-columns:repeat(4,1fr);gap:22px;align-items:stretch;}
  .page-projet .member-card .member-photo img{object-position:center top;}
}
@media(max-width:960px){
  .page-projet .member-role{align-self:center;}
  .page-projet .member-link{align-self:center;}
}

/* Fenêtre vidéo (témoignages des membres) */
.video-modal{position:fixed;inset:0;z-index:400;background:rgba(6,12,24,.92);display:flex;align-items:center;justify-content:center;padding:24px;}
.video-modal[hidden]{display:none;}
.video-modal-frame{position:relative;width:min(960px,100%);aspect-ratio:16/9;max-height:calc(100vh - 48px);background:#000;border-radius:var(--radius);overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.5);}
.video-modal.is-vertical .video-modal-frame{width:min(430px,100%);aspect-ratio:9/16;}
.video-modal-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
.video-modal-close{position:absolute;top:16px;right:20px;width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.1);color:#fff;font-size:1.6rem;line-height:1;cursor:pointer;}
.video-modal-close:hover{background:#fff;color:var(--navy-900);}
.video-modal-caption{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);color:#fff;font-size:.9rem;opacity:.85;white-space:nowrap;}
/* Vidéos d'introduction (Qui sommes-nous ?) */
.page-projet .video-tag{display:inline-block;background:var(--navy-100);color:var(--brick);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;border-radius:999px;padding:4px 10px;}
/* Chantier (Qui sommes-nous ?) : plans légendés, dernière ligne centrée, indice de zoom */
.page-projet .plans-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:24px;max-width:1100px;margin:36px auto 0;}
.page-projet .plan-card{flex:0 1 calc((100% - 48px) / 3);min-width:280px;margin:0;position:relative;box-shadow:var(--shadow-sm);}
.page-projet .plan-card img{aspect-ratio:4/3;object-fit:contain;background:#fff;padding:10px;box-sizing:border-box;}
.page-projet .plan-card figcaption{display:flex;align-items:flex-start;gap:10px;padding:12px 16px 14px;border-top:1px solid var(--line);font-size:.88rem;line-height:1.4;color:var(--ink);background:var(--cream-2);}
.page-projet .plan-card .step-badge{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--gold);color:#241503;font-weight:800;font-size:.76rem;flex-shrink:0;}
.page-projet .plan-card::after{content:"";position:absolute;top:10px;right:10px;width:32px;height:32px;border-radius:50%;background:var(--navy-900) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='M16 16l4.5 4.5M11 8v6M8 11h6'/%3E%3C/svg%3E") center/18px no-repeat;opacity:0;transition:opacity .2s;}
.page-projet .plan-card:hover::after{opacity:.9;}
@media(max-width:600px){
  .page-projet .plans-grid{display:flex;flex-wrap:nowrap;justify-content:flex-start;gap:14px;margin-top:14px;}
  .page-projet .plan-card{flex:0 0 92%;min-width:0;}
  .page-projet .plan-card::after{opacity:.9;}
}
.lightbox-caption{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);margin:0;color:#fff;font-size:.95rem;text-align:center;max-width:90vw;display:flex;align-items:center;gap:12px;}
.lightbox-counter{font-size:.78rem;font-weight:700;letter-spacing:.06em;background:rgba(255,255,255,.16);border-radius:999px;padding:4px 10px;}
@media(max-width:600px){ .lightbox-caption{bottom:12px;font-size:.84rem;} }
/* Coût du projet (Qui sommes-nous ?) : tableau et phases côte à côte */
.page-projet .cost-layout{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 300px;column-gap:56px;align-items:start;margin-top:8px;}
.page-projet .cost-plan-preview{position:absolute;right:0;top:0;width:300px;transition:top .3s ease;}
.page-projet .cost-plan-preview figure{margin:0;background:#fff;border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:12px;overflow:hidden;box-shadow:var(--shadow-sm);}
.page-projet .cost-plan-zoom{display:block;width:100%;border:0;padding:8px;background:#fff;cursor:zoom-in;}
.page-projet .cost-plan-zoom img{display:block;width:100%;height:auto;}
.page-projet .cost-plan-preview figcaption{display:flex;align-items:flex-start;gap:10px;padding:10px 14px 12px;border-top:1px solid var(--line);font-size:.84rem;line-height:1.4;color:var(--ink);background:var(--cream-2);}
.page-projet .cost-plan-preview figcaption .step-badge{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--gold);color:#241503;font-weight:800;font-size:.72rem;flex-shrink:0;}
.page-projet .cost-plan-hint{margin:10px 0 0;font-size:.76rem;color:var(--ink-soft);text-align:left;line-height:1.5;}
.page-projet .budget-table tr.has-plan td{position:relative;}
.page-projet .budget-table tr.has-plan.is-active td{background:rgba(200,150,60,.16);}
.page-projet .cost-plan-preview::before{content:"";position:absolute;right:100%;top:39px;width:52px;height:2px;background:var(--gold);}
.page-projet .cost-plan-preview::after{content:"";position:absolute;right:calc(100% + 48px);top:36px;width:8px;height:8px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 3px var(--cream-2);}
.page-projet .budget-table tr.has-plan td:first-child::after{display:none;}
.page-projet .cost-phases-block{margin-top:44px;}
.page-projet .cost-phases-block .cost-col-lead{margin-bottom:14px;}
.page-projet .cost-phases-block .phase-list{max-width:820px;margin:0;box-shadow:var(--shadow-sm);}
@media(max-width:899px){
  .page-projet .cost-layout{grid-template-columns:1fr;row-gap:20px;}
  .page-projet .cost-plan-preview{position:static;width:auto;max-width:420px;}
  .page-projet .cost-plan-preview::before,.page-projet .cost-plan-preview::after{display:none;}
}
.page-projet .cost-col-table .table-scroll{max-width:none;margin:0;}
.page-projet .cost-col-table .doc-link{margin-top:18px;}
.page-projet .cost-col-lead{margin:0 0 14px;font-weight:700;color:var(--navy-900);font-size:1rem;}
.page-projet .cost-col-phases .phase-list{max-width:none;margin:0;box-shadow:var(--shadow-sm);}
.page-projet .cost-col-phases .phase-item{padding:18px 20px;}
.page-projet .phase-item p{text-align:left;}
.page-projet .budget-table td{padding:13px 16px;font-size:.95rem;}
.page-projet .budget-table thead th{padding:14px 16px;}
.page-projet .budget-table .step-badge{margin-right:8px;}
.page-projet .fund-updated-note{text-align:left;}
/* Soutiens (Qui sommes-nous ?) : cartes blanches, rôle en pastille, citation soulignée d'or */
.page-projet .support-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:26px 28px;gap:34px;margin-bottom:24px;}
.page-projet .support-card-wide{grid-template-columns:340px 1fr;}
.page-projet .support-card-wide .support-photo{aspect-ratio:4/3;border-radius:12px;box-shadow:none;}
.page-projet .support-card-reverse{grid-template-columns:180px 1fr;}
.page-projet .support-card-reverse .support-photo{order:1;aspect-ratio:1/1;border-radius:12px;box-shadow:none;align-self:center;}
.page-projet .support-card-reverse .support-body{order:2;}
.page-projet .support-card .role{display:inline-block;background:var(--navy-100);border-radius:999px;padding:5px 12px;font-size:.72rem;letter-spacing:.06em;margin-bottom:12px;}
.page-projet .support-card h4{font-size:1.25rem;margin-bottom:12px;}
.page-projet .support-card p{text-align:left;line-height:1.65;}
.page-projet .support-card .pull-quote{border-left:3px solid var(--gold);padding-left:18px;font-size:1.04rem;}
@media(max-width:960px){
  .page-projet .support-card,.page-projet .support-card-wide,.page-projet .support-card-reverse{grid-template-columns:1fr;}
  .page-projet .support-card{padding:20px;gap:16px;}
  .page-projet .support-card .support-photo,.page-projet .support-card-reverse .support-photo{order:2;}
  .page-projet .support-card-reverse .support-body{display:contents;}
  .page-projet .support-photo{width:100%;margin:0;border-radius:12px;}
  .page-projet .support-card-reverse .support-photo{width:150px;aspect-ratio:1/1;margin:0 auto;-webkit-mask-image:none;mask-image:none;}
  .page-projet .support-card .role{order:1;align-self:flex-start;}
}

/* Paroles de donateurs : cartes avec pictogramme */
.page-projet .fruit-list{display:flex;flex-wrap:wrap;justify-content:center;gap:18px;margin-top:8px;}
.page-projet .fruit-row{flex:0 1 calc((100% - 36px) / 3);min-width:260px;display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px 20px 22px;box-shadow:var(--shadow-sm);}
.page-projet .fruit-icon{flex-shrink:0;width:42px;height:42px;border-radius:12px;background:var(--navy-100);color:var(--navy-800);display:flex;align-items:center;justify-content:center;}
.page-projet .fruit-icon svg{width:24px;height:24px;}
.page-projet .fruit-row h4{margin:2px 0 5px;}
@media(max-width:600px){ .page-projet .fruit-row{flex-basis:100%;min-width:0;} }

/* La démarche : deux colonnes sur grand écran */
@media(min-width:900px){
  .page-projet #demarche .steps{columns:2;column-gap:56px;display:block;}
  .page-projet #demarche .steps::before{display:none;}
  .page-projet #demarche .step{break-inside:avoid;display:grid;padding:12px 0;border-bottom:1px solid var(--line);}
  .page-projet #demarche .step .num{box-shadow:none;}
  .page-projet #demarche .step h4{margin-top:11px;}
}

/* Sous-navigation : étape active plus visible */

/* Bouton haut de page (pages longues) */
.back-to-top{position:fixed;right:22px;bottom:22px;z-index:90;width:46px;height:46px;border-radius:50%;background:var(--navy-900);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px rgba(11,31,66,.28);opacity:0;visibility:hidden;transform:translateY(12px);transition:opacity .25s,transform .25s,visibility .25s;}
.back-to-top svg{width:22px;height:22px;}
.back-to-top.is-visible{opacity:1;visibility:visible;transform:none;}
.back-to-top:hover{background:var(--brick);color:#fff;}
@media(max-width:600px){ .back-to-top{right:14px;bottom:14px;width:42px;height:42px;} }

/* Tableau des coûts : lignes reliées aux plans */
.budget-table tr.has-plan{cursor:pointer;transition:background .15s;}
.budget-table tr.has-plan:hover td{background:rgba(200,150,60,.16);}
.budget-table tr.has-plan td:first-child::after{content:"";display:inline-block;vertical-align:middle;width:16px;height:16px;margin-left:8px;opacity:.55;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230b1f42' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='M16 16l4.5 4.5'/%3E%3C/svg%3E") center/16px no-repeat;}
.budget-table tr.has-plan:hover td:first-child::after{opacity:1;}

/* ==========================================================================
   Ressources oratoriennes — mise en page
   ========================================================================== */
.page-ressources .block > .container > .book-category-title{font-size:clamp(1.35rem,2.2vw,1.75rem);padding-bottom:12px;border-bottom-width:3px;margin-bottom:28px;}
.page-ressources .prayer-list{max-width:none;box-shadow:var(--shadow-sm);}
@media(min-width:900px){
  .page-ressources .prayer-list{display:grid;grid-template-columns:1fr 1fr;}
  .page-ressources .prayer-row:nth-child(odd){border-right:1px solid var(--line);}
  .page-ressources .prayer-row:nth-last-child(2):nth-child(odd){border-bottom:0;}
}
.page-ressources .text-groups{columns:2;column-gap:24px;columns:auto;column-count:1;max-width:960px;position:relative;padding-left:0;}
.page-ressources .text-group{break-inside:avoid;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px 22px 20px;margin:0 0 24px;box-shadow:var(--shadow-sm);display:grid;grid-template-columns:200px minmax(0,1fr);column-gap:32px;align-items:start;background:none;border:0;border-top:1px solid var(--line);border-radius:0;box-shadow:none;padding:22px 0 20px;margin:0;break-inside:auto;}
.page-ressources .text-group h3{border-bottom:0;padding-bottom:0;margin-bottom:10px;display:inline-block;background:var(--navy-100);border-radius:999px;padding:5px 12px;font-size:.72rem;display:block;background:none;border-radius:0;padding:0;margin:4px 0 0;font-family:var(--ff-serif);font-size:1.15rem;font-weight:700;text-transform:none;letter-spacing:0;color:var(--navy-900);line-height:1.25;}
.page-ressources .text-group.gold h3{color:var(--navy-800);}
.page-ressources .text-group.brick h3{color:var(--brick);}
.page-ressources .text-group .check-list{margin:6px 0 0;gap:10px;margin:0;gap:10px;}
.page-ressources .text-group .check-list li{font-size:.94rem;display:block;padding-left:30px;position:relative;}
@media(max-width:860px){ .page-ressources .text-groups{columns:1;} }
.page-ressources #documents .check-list{grid-template-columns:1fr 1fr;gap:16px;margin:0;}
.page-ressources #documents .check-list li{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow-sm);}
@media(max-width:700px){ .page-ressources #documents .check-list{grid-template-columns:1fr;} }

/* Être Oratorien : paragraphe d'ouverture, extrait de Dijon avec points clés en marge */
.page-projet #etre-oratorien .identity-list{margin-bottom:40px;}
.page-projet #etre-oratorien .prose .lead{font-size:1.12rem;line-height:1.7;color:var(--navy-900);}
.page-projet .dijon-text{max-width:none;background:none;border:0;padding:0;box-shadow:none;}

/* Être Oratorien : traits en cartes, portrait en colonne, extrait en carte, sous-sections */
.page-projet #etre-oratorien .identity-list{display:grid;grid-template-columns:repeat(3,1fr);gap:0 40px;margin:0 0 44px;padding:0;}
.page-projet #etre-oratorien .identity-list li{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);font-size:.96rem;font-weight:500;color:var(--navy-900);background:none;box-shadow:none;border-radius:0;}
.page-projet #etre-oratorien .identity-list svg{width:16px;height:16px;padding:0;border-radius:0;background:none;color:var(--gold);fill:currentColor;flex-shrink:0;}
@media(max-width:1000px){ .page-projet #etre-oratorien .identity-list{grid-template-columns:repeat(2,1fr);gap:0 32px;} }
@media(max-width:560px){ .page-projet #etre-oratorien .identity-list{grid-template-columns:1fr;} }
.page-projet .etre-layout{display:grid;grid-template-columns:260px minmax(0,1fr);column-gap:48px;align-items:start;}
.page-projet .etre-side{position:sticky;top:calc(var(--header-h,71px) + 90px);}
.page-projet .side-portrait{margin:0;}
.page-projet .side-portrait img{width:100%;display:block;border-radius:var(--radius);box-shadow:var(--shadow-md);}
.page-projet .side-portrait figcaption{margin-top:10px;font-size:.8rem;}
.page-projet .etre-main .prose{max-width:none;}
.page-projet .dijon-text > .caption{margin-top:18px;}
@media(max-width:960px){
  .page-projet .etre-layout{grid-template-columns:1fr;row-gap:24px;}
  .page-projet .etre-side{position:static;}
  .page-projet .side-portrait{max-width:260px;margin:0 auto;}
}
.page-projet #etre-oratorien h3.book-category-title{font-size:1.45rem;border-bottom-width:2px;margin-bottom:22px;}
.page-projet #etre-oratorien .col-media{background:none;border:0;padding:0;box-shadow:none;}
.page-projet #etre-oratorien .map-mini{height:360px;border-radius:12px;box-shadow:none;border:1px solid var(--line);}
.page-projet #etre-oratorien .map-legend-mini{margin:0 0 10px;gap:6px;}
.page-projet #etre-oratorien .map-legend-mini button{padding:4px 10px;font-size:.7rem;border-color:transparent;background:none;box-shadow:none;color:var(--ink-soft);}
.page-projet #etre-oratorien .map-legend-mini button.active{color:var(--navy-900);}
.page-projet #etre-oratorien .map-mini-link{text-align:right;font-size:.78rem;margin-top:8px;}
.page-projet #etre-oratorien .map-mini-link a{font-weight:500;color:var(--ink-soft);text-decoration:none;}
.page-projet #etre-oratorien .map-mini-link a:hover{color:var(--navy-900);text-decoration:underline;}
@media(max-width:880px){ .page-projet #etre-oratorien .map-mini{height:320px;} }

/* ==========================================================================
   Saints et bienheureux — mise en page
   ========================================================================== */
.page-saints .block > .container > .book-category-title{font-size:clamp(1.35rem,2.2vw,1.75rem);padding-bottom:12px;border-bottom-width:3px;margin-bottom:22px;}
.page-saints .rank-note{margin:0 0 26px;padding:12px 18px;border-left:3px solid var(--gold);background:#fff;border-radius:0 10px 10px 0;font-size:.92rem;line-height:1.6;color:var(--ink-soft);max-width:900px;text-align:left;}
.page-saints .figure-grid{gap:18px;}
.page-saints .figure-card{padding:12px 14px 16px;}
.page-saints .figure-cover{border-radius:10px;}
.page-saints .figure-cover img{transition:transform .35s ease;}
.page-saints .figure-tile:hover .figure-cover img{transform:scale(1.04);}
.page-saints .figure-card h4{font-size:.98rem;margin:2px 0 4px;}
.page-saints .figure-card .figure-dates{font-size:.76rem;line-height:1.4;text-align:left;}
.page-saints .figure-card .figure-feast{margin-top:10px;background:var(--navy-100);color:var(--brick);border-radius:999px;padding:4px 10px;font-size:.64rem;letter-spacing:.05em;}
@media(max-width:520px){
  .page-saints .figure-card{padding:10px 10px 14px;}
  .page-saints .figure-card h4{font-size:.9rem;}
}

/* ==========================================================================
   Saints : prochaine fête, frise des figures, filtres
   ========================================================================== */
.page-saints .block-feast{padding:28px 0 0;}
.page-saints .block-filter{padding:22px 0 0;}
.next-feast{display:flex;align-items:center;gap:22px;background:#fff;border:1px solid var(--line);border-left:5px solid var(--gold);border-radius:var(--radius);padding:16px 22px;box-shadow:var(--shadow-sm);}
.next-feast-photo{width:72px;height:72px;border-radius:50%;overflow:hidden;flex-shrink:0;background:var(--cream-2);box-shadow:0 0 0 3px var(--navy-100);}
.next-feast-photo img{width:100%;height:100%;object-fit:cover;object-position:top;display:block;}
.next-feast-body{flex:1;min-width:0;}
.next-feast-kicker{display:block;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--brick);margin-bottom:4px;}
.next-feast-body h3{font-family:var(--ff-serif);font-size:1.25rem;color:var(--navy-900);margin:0 0 4px;}
.next-feast-body p{margin:0;font-size:.9rem;color:var(--ink-soft);text-align:left;}
.next-feast-btn{flex-shrink:0;padding:10px 18px;font-size:.84rem;}
@media(max-width:640px){
  .next-feast{flex-wrap:wrap;gap:14px;}
  .next-feast-btn{width:100%;text-align:center;}
}

.figures-frise-panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden;}
.figures-frise-panel.is-fullscreen{position:fixed;inset:0;z-index:400;border-radius:0;display:flex;flex-direction:column;}
.figures-frise-panel.is-fullscreen .figures-frise{flex:1;max-height:none;}
.figures-frise-toolbar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--cream-2);}
.figures-frise-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:.78rem;font-weight:600;color:var(--ink-soft);}
.figures-frise-legend span{display:inline-flex;align-items:center;gap:6px;}
.figures-frise-legend span::before{content:"";width:12px;height:12px;border-radius:3px;}
.legend-saints::before{background:var(--gold);}
.legend-bienheureux::before{background:var(--brick);}
.legend-venerables::before{background:var(--navy-700);}
.legend-serviteurs::before{background:#8a97a8;}
.figures-frise{position:relative;overflow:auto;max-height:70vh;cursor:grab;scrollbar-width:thin;}
.figures-frise.is-dragging{cursor:grabbing;user-select:none;}
.figures-frise-inner{position:relative;}
.figures-frise-header{position:sticky;top:0;z-index:3;height:34px;background:#fff;border-bottom:1px solid var(--line);}
.figures-frise-year{position:absolute;top:8px;transform:translateX(-50%);font-size:.72rem;font-weight:700;color:var(--ink-soft);}
.figures-frise-year.is-century{color:var(--navy-900);font-size:.8rem;}
.figures-frise-lane{position:relative;border-bottom:1px solid var(--line);}
.figures-frise-lane:last-child{border-bottom:0;}
.lane-saints{background:rgba(198,138,46,.05);}
.lane-bienheureux{background:rgba(143,32,39,.04);}
.lane-venerables{background:rgba(21,74,118,.04);}
.figures-frise-grid{position:absolute;top:0;bottom:0;width:1px;background:var(--line);}
.figures-frise-grid.is-century{background:#cfc7b8;}
.figures-frise-lane-title{position:sticky;left:10px;top:40px;z-index:2;display:inline-block;margin:8px 0 0;padding:3px 10px;border-radius:999px;background:var(--navy-900);color:#fff;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;float:left;}
.figures-frise-lane-title em{font-style:normal;opacity:.7;margin-left:4px;}
.figures-frise-bar{position:absolute;height:26px;border:0;border-radius:13px;padding:0;overflow:visible;background:var(--navy-700);color:#fff;font:inherit;cursor:pointer;display:flex;align-items:center;gap:6px;white-space:nowrap;box-shadow:0 1px 3px rgba(11,31,66,.25);transition:opacity .2s,transform .15s,box-shadow .15s;}
.figures-frise-bar:hover,.figures-frise-bar:focus-visible{transform:translateY(-1px);box-shadow:0 4px 10px rgba(11,31,66,.3);z-index:4;}
.figures-frise-bar img{width:26px;height:26px;border-radius:50%;object-fit:cover;object-position:top;flex-shrink:0;border:2px solid #fff;box-sizing:border-box;}
.figures-frise-dot{width:10px;height:10px;border-radius:50%;background:#fff;margin-left:8px;flex-shrink:0;opacity:.85;}
.figures-frise-name{font-size:.76rem;font-weight:600;padding-right:10px;text-shadow:0 1px 1px rgba(0,0,0,.25);}
.lane-saints .figures-frise-bar{background:var(--gold);color:#241503;}
.lane-saints .figures-frise-name{text-shadow:none;}
.lane-bienheureux .figures-frise-bar{background:var(--brick);}
.lane-serviteurs .figures-frise-bar{background:#8a97a8;}
/* Nom plus long que la barre : il reste sur sa ligne, commence dans la barre
   et déborde à droite du bout coloré ; halo blanc pour rester lisible aussi
   bien sur la couleur que sur le fond. */
.figures-frise-bar.is-short .figures-frise-name{color:var(--navy-900);text-shadow:0 0 3px #fff,0 0 3px #fff,0 0 2px #fff,0 0 1px #fff;}
.figures-frise-bar.is-dimmed{opacity:.18;}
@media(max-width:600px){ .figures-frise{max-height:60vh;} .figures-frise-toolbar{gap:10px;} }

.figures-filter{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px;box-shadow:var(--shadow-sm);}
.figures-filter-search{flex:1 1 240px;min-width:200px;}
.figures-filter-search input{width:100%;box-sizing:border-box;padding:10px 14px;border:1px solid var(--line);border-radius:999px;font:inherit;font-size:.9rem;background:var(--cream);}
.figures-filter-search input:focus{outline:2px solid var(--gold);border-color:var(--gold);}
.figures-filter-chips{display:flex;gap:6px;flex-wrap:wrap;}
.figures-filter-chips button{border:1px solid var(--line);background:var(--cream-2);color:var(--navy-900);border-radius:999px;padding:7px 12px;font:inherit;font-size:.8rem;font-weight:700;cursor:pointer;transition:.15s;}
.figures-filter-chips button:hover{border-color:var(--gold);}
.figures-filter-chips button[aria-pressed="true"]{background:var(--navy-900);color:#fff;border-color:var(--navy-900);}
.figures-filter select{padding:9px 12px;border:1px solid var(--line);border-radius:999px;font:inherit;font-size:.86rem;background:var(--cream-2);color:var(--navy-900);max-width:240px;}
.figures-filter-count{font-size:.82rem;color:var(--ink-soft);margin-left:auto;white-space:nowrap;}
.figures-filter-reset{border:0;background:none;color:var(--brick);font:inherit;font-size:.82rem;font-weight:700;cursor:pointer;text-decoration:underline;text-underline-offset:3px;}

/* Thematic tag filter (ressources-oratoriennes.html): reuses the pill look
   of .figures-filter-chips button above so both pages' filters match. */
.tag-hidden{display:none !important;}
.res-tag-filter-wrap{background:var(--cream-2);border-bottom:1px solid var(--line);}
.res-tag-filter{max-width:var(--container);margin:0 auto;padding:12px 24px;display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.res-tag-filter-label{font-size:.78rem;font-weight:700;color:var(--ink-soft);margin-right:4px;}
.page-saints .block.is-filtered-out{display:none;}
.page-saints .figure-tile[hidden]{display:none;}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}

/* Carte : figures (saints, bienheureux…) dans les bulles */
.oratoire-popup-figures{margin:8px 0 6px;display:grid;gap:5px;}
.oratoire-popup-figures-title{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);}
.oratoire-popup-figure{display:flex;align-items:center;gap:8px;font-size:.8rem;font-weight:600;color:var(--navy-900);text-decoration:none;}
.oratoire-popup-figure:hover span{color:var(--brick);text-decoration:underline;}
.oratoire-popup-figure img{width:28px;height:28px;border-radius:50%;object-fit:cover;object-position:top;flex-shrink:0;box-shadow:0 0 0 2px var(--gold);}
.oratoire-popup-figure-dot{width:28px;height:28px;border-radius:50%;background:var(--navy-100);flex-shrink:0;box-shadow:inset 0 0 0 2px #fff,0 0 0 1px var(--line);}
.oratoire-popup-figure small{display:block;font-weight:500;color:var(--ink-soft);font-size:.7rem;}

/* Ressources : sous-titres hiérarchisés, livres et vidéos en cartes, lien de traduction insécable */
.page-ressources .block > .container > .book-category-title ~ .book-category-title{font-size:1.15rem;border-bottom-width:2px;margin:44px 0 22px;}
.page-ressources .book-grid{grid-template-columns:repeat(auto-fill,168px);gap:22px;}
.page-ressources .book-card{background:none;border:0;padding:0;box-shadow:none;transition:transform .2s;}
.page-ressources .book-card:hover{transform:translateY(-3px);}
.page-ressources .book-cover{border-radius:10px;box-shadow:var(--shadow-md);margin-bottom:12px;}
.page-ressources .book-card:hover .book-cover{box-shadow:0 16px 32px rgba(11,31,66,.22);}
.page-ressources .book-card h4{font-size:.9rem;}
.page-ressources .book-card .book-author{font-size:.76rem;text-align:center;}
.page-ressources #films-grid,.page-ressources #videos-grid{grid-template-columns:repeat(auto-fill,168px);}
.page-ressources #videos-grid{grid-template-columns:repeat(auto-fill,260px);max-width:none !important;}
.page-ressources #videos-grid .book-cover{aspect-ratio:16/10;}
.page-ressources .text-group .check-list li a + a,.page-ressources .text-group .check-list li a[href*="docs.google"]{white-space:nowrap;}
.page-ressources .text-group .check-list li svg{position:absolute;left:0;top:2px;}
@media(max-width:520px){ .page-ressources .book-grid,.page-ressources #films-grid,.page-ressources #videos-grid{grid-template-columns:repeat(2,1fr);gap:12px;} }

/* Ressources, seconde passe : film en carte horizontale, vidéos plus larges, documents avec icône PDF, maxime du jour en carte */
.page-ressources #films-grid{grid-template-columns:1fr;max-width:560px !important;}
.page-ressources #films-grid .book-card{display:grid;grid-template-columns:120px 1fr;grid-template-rows:auto auto;align-content:center;align-items:end;column-gap:20px;text-align:left;padding:14px 18px 14px 14px;}
.page-ressources #films-grid .book-cover{grid-row:1/3;width:120px;margin:0;align-self:center;}
.page-ressources #films-grid .book-card .book-author{align-self:start;}
.page-ressources #films-grid .book-card h4{font-size:1.05rem;margin-bottom:6px;}
.page-ressources #films-grid .book-card .book-author{text-align:left;}
.page-ressources #videos-grid{grid-template-columns:repeat(auto-fill,300px);}
.page-ressources #documents .check-list li{display:flex;align-items:center;gap:14px;padding:16px 18px;}
.page-ressources #documents .check-list li svg{display:none;}
.page-ressources #documents .check-list li::before{content:"PDF";flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:10px;background:var(--brick);color:#fff;font-size:.68rem;font-weight:800;letter-spacing:.06em;}
.page-ressources #documents .check-list li a{font-weight:600;color:var(--navy-900);}
.page-ressources #documents .check-list li a:hover{color:var(--brick);}
@media(max-width:520px){
  .page-ressources #films-grid .book-card{grid-template-columns:1fr;text-align:center;justify-items:center;}
  .page-ressources #films-grid .book-cover{grid-row:auto;width:140px;margin-bottom:10px;}
    }

/* Ressources, troisième passe : prières avec icône, chants en cartes, indices de lecture */
.page-ressources .prayer-row-text{display:flex;align-items:center;gap:12px;}
.page-ressources .prayer-row-text::before{content:"";flex-shrink:0;width:30px;height:30px;border-radius:50%;background:var(--navy-100) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230b1f42' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3v18M6 8h12'/%3E%3C/svg%3E") center/16px no-repeat;}
.page-ressources .prayer-row:hover .prayer-row-text::before{background-color:var(--gold);}
.page-ressources .prayer-row-placeholder .prayer-row-text::before{opacity:.5;}
.page-ressources #chants-grid .book-card{padding:0;}
.page-ressources #chants-grid .book-card h4{margin-top:2px;}
.page-ressources #chants-grid .song-tile-cover{border-radius:8px;}
/* Membres : repli discret « Voir plus » */
.page-projet .member-more{margin:0;}
.page-projet .member-more p:last-child{margin-bottom:8px;}
.page-projet .member-toggle{align-self:flex-start;background:none;border:0;padding:0;margin:-2px 0 14px;font:inherit;font-size:.8rem;font-weight:600;color:var(--ink-soft);cursor:pointer;display:inline-flex;align-items:center;gap:5px;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px;}
.page-projet .member-toggle::after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .2s;}
.page-projet .member-toggle[aria-expanded="true"]::after{transform:translateY(1px) rotate(-135deg);}
.page-projet .member-toggle:hover{color:var(--brick);}
@media(max-width:960px){ .page-projet .member-toggle{align-self:center;} }

/* Carte : curseur chronologique */
.map-timeline{margin:18px 0 0;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px 22px 14px;box-shadow:var(--shadow-sm);}
.map-timeline-head{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:10px;}
.map-timeline-count{flex:1 1 320px;font-size:.88rem;color:var(--ink-soft);}
.map-timeline-count strong{font-family:var(--ff-serif);font-size:1.45rem;color:var(--navy-900);margin-right:6px;}
.map-timeline-year{font-family:var(--ff-serif);font-weight:700;font-size:1.6rem;color:var(--brick);min-width:120px;text-align:center;}
.map-timeline-actions{display:flex;gap:8px;}
.map-timeline-actions button{border:1px solid var(--line);background:var(--cream-2);color:var(--navy-900);border-radius:999px;padding:8px 14px;font:inherit;font-size:.82rem;font-weight:700;cursor:pointer;transition:.15s;}
.map-timeline-actions button:hover{border-color:var(--gold);box-shadow:var(--shadow-sm);}
.map-timeline-chart{position:relative;height:90px;}
.map-timeline-chart svg{width:100%;height:100%;display:block;}
.map-timeline-area{fill:rgba(21,74,118,.12);}
.map-timeline-line{fill:none;stroke:var(--navy-700);stroke-width:2;vector-effect:non-scaling-stroke;}
.map-timeline-cursor{stroke:var(--brick);stroke-width:2;vector-effect:non-scaling-stroke;}
.map-timeline-max{position:absolute;top:2px;right:6px;font-size:.68rem;color:var(--ink-soft);}
.map-timeline input[type=range]{width:100%;margin:6px 0 0;accent-color:var(--brick);cursor:pointer;}
.map-timeline-ticks{display:flex;justify-content:space-between;font-size:.68rem;color:var(--ink-soft);margin-top:2px;padding:0 2px;}
.map-timeline-note{margin:10px 0 0;font-size:.8rem;color:var(--ink-soft);text-align:left;line-height:1.5;}
.map-timeline.is-time-mode{border-color:var(--gold);}
@media(max-width:600px){ .map-timeline{padding:14px 14px 12px;} .map-timeline-year{font-size:1.3rem;min-width:0;} .map-timeline-ticks span:nth-child(even){display:none;} }

/* Ressources : textes pontificaux en liste chronologique (un pape après l'autre) */
.page-ressources .text-group:first-child{border-top:0;padding-top:4px;}
.page-ressources .text-group.gold h3,.page-ressources .text-group.brick h3{color:var(--navy-900);}
.page-ressources .text-group .pope-years{display:block;margin-top:4px;font-family:var(--ff-sans);font-size:.74rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--brick);}
.page-ressources .text-group .check-list li a{color:var(--navy-900);}
@media(max-width:700px){
  .page-ressources .text-group{grid-template-columns:1fr;row-gap:10px;padding:18px 0 16px;}
  .page-ressources .text-group .pope-years{display:inline;margin:0 0 0 8px;}
}

/* Chants : fenêtre en deux colonnes (vidéo, liens et pistes à gauche ; paroles à droite) */
#songModal .song-modal-panel{max-width:1100px;padding:34px 38px;}
#songModal .song-detail{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:36px;row-gap:0;align-items:start;}
#songModal .song-detail > *{grid-column:1;min-width:0;}
#songModal .song-detail > h3,#songModal .song-detail > .song-credit{grid-column:1/-1;}
#songModal .song-detail > .song-credit{margin-bottom:18px;}
#songModal .song-detail > .video-embed{margin-bottom:14px;}
#songModal .song-detail > .youtube-open-link{margin:0 8px 16px 0;justify-self:start;}
#songModal .song-detail > .caption{margin:6px 0 4px;font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--brick);}
#songModal .song-detail > .caption:has(+ .lyrics-text),#songModal .song-detail > .caption:has(+ .lyrics-pending){display:none;}
#songModal .song-detail > .lyrics-text,#songModal .song-detail > .lyrics-pending{grid-column:2;grid-row:3 / span 12;margin-top:0;max-height:min(66vh,680px);overflow:auto;}
#songModal .song-detail > .lyrics-text::before,#songModal .song-detail > .lyrics-pending::before{content:"Paroles et traduction";display:block;margin:0 0 12px;font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--brick);}
#songModal .song-detail > .voice-tracks{margin-bottom:10px;}
@media(max-width:860px){
  #songModal .song-modal-panel{padding:26px 22px;}
  #songModal .song-detail{grid-template-columns:1fr;}
  #songModal .song-detail > .lyrics-text,#songModal .song-detail > .lyrics-pending{grid-column:1;grid-row:auto;max-height:none;}
}

/* Frise : pleine largeur, hauteur bornée à l'écran, libellés plus compacts */
.timeline-frise-panel{width:100vw;margin-left:calc(50% - 50vw);padding:0 clamp(12px,2.5vw,36px);box-sizing:border-box;}
.timeline-frise-panel:not(.is-fullscreen) .timeline-frise{max-height:calc(100vh - 200px);min-height:420px;overflow:auto;}
/* Frise : barre d'outils sur une seule ligne (légende, recherche, zoom) */
.timeline-frise-panel:not(.is-fullscreen){display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,380px);column-gap:20px;align-items:center;}
.timeline-frise-panel:not(.is-fullscreen) .timeline-frise-legend{grid-column:1;grid-row:1;margin:14px 0 8px;align-items:center;}
.timeline-frise-panel:not(.is-fullscreen) .timeline-frise-search{grid-column:2;grid-row:1;margin:14px 0 8px;max-width:none;}
.timeline-frise-panel:not(.is-fullscreen) .timeline-frise-keys-row{grid-column:1/-1;grid-row:2;margin:0 0 6px;}
.timeline-frise-panel:not(.is-fullscreen) .timeline-frise-wrap{grid-column:1/-1;grid-row:3;min-width:0;}
.timeline-frise-panel:not(.is-fullscreen) .timeline-frise-minimap{grid-column:1/-1;grid-row:4;}
@media(max-width:900px){
  .timeline-frise-panel:not(.is-fullscreen){grid-template-columns:minmax(0,1fr);}
  .timeline-frise-panel:not(.is-fullscreen) .timeline-frise-search{grid-column:1;grid-row:2;margin:0 0 8px;}
  .timeline-frise-panel:not(.is-fullscreen) .timeline-frise-keys-row{grid-row:3;}
  .timeline-frise-panel:not(.is-fullscreen) .timeline-frise-wrap{grid-row:4;}
  .timeline-frise-panel:not(.is-fullscreen) .timeline-frise-minimap{grid-row:5;}
}


/* Carte : signalement discret (repliable) */
.contrib-block{padding:8px 0 40px;}
.contrib-details{max-width:720px;font-size:.84rem;color:var(--ink-soft);}
.contrib-details summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:8px;color:var(--ink-soft);text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px;}
.contrib-details summary::-webkit-details-marker{display:none;}
.contrib-details summary::before{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .2s;flex-shrink:0;}
.contrib-details[open] summary::before{transform:rotate(45deg);}
.contrib-details summary:hover{color:var(--brick);}
.contrib-form{margin-top:16px;padding:18px 0 0;border-top:1px solid var(--line);}
.contrib-form .form-row{margin-bottom:12px;}
.contrib-form .form-row label,.contrib-form .form-row-split label{font-size:.8rem;}
.contrib-form input,.contrib-form textarea,.contrib-form select{width:100%;box-sizing:border-box;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:.88rem;background:#fff;color:var(--ink);}
.contrib-form textarea{min-height:90px;resize:vertical;}
.contrib-form input:focus,.contrib-form textarea:focus,.contrib-form select:focus{outline:2px solid var(--navy-700);outline-offset:1px;}
.form-row-split{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.form-row-split label{display:block;font-weight:700;color:var(--navy-900);margin-bottom:5px;}
.contrib-form button[type="submit"]{padding:9px 16px;font-size:.82rem;}
.contrib-form .contact-form-status{font-size:.84rem;margin-top:10px;}
.row-detail-report{margin:8px 0 0;font-size:.8rem;}
.row-report-link{color:var(--ink-soft);text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px;font-weight:500;}
.row-report-link:hover{color:var(--brick);}
@media(max-width:600px){ .form-row-split{grid-template-columns:1fr;} }
.map-export{margin:0;font-size:.78rem;color:var(--ink-soft);}
.map-export-after{margin-top:12px;text-align:right;}
.map-export a{color:var(--ink-soft);text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px;font-weight:500;}
.map-export a:hover{color:var(--brick);}

/* Page 404 */
.error-404{min-height:0;padding:64px 24px 80px;}
.error-404-inner{max-width:760px;margin:0 auto;}
.error-404-badge{display:inline-flex;align-items:center;justify-content:center;width:96px;height:96px;border-radius:50%;background:var(--navy-100);margin:0 auto 22px;}
.error-404-badge span{font-family:var(--ff-serif);font-weight:800;font-size:1.75rem;color:var(--navy-900);letter-spacing:.02em;}
.error-404 h1{font-size:clamp(1.9rem,4.4vw,2.8rem);}
.error-404 p{margin-bottom:22px;}
.error-404-search{display:inline-flex;align-items:center;gap:12px;width:100%;max-width:560px;margin:0 auto 34px;padding:14px 18px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink-soft);font:inherit;font-size:.95rem;text-align:left;cursor:text;box-shadow:var(--shadow-sm);transition:.2s;}
.error-404-search svg{width:20px;height:20px;flex-shrink:0;color:var(--navy-800);}
.error-404-search:hover,.error-404-search:focus-visible{border-color:var(--gold);box-shadow:var(--shadow-md);color:var(--navy-900);}
.error-404-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;text-align:left;}
.error-404-links a{display:flex;flex-direction:column;gap:3px;padding:14px 16px;background:#fff;border:1px solid var(--line);border-radius:12px;text-decoration:none;box-shadow:var(--shadow-sm);transition:.2s;}
.error-404-links a strong{font-family:var(--ff-serif);font-size:1rem;color:var(--navy-900);}
.error-404-links a span{font-size:.8rem;color:var(--ink-soft);line-height:1.4;}
.error-404-links a:hover{border-color:var(--gold);transform:translateY(-2px);box-shadow:var(--shadow-md);}
@media(max-width:600px){ .error-404{padding:44px 16px 60px;} .error-404-links{grid-template-columns:1fr;} }

/* Carte : fiche synthétique d'une maison (prévôt, effectifs, dates clés) */
/* Fiche uniforme des Oratoires vivants (lieu, prévôt/effectifs, dates clés,
   mise à jour + source) — voir buildFicheHtml dans carte-oratoires.js.
   Taille de base pensée pour la bulle de carte (étroite) ; agrandie dans le
   volet du tableau (.row-detail), plus large, via les règles qui suivent. */
.oratoire-facts{margin:8px 0 2px;padding-top:7px;border-top:1px solid var(--line);}
.oratoire-facts strong{color:var(--navy-900);font-weight:700;}
.oratoire-facts .of-lieu{margin:0 0 6px;font-size:.78rem;line-height:1.45;color:var(--ink-soft);font-style:italic;}
.oratoire-facts .of-rows{margin:0 0 4px;}
.oratoire-facts .of-row{display:flex;gap:8px;padding:2px 0;font-size:.76rem;line-height:1.4;}
.oratoire-facts .of-label{flex:0 0 62px;color:var(--ink-soft);font-weight:600;text-transform:uppercase;letter-spacing:.03em;font-size:.64rem;padding-top:2px;}
.oratoire-facts .of-value{color:var(--navy-900);}
.oratoire-facts .of-dates{list-style:none;margin:3px 0 5px;padding:6px 0 0;border-top:1px dashed var(--line);}
.oratoire-facts .of-dates li{display:flex;gap:9px;padding:3px 0;font-size:.74rem;line-height:1.4;color:var(--ink-soft);}
.oratoire-facts .of-dates li + li{border-top:1px dashed var(--line);}
.oratoire-facts .of-year{flex:0 0 32px;font-weight:700;color:var(--brick);}
.oratoire-facts .of-meta{margin:5px 0 0;font-size:.66rem;color:var(--ink-soft);opacity:.85;}
.oratoire-facts .of-meta a{color:var(--ink-soft);text-decoration:underline;}
.row-detail .oratoire-facts{padding-top:10px;}
.row-detail .oratoire-facts .of-lieu{font-size:.92rem;}
.row-detail .oratoire-facts .of-row{font-size:.9rem;}
.row-detail .oratoire-facts .of-label{font-size:.72rem;flex-basis:74px;}
.row-detail .oratoire-facts .of-dates li{font-size:.88rem;}
.row-detail .oratoire-facts .of-meta{font-size:.76rem;}

/* ===== Page « Une journée à l'Oratoire » ===== */
.page-journee .section-head{margin-bottom:26px;}
.page-journee .section-head .eyebrow{font-family:"Sora",sans-serif;font-size:1.05rem;font-weight:700;color:var(--gold);}
.page-journee .lead{max-width:680px;margin:10px 0 0;color:var(--ink-soft);line-height:1.6;text-align:left;}
.journee-grid{display:grid;grid-template-columns:1fr;gap:18px;}
@media(min-width:720px){.journee-grid{grid-template-columns:1fr 1fr;}}
.journee-grid.semaine{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));}
.jour{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px 22px;}
.block-alt .jour{border-color:transparent;}
.jour h3{margin:0 0 12px;font-size:1.05rem;color:var(--navy-900);}
.jour-maison{border-left:3px solid var(--gold);}
.horaire{list-style:none;margin:0;padding:0;}
.horaire li{display:grid;grid-template-columns:58px minmax(0,1fr);gap:12px;padding:7px 0;border-top:1px dashed var(--line);font-size:.95rem;line-height:1.5;color:var(--ink-soft);}
.horaire li:first-child{border-top:0;}
.horaire time{font-family:"Sora",sans-serif;font-weight:600;color:var(--navy-900);font-variant-numeric:tabular-nums;}
.horaire small,.rdv small{color:var(--ink-soft);font-size:.86em;}
.rdv{list-style:none;margin:0;padding:0;}
.rdv li{padding:9px 0;border-top:1px dashed var(--line);font-size:.95rem;line-height:1.6;color:var(--ink-soft);}
.rdv li:first-child{border-top:0;padding-top:0;}
.rdv strong{color:var(--navy-900);}
.jour-note{margin:12px 0 0;padding-top:10px;border-top:1px dashed var(--line);font-size:.9rem;line-height:1.55;color:var(--ink-soft);text-align:left;}
@media(max-width:640px){.jour{padding:16px 16px;}.horaire li{grid-template-columns:52px minmax(0,1fr);}}
.hero-sub{margin:10px 0 0;font-size:.92rem;color:rgba(255,255,255,.72);max-width:640px;}
.page-hero-wide h1{max-width:none;}
.page-hero-wide .hero-sub{max-width:none;font-size:1.05rem;line-height:1.6;}
.jour-texte p{margin:0 0 12px;font-size:.95rem;line-height:1.65;color:var(--ink-soft);text-align:left;}
.jour-texte p:last-child{margin-bottom:0;}
.jour-texte small{color:var(--ink-soft);font-size:.86em;}
.jour-intro{margin:-4px 0 10px;font-size:.9rem;color:var(--ink-soft);line-height:1.5;}
.puces{list-style:disc;margin:0;padding-left:18px;}
.puces li{padding:4px 0;font-size:.95rem;line-height:1.6;color:var(--ink-soft);}
.puces li::marker{color:var(--gold);}
/* Liste factuelle à tirets (ex. Oratoire séculier) : plus sobre qu'un
   paragraphe, chaque point reste une phrase autonome. */
.apo-dash-list{margin:0 0 4px;padding:0;}
.apo-dash-list li{position:relative;padding:4px 0 4px 18px;font-size:.95rem;line-height:1.6;color:var(--ink-soft);}
.apo-dash-list li::before{content:'–';position:absolute;left:0;color:var(--gold);font-weight:700;}
.apo-dash-list li strong{color:var(--navy-900);font-variant-numeric:tabular-nums;margin-right:4px;}
.jeudi-subtitle{margin:18px 0 6px;font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-dark,#8a611f);}
.jeudi-themes{margin-top:22px;padding-top:4px;border-top:1px solid var(--line);}
.jeudi-themes-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:2px 28px;}
.jeudi-themes-list li{display:flex;gap:12px;padding:7px 0;border-bottom:1px dashed var(--line);font-size:.93rem;line-height:1.45;color:var(--ink-soft);}
.jeudi-themes-list .jeudi-date{flex:0 0 96px;white-space:nowrap;font-weight:700;color:var(--navy-900);}
.rdv a,.jour-note a{color:var(--navy-900);text-decoration:underline;text-decoration-color:var(--gold);text-underline-offset:3px;}
.btn-small{padding:9px 18px;font-size:.88rem;}
.page-journee .faq-list{max-width:860px;margin:0;border-top:1px solid var(--line);}
.faq{border-bottom:1px solid var(--line);}
.faq summary{list-style:none;cursor:pointer;padding:16px 40px 16px 0;position:relative;font-family:"Sora",sans-serif;font-weight:600;font-size:1.02rem;color:var(--navy-900);line-height:1.4;}
.faq summary::-webkit-details-marker{display:none;}
.faq summary::after{content:"+";position:absolute;right:6px;top:50%;transform:translateY(-50%);font-weight:500;font-size:1.3rem;color:var(--gold);transition:transform .2s;}
.faq[open] summary::after{content:"–";}
.faq summary:hover{color:var(--navy-700,var(--navy-900));}
.faq-body{padding:0 0 18px;max-width:720px;}
.faq-body p{margin:0 0 10px;font-size:.96rem;line-height:1.65;color:var(--ink-soft);text-align:left;}
.faq-body p:last-child{margin-bottom:0;}
.faq-body .horaire{margin:6px 0 12px;}
.faq-body .puces{margin:6px 0 10px;}
.faq-body small{font-size:.86em;}
.faq-body a:not(.btn){color:var(--navy-900);text-decoration:underline;text-decoration-color:var(--gold);text-underline-offset:3px;}
.page-journee .section-head{margin-bottom:8px;}
