/*
Theme Name: OpenGenea Album
Theme URI: https://opengenea.chezjems.fr
Author: OpenGenea
Description: Thème clair, humain et photographique pour OpenGenea.
Version: 2.1.0-beta13-mobile-true-center
Text Domain: opengenea-album
*/
:root{--ink:#2e2a27;--muted:#716b65;--paper:#fffdf9;--cream:#f5efe6;--line:#e6ddd1;--accent:#9a5f3f;--accent2:#d9b99f;--max:1220px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.6}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.site-main{min-height:70vh}
.site-header{position:sticky;top:0;z-index:20;background:rgba(255,253,249,.95);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}.site-header-inner{max-width:var(--max);margin:auto;padding:16px 24px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:#efe2d5;color:var(--accent);font-family:Georgia,serif;font-size:25px}.brand strong{display:block;font:700 22px/1.1 Georgia,serif}.brand small{display:block;color:var(--muted);font-size:12px;margin-top:3px}.main-nav{display:flex;gap:26px;align-items:center;font-weight:600;font-size:14px}.main-nav a:hover{color:var(--accent)}.menu-toggle{display:none;border:1px solid var(--line);background:white;padding:9px 12px;border-radius:10px}
.opg-home{overflow:hidden}.opg-hero-v3{max-width:var(--max);margin:auto;padding:72px 24px 52px;display:grid;grid-template-columns:1.03fr .97fr;align-items:center;gap:70px}.opg-kicker{display:inline-flex;align-items:center;gap:8px;color:var(--accent);font-weight:700;text-transform:uppercase;letter-spacing:.12em;font-size:12px}.opg-kicker:before{content:"";width:34px;height:1px;background:var(--accent)}.opg-hero-v3 h1{font:500 clamp(50px,6vw,86px)/.98 Georgia,serif;letter-spacing:-.035em;margin:18px 0 24px}.opg-hero-v3 h1 em{font-weight:400;color:var(--accent)}.opg-lead{font-size:20px;color:var(--muted);max-width:620px}.opg-search-v3{display:flex;max-width:620px;margin-top:32px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:7px;box-shadow:0 16px 50px rgba(73,53,39,.11)}.opg-search-v3 input{flex:1;min-width:0;border:0;background:transparent;padding:15px 16px;font-size:16px;outline:0}.opg-search-v3 button{border:0;border-radius:13px;background:var(--accent);color:#fff;padding:0 24px;font-weight:700;cursor:pointer}.opg-hero-photo{position:relative;min-height:530px}.opg-hero-photo .photo-main{position:absolute;inset:0 0 40px 55px;border-radius:180px 180px 36px 36px;overflow:hidden;background:#ddd;box-shadow:0 30px 80px rgba(72,49,35,.18)}.opg-hero-photo .photo-main img{width:100%;height:100%;object-fit:cover;object-position:18% 50%;filter:sepia(.22) brightness(1.35) contrast(.9)}.opg-hero-photo .photo-main:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.12),rgba(106,70,48,.08))}.opg-portrait-badge{position:absolute;left:0;bottom:0;width:190px;background:#fff;border:1px solid var(--line);border-radius:24px;padding:15px;box-shadow:0 20px 50px rgba(72,49,35,.14)}.opg-portrait-badge .faces{display:flex}.opg-portrait-badge .face{width:52px;height:52px;border-radius:50%;border:4px solid white;background-image:none;background-size:330px auto;margin-left:-10px;box-shadow:0 2px 9px rgba(0,0,0,.1)}.opg-portrait-badge .face:first-child{margin-left:0;background-position:15% 35%}.opg-portrait-badge .face:nth-child(2){background-position:33% 30%}.opg-portrait-badge .face:nth-child(3){background-position:48% 32%}.opg-portrait-badge strong{display:block;margin-top:8px;font-family:Georgia,serif}.opg-portrait-badge small{color:var(--muted)}
.opg-stats-v3{background:var(--cream);border-block:1px solid var(--line)}.opg-stats-v3-inner{max-width:var(--max);margin:auto;padding:26px 24px;display:grid;grid-template-columns:repeat(4,1fr)}.opg-stats-v3 div{padding:8px 26px;border-right:1px solid #ddd0c1}.opg-stats-v3 div:last-child{border:0}.opg-stats-v3 strong{display:block;font:500 36px/1 Georgia,serif}.opg-stats-v3 span{color:var(--muted);font-size:14px}
.opg-section{max-width:var(--max);margin:auto;padding:82px 24px}.opg-section-head{display:flex;justify-content:space-between;gap:24px;align-items:end;margin-bottom:30px}.opg-section h2{font:500 clamp(34px,4vw,54px)/1.05 Georgia,serif;margin:0}.opg-section-head p{max-width:470px;color:var(--muted);margin:0}.opg-categories{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.opg-category{min-height:290px;border:1px solid var(--line);border-radius:24px;padding:28px;display:flex;flex-direction:column;justify-content:space-between;background:#fff;transition:.25s}.opg-category:hover{transform:translateY(-5px);box-shadow:0 20px 60px rgba(63,48,38,.1)}.opg-category .num{font:400 15px Georgia,serif;color:var(--accent)}.opg-category h3{font:500 31px/1.1 Georgia,serif;margin:0 0 8px}.opg-category p{color:var(--muted);margin:0}.opg-category .arrow{font-size:25px;color:var(--accent)}.opg-category.photo{background:linear-gradient(180deg,rgba(255,255,255,.1),rgba(36,25,19,.72)),none center/cover;color:white}.opg-category.photo p,.opg-category.photo .num{color:rgba(255,255,255,.85)}
.opg-people-strip{background:#fbf7f1}.opg-people{display:grid;grid-template-columns:repeat(5,1fr);gap:22px}.opg-person-v3{text-align:center}.opg-person-v3 .avatar{width:100%;aspect-ratio:1/1.18;border-radius:140px 140px 24px 24px;background:#e9dfd4;overflow:hidden;position:relative}.opg-person-v3 .avatar:before{content:"";position:absolute;inset:0;background-image:none;background-size:650px auto;filter:sepia(.3) brightness(1.22);transform:scale(1.18)}.opg-person-v3:nth-child(1) .avatar:before{background-position:12% 29%}.opg-person-v3:nth-child(2) .avatar:before{background-position:31% 28%}.opg-person-v3:nth-child(3) .avatar:before{background-position:48% 31%}.opg-person-v3:nth-child(4) .avatar:before{background-position:64% 31%}.opg-person-v3:nth-child(5) .avatar:before{background-position:82% 30%}.opg-person-v3 h3{font:500 22px/1.15 Georgia,serif;margin:15px 0 3px}.opg-person-v3 small{color:var(--muted)}
.opg-doc-story{display:grid;grid-template-columns:1.08fr .92fr;gap:54px;align-items:center}.opg-doc-photo{min-height:480px;border-radius:28px;background:none center/cover;box-shadow:0 25px 70px rgba(72,49,35,.12)}.opg-doc-copy h2{font:500 clamp(38px,5vw,62px)/1.04 Georgia,serif;margin:0 0 20px}.opg-doc-copy p{color:var(--muted);font-size:18px}.opg-button{display:inline-flex;margin-top:18px;padding:13px 20px;border-radius:999px;background:var(--accent);color:#fff;font-weight:700}
.site-footer{background:#2f2925;color:#fff}.site-footer-inner{max-width:var(--max);margin:auto;padding:46px 24px;display:flex;justify-content:space-between;gap:30px}.site-footer p{color:#cfc3b8;margin:6px 0 0}
.opg-native-page{max-width:var(--max);margin:auto;padding:56px 24px}.opg-title h1{font:500 55px/1 Georgia,serif}.opg-grid,.opg-docs,.opg-home-list,.opg-home-docs{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.opg-card,.opg-docs>a,.opg-home-doc{background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px}.opg-card b,.opg-docs b{font-family:Georgia,serif;font-size:20px}.opg-search{background:var(--cream);padding:24px;border-radius:20px;display:grid;grid-template-columns:1fr 1fr auto;gap:14px}.opg-search label{display:grid;gap:6px}.opg-search input{padding:13px;border:1px solid var(--line);border-radius:10px}.opg-search button{border:0;background:var(--accent);color:#fff;border-radius:10px;padding:0 22px}
@media(max-width:900px){.main-nav{display:none;position:absolute;top:76px;left:16px;right:16px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px;flex-direction:column;align-items:flex-start}.main-nav.open{display:flex}.menu-toggle{display:block}.opg-hero-v3{grid-template-columns:1fr;padding-top:44px;gap:30px}.opg-hero-photo{min-height:420px}.opg-categories{grid-template-columns:1fr 1fr}.opg-people{grid-template-columns:repeat(3,1fr)}.opg-doc-story{grid-template-columns:1fr}.opg-stats-v3-inner{grid-template-columns:1fr 1fr}.opg-stats-v3 div:nth-child(2){border-right:0}.opg-grid,.opg-docs,.opg-home-list,.opg-home-docs{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.opg-hero-v3 h1{font-size:48px}.opg-search-v3{display:grid}.opg-search-v3 button{padding:14px}.opg-hero-photo{min-height:330px}.opg-hero-photo .photo-main{left:30px}.opg-portrait-badge{width:165px}.opg-categories,.opg-people,.opg-grid,.opg-docs,.opg-home-list,.opg-home-docs{grid-template-columns:1fr}.opg-stats-v3-inner{grid-template-columns:1fr 1fr}.opg-stats-v3 div{padding:10px;border:0}.opg-section{padding:58px 18px}.opg-section-head{display:block}.opg-section-head p{margin-top:14px}.site-footer-inner{display:block}.opg-search{grid-template-columns:1fr}}


/* 0.4 — page d’accueil éditoriale */
.opg-hero-v4{position:relative;min-height:78vh;display:grid;align-items:end;background:#d9cec2;overflow:hidden}.opg-hero-v4-bg{position:absolute;inset:0;background:none center 34%/cover no-repeat;filter:sepia(.18) saturate(.82) brightness(1.08);transform:scale(1.015)}.opg-hero-v4:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(30,23,18,.64) 0%,rgba(30,23,18,.25) 51%,rgba(30,23,18,.05) 100%),linear-gradient(0deg,rgba(30,23,18,.38),transparent 55%)}.opg-hero-v4-inner{position:relative;z-index:2;width:min(var(--max),100%);margin:auto;padding:110px 24px 72px;color:#fff}.opg-hero-v4-copy{max-width:780px}.opg-hero-v4 .opg-kicker{color:#fff}.opg-hero-v4 .opg-kicker:before{background:#fff}.opg-hero-v4 h1{font:500 clamp(52px,7.6vw,104px)/.92 Georgia,serif;letter-spacing:-.045em;margin:20px 0 26px;max-width:920px}.opg-hero-v4 h1 em{font-weight:400;color:#f1d5bf}.opg-hero-v4 p{max-width:680px;font-size:clamp(18px,2vw,23px);color:rgba(255,255,255,.9);margin:0}.opg-search-v4{display:flex;max-width:700px;margin-top:34px;background:rgba(255,255,255,.96);padding:7px;border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.23)}.opg-search-v4 input{flex:1;min-width:0;border:0;background:transparent;padding:16px 18px;font-size:16px;outline:0;color:var(--ink)}.opg-search-v4 button{border:0;border-radius:13px;background:var(--accent);color:#fff;padding:0 25px;font-weight:750;cursor:pointer}.opg-hero-note{display:flex;gap:26px;align-items:center;margin-top:30px;font-size:14px;color:rgba(255,255,255,.83)}.opg-hero-note strong{font:500 25px Georgia,serif;color:#fff;margin-right:6px}
.opg-intro-v4{max-width:980px;margin:auto;padding:100px 24px;text-align:center}.opg-intro-v4 .eyebrow{color:var(--accent);font-size:12px;text-transform:uppercase;letter-spacing:.15em;font-weight:800}.opg-intro-v4 h2{font:500 clamp(40px,5.5vw,72px)/1.03 Georgia,serif;letter-spacing:-.025em;margin:18px auto 22px}.opg-intro-v4 p{max-width:730px;margin:auto;color:var(--muted);font-size:19px}
.opg-editorial-grid{max-width:var(--max);margin:auto;padding:0 24px 96px;display:grid;grid-template-columns:1.25fr .75fr;gap:22px}.opg-editorial-card{position:relative;min-height:620px;border-radius:30px;overflow:hidden;color:#fff;background:#cbb9aa}.opg-editorial-card.small{min-height:620px}.opg-editorial-card .visual{position:absolute;inset:0;background-position:center;background-size:cover;transition:transform .65s ease}.opg-editorial-card.people .visual{background-image:none;background-position:38% 35%}.opg-editorial-card.docs .visual{background-image:none}.opg-editorial-card:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(27,19,15,.73),rgba(27,19,15,.05) 62%)}.opg-editorial-card:hover .visual{transform:scale(1.035)}.opg-editorial-card-copy{position:absolute;z-index:2;left:0;right:0;bottom:0;padding:36px}.opg-editorial-card .label{text-transform:uppercase;letter-spacing:.13em;font-size:11px;font-weight:800;color:rgba(255,255,255,.8)}.opg-editorial-card h3{font:500 clamp(34px,4vw,56px)/1 Georgia,serif;margin:10px 0}.opg-editorial-card p{max-width:520px;color:rgba(255,255,255,.84);margin:0 0 18px}.opg-text-link{display:inline-flex;align-items:center;gap:10px;font-weight:750}.opg-text-link span{font-size:22px}
.opg-story-v4{background:#f4ede4}.opg-story-v4-inner{max-width:var(--max);margin:auto;padding:105px 24px;display:grid;grid-template-columns:.92fr 1.08fr;gap:76px;align-items:center}.opg-story-photo{min-height:640px;border-radius:220px 220px 30px 30px;background:none center/cover;box-shadow:0 30px 80px rgba(70,48,34,.14)}.opg-story-copy h2{font:500 clamp(42px,5.4vw,70px)/1.02 Georgia,serif;letter-spacing:-.03em;margin:16px 0 22px}.opg-story-copy p{font-size:18px;color:var(--muted)}.opg-story-quote{border-left:1px solid var(--accent2);padding:6px 0 6px 22px;margin:28px 0;font:italic 24px/1.45 Georgia,serif;color:#4e4138}
.opg-people-v4{max-width:var(--max);margin:auto;padding:102px 24px}.opg-people-v4-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:24px}.opg-person-v4 .portrait{aspect-ratio:.78;border-radius:160px 160px 22px 22px;overflow:hidden;background:#eadfd4;position:relative}.opg-person-v4 .portrait:before{content:"";position:absolute;inset:0;background:none center/720px auto no-repeat;filter:sepia(.25) brightness(1.2);transition:transform .45s ease}.opg-person-v4:nth-child(1) .portrait:before{background-position:10% 28%}.opg-person-v4:nth-child(2) .portrait:before{background-position:30% 29%}.opg-person-v4:nth-child(3) .portrait:before{background-position:48% 29%}.opg-person-v4:nth-child(4) .portrait:before{background-position:66% 28%}.opg-person-v4:nth-child(5) .portrait:before{background-position:86% 30%}.opg-person-v4:hover .portrait:before{transform:scale(1.045)}.opg-person-v4 h3{font:500 22px/1.12 Georgia,serif;margin:15px 0 4px}.opg-person-v4 p{margin:0;color:var(--muted);font-size:14px}.opg-person-v4 .profession{display:block;color:var(--accent);font-size:12px;text-transform:uppercase;letter-spacing:.08em;margin-top:7px}
.opg-docs-v4{max-width:var(--max);margin:auto;padding:0 24px 105px}.opg-docs-v4-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.opg-doc-v4{display:block;background:#f6f0e8;border-radius:24px;padding:18px;transition:.25s}.opg-doc-v4:hover{transform:translateY(-5px);box-shadow:0 22px 60px rgba(70,50,36,.10)}.opg-doc-v4-preview{aspect-ratio:1.22;border-radius:15px;background:#fff;box-shadow:0 10px 28px rgba(70,50,36,.12);position:relative;overflow:hidden}.opg-doc-v4-preview img{width:100%;height:100%;object-fit:cover;object-position:center;position:relative;z-index:1}.opg-doc-v4-preview:after{z-index:2}.opg-doc-v4-preview:after{content:"Archives";position:absolute;right:10px;bottom:10px;padding:5px 9px;border-radius:999px;background:rgba(255,255,255,.9);font-size:10px;letter-spacing:.08em;text-transform:uppercase}.opg-doc-v4 h3{font:500 21px/1.2 Georgia,serif;margin:16px 3px 4px}.opg-doc-v4 p{margin:0 3px;color:var(--muted);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.opg-final-v4{margin:0 24px 80px;border-radius:30px;background:#312a25;color:#fff;text-align:center;padding:86px 24px}.opg-final-v4 h2{font:500 clamp(40px,5vw,66px)/1.02 Georgia,serif;margin:0 auto 18px}.opg-final-v4 p{color:#d9cec5;max-width:650px;margin:0 auto 28px;font-size:18px}.opg-final-v4 .opg-button{background:#fff;color:#312a25}
@media(max-width:900px){.opg-editorial-grid,.opg-story-v4-inner{grid-template-columns:1fr}.opg-editorial-card,.opg-editorial-card.small{min-height:500px}.opg-story-photo{min-height:480px}.opg-people-v4-grid{grid-template-columns:repeat(3,1fr)}.opg-docs-v4-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.opg-hero-v4{min-height:82vh}.opg-hero-v4-inner{padding:90px 18px 46px}.opg-hero-v4 h1{font-size:52px}.opg-search-v4{display:grid}.opg-search-v4 button{padding:14px}.opg-hero-note{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}.opg-intro-v4{padding:72px 18px}.opg-editorial-grid{padding:0 18px 70px}.opg-editorial-card,.opg-editorial-card.small{min-height:440px}.opg-editorial-card-copy{padding:25px}.opg-story-v4-inner{padding:72px 18px;gap:36px}.opg-story-photo{min-height:400px}.opg-people-v4{padding:72px 18px}.opg-people-v4-grid,.opg-docs-v4-grid{grid-template-columns:1fr 1fr;gap:16px}.opg-person-v4 h3{font-size:18px}.opg-docs-v4{padding:0 18px 72px}.opg-final-v4{margin:0 14px 55px;padding:60px 18px}}


/* 0.5.1 — lumière, patronymes et archives dédupliquées */
.opg-hero-v4-bg{filter:sepia(.08) saturate(.96) brightness(1.24) contrast(.92)}
.opg-hero-v4:after{background:linear-gradient(90deg,rgba(35,27,21,.39) 0%,rgba(35,27,21,.14) 52%,rgba(35,27,21,0) 100%),linear-gradient(0deg,rgba(35,27,21,.20),transparent 48%)}
.opg-editorial-card:after{background:linear-gradient(0deg,rgba(34,24,18,.48),rgba(34,24,18,0) 66%)}
.opg-editorial-card .visual{filter:brightness(1.13) saturate(.96)}
.opg-story-photo,.opg-doc-v4-preview{filter:brightness(1.09) saturate(.96)}
.opg-final-v4{background:#7b604e}.site-footer{background:#56463d}
.opg-native-page{max-width:var(--max);margin:auto;padding:64px 24px 100px}
.opg-collection-head{max-width:820px;margin-bottom:36px}.opg-collection-head>span{display:block;color:var(--accent);font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.opg-collection-head h1{font:500 clamp(48px,7vw,82px)/1 Georgia,serif;letter-spacing:-.035em;margin:12px 0 18px}.opg-collection-head p{font-size:19px;color:var(--muted);margin:0}
.opg-alpha{position:sticky;top:78px;z-index:9;display:flex;flex-wrap:wrap;gap:7px;padding:15px;margin:0 0 42px;background:rgba(255,253,249,.94);backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:18px}.opg-alpha a,.opg-alpha span{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;font-size:13px;font-weight:800}.opg-alpha a{background:#fff;color:var(--accent);box-shadow:0 3px 12px rgba(60,42,30,.08)}.opg-alpha a:hover{background:var(--accent);color:#fff}.opg-alpha span{color:#c8c0b7}
.opg-letter-title{font:500 42px/1 Georgia,serif;color:var(--accent);margin:55px 0 16px;padding-top:95px;margin-top:-70px}.opg-surname-list{display:grid}.opg-surname-card{display:grid;grid-template-columns:1fr auto 34px;gap:28px;align-items:center;padding:25px 8px;border-bottom:1px solid var(--line);transition:.22s}.opg-surname-card:hover{padding-left:20px;padding-right:16px;background:#fff;border-radius:18px;box-shadow:0 14px 45px rgba(68,47,33,.07);border-color:transparent}.opg-surname-card h3{font:500 clamp(27px,3vw,39px)/1.05 Georgia,serif;margin:0 0 7px}.opg-surname-card p{margin:0;color:var(--muted)}.opg-surname-meta{text-align:right;min-width:170px}.opg-surname-meta span{display:block;color:var(--muted);font-size:13px}.opg-surname-meta strong{display:inline-block;font:500 27px Georgia,serif;margin-top:6px}.opg-surname-meta small{margin-left:5px;color:var(--muted)}.opg-surname-arrow{font-size:26px;color:var(--accent)}
.opg-archive-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:25px}.opg-archive-card{background:#fff;border:1px solid var(--line);border-radius:25px;padding:16px;transition:.25s;overflow:hidden}.opg-archive-card:hover{transform:translateY(-5px);box-shadow:0 24px 65px rgba(68,47,33,.10)}.opg-archive-preview{aspect-ratio:1.3;background:#f5efe7;border-radius:17px;display:grid;place-items:center;overflow:hidden;color:var(--accent);font-size:11px;font-weight:800;letter-spacing:.12em}.opg-archive-preview img{width:100%;height:100%;object-fit:cover}.opg-archive-copy{padding:15px 5px 6px}.opg-archive-copy small{text-transform:uppercase;letter-spacing:.11em;color:var(--accent);font-weight:800;font-size:10px}.opg-archive-copy h2{font:500 22px/1.15 Georgia,serif;margin:7px 0}.opg-archive-copy p{margin:0;color:var(--muted);font-size:13px}
@media(max-width:900px){.opg-archive-grid{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.opg-native-page{padding:46px 18px 72px}.opg-alpha{top:70px}.opg-surname-card{grid-template-columns:1fr 24px;gap:12px}.opg-surname-meta{grid-column:1;text-align:left;min-width:0}.opg-surname-arrow{grid-column:2;grid-row:1/3}.opg-archive-grid{grid-template-columns:1fr}}


/* 0.5.2 — portrait sur les fiches individuelles */
.opg-person .opga-person-hero{
  display:grid;
  grid-template-columns:minmax(190px,260px) minmax(0,1fr);
  gap:clamp(30px,5vw,72px);
  align-items:center;
  min-height:390px;
  padding:clamp(38px,6vw,72px);
}
.opga-person-portrait{
  width:100%;
  max-width:250px;
  aspect-ratio:4/5;
  border-radius:48% 48% 28px 28px;
  overflow:hidden;
  background:#e9dfd3;
  box-shadow:0 22px 55px rgba(70,49,34,.15);
  border:7px solid rgba(255,255,255,.72);
}
.opga-person-portrait img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
}
.opga-person-portrait.is-placeholder img{
  object-fit:contain;
  padding:18px 12px 0;
  background:linear-gradient(180deg,#f8f2e9,#dfd0c1);
}
.opga-person-identity{min-width:0}
.opg-person .opga-person-hero h1{
  margin:.25em 0 .55em;
  font-size:clamp(3rem,7vw,5.5rem);
  overflow-wrap:anywhere;
}
.opg-person .opga-person-hero strong,
.opg-person .opga-person-hero em{
  display:inline-block;
}
.opg-person .opga-person-hero em{margin-left:.4em}

@media(max-width:720px){
  .opg-person .opga-person-hero{
    grid-template-columns:1fr;
    text-align:center;
    padding:34px 22px 40px;
  }
  .opga-person-portrait{
    width:min(220px,72vw);
    margin:0 auto;
  }
  .opg-person .opga-person-hero h1{font-size:clamp(2.7rem,14vw,4.5rem)}
  .opg-person .opga-person-hero em{display:block;margin:8px 0 0}
}


/* 0.5.3 — carte d'identité enrichie */
.opg-person .opga-person-hero{
  grid-template-columns:minmax(230px,310px) minmax(0,1fr);
  min-height:455px;
}
.opga-person-portrait{
  max-width:305px;
  border:9px solid rgba(255,255,255,.88);
  border-radius:49% 49% 30px 30px;
  box-shadow:
    0 28px 70px rgba(70,49,34,.17),
    0 0 0 1px rgba(132,101,77,.08);
}
.opga-person-portrait.has-photo img{
  object-fit:contain;
  object-position:center center;
  background:#f7f2eb;
  padding:10px;
}
.opga-person-identity{
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.opg-person .opga-person-hero h1{
  font-size:clamp(3.2rem,6.5vw,5.7rem);
  line-height:.98;
}
.opga-person-facts{
  display:flex;
  flex-wrap:wrap;
  gap:11px 12px;
  margin-top:28px;
  max-width:760px;
}
.opga-person-fact{
  display:inline-flex;
  align-items:center;
  gap:9px;
  min-height:42px;
  padding:9px 14px 9px 10px;
  border:1px solid rgba(151,119,91,.18);
  border-radius:999px;
  background:rgba(255,255,255,.57);
  box-shadow:0 7px 24px rgba(75,52,36,.055);
  color:#4d443e;
}
.opga-person-fact i{
  width:25px;
  height:25px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:#ead8c5;
  color:#8f5739;
  font-style:normal;
  font-size:14px;
  line-height:1;
}
.opga-person-fact b{
  font-size:13px;
  font-weight:650;
  white-space:normal;
}
.opg-person .opga-person-hero > .opga-person-identity > em{
  color:#8a573d;
  font-size:16px;
}
@media(max-width:720px){
  .opg-person .opga-person-hero{
    min-height:0;
  }
  .opga-person-portrait{
    width:min(260px,78vw);
    max-width:260px;
  }
  .opga-person-facts{
    justify-content:center;
    margin-top:24px;
  }
  .opga-person-fact{
    max-width:100%;
  }
}


/* 0.5.5 — médaillon ancien, galerie des personnes et arbre complet */
.opga-person-portrait{
  position:relative;
  aspect-ratio:3/4;
  max-width:315px;
  padding:20px;
  overflow:visible;
  border-radius:50%;
  border:4px solid #a67535;
  background:
    radial-gradient(ellipse at center,#fffdf8 0 70%,#e4c996 71% 74%,#8a5a27 75% 77%,#d4ad68 78% 81%,#76502a 82% 100%);
  box-shadow:
    0 26px 58px rgba(70,49,34,.22),
    inset 0 0 0 4px rgba(255,246,214,.9),
    0 0 0 5px #d8b675,
    0 0 0 8px #80572d;
}
.opga-person-portrait:before,
.opga-person-portrait:after{
  content:"✦";
  position:absolute;
  left:50%;
  transform:translateX(-50%);
  color:#9a672f;
  font-size:34px;
  line-height:1;
  text-shadow:0 2px 0 #f6e2b3;
}
.opga-person-portrait:before{top:-27px}
.opga-person-portrait:after{bottom:-28px;transform:translateX(-50%) rotate(180deg)}
.opga-person-portrait img{
  width:100%;
  height:100%;
  padding:8px;
  border-radius:50%;
  object-fit:contain !important;
  object-position:center !important;
  background:#f5efe4;
  box-shadow:inset 0 0 18px rgba(63,39,22,.18);
}
.opga-person-portrait.is-placeholder img{padding:20px 14px 0}

.opga-people-directory,.opga-tree-page{
  max-width:var(--max);
  margin:auto;
  padding:64px 24px 100px;
}
.opga-person-letter-section{margin-bottom:52px}
.opga-people-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:22px;
}
.opga-person-card{
  position:relative;
  display:flex;
  align-items:center;
  gap:16px;
  min-height:135px;
  padding:15px 45px 15px 15px;
  border:1px solid var(--line);
  border-radius:22px;
  background:#fff;
  box-shadow:0 12px 38px rgba(70,49,34,.055);
  transition:.22s ease;
}
.opga-person-card:hover{
  transform:translateY(-4px);
  box-shadow:0 24px 55px rgba(70,49,34,.11);
}
.opga-card-medallion{
  flex:0 0 92px;
  width:92px;
  height:112px;
  padding:7px;
  border-radius:50%;
  background:linear-gradient(145deg,#e5c780,#8e5c28 45%,#f0d89b 70%,#76502c);
  box-shadow:0 8px 24px rgba(80,51,27,.18);
}
.opga-card-medallion img{
  width:100%;
  height:100%;
  display:block;
  object-fit:contain;
  border-radius:50%;
  background:#f6f0e7;
  padding:4px;
}
.opga-person-card-copy{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:4px;
}
.opga-person-card-copy strong{
  font:500 21px/1.05 Georgia,serif;
  color:#2e2722;
}
.opga-person-card-copy small{font-weight:750;color:#8d5d3b}
.opga-person-card-copy em{
  color:var(--muted);
  font-size:12px;
  font-style:normal;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.opga-person-card>i{
  position:absolute;
  right:18px;
  color:#9b673f;
  font-style:normal;
  font-size:22px;
}

/* arbre navigable */
.opga-tree-toolbar{
  display:flex;
  align-items:end;
  gap:10px;
  padding:13px;
  margin-bottom:14px;
  border:1px solid var(--line);
  border-radius:18px;
  background:#fff;
}
.opga-tree-toolbar label{flex:1}
.opga-tree-toolbar label span{
  display:block;
  margin:0 0 5px 4px;
  color:var(--muted);
  font-size:11px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.opga-tree-toolbar input{
  width:100%;
  min-height:44px;
  padding:0 14px;
  border:1px solid var(--line);
  border-radius:12px;
  background:#fbf8f3;
}
.opga-tree-toolbar button{
  min-height:44px;
  padding:0 16px;
  border:1px solid #d7c7b8;
  border-radius:12px;
  background:#f7efe5;
  color:#70472f;
  font-weight:800;
  cursor:pointer;
}
.opga-tree-viewport{
  position:relative;
  height:min(72vh,760px);
  overflow:hidden;
  border:1px solid #ddcdbd;
  border-radius:25px;
  background:
    linear-gradient(rgba(255,253,249,.84),rgba(255,253,249,.84)),
    radial-gradient(circle at 1px 1px,#d6c5b3 1px,transparent 1px);
  background-size:auto,24px 24px;
  cursor:grab;
  box-shadow:inset 0 0 50px rgba(95,67,45,.05);
}
.opga-tree-viewport.is-dragging{cursor:grabbing}
.opga-tree-stage{
  position:absolute;
  left:0;
  top:0;
  transform-origin:0 0;
}
.opga-tree-lines{
  position:absolute;
  inset:0;
  overflow:visible;
  pointer-events:none;
}
.opga-tree-lines path{
  fill:none;
  stroke:#bb9b78;
  stroke-width:2;
  opacity:.65;
}
.opga-tree-lines path.spouse{
  stroke:#a0664b;
  stroke-width:3;
  stroke-dasharray:8 5;
}
.opga-tree-node{
  position:absolute;
  width:205px;
  min-height:88px;
  display:grid;
  grid-template-columns:58px 1fr;
  gap:10px;
  align-items:center;
  padding:11px;
  border:1px solid #dcc8b5;
  border-radius:17px;
  background:rgba(255,253,249,.97);
  box-shadow:0 10px 30px rgba(70,49,34,.10);
  transition:.18s;
}
.opga-tree-node:hover,.opga-tree-node.is-match{
  z-index:5;
  transform:scale(1.05);
  border-color:#a86f43;
  box-shadow:0 15px 38px rgba(70,49,34,.18);
}
.opga-tree-node img{
  width:58px;
  height:68px;
  object-fit:contain;
  border-radius:50%;
  background:#f3eadf;
  border:3px solid #c99d5e;
  padding:3px;
}
.opga-tree-node strong{
  display:block;
  font:500 15px/1.05 Georgia,serif;
  color:#302820;
}
.opga-tree-node small{
  display:block;
  margin-top:5px;
  color:#8d5d3b;
  font-size:11px;
}

@media(max-width:1100px){
  .opga-people-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:800px){
  .opga-people-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .opga-tree-toolbar{flex-wrap:wrap}
  .opga-tree-toolbar label{flex:1 0 100%}
}
@media(max-width:560px){
  .opga-people-directory,.opga-tree-page{padding:46px 16px 72px}
  .opga-people-grid{grid-template-columns:1fr}
  .opga-tree-viewport{height:68vh}
}


/* 0.5.6 — visibilité renforcée de l'index et de l'arbre */
.opga-people-directory .opg-alpha{
  position:sticky;
  top:78px;
  z-index:20;
  box-shadow:0 12px 30px rgba(69,49,34,.08);
}
.opga-person-letter-section{
  scroll-margin-top:150px;
}
.opga-tree-page:empty::before{
  content:"Chargement de l’arbre familial…";
  display:block;
  padding:40px;
  text-align:center;
  color:#80644f;
}


/* 0.5.7 — carte de répartition familiale */
.opga-map-page{
  max-width:var(--max);
  margin:0 auto;
  padding:58px 24px 100px;
}
.opga-map-page .opg-title{
  margin-bottom:28px;
}
.opga-map-page #opg-map{
  height:min(72vh,760px);
  min-height:520px;
  border:9px solid rgba(255,255,255,.9);
  border-radius:28px;
  box-shadow:
    0 26px 65px rgba(68,48,34,.14),
    0 0 0 1px #dfcfbf;
}
.opga-map-page .opg-map-toolbar{
  padding:14px 18px;
  border:1px solid #dfcfbf;
  border-radius:17px;
  background:#fffaf4;
}
.opga-map-page .leaflet-popup-content-wrapper{
  border-radius:16px;
  box-shadow:0 14px 35px rgba(64,43,28,.18);
}
.opga-map-page .leaflet-popup-content{
  font-family:Arial,sans-serif;
}
.opga-map-page .opg-map-popup strong{
  font-family:Georgia,serif;
  font-size:1.25rem;
  color:#302720;
}

.opga-home-map{
  max-width:var(--max);
  margin:30px auto 90px;
  padding:0 24px;
  display:grid;
  grid-template-columns:minmax(0,.85fr) minmax(380px,1.15fr);
  gap:42px;
  align-items:center;
}
.opga-home-map-copy h2{
  margin:.35em 0;
  font:500 clamp(2.5rem,5vw,4.6rem)/1 Georgia,serif;
}
.opga-home-map-copy p{
  max-width:620px;
  color:var(--muted);
  font-size:1.05rem;
  line-height:1.75;
}
.opga-home-map-visual{
  position:relative;
  min-height:390px;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  align-items:flex-start;
  padding:35px;
  border-radius:32px;
  text-decoration:none;
  color:#fff;
  background:
    linear-gradient(180deg,rgba(47,35,25,.03),rgba(47,35,25,.62)),
    radial-gradient(circle at 62% 35%,rgba(173,128,74,.28),transparent 28%),
    repeating-linear-gradient(34deg,rgba(114,88,63,.08) 0 1px,transparent 1px 26px),
    linear-gradient(135deg,#e8dccb,#cbb79d);
  box-shadow:0 28px 70px rgba(67,47,32,.13);
}
.opga-home-map-visual:before,
.opga-home-map-visual:after{
  content:"";
  position:absolute;
  inset:26px;
  border:1px solid rgba(255,255,255,.52);
  border-radius:24px;
}
.opga-home-map-visual:after{
  inset:0;
  border:0;
  background:
    linear-gradient(72deg,transparent 45%,rgba(89,65,45,.15) 46% 47%,transparent 48%),
    linear-gradient(13deg,transparent 55%,rgba(89,65,45,.12) 56% 57%,transparent 58%);
}
.opga-home-map-visual strong,
.opga-home-map-visual small{
  position:relative;
  z-index:3;
}
.opga-home-map-visual strong{
  font:500 5.4rem/1 Georgia,serif;
}
.opga-home-map-visual small{
  margin-top:4px;
  font-size:.85rem;
  font-weight:800;
  letter-spacing:.14em;
  text-transform:uppercase;
}
.opga-map-pin{
  position:absolute;
  z-index:2;
  width:25px;
  height:25px;
  border-radius:50% 50% 50% 0;
  transform:rotate(-45deg);
  background:#9c633f;
  box-shadow:0 8px 18px rgba(72,44,25,.25);
}
.opga-map-pin:after{
  content:"";
  position:absolute;
  width:9px;
  height:9px;
  top:8px;
  left:8px;
  border-radius:50%;
  background:#f5e7d1;
}
.opga-map-pin.pin-one{left:34%;top:32%}
.opga-map-pin.pin-two{left:62%;top:20%;transform:rotate(-45deg) scale(.8)}
.opga-map-pin.pin-three{left:72%;top:52%;transform:rotate(-45deg) scale(.65)}

@media(max-width:850px){
  .opga-home-map{grid-template-columns:1fr}
  .opga-home-map-visual{min-height:330px}
}
@media(max-width:560px){
  .opga-map-page{padding:42px 14px 70px}
  .opga-map-page #opg-map{min-height:430px;border-width:5px}
  .opga-home-map{padding:0 16px;margin-bottom:65px}
  .opga-home-map-visual{min-height:280px;padding:25px}
  .opga-home-map-visual strong{font-size:4rem}
}


/* 0.5.8 — statistiques, responsive renforcé et arbre plus lisible */
.opga-stats-page{
  max-width:var(--max);
  margin:auto;
  padding:64px 24px 100px;
}
.opga-stat-kpis{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:14px;
  margin:35px 0;
}
.opga-stat-kpis article{
  min-height:140px;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  padding:20px;
  border:1px solid var(--line);
  border-radius:22px;
  background:linear-gradient(145deg,#fff,#f8f0e7);
  box-shadow:0 12px 35px rgba(68,48,32,.06);
}
.opga-stat-kpis strong{
  font:500 clamp(2rem,4vw,3.4rem)/1 Georgia,serif;
  color:#7e4e32;
}
.opga-stat-kpis span{
  margin-top:8px;
  color:var(--muted);
  font-size:.75rem;
  font-weight:850;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.opga-stat-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:22px;
}
.opga-stat-panel{
  padding:28px;
  border:1px solid var(--line);
  border-radius:26px;
  background:#fff;
  box-shadow:0 16px 45px rgba(68,48,32,.065);
}
.opga-stat-panel-wide{grid-column:1/-1}
.opga-stat-panel header span{
  color:#9a6847;
  font-size:.72rem;
  font-weight:900;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.opga-stat-panel h2{
  margin:.35em 0 1em;
  font:500 clamp(1.7rem,3vw,2.6rem)/1.05 Georgia,serif;
}
.opga-stat-bar-row{margin:13px 0}
.opga-stat-bar-label{
  display:flex;
  justify-content:space-between;
  gap:15px;
  margin-bottom:6px;
  font-size:.86rem;
}
.opga-stat-bar-label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.opga-stat-bar-label b{color:#85563b}
.opga-stat-bar-track{
  height:10px;
  overflow:hidden;
  border-radius:999px;
  background:#eee5da;
}
.opga-stat-bar-track i{
  display:block;
  height:100%;
  border-radius:inherit;
  background:linear-gradient(90deg,#bb8a62,#7f5740);
}
.opga-sex-chart{
  display:flex;
  align-items:center;
  gap:35px;
}
.opga-sex-donut{
  flex:0 0 190px;
  width:190px;
  aspect-ratio:1;
  display:grid;
  place-content:center;
  text-align:center;
  border-radius:50%;
  background:
    radial-gradient(circle,#fff 0 54%,transparent 55%),
    conic-gradient(#b47d82 0 var(--women),#6e8584 var(--women) calc(var(--women) + var(--men)),#c9b9a8 0);
  box-shadow:inset 0 0 0 1px rgba(80,55,38,.08);
}
.opga-sex-donut strong{font:500 2.4rem/1 Georgia,serif}
.opga-sex-donut small{color:var(--muted)}
.opga-sex-legend{display:grid;gap:12px;flex:1}
.opga-sex-legend span{display:flex;align-items:center;gap:9px}
.opga-sex-legend i,.opga-tree-legend i{
  width:13px;height:13px;border-radius:50%;display:inline-block;
}
.opga-sex-legend b{margin-left:auto}
.opga-sex-legend .female,.opga-tree-legend .female{background:#b47d82}
.opga-sex-legend .male,.opga-tree-legend .male{background:#6e8584}
.opga-sex-legend .unknown{background:#c9b9a8}

.opga-home-stats{
  max-width:var(--max);
  margin:20px auto 90px;
  padding:0 24px;
  display:grid;
  grid-template-columns:1fr .8fr;
  gap:40px;
  align-items:center;
}
.opga-home-stats h2{
  margin:.3em 0;
  font:500 clamp(2.5rem,5vw,4.7rem)/1 Georgia,serif;
}
.opga-home-stats p{color:var(--muted);line-height:1.75}
.opga-home-stats>a{
  min-height:270px;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  padding:35px;
  border-radius:30px;
  color:#fff;
  background:linear-gradient(145deg,#9d7053,#5f4638);
  box-shadow:0 25px 65px rgba(70,48,33,.18);
}
.opga-home-stats>a strong{font:500 5.5rem/1 Georgia,serif}
.opga-home-stats>a span{margin:7px 0 25px;font-size:1.05rem}
.opga-home-stats>a b{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}

/* Arbre */
.opga-tree-legend{
  display:flex;
  flex-wrap:wrap;
  gap:16px;
  margin:0 0 12px;
  color:var(--muted);
  font-size:.78rem;
}
.opga-tree-legend span{display:flex;align-items:center;gap:6px}
.opga-tree-legend .spouse{
  width:22px;height:0;border-top:3px dashed #a0664b;border-radius:0;
}
.opga-tree-legend .parent{
  width:22px;height:0;border-top:2px solid #bb9b78;border-radius:0;
}
.opga-tree-bands{
  position:absolute;
  inset:0;
  pointer-events:none;
  z-index:0;
}
.opga-tree-band{
  position:absolute;
  top:18px;
  bottom:18px;
  border-radius:26px;
  background:rgba(238,226,211,.32);
  border:1px solid rgba(165,128,94,.08);
}
.opga-tree-band:nth-child(even){background:rgba(219,230,225,.27)}
.opga-tree-band span{
  position:sticky;
  top:18px;
  display:block;
  padding:10px;
  color:#9b806b;
  font-size:10px;
  font-weight:900;
  letter-spacing:.12em;
  text-align:center;
  text-transform:uppercase;
}
.opga-tree-lines,.opga-tree-nodes{z-index:1}
.opga-tree-node{
  width:235px;
  min-height:106px;
  grid-template-columns:70px 1fr;
  padding:13px;
  border-left:5px solid #b7a696;
}
.opga-tree-node.sex-m{border-left-color:#6e8584}
.opga-tree-node.sex-f{border-left-color:#b47d82}
.opga-tree-node img{width:66px;height:80px}
.opga-tree-node strong{
  text-transform:uppercase;
  letter-spacing:.035em;
  font-size:16px;
}
.opga-tree-node em{
  display:block;
  margin-top:3px;
  color:#5f554d;
  font-size:12px;
  font-style:normal;
}
.opga-tree-node small{font-size:12px}
.opga-tree-viewport.is-compact .opga-tree-node{
  min-height:68px;
  grid-template-columns:1fr;
  padding:10px 12px;
}
.opga-tree-viewport.is-compact .opga-tree-node img,
.opga-tree-viewport.is-compact .opga-tree-node em{display:none}
.opga-tree-viewport:fullscreen{
  height:100vh;
  width:100vw;
  border-radius:0;
  background-color:#fbf8f3;
}
.opga-tree-toolbar{position:sticky;top:74px;z-index:30}

/* Responsive global */
@media(max-width:1100px){
  .opga-stat-kpis{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:800px){
  .opga-stats-page{padding:46px 16px 75px}
  .opga-stat-grid{grid-template-columns:1fr}
  .opga-stat-panel-wide{grid-column:auto}
  .opga-home-stats{grid-template-columns:1fr;padding:0 16px}
  .opga-sex-chart{align-items:flex-start}
  .opga-tree-toolbar{
    position:static;
    display:grid;
    grid-template-columns:repeat(2,1fr);
  }
  .opga-tree-toolbar label{grid-column:1/-1}
  .opga-tree-toolbar button{width:100%}
}
@media(max-width:560px){
  .opga-stat-kpis{grid-template-columns:repeat(2,1fr)}
  .opga-stat-kpis article{min-height:115px;padding:16px}
  .opga-stat-panel{padding:21px 17px}
  .opga-sex-chart{flex-direction:column;align-items:center}
  .opga-sex-donut{width:160px;flex-basis:160px}
  .opga-home-stats>a{min-height:230px;padding:26px}
  .opga-home-stats>a strong{font-size:4.2rem}
  .opg-person .opga-person-hero{padding-left:16px;padding-right:16px}
  .opga-person-facts{gap:8px}
  .opga-person-fact{width:100%;justify-content:flex-start}
}


/* 0.6.0 — arbre stabilisé et commandes fonctionnelles */
.opga-tree-toolbar{
  align-items:end;
}
.opga-tree-toolbar .opga-tree-zoom-value{
  min-width:68px;
  display:grid;
  place-items:center;
  min-height:44px;
  padding:0 12px;
  border:1px solid #d7c7b8;
  border-radius:12px;
  background:#fff;
  color:#76513a;
  font-weight:850;
}
.opga-tree-toolbar button.is-active{
  background:#70472f;
  color:#fff;
  border-color:#70472f;
}
.opga-tree-viewport:focus{
  outline:3px solid rgba(160,102,75,.24);
  outline-offset:3px;
}
.opga-tree-viewport .opga-tree-empty{
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
  padding:30px;
  text-align:center;
  color:#80644f;
  font-family:Georgia,serif;
  font-size:1.2rem;
}
.opga-tree-node{
  text-decoration:none;
}
.opga-tree-node:focus-visible{
  outline:4px solid rgba(142,88,55,.34);
  outline-offset:4px;
}
.opga-tree-node.is-hidden{
  display:none;
}
.opga-tree-node.is-match{
  z-index:10;
  border-color:#9f633e;
  background:#fff9ee;
  box-shadow:0 18px 42px rgba(76,49,31,.22);
}
.opga-tree-viewport.is-compact .opga-tree-node strong{
  font-size:13px;
}
.opga-tree-viewport:fullscreen,
.opga-tree-viewport:-webkit-full-screen{
  width:100vw;
  height:100vh;
  border:none;
  border-radius:0;
}
@media(max-width:800px){
  .opga-tree-toolbar{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
  .opga-tree-toolbar .opga-tree-zoom-value{
    width:100%;
  }
}
@media(max-width:520px){
  .opga-tree-toolbar{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .opga-tree-toolbar button,
  .opga-tree-toolbar .opga-tree-zoom-value{
    min-height:42px;
    padding:0 8px;
    font-size:12px;
  }
}


/* 0.6.1 — arbre aéré, liens droits et surbrillance familiale */
.opga-tree-lines path{
  stroke:#ad9278;
  stroke-width:2.2;
  opacity:.28;
  transition:opacity .18s ease,stroke .18s ease,stroke-width .18s ease;
}
.opga-tree-lines path.spouse{
  stroke:#9d684d;
  stroke-width:2.4;
  stroke-dasharray:9 6;
}
.opga-tree-lines path.is-highlighted{
  opacity:1;
  stroke:#9b4f32;
  stroke-width:5;
  filter:drop-shadow(0 2px 2px rgba(92,48,28,.18));
}
.opga-tree-lines path.parent.is-highlighted{
  stroke:#8f5a39;
}
.opga-tree-lines path.is-dimmed{
  opacity:.035;
}
.opga-tree-node{
  transition:
    opacity .18s ease,
    transform .18s ease,
    border-color .18s ease,
    box-shadow .18s ease,
    background .18s ease;
}
.opga-tree-node.is-dimmed{
  opacity:.16;
}
.opga-tree-node.is-selected{
  z-index:12;
  transform:scale(1.08);
  border-color:#8d4f30;
  background:#fff5e8;
  box-shadow:0 20px 50px rgba(87,49,28,.28);
}
.opga-tree-node.is-parent{
  z-index:9;
  border-color:#97633f;
  background:#fffaf0;
  box-shadow:0 15px 38px rgba(87,57,35,.17);
}
.opga-tree-node.is-child{
  z-index:9;
  border-color:#6e8584;
  background:#f4fbfa;
  box-shadow:0 15px 38px rgba(55,82,81,.16);
}
.opga-tree-node.is-spouse{
  z-index:9;
  border-color:#b47d82;
  background:#fff7f7;
  box-shadow:0 15px 38px rgba(99,60,65,.15);
}
.opga-tree-node.is-parent:after,
.opga-tree-node.is-child:after,
.opga-tree-node.is-spouse:after{
  position:absolute;
  right:10px;
  top:9px;
  padding:4px 7px;
  border-radius:999px;
  color:#fff;
  font-size:9px;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.opga-tree-node.is-parent:after{content:"Parent";background:#97633f}
.opga-tree-node.is-child:after{content:"Enfant";background:#6e8584}
.opga-tree-node.is-spouse:after{content:"Conjoint";background:#b47d82}
.opga-tree-legend small{
  flex-basis:100%;
  margin-top:4px;
  color:#795e4a;
  font-style:italic;
}
.opga-tree-band{
  background:rgba(238,226,211,.20);
}
.opga-tree-band:nth-child(even){
  background:rgba(219,230,225,.17);
}


/* 0.7.0 — reconstruction du graphe familial */
.opga-tree-lines path.parent{
  fill:none;
  stroke:#a98b70;
  stroke-width:2.4;
  opacity:.38;
  vector-effect:non-scaling-stroke;
}
.opga-tree-lines path.spouse{
  fill:none;
  stroke:#a2664c;
  stroke-width:3;
  stroke-dasharray:10 6;
  opacity:.55;
  vector-effect:non-scaling-stroke;
}
.opga-tree-lines path.is-highlighted{
  opacity:1;
  stroke:#8b472d;
  stroke-width:5;
}
.opga-tree-lines path.is-dimmed{opacity:.025}
.opga-tree-band{background:rgba(237,226,212,.18)}
.opga-tree-band:nth-child(even){background:rgba(221,230,225,.16)}
.opga-tree-node.is-dimmed{opacity:.13}


/* 0.7.1 — normalisation des identifiants GEDCOM */
.opga-tree-diagnostic{
  color:#9a6847 !important;
  font-style:normal !important;
  font-weight:800;
}

/* 0.7.2 — liens visibles au-dessus des fonds */
.opga-tree-stage{isolation:isolate}
.opga-tree-bands{z-index:0}
.opga-tree-lines{position:absolute;inset:0;z-index:2!important;overflow:visible;pointer-events:none}
.opga-tree-nodes{position:absolute;inset:0;z-index:3!important}
.opga-tree-lines path{fill:none;stroke:#9f7d61;stroke-width:3;opacity:.72;vector-effect:non-scaling-stroke}
.opga-tree-lines path.spouse{stroke:#a05f48;stroke-width:3.5;stroke-dasharray:10 6}
.opga-tree-lines path.is-highlighted{opacity:1;stroke:#7f3f28;stroke-width:6}
.opga-tree-lines path.is-dimmed{opacity:.06}


/* 0.7.3 — liens familiaux reconstruits côté navigateur depuis families */
.opga-tree-lines{
  z-index:5 !important;
}
.opga-tree-nodes{
  z-index:6 !important;
}
.opga-tree-lines path.parent{
  stroke:#8f7158 !important;
  stroke-width:3.2 !important;
  opacity:.82 !important;
}
.opga-tree-lines path.spouse{
  stroke:#9f5d46 !important;
  stroke-width:3.5 !important;
  opacity:.92 !important;
  stroke-dasharray:10 6;
}
.opga-tree-lines path.is-highlighted{
  stroke:#6f2f1f !important;
  stroke-width:6 !important;
  opacity:1 !important;
}
.opga-tree-lines path.is-dimmed{
  opacity:.05 !important;
}
.opga-tree-live-diagnostic{
  position:absolute;
  left:16px;
  bottom:16px;
  z-index:20;
  padding:8px 11px;
  border:1px solid #d7c1ad;
  border-radius:999px;
  background:rgba(255,250,244,.94);
  color:#714a32;
  font-size:11px;
  font-weight:800;
  box-shadow:0 8px 20px rgba(55,37,25,.09);
}


/* 0.7.4 — arbre horizontal par défaut */
.opga-tree-viewport.is-horizontal .opga-tree-band span{
  writing-mode:horizontal-tb;
}
.opga-tree-viewport.is-vertical .opga-tree-band span{
  writing-mode:horizontal-tb;
}
.opga-tree-toolbar [data-tree-orientation]{
  min-width:105px;
}


/* 0.8.0 — personnalisateur WordPress */
.opga-custom-logo{
  display:block;
  max-width:190px;
  max-height:64px;
  width:auto;
  height:auto;
  object-fit:contain;
}
.opga-site-badge{
  display:block;
  margin-top:3px;
  color:var(--muted);
  font-size:10px;
  font-weight:800;
  letter-spacing:.11em;
  text-transform:uppercase;
}
@media(max-width:700px){
  .opga-custom-logo{max-width:145px;max-height:48px}
  .opga-site-badge{display:none}
}


/* ==========================================================
   OpenGenea Album 1.0 — véritable arbre généalogique centré
   ========================================================== */
.opga-tree-page{
  max-width:none;
  width:100%;
}
.opga-tree-toolbar{
  display:grid;
  grid-template-columns:minmax(280px,1fr) 150px 150px repeat(5,auto);
  align-items:end;
  gap:10px;
}
.opga-tree-toolbar label{
  position:relative;
  display:grid;
  gap:6px;
}
.opga-tree-toolbar label > span{
  color:var(--muted);
  font-size:11px;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.opga-tree-toolbar input,
.opga-tree-toolbar select{
  width:100%;
  min-height:43px;
  border:1px solid var(--line);
  border-radius:14px;
  background:var(--surface);
  color:var(--text);
  padding:0 13px;
  font:inherit;
}
.opga-tree-person-picker{
  z-index:80;
}
.opga-tree-search-results{
  position:absolute;
  top:calc(100% + 7px);
  left:0;
  right:0;
  max-height:390px;
  overflow:auto;
  padding:7px;
  border:1px solid var(--line);
  border-radius:18px;
  background:var(--surface);
  box-shadow:0 22px 50px rgba(54,39,29,.2);
}
.opga-tree-search-results button{
  display:flex;
  align-items:center;
  gap:10px;
  width:100%;
  padding:8px;
  border:0;
  border-radius:12px;
  background:transparent;
  color:var(--text);
  text-align:left;
}
.opga-tree-search-results button:hover{
  background:color-mix(in srgb,var(--accent) 10%,transparent);
}
.opga-tree-search-results img{
  width:40px;
  height:48px;
  flex:0 0 auto;
  border-radius:9px;
  object-fit:cover;
}
.opga-tree-search-results span{
  display:grid;
  min-width:0;
}
.opga-tree-search-results strong{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.opga-tree-search-results small,
.opga-tree-no-result{
  color:var(--muted);
}
.opga-tree-no-result{
  padding:14px;
  text-align:center;
}
.opga-tree-legend .ancestor{background:#9b826c}
.opga-tree-legend .focus{background:var(--accent)}
.opga-tree-legend .descendant{background:#718f86}

.opga-centered-tree{
  position:relative;
  height:min(78vh,900px);
  min-height:620px;
  overflow:hidden;
  cursor:grab;
  background:
    radial-gradient(circle at 50% 50%,rgba(255,255,255,.78),rgba(255,255,255,.2) 42%,transparent 70%),
    linear-gradient(90deg,rgba(155,130,108,.07),transparent 42%,rgba(113,143,134,.07));
}
.opga-centered-tree.is-dragging{cursor:grabbing}
.opga-centered-tree .opga-tree-stage{
  position:absolute;
  left:0;
  top:0;
  transform-origin:0 0;
  will-change:transform;
}
.opga-centered-tree .opga-tree-lines,
.opga-centered-tree .opga-tree-nodes{
  position:absolute;
  inset:0;
}
.opga-centered-tree .opga-tree-lines{
  z-index:1 !important;
  overflow:visible;
  pointer-events:none;
}
.opga-centered-tree .opga-tree-nodes{
  z-index:2 !important;
}
.opga-centered-tree .opga-tree-lines path{
  fill:none;
  stroke:#a68c75;
  stroke-width:3;
  opacity:.72;
  vector-effect:non-scaling-stroke;
}
.opga-centered-tree .opga-tree-lines path.spouse{
  stroke:var(--accent-2);
  stroke-width:4;
  stroke-dasharray:8 5;
  opacity:.95;
}
.opga-centered-tree .opga-tree-node{
  position:absolute;
  box-sizing:border-box;
  display:flex;
  align-items:center;
  gap:12px;
  width:238px;
  height:106px;
  padding:12px;
  border:1px solid var(--line);
  border-left:5px solid #9a8879;
  border-radius:18px;
  background:color-mix(in srgb,var(--surface) 94%,transparent);
  box-shadow:0 12px 30px rgba(61,44,31,.13);
  color:var(--text);
  text-decoration:none;
  transition:transform .18s ease,box-shadow .18s ease,opacity .18s ease;
}
.opga-centered-tree .opga-tree-node:hover{
  z-index:8;
  transform:translateY(-3px);
  box-shadow:0 20px 42px rgba(61,44,31,.22);
}
.opga-centered-tree .opga-tree-node.sex-m{border-left-color:#6e8584}
.opga-centered-tree .opga-tree-node.sex-f{border-left-color:#b47d82}
.opga-centered-tree .opga-tree-node.is-ancestor{
  background:color-mix(in srgb,var(--surface) 91%,#d9c5b4);
}
.opga-centered-tree .opga-tree-node.is-descendant{
  background:color-mix(in srgb,var(--surface) 91%,#c8ddd5);
}
.opga-centered-tree .opga-tree-node.is-focus{
  z-index:6;
  border:3px solid var(--accent);
  background:var(--surface);
  box-shadow:0 0 0 8px color-mix(in srgb,var(--accent) 14%,transparent),0 24px 55px rgba(65,43,27,.28);
}
.opga-centered-tree .opga-tree-node img{
  width:66px;
  height:80px;
  flex:0 0 auto;
  border-radius:12px;
  object-fit:cover;
}
.opga-tree-node-copy{
  display:grid;
  min-width:0;
  line-height:1.15;
}
.opga-centered-tree .opga-tree-node strong,
.opga-centered-tree .opga-tree-node em,
.opga-centered-tree .opga-tree-node small{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.opga-centered-tree .opga-tree-node strong{
  font-family:Georgia,serif;
  font-size:16px;
  text-transform:uppercase;
}
.opga-centered-tree .opga-tree-node em{
  margin-top:4px;
  font-style:normal;
  font-size:14px;
}
.opga-centered-tree .opga-tree-node small{
  margin-top:8px;
  color:var(--muted);
  font-size:12px;
}
.opga-focus-badge{
  position:absolute;
  left:50%;
  bottom:-13px;
  transform:translateX(-50%);
  padding:4px 9px;
  border-radius:999px;
  background:var(--accent);
  color:#fff;
  font-size:9px;
  letter-spacing:.08em;
  text-transform:uppercase;
  white-space:nowrap;
}
.opga-centered-tree .opga-tree-live-diagnostic{
  position:absolute;
  left:50%;
  bottom:16px;
  z-index:20;
  transform:translateX(-50%);
  max-width:calc(100% - 32px);
  padding:8px 13px;
  border:1px solid var(--line);
  border-radius:999px;
  background:color-mix(in srgb,var(--surface) 94%,transparent);
  color:var(--muted);
  font-size:11px;
  font-weight:800;
  text-align:center;
  white-space:nowrap;
  box-shadow:0 8px 25px rgba(50,35,25,.12);
}
.opga-centered-tree:fullscreen,
.opga-centered-tree:-webkit-full-screen{
  width:100vw;
  height:100vh;
  border-radius:0 !important;
}
@media(max-width:1100px){
  .opga-tree-toolbar{
    grid-template-columns:minmax(240px,1fr) repeat(2,140px) repeat(3,auto);
  }
  .opga-tree-toolbar [data-tree-fullscreen],
  .opga-tree-toolbar [data-tree-plus]{
    grid-row:2;
  }
}
@media(max-width:760px){
  .opga-tree-toolbar{
    display:grid;
    grid-template-columns:1fr 1fr;
  }
  .opga-tree-person-picker{
    grid-column:1/-1;
  }
  .opga-tree-toolbar button{
    width:100%;
  }
  .opga-centered-tree{
    height:70vh;
    min-height:540px;
  }
  .opga-centered-tree .opga-tree-live-diagnostic{
    white-space:normal;
  }
}


/* OpenGenea Album 1.2.1 — sécurité de lisibilité des fonds personnalisés */
.opg-intro-v4,
.opg-editorial-card,
.opg-story-v4,
.opg-people-v4,
.opg-docs-v4,
.opga-home-stats,
.opga-home-map,
.opg-final-v4{
  background-clip:padding-box;
  background-origin:border-box;
}
.opg-editorial-card.people,
.opg-editorial-card.docs{
  overflow:hidden;
}


/* 1.3 — fonds de section réellement visibles */
.opg-people-v4,.opg-docs-v4{border-radius:var(--card-radius);overflow:hidden}
.opg-editorial-card:after{z-index:1}
.opg-editorial-card-copy{z-index:2}


/* ==========================================================
   OpenGenea Album 1.5 — portail des archives
   ========================================================== */
.opga-archive-portal{width:min(calc(100% - 40px),var(--opga-layout-max,1600px));margin:0 auto;padding:36px 0 90px}
.opga-archives-hero{padding:clamp(35px,6vw,80px);border-radius:30px;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 13%,var(--surface)),var(--surface));border:1px solid var(--line);text-align:center}
.opga-archives-hero h1{font:600 clamp(3.3rem,8vw,7rem)/.95 Georgia,serif;margin:.18em 0}
.opga-archives-hero p{max-width:760px;margin:0 auto;color:var(--muted);font-size:1.08rem}
.opga-archive-toolbar{position:sticky;top:10px;z-index:30;display:grid;grid-template-columns:minmax(260px,1.8fr) repeat(3,minmax(150px,.65fr)) auto;gap:12px;align-items:end;margin:24px 0;padding:16px;border:1px solid var(--line);border-radius:20px;background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:0 15px 45px rgba(50,35,25,.12);backdrop-filter:blur(15px)}
.opga-archive-toolbar label{display:grid;gap:6px}
.opga-archive-toolbar label>span{font-size:10px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.opga-archive-toolbar input,.opga-archive-toolbar select{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--text)}
.opga-view-switch{display:flex;padding:4px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--surface) 75%,var(--bg))}
.opga-view-switch button{min-height:36px;padding:7px 10px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:11px;font-weight:850;white-space:nowrap}
.opga-view-switch button.is-active{background:var(--accent);color:#fff}
.opga-archive-layout{display:grid;grid-template-columns:285px minmax(0,1fr);gap:28px;align-items:start}
.opga-archive-sidebar{position:sticky;top:108px;display:grid;gap:18px}
.opga-sidebar-panel{padding:22px;border:1px solid var(--line);border-radius:20px;background:var(--surface);box-shadow:0 12px 34px rgba(60,42,30,.07)}
.opga-sidebar-panel h2{margin:.15em 0 .8em;font:600 1.7rem Georgia,serif}
.opga-type-filter,.opga-person-filter{display:grid;grid-template-columns:25px 1fr auto;align-items:center;gap:8px;width:100%;padding:9px 8px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--text);text-align:left;cursor:pointer}
.opga-type-filter:first-of-type{grid-template-columns:1fr auto}
.opga-type-filter i{font-style:normal;color:var(--accent);text-align:center}
.opga-type-filter b,.opga-person-filter b{display:grid;place-items:center;min-width:27px;height:27px;border-radius:999px;background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent);font-size:10px}
.opga-type-filter.is-active,.opga-type-filter:hover,.opga-person-filter:hover{color:var(--accent)}
.opga-person-filter{grid-template-columns:1fr auto;font-size:12px}
.opga-results-head{display:flex;justify-content:space-between;align-items:end;gap:18px;margin:5px 0 20px}
.opga-results-head h2{margin:.1em 0;font:600 clamp(2.2rem,4vw,3.8rem) Georgia,serif}
.opga-results-head p{color:var(--muted);white-space:nowrap}
.opga-archive-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.opga-archive-card{overflow:hidden;border:1px solid var(--line);border-radius:19px;background:var(--surface);box-shadow:0 8px 28px rgba(55,38,28,.06);transition:.25s}
.opga-archive-card:hover{transform:translateY(-4px);box-shadow:0 20px 45px rgba(55,38,28,.12)}
.opga-archive-preview{position:relative;display:grid;place-items:center;aspect-ratio:1.3;background:color-mix(in srgb,var(--accent) 8%,var(--bg));overflow:hidden}
.opga-archive-preview img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease}
.opga-archive-card:hover .opga-archive-preview img{transform:scale(1.035)}
.opga-archive-preview>small{position:absolute;left:10px;bottom:10px;padding:6px 9px;border-radius:999px;background:rgba(255,255,255,.92);color:#29211c;font-size:9px;font-weight:900;letter-spacing:.06em;text-transform:uppercase}
.opga-document-icon{font:500 3rem Georgia,serif;color:var(--accent)}
.opga-archive-copy{padding:17px}
.opga-archive-meta{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:9px;color:var(--muted);font-size:10px;font-weight:850;text-transform:uppercase;letter-spacing:.08em}
.opga-archive-meta>*{padding:4px 7px;border-radius:999px;background:color-mix(in srgb,var(--accent) 7%,transparent)}
.opga-archive-copy h3{margin:0 0 12px;font:600 1.28rem/1.18 Georgia,serif}
.opga-archive-copy h3 a{color:var(--text);text-decoration:none}
.opga-archive-copy>p{color:var(--muted);font-size:12px}
.opga-linked-people{display:flex;flex-wrap:wrap;gap:6px}
.opga-linked-people a,.opga-linked-people span{padding:6px 8px;border-radius:999px;background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--accent);font-size:10px;font-weight:800;text-decoration:none}
.opga-archive-empty{padding:70px 25px;border:1px dashed var(--line);border-radius:20px;text-align:center}
.opga-archive-empty strong{font:600 1.5rem Georgia,serif}
.opga-archive-empty button{padding:10px 15px;border:0;border-radius:999px;background:var(--accent);color:#fff;font-weight:850}
.opga-archive-grid.is-timeline{grid-template-columns:1fr}
.opga-archive-grid.is-timeline .opga-archive-card{display:grid;grid-template-columns:210px 1fr}
.opga-archive-grid.is-timeline .opga-archive-preview{aspect-ratio:auto;min-height:165px}
.opga-archive-grid.is-by-type .opga-archive-card{border-top:5px solid var(--accent)}
.opga-archive-grid.is-by-people .opga-linked-people{padding-top:4px;border-top:1px solid var(--line)}
@media(max-width:1250px){
  .opga-archive-toolbar{grid-template-columns:1.4fr repeat(2,1fr)}
  .opga-view-switch{grid-column:1/-1}
  .opga-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:900px){
  .opga-archive-layout{grid-template-columns:1fr}
  .opga-archive-sidebar{position:static;grid-template-columns:1fr 1fr}
  .opga-archive-toolbar{position:static;grid-template-columns:1fr 1fr}
}
@media(max-width:620px){
  .opga-archive-portal{width:min(calc(100% - 22px),var(--opga-layout-max,1600px))}
  .opga-archive-toolbar,.opga-archive-sidebar{grid-template-columns:1fr}
  .opga-archive-grid{grid-template-columns:1fr}
  .opga-view-switch{overflow:auto}
  .opga-archive-grid.is-timeline .opga-archive-card{grid-template-columns:1fr}
  .opga-results-head{align-items:flex-start;flex-direction:column}
}


/* 2.0.0-beta3 — portraits, sans modification de la mise en page */
.opg-person-v4 .portrait{
  isolation:isolate;
}
.opg-person-v4 .portrait:before{
  display:none!important;
  background-image:none!important;
}
.opg-person-v4 .portrait img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  object-position:center;
  border:0;
  padding:0;
  background:#eadfd4;
  transition:transform .45s ease;
}
.opg-person-v4 .portrait.is-placeholder img{
  object-fit:cover;
  object-position:center top;
}
.opg-person-v4:hover .portrait img{
  transform:scale(1.045);
}

/* Le portrait ou la silhouette remplit tout l'intérieur du médaillon individuel. */
.opga-person-portrait{
  overflow:hidden;
}
.opga-person-portrait img,
.opga-person-portrait.has-photo img,
.opga-person-portrait.is-placeholder img{
  width:100%;
  height:100%;
  display:block;
  box-sizing:border-box;
  object-fit:cover!important;
  object-position:center center!important;
  padding:0!important;
  border-radius:50%;
  background:#f5efe4;
}
.opga-person-portrait.is-placeholder img{
  object-position:center top!important;
}


/* 2.0.0-beta4 — fiche personne et statistiques de longévité */
.opga-longevity-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px;
  margin-top:18px;
}
.opga-longevity-grid section{
  min-width:0;
  padding:20px;
  border:1px solid var(--line);
  border-radius:18px;
  background:rgba(255,255,255,.48);
}
.opga-longevity-sex{
  display:block;
  margin-bottom:8px;
  color:var(--muted);
  font-size:.76rem;
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.opga-longevity-grid section>strong{
  display:block;
  font:500 clamp(2rem,4vw,3.1rem)/1 Georgia,serif;
}
.opga-longevity-grid section>small{
  display:block;
  margin:7px 0 18px;
  color:var(--muted);
}
.opga-longevity-grid a{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:12px;
  padding-top:15px;
  border-top:1px solid var(--line);
  color:inherit;
  text-decoration:none;
}
.opga-longevity-grid a b{
  min-width:0;
  font-size:.92rem;
}
.opga-longevity-grid a em{
  flex:none;
  color:#85563b;
  font-style:normal;
  font-weight:700;
}
.opga-longevity-grid p{
  margin:0;
  padding-top:15px;
  border-top:1px solid var(--line);
  color:var(--muted);
  font-size:.9rem;
}
.opga-stat-note{
  margin:15px 0 0;
  color:var(--muted);
  font-size:.78rem;
  line-height:1.55;
}
@media(max-width:560px){
  .opga-longevity-grid{grid-template-columns:1fr}
}




/* 2.0.0-beta5.1 — la parenté remplace le badge « contemporain·e » */
.opg-contemporary-card .badge,
.opga-contemporary-card .badge,
.opg-life-overlap .badge{
  max-width:100%;
  white-space:normal;
  text-align:center;
}


/* 2.0.0-beta6 — chronologie historique des fiches personnes */
.opga-history-timeline{
  clear:both;
  margin:clamp(28px,5vw,54px) 0;
  padding:clamp(22px,4vw,38px);
  border:1px solid var(--line, #ded5c9);
  border-radius:22px;
  background:rgba(255,255,255,.5);
}
.opga-history-timeline>header{
  margin-bottom:24px;
}
.opga-history-timeline>header>span{
  display:block;
  margin-bottom:5px;
  color:#9a633e;
  font-size:.74rem;
  font-weight:800;
  letter-spacing:.14em;
  text-transform:uppercase;
}
.opga-history-timeline>header h2{
  margin:0 0 8px;
}
.opga-history-timeline>header p{
  margin:0;
  color:var(--muted, #756b63);
}
.opga-history-timeline ol{
  position:relative;
  list-style:none;
  margin:0;
  padding:0;
}
.opga-history-timeline ol::before{
  content:"";
  position:absolute;
  top:8px;
  bottom:8px;
  left:102px;
  width:1px;
  background:var(--line, #ded5c9);
}
.opga-history-timeline li{
  position:relative;
  display:grid;
  grid-template-columns:82px 1fr;
  gap:38px;
  padding:0 0 25px;
}
.opga-history-timeline li:last-child{
  padding-bottom:0;
}
.opga-history-timeline li::before{
  content:"";
  position:absolute;
  top:7px;
  left:97px;
  width:11px;
  height:11px;
  border:3px solid #f7f1e8;
  border-radius:50%;
  background:#9a633e;
  box-sizing:border-box;
}
.opga-history-date{
  text-align:right;
}
.opga-history-date strong{
  display:block;
  font-family:Georgia,serif;
  font-size:1rem;
}
.opga-history-date small{
  display:block;
  margin-top:4px;
  color:var(--muted, #756b63);
  font-size:.7rem;
}
.opga-history-event>span{
  display:inline-block;
  margin-bottom:5px;
  padding:3px 8px;
  border-radius:999px;
  background:#efe4d4;
  color:#85563b;
  font-size:.66rem;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.opga-history-event h3{
  margin:0 0 5px;
  font-size:1.02rem;
}
.opga-history-event p{
  margin:0;
  color:var(--muted, #756b63);
  font-size:.9rem;
  line-height:1.55;
}
.opga-history-note{
  margin:22px 0 0;
  padding-top:15px;
  border-top:1px solid var(--line, #ded5c9);
  color:var(--muted, #756b63);
  font-size:.74rem;
}
@media(max-width:620px){
  .opga-history-timeline{
    padding:20px 16px;
  }
  .opga-history-timeline ol::before{
    left:5px;
  }
  .opga-history-timeline li{
    grid-template-columns:1fr;
    gap:6px;
    padding-left:25px;
  }
  .opga-history-timeline li::before{
    left:0;
  }
  .opga-history-date{
    text-align:left;
  }
  .opga-history-date strong,
  .opga-history-date small{
    display:inline;
  }
  .opga-history-date small::before{
    content:" · ";
  }
}


/* ===== Beta 6.2 Responsive fiche personne ===== */
@media (max-width:768px){

.opga-person-hero{
display:flex!important;
flex-direction:column!important;
align-items:center!important;
justify-content:center!important;
text-align:center!important;
gap:18px!important;
padding:20px 16px!important;
}

.opga-person-portrait{
flex:none!important;
width:170px!important;
max-width:60vw!important;
margin:0 auto!important;
}

.opga-person-portrait img{
width:170px!important;
height:170px!important;
object-fit:cover!important;
display:block!important;
margin:auto!important;
}

.opga-person-identity{
width:100%!important;
margin:0!important;
padding:0!important;
text-align:center!important;
}

.opga-person-identity h1,
.opga-person-identity .opga-person-name,
.opga-person-identity .entry-title{
font-size:2rem!important;
line-height:1.15!important;
white-space:normal!important;
word-break:break-word!important;
overflow-wrap:anywhere!important;
writing-mode:horizontal-tb!important;
}

.opga-person-identity *{
max-width:100%;
}

.opga-history-timeline{
margin-top:24px!important;
padding:18px!important;
}

.opga-history-timeline ol::before{
left:7px!important;
}

.opga-history-timeline li{
display:block!important;
padding-left:28px!important;
}

.opga-history-timeline li::before{
left:2px!important;
}

.opga-history-date{
text-align:left!important;
margin-bottom:8px!important;
}

}


/* ===== Beta 6.4 : portrait complet dans le médaillon ===== */
/* Aucun autre élément du thème n'est modifié */

.opga-person-portrait{
    overflow:hidden;
}

.opga-person-portrait img{
    object-fit:contain !important;
    object-position:center center !important;
    width:100% !important;
    height:100% !important;
    padding:10px;
    box-sizing:border-box;
    background:#f7f2ea;
}

/* Compatibilité avec les différentes classes du thème */
.opga-person-portrait.has-photo img,
.opga-person-portrait.is-placeholder img{
    object-fit:contain !important;
    object-position:center center !important;
}

/* ==========================================================
   2.0.0-beta6.7 — harmonisation responsive accueil PC/mobile
   ========================================================== */

/* En-tête et navigation */
.menu-toggle{
  color:var(--accent) !important;
  font-weight:800;
  line-height:1;
  cursor:pointer;
}
.menu-toggle:hover,
.menu-toggle:focus-visible{
  border-color:var(--accent);
  background:var(--cream);
  outline:none;
}

/* Le contenu principal reste parfaitement centré sur grands écrans. */
.opg-hero-v4-inner,
.opg-intro-v4,
.opg-editorial-grid,
.opg-story-v4-inner,
.opg-people-v4,
.opg-docs-v4,
.opga-home-stats,
.opga-home-map{
  width:min(100%,var(--max));
}

/* Les cartes d'archives ne peuvent jamais élargir la grille. */
.opg-docs-v4,
.opg-docs-v4-grid,
.opg-doc-v4{
  min-width:0;
}
.opg-doc-v4 h3,
.opg-doc-v4 p{
  overflow-wrap:anywhere;
}

@media (max-width:900px){
  .site-header-inner{position:relative}
  .main-nav{
    top:calc(100% + 8px);
    max-height:calc(100vh - 105px);
    overflow-y:auto;
    box-shadow:0 18px 55px rgba(55,38,28,.16);
  }
  .main-nav a{width:100%;padding:8px 4px}
}

@media (min-width:561px) and (max-width:900px){
  .opg-hero-v4{min-height:680px}
  .opg-hero-v4-inner{padding:90px 28px 58px}
  .opg-hero-v4 h1{font-size:clamp(58px,9vw,82px)}
  .opg-docs-v4-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media (max-width:560px){
  html,body{max-width:100%;overflow-x:hidden}

  .site-header-inner{
    min-height:78px;
    padding:10px 15px;
    gap:12px;
  }
  .brand{min-width:0;gap:10px}
  .brand>span:last-child{min-width:0}
  .brand strong{
    max-width:190px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:20px;
  }
  .brand small{
    max-width:190px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:11px;
  }
  .opga-custom-logo{
    flex:0 0 auto;
    max-width:64px;
    max-height:58px;
    object-fit:contain;
  }
  .menu-toggle{
    flex:0 0 auto;
    min-width:68px;
    min-height:42px;
    padding:10px 13px;
    border:1px solid #d5c6b8;
    border-radius:12px;
    background:#fffdf9 !important;
    color:#7b4b32 !important;
    box-shadow:0 5px 16px rgba(60,42,30,.08);
  }
  .main-nav{
    left:12px;
    right:12px;
    padding:12px 16px;
    border-radius:16px;
  }

  /* Hero compact sans dénaturer le visuel */
  .opg-hero-v4{
    min-height:auto;
    align-items:end;
  }
  .opg-hero-v4-inner{
    padding:64px 18px 38px;
  }
  .opg-hero-v4-copy{max-width:100%}
  .opg-hero-v4 h1{
    max-width:100%;
    margin:14px 0 18px;
    font-size:clamp(42px,13vw,56px);
    line-height:.96;
    letter-spacing:-.04em;
  }
  .opg-hero-v4 p{
    font-size:17px;
    line-height:1.48;
  }
  .opg-search-v4{
    width:100%;
    margin-top:24px;
    padding:6px;
    gap:6px;
    border-radius:15px;
  }
  .opg-search-v4 input{
    width:100%;
    min-height:48px;
    padding:12px 13px;
    font-size:15px;
  }
  .opg-search-v4 button{
    min-height:46px;
    padding:11px 18px;
    border-radius:11px;
  }
  .opg-hero-note{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:7px;
    width:100%;
    margin-top:20px;
    font-size:11px;
    text-align:center;
  }
  .opg-hero-note span{
    display:flex;
    min-width:0;
    flex-direction:column;
    justify-content:center;
    padding:9px 4px;
    border:1px solid rgba(255,255,255,.22);
    border-radius:12px;
    background:rgba(38,28,22,.18);
    backdrop-filter:blur(4px);
  }
  .opg-hero-note strong{
    display:block;
    margin:0 0 1px;
    font-size:22px;
  }

  .opg-section-head{
    display:block;
    margin-bottom:22px;
    text-align:left;
  }
  .opg-section-head h2{
    margin:0;
    font-size:clamp(32px,9vw,43px);
    line-height:1.05;
  }
  .opg-section-head p{margin-top:10px}

  /* Même marge visuelle pour toutes les grandes sections d'accueil. */
  .opg-intro-v4,
  .opg-editorial-grid,
  .opg-people-v4,
  .opg-docs-v4{
    width:100%;
    padding-left:18px;
    padding-right:18px;
  }

  /* Bloc Dernières pièces d'archives : une colonne, contenu équilibré. */
  .opg-docs-v4{
    margin:0 auto;
    padding-top:4px;
    padding-bottom:72px;
    overflow:visible;
  }
  .opg-docs-v4-grid{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    gap:14px;
    width:100%;
    margin:0;
  }
  .opg-doc-v4{
    display:grid;
    grid-template-columns:86px minmax(0,1fr);
    grid-template-rows:auto auto;
    column-gap:14px;
    align-items:center;
    width:100%;
    padding:12px;
    border:1px solid var(--line);
    border-radius:18px;
    background:#f6f0e8;
    box-shadow:0 8px 24px rgba(70,50,36,.06);
  }
  .opg-doc-v4:hover{transform:none}
  .opg-doc-v4-preview{
    grid-column:1;
    grid-row:1 / span 2;
    width:86px;
    height:86px;
    aspect-ratio:1;
    border-radius:13px;
  }
  .opg-doc-v4-preview:after{
    right:6px;
    bottom:6px;
    padding:3px 6px;
    font-size:7px;
  }
  .opg-doc-v4 h3{
    grid-column:2;
    grid-row:1;
    align-self:end;
    min-width:0;
    margin:0 0 4px;
    font-size:18px;
    line-height:1.16;
  }
  .opg-doc-v4 p{
    grid-column:2;
    grid-row:2;
    align-self:start;
    min-width:0;
    margin:0;
    display:-webkit-box;
    overflow:hidden;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:2;
    white-space:normal;
    font-size:12px;
    line-height:1.35;
  }

  .opg-final-v4{margin-left:14px;margin-right:14px}
}

@media (max-width:380px){
  .brand strong,.brand small{max-width:145px}
  .opga-custom-logo{max-width:55px;max-height:52px}
  .menu-toggle{min-width:62px;padding-inline:10px}
  .opg-hero-v4 h1{font-size:40px}
  .opg-hero-note{gap:5px}
  .opg-doc-v4{grid-template-columns:74px minmax(0,1fr);gap:11px}
  .opg-doc-v4-preview{width:74px;height:74px}
}


/* OpenGenea Album 2.1 — notes, sources et preuves */
.opg-person-nav{display:flex;flex-wrap:wrap;gap:10px}.opg-person-nav a{white-space:nowrap}
.opg-evidence-section{margin:70px 0;padding:42px;border:1px solid var(--line);border-radius:28px;background:linear-gradient(180deg,#fff,#fbf7f1)}
.opg-evidence-section>h2{font:500 clamp(34px,4vw,52px)/1.05 Georgia,serif;margin:8px 0 28px}
.opg-note-card{padding:24px 26px;margin:16px 0;border-left:4px solid var(--accent2);border-radius:0 18px 18px 0;background:#fff;box-shadow:0 12px 35px rgba(70,50,36,.06)}
.opg-note-card h3{font:500 24px Georgia,serif;margin:0 0 10px}.opg-note-card p:last-child{margin-bottom:0}
.opg-source-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.opg-source-card{padding:26px;border:1px solid var(--line);border-radius:22px;background:#fff;box-shadow:0 14px 42px rgba(70,50,36,.07)}
.opg-source-card header{margin-bottom:18px}.opg-source-card header span{color:var(--accent);font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.opg-source-card h3{font:500 27px/1.15 Georgia,serif;margin:7px 0 0}.opg-source-card p{margin:8px 0;color:#514a44}
.opg-source-card blockquote{margin:18px 0;padding:16px 18px;border-left:3px solid var(--accent2);background:var(--cream);font-family:Georgia,serif;font-style:italic}
.opg-source-quality{color:#9a5f3f;font-size:20px;letter-spacing:.08em}.opg-source-document{display:inline-flex;margin-top:14px;padding:10px 15px;border-radius:999px;background:var(--accent);color:#fff;font-weight:700}
.opg-source-note{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
@media(max-width:760px){.opg-evidence-section{margin:44px 0;padding:24px 18px;border-radius:20px}.opg-source-grid{grid-template-columns:1fr}.opg-source-card{padding:20px}.opg-person-nav{overflow-x:auto;flex-wrap:nowrap;padding-bottom:6px}}


/* 2.1.0-beta2 — silhouettes modernes et remplaçables */
.opga-person-portrait.is-placeholder,
.opga-card-medallion.is-placeholder{background:#e8eaed;}
.opga-person-portrait.is-placeholder img,
.opga-card-medallion.is-placeholder img{filter:none!important;object-fit:cover!important;padding:0!important;}


/* 2.1.0-beta4 — portraits fictifs sépia selon l’âge */
.opga-person-portrait.is-placeholder img,
.opga-card-medallion.is-placeholder img{
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  object-position:center 32%!important;
  filter:sepia(.12) contrast(1.03)!important;
  padding:0!important;
}


/* 2.1.0-beta6 — bandeau d’accueil compact, fonctions conservées */
.opg-hero-v4{
  min-height:430px;
  height:auto;
  align-items:end;
}
.opg-hero-v4-inner{
  padding:58px 24px 44px;
}
.opg-hero-v4-copy{
  max-width:760px;
}
.opg-hero-v4 h1{
  max-width:820px;
  margin:12px 0 16px;
  font-size:clamp(44px,5.4vw,72px);
  line-height:.96;
}
.opg-hero-v4 p{
  max-width:650px;
  font-size:clamp(16px,1.45vw,20px);
  line-height:1.45;
}
.opg-search-v4{
  max-width:650px;
  margin-top:22px;
  padding:6px;
}
.opg-search-v4 input{
  padding:12px 15px;
}
.opg-search-v4 button{
  padding:0 22px;
}
.opg-hero-note{
  margin-top:18px;
  gap:22px;
}
.opg-hero-note strong{
  font-size:22px;
}

@media (min-width:561px) and (max-width:900px){
  .opg-hero-v4{min-height:400px}
  .opg-hero-v4-inner{padding:52px 28px 40px}
  .opg-hero-v4 h1{font-size:clamp(46px,7.5vw,64px)}
}

@media (max-width:560px){
  .opg-hero-v4{min-height:330px}
  .opg-hero-v4-inner{padding:42px 18px 30px}
  .opg-hero-v4 h1{
    margin:10px 0 13px;
    font-size:clamp(36px,11vw,46px);
  }
  .opg-hero-v4 p{
    font-size:15px;
    line-height:1.42;
  }
  .opg-search-v4{margin-top:17px}
  .opg-hero-note{margin-top:14px}
}


/* ==========================================================
   2.1.0-beta13 — fiche individu mobile : centrage géométrique
   Reset final des anciennes règles contradictoires.
   ========================================================== */
@media screen and (max-width: 900px) {
  html, body { overflow-x: clip !important; }

  .site-main,
  .site-main > main.opg-shell,
  main.opg-shell,
  .opg-person.opg-person-narrative {
    width: 100% !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    box-sizing: border-box !important;
  }

  .opg-person.opg-person-narrative > header.opga-person-hero {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    justify-items: center !important;
    align-items: center !important;
    width: 100% !important;
    max-width: none !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 28px 18px 34px !important;
    gap: 22px !important;
    text-align: center !important;
    overflow: visible !important;
    box-sizing: border-box !important;
  }

  .opg-person.opg-person-narrative > header.opga-person-hero > .opga-person-portrait {
    display: block !important;
    justify-self: center !important;
    align-self: center !important;
    width: min(220px, 66vw) !important;
    max-width: 220px !important;
    margin: 10px auto 0 !important;
    flex: none !important;
    transform: none !important;
  }

  .opg-person.opg-person-narrative > header.opga-person-hero > .opga-person-portrait img {
    width: 100% !important;
    height: 100% !important;
    margin: 0 !important;
    transform: none !important;
  }

  .opg-person.opg-person-narrative > header.opga-person-hero > .opga-person-identity {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    justify-items: center !important;
    align-items: center !important;
    justify-self: stretch !important;
    align-self: center !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: center !important;
    transform: none !important;
    box-sizing: border-box !important;
  }

  .opg-person.opg-person-narrative > header.opga-person-hero > .opga-person-identity > p,
  .opg-person.opg-person-narrative > header.opga-person-hero > .opga-person-identity > h1,
  .opg-person.opg-person-narrative > header.opga-person-hero > .opga-person-identity > strong,
  .opg-person.opg-person-narrative > header.opga-person-hero > .opga-person-identity > em {
    display: block !important;
    justify-self: center !important;
    width: auto !important;
    max-width: calc(100vw - 44px) !important;
    margin-left: auto !important;
    margin-right: auto !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    text-align: center !important;
    transform: none !important;
  }

  .opg-person.opg-person-narrative > header.opga-person-hero > .opga-person-identity > h1 {
    font-size: clamp(2rem, 10vw, 3.35rem) !important;
    line-height: 1.08 !important;
    white-space: normal !important;
    word-break: normal !important;
    overflow-wrap: anywhere !important;
  }

  .opg-person.opg-person-narrative > header.opga-person-hero .opga-person-facts {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    align-items: center !important;
    justify-self: center !important;
    width: 100% !important;
    max-width: calc(100vw - 36px) !important;
    margin: 24px auto 0 !important;
    padding: 0 !important;
    gap: 10px !important;
    text-align: center !important;
    transform: none !important;
    box-sizing: border-box !important;
  }

  .opg-person.opg-person-narrative > header.opga-person-hero .opga-person-fact {
    max-width: 100% !important;
    justify-content: center !important;
  }
}
