.header-actions{display:flex;align-items:center;gap:.7rem}.logout{border:1px solid #ffffff55;background:transparent;color:#fff;padding:.72rem .85rem;border-radius:4px;white-space:nowrap}.login-page{min-height:100vh;display:grid;place-items:center;background:var(--ink);padding:1.2rem}.login{width:min(520px,100%);background:var(--paper);padding:clamp(2rem,6vw,4rem);border-top:6px solid var(--gold);box-shadow:0 25px 70px #0005}.login h1{font-size:clamp(2.4rem,8vw,4rem)}.login form{display:grid;gap:1rem;margin-top:2rem}.login label{display:grid;gap:.4rem;font-weight:700}.login input{width:100%;padding:.85rem;border:1px solid var(--line);font:inherit}.login button{padding:.9rem;border:0;background:var(--blue);color:#fff;font-weight:800;font-size:1rem}.login-error{background:#f5d7d5;color:#842820;padding:.8rem}.login-page main{margin:0}@media(max-width:720px){.header-actions{align-items:stretch;flex-direction:column}.logout{width:100%}}
/* Compact family tree: card coordinates and connectors share one canvas. */
.tree-intro{color:var(--muted);max-width:720px;line-height:1.5;font-size:.9rem}
main:has(.tree-section){max-width:none;width:100%;padding:2rem 0 3.5rem}
.tree-section>p,.tree-section>h1,.tree-section>.tree-key{margin-left:max(2vw,1.25rem);margin-right:max(2vw,1.25rem)}
.tree-section h1{font-size:2.7rem;margin-bottom:.7rem}
.tree-scroll{width:100%;overflow:auto;padding:.5rem 0 1rem}
.family-tree{position:relative;width:1264px;height:640px;margin:auto}
.tree-lines{position:absolute;inset:0;width:1264px;height:640px}
.tree-lines path{fill:none;stroke:#a3b1bb;stroke-width:1.4;stroke-linejoin:round}
.tree-node,.unknown-branch{position:absolute;left:var(--x);top:var(--y);transform:translateX(-50%);width:128px;height:80px;padding:4px 6px;background:#fff;border:1px solid #cbd4da;border-top:3px solid var(--blue);border-radius:4px;display:flex;flex-direction:column;justify-content:center;gap:3px;text-align:center;color:var(--ink);text-decoration:none}
.tree-node:hover,.tree-node:focus-visible{border-color:var(--gold);box-shadow:0 3px 10px #1f304318;outline:2px solid var(--gold);outline-offset:2px}
.tree-node small{display:none}
.unknown-branch small{font-size:.51rem;letter-spacing:.04em;color:var(--muted)}
.tree-node strong,.unknown-branch strong{font-family:Georgia,serif;font-size:.82rem;line-height:1.12}
.tree-node span,.unknown-branch span{font-size:.69rem;color:var(--muted)}
.tree-node.root-person{border-top-color:var(--gold);background:#fff8e9}
.unknown-branch{border:1px dashed #bdc8d0;background:#f7f5ef}
.tree-key{display:flex;flex-wrap:wrap;gap:1rem;color:var(--muted);font-size:.75rem}
.tree-key span{display:flex;align-items:center;gap:.4rem}.tree-key i{width:14px;height:9px;border-top:3px solid var(--blue)}.tree-key i.me{border-color:var(--gold)}
.cards:has(>.person-card){grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.65rem}
.person-card{padding:.8rem .9rem;gap:.3rem;font-size:.9rem}.person-card span,.person-card small{font-size:.78rem;line-height:1.4}
@media(max-width:720px){.family-tree{margin-left:0}.tree-section h1{font-size:2.1rem}.cards:has(>.person-card){grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}}

/* Copies des actes conserves, accessibles dans la session privee. */
.source-list article>div{min-width:0;flex:1}
.act-copies{margin:.65rem 0}
.act-copies summary{cursor:pointer;color:var(--blue);font-weight:600}
.act-copies figure{margin:1rem 0;max-width:760px}
.act-copies img{display:block;width:100%;height:auto;border:1px solid var(--line)}
.act-copies figcaption{font-size:.9rem;margin-top:.4rem}

.source-list article{scroll-margin-top:1rem}.source-note{font-size:.85rem;line-height:1.5}.timeline time{max-width:150px;flex:0 0 130px}
.modernized-source{margin:.75rem 0;padding:.85rem 1rem;border-left:4px solid var(--gold);background:var(--pale);align-items:start}
.modernized-source strong,.modernized-source span{display:block}
.modernized-source span{color:var(--muted);font-size:.9rem;line-height:1.45}
.modernized-source .document-button{justify-self:start;margin-top:.45rem;color:#fff}
.modernized-source .document-button.secondary{background:transparent;color:var(--blue);border:1px solid var(--blue)}
.event-source{margin-top:.75rem;padding-top:.7rem;border-top:1px solid var(--line);font-size:.85rem}
.event-source>span{display:block;color:var(--muted);margin-bottom:.45rem}
.event-source-actions{display:flex;flex-wrap:wrap;gap:.4rem}
.event-source-actions a{display:inline-block;padding:.4rem .62rem;border-radius:4px;background:var(--blue);color:#fff;text-decoration:none;font-weight:700}
.event-source-actions a.source-record{background:transparent;color:var(--blue);border:1px solid var(--blue)}

.life-path-scroll{overflow-x:auto}.life-path table{width:100%;border-collapse:collapse;font-size:.94rem}.life-path th,.life-path td{text-align:left;vertical-align:top;padding:.75rem;border-bottom:1px solid var(--line);line-height:1.5}.life-path thead th{background:var(--blue);color:#fff}.life-path tbody th{min-width:125px}.life-path td:last-child{min-width:70px}.life-path .notice{margin-top:1rem}

/* Repertoire des personnes par nom, puis prenoms. */
.people-alphabet{display:flex;flex-wrap:wrap;gap:.35rem;overflow:visible;padding:.8rem;background:var(--paper);border:1px solid var(--line);border-radius:4px;margin:0 0 2rem;position:sticky;top:0;z-index:5}
.people-alphabet a,.people-alphabet .empty-letter{display:grid;place-items:center;min-width:2.1rem;min-height:2.3rem;padding:.35rem .5rem;border:0;border-radius:3px;font-weight:700}
.people-alphabet a{background:#fff;color:var(--blue);text-decoration:none}.people-alphabet a:hover,.people-alphabet a:focus-visible{background:var(--blue);color:#fff}.people-alphabet .empty-letter{color:var(--muted);opacity:.45}
.people-letter{margin-bottom:2.2rem;scroll-margin-top:8rem}.people-letter-heading{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);margin-bottom:1rem;padding-bottom:.4rem}.people-letter-heading h2{margin:0;color:var(--blue)}.people-letter-heading a{font-size:.8rem;color:var(--blue);text-decoration:none}.people-directory{scroll-margin-top:1rem}
@media(max-width:720px){.people-letter{scroll-margin-top:11rem}}

/* Navigation des trois arbres : ouverture au clic et au clavier. */
nav{flex-wrap:wrap;overflow:visible}
.trees-menu{position:relative}
.trees-menu summary{cursor:pointer;color:var(--blue);padding:1rem .85rem;border-bottom:3px solid transparent;white-space:nowrap}
.trees-menu summary.active{border-color:var(--gold);font-weight:700}
.trees-submenu{position:absolute;top:100%;left:0;z-index:20;min-width:170px;background:#fff;border:1px solid var(--line);box-shadow:0 6px 16px #1f304318}
.trees-submenu a{display:block;padding:.8rem 1rem}
.trees-menu summary:focus-visible{outline:2px solid var(--gold);outline-offset:-3px}

/* Paternité biologique non connue : trois cas explicitement identifiés. */
.tree-node.biological-paternity-unknown,.direct-tree-node.biological-paternity-unknown,.simple-node.biological-paternity-unknown{background:#faf7fc;border:1px dashed #9a829f;border-top:3px solid #9a829f}
.tree-key i.paternity-unknown-key{border:1px dashed #9a829f;border-top:3px solid #9a829f;background:#faf7fc;height:12px}

/* Fiches personne : titre plus discret, repères avant les notes de sources. */
.person-summary h1{font-size:clamp(1.8rem,3vw,2.8rem);line-height:1.12}
.person-source-notes .notice{margin:0}

/* Fiches : lecture courte et journal intégral sur demande. */
.research-journal{border:1px solid var(--line);border-radius:5px;background:transparent}.research-journal>summary{cursor:pointer;padding:1rem 1.2rem;color:var(--blue);font-weight:650}.research-journal>summary:hover{text-decoration:underline}.research-journal-body{padding:.2rem 1.3rem 1.3rem;max-width:1000px}.journal-intro{font-size:.9rem;color:var(--muted)}.journal-entry{white-space:normal;line-height:1.65;padding:1rem 0;margin:0;border-bottom:1px solid var(--line);background:transparent}.journal-entry:last-child{border-bottom:0}.research-journal .life-path{margin:1.5rem 0;padding:0}.research-journal .life-path thead th{background:#eeeae2;color:var(--ink)}.event-reading{margin:.6rem 0}.event-reading summary{cursor:pointer;color:var(--blue);font-size:.9rem}.event-reading p{line-height:1.6}
