:root{--bg:#f4f7f5;--surface:#fff;--text:#17211b;--muted:#6b756f;--primary:#2f7654;--primary-dark:#22573e;--border:#dfe7e2;--danger:#b42318;--shadow:0 14px 38px rgba(31,66,47,.10);--radius:20px}*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}body{margin:0;min-height:100vh;padding-bottom:82px}a{color:var(--primary);font-weight:700;text-decoration:none}.topbar{height:64px;padding:0 18px;display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,.92);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10;backdrop-filter:blur(16px)}.brand{display:flex;align-items:center;gap:10px;color:var(--text);font-weight:800}.brand-mark{width:36px;height:36px;border-radius:12px;background:var(--primary);color:#fff;display:grid;place-items:center}.app-shell{width:min(1120px,100%);margin:auto;padding:22px 16px}.auth-card,.panel,.welcome-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.auth-card{max-width:520px;margin:24px auto;padding:28px}.auth-card.wide{max-width:760px}.hero-icon{width:64px;height:64px;border-radius:20px;background:#e6f2eb;display:grid;place-items:center;font-size:32px;margin-bottom:18px}h1,h2{margin:0 0 10px}h1{font-size:clamp(1.7rem,6vw,2.5rem)}h2{font-size:1.2rem}.muted{color:var(--muted);line-height:1.6}.form-stack,.form-grid{display:grid;gap:16px;margin-top:22px}.form-grid{grid-template-columns:1fr}label{display:grid;gap:8px;font-weight:700;font-size:.92rem}label small{font-weight:500;color:var(--muted)}input,select,textarea{width:100%;min-height:48px;border:1px solid var(--border);border-radius:13px;padding:0 14px;background:#fff;font:inherit;color:var(--text);outline:none}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 4px rgba(47,118,84,.12)}.app-btn,.icon-btn{border:0;cursor:pointer;font:inherit;font-weight:800}.app-btn{min-height:46px;padding:0 18px;border-radius:13px;display:inline-flex;align-items:center;justify-content:center;gap:8px}.primary{background:var(--primary);color:#fff}.primary:hover{background:var(--primary-dark)}.secondary{background:#eaf2ed;color:var(--primary-dark)}.full{width:100%}.icon-btn{width:42px;height:42px;border-radius:13px;background:#eef3f0;color:var(--text)}.auth-footer{text-align:center;margin:22px 0 0}.alert{border-radius:14px;padding:14px 16px;margin-bottom:16px;font-weight:700}.alert.success{background:#e9f7ef;color:#17633a}.alert.error{background:#fff0ef;color:var(--danger)}.welcome-card{padding:22px;display:flex;flex-direction:column;gap:16px}.welcome-card p{margin:0;line-height:1.6;color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;color:var(--primary);font-weight:900}.profile-pill{align-self:flex-start;border-radius:999px;background:#e8f3ec;color:var(--primary-dark);padding:8px 12px;font-weight:800}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0}.stats-grid article{background:#fff;border:1px solid var(--border);border-radius:16px;padding:16px 10px;text-align:center}.stats-grid strong{font-size:1.6rem;display:block}.stats-grid span{color:var(--muted);font-size:.8rem}.panel{padding:20px;margin-top:16px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.tree-placeholder{min-height:240px;margin-top:16px;border:1px dashed #b9c9bf;border-radius:16px;background:linear-gradient(180deg,#f8fbf9,#eef5f1);display:grid;place-items:center;padding:20px}.person-card{background:#fff;border:1px solid var(--border);border-radius:15px;padding:18px;box-shadow:0 8px 20px rgba(31,66,47,.08);text-align:center}.bottom-nav{position:fixed;z-index:15;bottom:0;left:0;right:0;height:72px;background:rgba(255,255,255,.96);border-top:1px solid var(--border);display:grid;grid-template-columns:repeat(4,1fr);padding-bottom:env(safe-area-inset-bottom);backdrop-filter:blur(14px)}.bottom-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--muted);gap:2px;font-weight:700}.bottom-nav a.active{color:var(--primary)}.bottom-nav span{font-size:1.25rem}.bottom-nav small{font-size:.68rem}@media(min-width:700px){body{padding-bottom:0}.app-shell{padding:34px 24px}.form-grid{grid-template-columns:1fr 1fr}.span-2{grid-column:span 2}.welcome-card{flex-direction:row;align-items:center;justify-content:space-between}.bottom-nav{position:static;width:min(720px,calc(100% - 32px));margin:0 auto 24px;border:1px solid var(--border);border-radius:18px;height:68px}.auth-card{margin-top:48px}}
textarea{padding:13px 14px;resize:vertical}.search-row{display:grid;grid-template-columns:1fr auto;gap:10px;margin-top:18px}.people-grid{display:grid;gap:12px;margin-top:16px}.person-list-card{display:flex;align-items:center;gap:13px;background:#fff;border:1px solid var(--border);border-radius:17px;padding:12px;color:var(--text);box-shadow:0 8px 24px rgba(31,66,47,.06)}.person-list-card img,.avatar{width:54px;height:54px;border-radius:15px;object-fit:cover}.avatar{display:grid;place-items:center;background:#e6f2eb;color:var(--primary);font-weight:900}.person-list-card div{flex:1;display:grid;gap:4px}.person-list-card small{color:var(--muted)}.status{display:inline-flex;width:max-content;padding:6px 9px;border-radius:999px;font-size:.72rem;font-weight:900;background:#fff4d8;color:#855b00}.status.published{background:#e7f6ed;color:#17633a}.relation-grid{display:grid;grid-template-columns:1fr;gap:16px}.autocomplete{position:relative}.suggestions{position:absolute;left:0;right:0;top:100%;z-index:20;background:#fff;border:1px solid var(--border);border-radius:13px;box-shadow:var(--shadow);overflow:hidden}.suggestions:empty{display:none}.suggestions button{display:block;width:100%;padding:12px;border:0;border-bottom:1px solid var(--border);background:#fff;text-align:left;cursor:pointer}.upload-zone{border:1px dashed #afc4b7;border-radius:15px;padding:16px;background:#f8fbf9}.form-actions{display:flex;flex-wrap:wrap;gap:10px}.profile-hero{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;display:flex;flex-direction:column;gap:16px}.profile-photo{width:110px;height:110px;border-radius:28px;object-fit:cover}.profile-photo.placeholder{display:grid;place-items:center;background:#e6f2eb;color:var(--primary);font-size:2rem;font-weight:900}.detail-grid{display:grid;gap:0}.detail-grid dl{display:grid;grid-template-columns:120px 1fr;gap:10px;margin:16px 0 0}.detail-grid dt{font-weight:800;color:var(--muted)}.detail-grid dd{margin:0}.biography{line-height:1.75}.photo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:16px}.photo-grid figure{margin:0}.photo-grid img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:15px}.photo-grid figcaption{display:grid;gap:3px;padding:7px 2px}.photo-grid small{color:var(--muted)}.empty-state{padding:40px;text-align:center;background:#fff;border:1px dashed var(--border);border-radius:17px;color:var(--muted)}@media(min-width:700px){.people-grid{grid-template-columns:repeat(2,1fr)}.relation-grid{grid-template-columns:repeat(2,1fr)}.profile-hero{flex-direction:row;align-items:center}.profile-hero>div:nth-child(2){flex:1}.detail-grid{grid-template-columns:repeat(2,1fr);gap:16px}.photo-grid{grid-template-columns:repeat(4,1fr)}}
.tabs{display:flex;gap:.5rem;overflow:auto;margin:0 0 1rem}.tabs a{white-space:nowrap;padding:.65rem .9rem;border-radius:999px;background:var(--surface,#fff);text-decoration:none;color:inherit;border:1px solid var(--border,#e5e7eb)}.tabs a.active{font-weight:700;border-color:var(--primary,#4f46e5)}
.badge{display:inline-flex;align-items:center;padding:.3rem .6rem;border-radius:999px;font-size:.78rem;font-weight:700}.badge.pending{background:#fff7d6;color:#8a5b00}.badge.approved{background:#dcfce7;color:#166534}.badge.rejected{background:#fee2e2;color:#991b1b}
.comparison{overflow:hidden}.comparison-head,.comparison-row{display:grid;grid-template-columns:minmax(110px,.7fr) 1fr 1fr;gap:1rem;padding:.85rem;border-bottom:1px solid #e5e7eb}.comparison-head{background:#f8fafc}.proposed-value{background:#f0fdf4;border-radius:.6rem;padding:.5rem}.decision-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem}.app-btn.danger{background:#b91c1c;color:#fff}.full{width:100%}
@media(max-width:700px){.comparison-head{display:none}.comparison-row{grid-template-columns:1fr;gap:.35rem}.comparison-row>div:before{display:block;font-size:.72rem;font-weight:700;color:#64748b}.comparison-row>div:nth-child(2):before{content:'Valeur actuelle'}.comparison-row>div:nth-child(3):before{content:'Valeur proposée'}.decision-grid{grid-template-columns:1fr}}
/* Lot 4 — arbre généalogique */
.bottom-nav{grid-template-columns:repeat(5,1fr)}
.tree-page{padding:16px}.tree-title-row{align-items:flex-start}.tree-toolbar{display:grid;grid-template-columns:1fr;gap:12px;margin:18px 0}.tree-toolbar label{min-width:0}.tree-command-bar{display:flex;gap:8px;margin-bottom:10px;overflow:auto}.genealogy-tree{position:relative;min-height:540px;border:1px solid var(--border);border-radius:18px;background:radial-gradient(circle at 50% 30%,#fff,#edf5f0);overflow:hidden;touch-action:none}.tree-svg{display:block;width:100%;height:68vh;min-height:540px;cursor:grab;user-select:none}.tree-svg:active{cursor:grabbing}.tree-edge{fill:none;stroke:#8fa99a;stroke-width:3}.tree-edge.union{stroke:#c08d45;stroke-dasharray:8 6}.tree-node rect{fill:#fff;stroke:#cbdad1;stroke-width:2;filter:drop-shadow(0 8px 12px rgba(31,66,47,.13))}.tree-node.root rect{stroke:var(--primary);stroke-width:4}.tree-node circle{fill:#e6f2eb}.tree-node .initial{font-size:16px;font-weight:900;fill:var(--primary);pointer-events:none}.tree-node .name{font-weight:800;fill:var(--text);pointer-events:none}.tree-node .name tspan{dominant-baseline:auto}.tree-node .dates{font-size:11px;fill:var(--muted);pointer-events:none}.tree-node text{user-select:none}.tree-node-link:hover rect{stroke:var(--primary)}.tree-loading{min-height:540px;display:grid;place-items:center;color:var(--muted);font-weight:800}.tree-legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:12px;color:var(--muted);font-size:.8rem}.tree-legend span{display:flex;align-items:center;gap:6px}.legend-line{width:28px;height:0;border-top:3px solid #8fa99a}.legend-line.union{border-top-color:#c08d45;border-top-style:dashed}.tree-person-search{min-width:0}
.genealogy-tree:fullscreen{background:#f4f7f5;padding:16px}.genealogy-tree:fullscreen .tree-svg{height:100vh}
@media(min-width:850px){.tree-page{padding:24px}.tree-toolbar{grid-template-columns:minmax(260px,1fr) 230px 150px auto;align-items:end}.tree-toolbar .app-btn{height:48px}.tree-svg{height:650px}}
/* Lot 5 — administration et finitions */
.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;font-weight:800;color:var(--primary,#6657d9);margin:0 0 .35rem}.muted{color:#64748b}.stats-grid,.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem;margin-bottom:1rem}.stat-card,.feature-card{background:#fff;border:1px solid #e7e8f1;border-radius:18px;padding:1rem;box-shadow:0 8px 30px rgba(31,35,58,.06)}.stat-card strong{display:block;font-size:1.7rem}.stat-card span,.feature-card p{color:#64748b}.feature-card{text-decoration:none;color:inherit}.feature-card h2{font-size:1rem;margin:0 0 .35rem}.responsive-table{overflow:auto;background:#fff;border:1px solid #e7e8f1;border-radius:18px}.responsive-table table{width:100%;border-collapse:collapse;min-width:680px}.responsive-table th,.responsive-table td{padding:.8rem;text-align:left;border-bottom:1px solid #eef0f5}.responsive-table small{display:block;color:#64748b;margin-top:.2rem}.inline-admin-form{display:grid;grid-template-columns:1fr 1fr auto;gap:.5rem;align-items:center}.search-bar{display:flex;gap:.6rem;margin-bottom:1rem}.search-bar input{flex:1}.form-card textarea{resize:vertical}.app-btn.small{min-height:40px;padding:.55rem .75rem}@media(min-width:800px){.stats-grid{grid-template-columns:repeat(4,1fr)}.admin-grid{grid-template-columns:repeat(4,1fr)}}@media(max-width:620px){.page-head{align-items:stretch;flex-direction:column}.stats-grid,.admin-grid{grid-template-columns:1fr 1fr}.inline-admin-form{grid-template-columns:1fr}.search-bar{flex-direction:column}}


/* Gestion avancée des utilisateurs */
.admin-users-list {
    display: grid;
    gap: 16px;
}

.admin-user-card {
    margin-top: 0;
}

.admin-user-card__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 18px;
}

.admin-user-card__head h2,
.admin-user-card__head p {
    margin: 0;
}

.admin-user-edit-form {
    display: grid;
    gap: 16px;
}

.admin-user-actions {
    justify-content: flex-end;
}

.checkbox-label {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 10px;
    min-height: 48px;
    padding: 12px 14px;
    border: 1px solid var(--border);
    border-radius: 13px;
    background: #fff;
}

.checkbox-label input {
    width: 20px;
    min-height: 20px;
    margin: 0;
}

.badge.active {
    background: #e7f6ed;
    color: #17633a;
}

.badge.blocked {
    background: #fee2e2;
    color: #991b1b;
}

.badge.pending_email,
.badge.pending_email_admin,
.badge.pending_admin {
    background: #fff7d6;
    color: #8a5b00;
}

.logout-form {
    margin: 0;
}

.logout-btn {
    min-width: 118px;
    white-space: nowrap;
}

@media (max-width: 620px) {
    .admin-user-card__head {
        flex-direction: column;
    }

    .admin-user-actions .app-btn {
        width: 100%;
    }

    .logout-btn {
        min-width: auto;
        padding-inline: 13px;
    }
}


/* Pagination des fiches de personnes */
.persons-result-count{margin:14px 0 0;color:var(--muted);font-size:.88rem}
.pagination{display:flex;align-items:center;justify-content:center;gap:10px;margin:24px 0 8px}
.pagination-pages{display:flex;align-items:center;justify-content:center;gap:6px}
.pagination-link{min-width:42px;min-height:42px;padding:8px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--primary-dark);display:inline-flex;align-items:center;justify-content:center;font-weight:800;white-space:nowrap}
.pagination-link:hover{border-color:var(--primary);background:#eaf2ed}
.pagination-link.active{border-color:var(--primary);background:var(--primary);color:#fff}
.pagination-link.disabled{opacity:.45;cursor:not-allowed;pointer-events:none}
.pagination-ellipsis{min-width:24px;text-align:center;color:var(--muted);font-weight:800}
@media(max-width:620px){.pagination{display:grid;grid-template-columns:1fr 1fr}.pagination-pages{grid-column:1/-1;grid-row:1;overflow-x:auto;justify-content:flex-start;padding-bottom:4px}.pagination-previous,.pagination-next{width:100%}}



/* Mise à jour navigation PC + personnes */
.profile-actions{
    display:flex;
    flex-wrap:wrap;
    gap:10px;
    margin-left:auto;
}

.person-list-card.incomplete{
    background:#fff4df;
    border-color:#efb45b;
}

.person-list-card.incomplete:hover{
    border-color:#d88b20;
    box-shadow:0 10px 28px rgba(173,105,17,.13);
}

.incomplete-note{
    color:#9a5a08 !important;
    font-weight:800;
}

.suggestions button{
    display:grid;
    gap:3px;
}

.suggestions button small{
    color:var(--muted);
    font-weight:600;
}

.suggestions .suggestion-create{
    background:#fff8e8;
    color:#8a5700;
    border-top:1px solid #efd39d;
}

.app-modal[hidden]{
    display:none !important;
}

.app-modal{
    position:fixed;
    inset:0;
    z-index:1000;
    display:grid;
    place-items:center;
    padding:16px;
}

.app-modal__backdrop{
    position:absolute;
    inset:0;
    background:rgba(15,30,22,.52);
    backdrop-filter:blur(4px);
}

.app-modal__dialog{
    position:relative;
    z-index:1;
    width:min(720px,100%);
    max-height:min(88vh,760px);
    overflow:auto;
    background:var(--surface);
    border:1px solid var(--border);
    border-radius:22px;
    box-shadow:0 28px 80px rgba(20,50,34,.24);
    padding:22px;
}

.app-modal__head{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:16px;
}

.duplicate-results:empty{
    display:none;
}

.duplicate-alert{
    background:#fff8e8;
    border:1px solid #efd39d;
    border-radius:15px;
    padding:14px;
}

.duplicate-alert p{
    margin:.35rem 0 .8rem;
    color:#7f5b20;
}

.duplicate-candidate-list{
    display:grid;
    gap:8px;
}

.duplicate-candidate{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    background:#fff;
    border:1px solid #ead9b7;
    border-radius:13px;
    padding:12px;
}

.duplicate-candidate>div{
    min-width:0;
    display:grid;
    gap:3px;
}

.duplicate-candidate small{
    color:var(--muted);
}

.duplicate-force-row{
    margin-top:10px;
    display:flex;
    justify-content:flex-end;
}

@media(min-width:700px){
    body{
        padding-bottom:0;
    }

    body .app-main-nav{
        position:sticky;
        top:76px;
        z-index:9;
        width:min(760px,calc(100% - 48px));
        margin:12px auto 0;
        border:1px solid var(--border);
        border-radius:18px;
        height:68px;
        background:rgba(255,255,255,.96);
        box-shadow:0 8px 28px rgba(31,66,47,.08);
        backdrop-filter:blur(14px);
    }

    .app-shell{
        padding-top:22px;
    }
}

@media(max-width:699px){
    .profile-actions{
        width:100%;
        margin-left:0;
    }

    .profile-actions .app-btn{
        flex:1 1 140px;
    }

    .app-modal__dialog{
        padding:18px;
        border-radius:18px;
    }

    .duplicate-candidate{
        align-items:stretch;
        flex-direction:column;
    }

    .duplicate-candidate .app-btn{
        width:100%;
    }
}


/* Mise à jour administration utilisateurs + arbre multi-unions */
.admin-page-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}
.admin-create-user-panel{max-width:850px;margin-inline:auto}
.admin-grid-expanded{grid-template-columns:repeat(2,minmax(0,1fr))}
.feature-icon{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:#e8f3ec;color:var(--primary-dark);font-size:1.2rem;font-weight:900;margin-bottom:12px}
.admin-feature-primary{border-color:#b9d8c7;background:linear-gradient(145deg,#fff,#f0f8f3)}
.admin-verified-checkbox{align-self:end}

.tree-edge.parent,.tree-edge.family-branch,.tree-edge.parent-pair{stroke:#8fa99a;stroke-linecap:round;stroke-linejoin:round}
.tree-edge.family-branch{stroke-width:3.2}
.tree-edge.parent-pair{stroke-width:2.4;stroke-dasharray:2 5}
.tree-edge.union.multi-union{stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.tree-union-hub{fill:#c08d45;stroke:#fff;stroke-width:2}
.tree-family-hub{fill:#8fa99a;stroke:#fff;stroke-width:2}
.legend-hub{width:12px;height:12px;border-radius:999px;background:#c08d45;box-shadow:0 0 0 3px #f3e6d3;display:inline-block}

@media(min-width:800px){.admin-grid-expanded{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:620px){.admin-grid-expanded{grid-template-columns:1fr}.admin-page-actions{width:100%}.admin-page-actions .app-btn{flex:1 1 150px}}



/* Correctif galerie + gestion des photos */
.photo-grid,
.gallery-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
    width:100%;
    max-width:100%;
}

.photo-grid figure,
.gallery-grid .gallery-item{
    min-width:0;
    width:100%;
    max-width:100%;
    overflow:hidden;
}

.photo-grid img,
.gallery-grid .gallery-image{
    display:block;
    width:100%;
    max-width:100%;
    aspect-ratio:1 / 1;
    object-fit:cover;
    border-radius:15px;
}

.photo-grid figcaption,
.gallery-grid figcaption{
    min-width:0;
    width:100%;
}

.photo-grid figcaption strong,
.photo-grid figcaption small,
.gallery-grid figcaption strong,
.gallery-grid figcaption small{
    display:block;
    max-width:100%;
    overflow-wrap:anywhere;
    word-break:break-word;
}

.profile-photo-upload{
    display:grid;
    grid-template-columns:1fr;
    gap:14px;
    padding:16px;
    border:1px solid var(--border);
    border-radius:16px;
    background:#f8fbf9;
}

.profile-photo-upload p{
    margin:.35rem 0 0;
}

.profile-photo-preview{
    width:110px;
    height:110px;
    border-radius:22px;
    object-fit:cover;
    border:1px solid var(--border);
    box-shadow:0 8px 20px rgba(31,66,47,.08);
}

.profile-upload-field{
    margin:0;
}

@media(min-width:700px){
    .photo-grid,
    .gallery-grid{
        grid-template-columns:repeat(4,minmax(0,1fr));
    }

    .profile-photo-upload{
        grid-template-columns:minmax(0,1fr) 110px;
        align-items:center;
    }

    .profile-photo-upload .profile-upload-field{
        grid-column:1 / -1;
    }
}



/* Paramètres personnels accessibles à tous les utilisateurs */
.settings-layout{
    display:grid;
    gap:16px;
}

.settings-profile-panel,
.settings-admin-panel{
    margin-top:0;
}

.settings-profile-form{
    margin-top:20px;
}

.settings-security-title{
    margin-top:8px;
    padding-top:18px;
    border-top:1px solid var(--border);
}

.settings-security-title h2,
.settings-security-title p{
    margin-bottom:0;
}

.settings-admin-grid{
    display:grid;
    grid-template-columns:1fr;
    gap:12px;
    margin-top:18px;
}

.settings-admin-grid .feature-card{
    display:block;
}

.settings-admin-grid .feature-card h2{
    margin-bottom:5px;
}

.settings-admin-grid .feature-card p{
    margin:0;
}

@media(min-width:760px){
    .settings-admin-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}

@media(min-width:1050px){
    .settings-admin-grid{
        grid-template-columns:repeat(3,minmax(0,1fr));
    }
}

@media(max-width:699px){
    .settings-page-head{
        margin-bottom:12px;
    }

    .settings-profile-panel .panel-head{
        align-items:flex-start;
    }

    .settings-profile-form .form-actions .app-btn{
        width:100%;
    }
}

/* Correctif affichage des validations */
.validation-page-head{
    margin-bottom:12px;
}

.validation-tabs{
    margin-bottom:16px;
}

.validation-list{
    display:grid;
    gap:12px;
    width:100%;
    max-width:100%;
}

.validation-card{
    width:100%;
    max-width:100%;
    min-width:0;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    padding:16px 18px;
    background:var(--surface);
    border:1px solid var(--border);
    border-radius:17px;
    box-shadow:0 8px 24px rgba(31,66,47,.06);
    color:var(--text);
    overflow:hidden;
}

.validation-card:hover{
    border-color:var(--primary);
    box-shadow:0 10px 28px rgba(31,66,47,.10);
}

.validation-card__main{
    min-width:0;
    flex:1;
    display:grid;
    gap:4px;
}

.validation-card__main p{
    margin:0;
    color:var(--text);
    overflow-wrap:anywhere;
}

.validation-card__main small{
    color:var(--muted);
    overflow-wrap:anywhere;
}

.validation-card__title-row{
    display:flex;
    align-items:center;
    flex-wrap:wrap;
    gap:8px;
}

.validation-action{
    display:inline-flex;
    width:max-content;
    padding:4px 8px;
    border-radius:999px;
    background:#eef5f1;
    color:var(--primary-dark);
    font-size:.75rem;
    font-weight:800;
}

.validation-card>.badge{
    flex:0 0 auto;
}

.validation-detail-head{
    align-items:flex-start;
}

.validation-comparison{
    overflow:hidden;
    background:var(--surface);
    border:1px solid var(--border);
    border-radius:18px;
    box-shadow:0 8px 28px rgba(31,66,47,.06);
}

.validation-comparison .comparison-head,
.validation-comparison .comparison-row{
    grid-template-columns:minmax(150px,.75fr) minmax(0,1fr) minmax(0,1fr);
    width:100%;
}

.validation-comparison .comparison-row>div,
.validation-comparison .comparison-row>strong{
    min-width:0;
    overflow-wrap:anywhere;
    word-break:break-word;
}

.validation-comparison .comparison-field{
    align-self:center;
}

.validation-comparison .comparison-current,
.validation-comparison .comparison-proposed{
    min-height:42px;
    padding:10px 12px;
    border-radius:10px;
}

.validation-comparison .comparison-current{
    background:#f8faf9;
}

.validation-comparison .comparison-proposed{
    background:#effcf4;
}

.validation-photo-summary{
    margin-top:16px;
}

.validation-photo-summary p{
    margin-bottom:0;
}

.validation-decision-grid{
    margin-top:16px;
}

.validation-decision-card{
    margin-top:0;
}

.validation-decision-result{
    margin-top:16px;
}

.badge.pending{
    background:#fff4d8;
    color:#855b00;
}

.badge.approved{
    background:#e7f6ed;
    color:#17633a;
}

.badge.rejected{
    background:#fee2e2;
    color:#991b1b;
}

@media(max-width:700px){
    .validation-card{
        align-items:flex-start;
        flex-direction:column;
    }

    .validation-card>.badge{
        align-self:flex-start;
    }

    .validation-comparison .comparison-head{
        display:none;
    }

    .validation-comparison .comparison-row{
        display:grid;
        grid-template-columns:1fr;
        gap:8px;
        padding:14px;
    }

    .validation-comparison .comparison-row>div:before{
        display:block;
        margin-bottom:5px;
        color:var(--muted);
        font-size:.72rem;
        font-weight:800;
    }

    .validation-comparison .comparison-current:before{
        content:'Valeur actuelle';
    }

    .validation-comparison .comparison-proposed:before{
        content:'Valeur proposée';
    }
}

/* Personnes décédées dans l'arbre */
.tree-node.deceased rect{
    fill:#f0f2f1;
    stroke:#9fa9a3;
}

.tree-node.deceased.root rect{
    stroke:#68756e;
}

.tree-node.deceased .name{
    fill:#58615c;
}

.tree-node.deceased .dates{
    fill:#68736d;
    font-weight:700;
}

.tree-node.deceased circle{
    fill:#dde2df;
}

.tree-node.deceased .initial{
    fill:#68736d;
}

.tree-node .deceased-photo{
    filter:grayscale(78%);
    opacity:.78;
}

.tree-node .deceased-mark{
    fill:#68736d;
    font-size:18px;
    font-weight:900;
}

.legend-deceased i{
    width:28px;
    height:28px;
    border-radius:8px;
    display:grid;
    place-items:center;
    background:#eef1ef;
    border:1px solid #aeb7b1;
    color:#68736d;
    font-size:18px;
    font-style:normal;
    font-weight:900;
}

/* Fiche personne : consultation épurée + informations manquantes */
.deceased-profile{
    background:#f7f8f7;
    border-color:#c8cfcb;
}

.deceased-profile .profile-photo{
    filter:grayscale(55%);
}

.deceased-mark{
    color:#68736d;
    font-weight:900;
}

.deceased-summary{
    margin:.4rem 0 0;
    color:#68736d;
    font-weight:700;
}

.profile-completeness-alert{
    margin-top:16px;
    padding:14px 16px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    background:#fff7e8;
    border:1px solid #efcf96;
    border-radius:16px;
}

.profile-completeness-alert strong{
    color:#8a5700;
}

.profile-completeness-alert p{
    margin:4px 0 0;
    color:#7b6237;
}

@media(max-width:620px){
    .profile-completeness-alert{
        align-items:stretch;
        flex-direction:column;
    }

    .profile-completeness-alert .app-btn{
        width:100%;
    }
}

/* Liste utilisateurs paginée */
.admin-users-result-count{margin:12px 0 0;color:var(--muted);font-size:.88rem}
.admin-users-table table{min-width:900px}
.admin-users-table td strong,.admin-users-table td small{display:block}
.admin-users-table td small{color:var(--muted);margin-top:3px}
.admin-users-pagination{margin-top:20px}
.admin-user-edit-page{max-width:920px;margin-inline:auto}
.admin-user-account-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:14px;border:1px solid var(--border);border-radius:14px;background:#f8fbf9}
.admin-user-account-meta>div{display:grid;gap:4px}
.admin-user-account-meta small{color:var(--muted)}
@media(max-width:700px){.admin-users-table table{min-width:760px}.admin-user-account-meta{grid-template-columns:1fr}}


/* Arbre responsive mobile + navigation avancée */
.genealogy-tree{
    overscroll-behavior:contain;
    -webkit-user-select:none;
    user-select:none;
}

.tree-command-bar{
    scrollbar-width:none;
}

.tree-command-bar::-webkit-scrollbar{
    display:none;
}

.tree-command-bar .icon-btn{
    flex:0 0 auto;
}

.tree-orientation-btn{
    position:relative;
}

.tree-layout-vertical{
    background:
        radial-gradient(
            circle at 50% 12%,
            #fff,
            #edf5f0
        );
}

.tree-layout-horizontal{
    background:
        radial-gradient(
            circle at 50% 30%,
            #fff,
            #edf5f0
        );
}

@media(max-width:760px){
    .tree-page{
        padding:12px;
    }

    .tree-toolbar{
        gap:10px;
    }

    .tree-command-bar{
        position:sticky;
        top:76px;
        z-index:8;
        gap:7px;
        padding:8px;
        margin-inline:-2px;
        border:1px solid var(--border);
        border-radius:15px;
        background:rgba(255,255,255,.94);
        box-shadow:0 7px 22px rgba(31,66,47,.08);
        backdrop-filter:blur(12px);
    }

    .tree-command-bar .icon-btn{
        width:48px;
        height:48px;
        min-width:48px;
        font-size:1.15rem;
    }

    .genealogy-tree{
        min-height:68dvh;
        border-radius:16px;
        touch-action:none;
    }

    .tree-svg{
        width:100%;
        height:72dvh;
        min-height:560px;
        touch-action:none;
    }

    .tree-layout-vertical .tree-svg{
        height:76dvh;
    }

    .tree-legend{
        gap:9px 12px;
        font-size:.75rem;
    }
}

@media(max-width:420px){
    .tree-command-bar{
        top:70px;
    }

    .tree-command-bar .icon-btn{
        width:46px;
        height:46px;
        min-width:46px;
    }

    .tree-svg{
        min-height:520px;
        height:70dvh;
    }

    .tree-layout-vertical .tree-svg{
        height:74dvh;
    }
}


/* Mode vertical mobile en colonnes générationnelles diagonales */
@media(max-width:760px){
    .tree-layout-vertical{
        background:
            linear-gradient(
                135deg,
                rgba(255,255,255,.96) 0%,
                rgba(247,251,248,.96) 42%,
                rgba(237,245,240,.98) 100%
            );
    }

    .tree-layout-vertical .tree-svg{
        height:78dvh;
        min-height:580px;
    }
}

@media(max-width:420px){
    .tree-layout-vertical .tree-svg{
        height:76dvh;
        min-height:540px;
    }
}
