:root{--cream:#f7efe3;--paper:#fffdfa;--ink:#29221e;--muted:#75675e;--line:#e8ddd1;--orange:#a34b0b;--orange-dark:#783604;--green:#28754d;--green-soft:#e4f2e9;--red:#a8443b;--red-soft:#f9e9e6;--shadow:0 18px 50px rgba(61,39,24,.10);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--cream)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:linear-gradient(145deg,#fffaf3 0%,var(--cream) 62%,#efe0cc 100%)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(163,75,11,.25);outline-offset:2px}.hidden{display:none!important}.muted{color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:.13em;font-size:.72rem;font-weight:800;color:var(--orange);margin:0 0 .5rem}.auth-shell{min-height:100vh;display:grid;grid-template-columns:minmax(320px,1.08fr) minmax(380px,.92fr)}.auth-visual{position:relative;display:grid;place-items:center;min-height:100vh;background:linear-gradient(rgba(45,27,17,.28),rgba(45,27,17,.55)),url('/assets/village.webp') center/cover}.auth-visual:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 35%,transparent 0,rgba(37,22,12,.24) 75%)}.auth-brand{position:relative;z-index:1;text-align:center;color:white;text-shadow:0 2px 12px rgba(0,0,0,.3)}.auth-brand img{width:136px;height:136px;object-fit:contain;filter:drop-shadow(0 8px 18px rgba(0,0,0,.22))}.auth-brand p{font-family:Georgia,serif;font-size:1.45rem;margin:.7rem 0}.auth-panel{display:grid;place-items:center;padding:clamp(1.25rem,5vw,5rem)}.auth-card{width:min(100%,430px);background:rgba(255,253,250,.95);border:1px solid rgba(232,221,209,.8);box-shadow:var(--shadow);padding:clamp(1.5rem,4vw,2.7rem);border-radius:24px}.auth-card h1{font-family:Georgia,serif;font-size:clamp(1.8rem,4vw,2.5rem);line-height:1.05;margin:0 0 .7rem}.auth-card>.muted{margin:0 0 1.8rem;line-height:1.55}label{display:grid;gap:.45rem;font-size:.88rem;font-weight:700;color:#53463e;margin-bottom:1rem}input,select,textarea{width:100%;min-height:46px;border:1px solid #d8c9bc;border-radius:10px;background:#fff;padding:.72rem .8rem;color:var(--ink);transition:border-color .15s,box-shadow .15s}textarea{resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--orange);box-shadow:0 0 0 3px rgba(163,75,11,.10);outline:0}.password-field{position:relative}.password-field input{padding-right:4rem}.eye-button{position:absolute;right:.3rem;top:50%;transform:translateY(-50%);border:0;background:transparent;color:var(--orange);font-size:.78rem;font-weight:800;padding:.6rem}.check{display:flex;grid-template-columns:auto 1fr;align-items:center;font-weight:500}.check input{width:18px;min-height:18px;accent-color:var(--orange)}.button{min-height:44px;border-radius:10px;padding:.68rem 1rem;border:1px solid transparent;font-weight:800;transition:transform .14s,background .14s}.button:hover{transform:translateY(-1px)}.primary{background:var(--orange);color:#fff}.primary:hover{background:var(--orange-dark)}.secondary{background:#fff;color:var(--ink);border-color:var(--line)}.secondary:hover{background:#faf5ef}.full{width:100%}.link-button{display:block;border:0;background:none;color:var(--orange);font-weight:700;margin:1rem auto 0;padding:.5rem}.dashboard{min-height:100vh}.topbar{height:78px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(1rem,4vw,3rem);background:rgba(255,253,250,.94);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10;backdrop-filter:blur(10px)}.brand{display:flex;align-items:center;gap:.75rem;text-decoration:none;color:var(--ink)}.brand img{width:54px;height:54px;object-fit:contain}.brand span{display:grid}.brand strong{font-family:Georgia,serif;font-size:1.1rem}.brand small{color:var(--muted)}.top-actions{display:flex;align-items:center;gap:.55rem}.icon-button,.close-button{display:grid;place-items:center;border:1px solid var(--line);background:#fff;border-radius:10px;min-width:44px;height:44px;font-size:1.25rem}.page{width:min(1380px,100%);margin:auto;padding:clamp(1.2rem,3.5vw,3rem)}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;margin-bottom:2rem}.page-heading h1{font:700 clamp(2rem,4vw,3rem)/1 Georgia,serif;margin:0 0 .45rem}.page-heading p{margin:.2rem 0}.stats{display:flex;gap:.7rem}.stat{min-width:112px;text-align:left;background:var(--paper);border:1px solid var(--line);border-radius:15px;padding:.9rem 1rem;color:var(--ink)}.stat strong,.stat span{display:block}.stat strong{font-size:1.45rem}.stat span{font-size:.76rem;color:var(--muted);margin-top:.15rem}.stat.active strong{color:var(--green)}.stat.inactive strong{color:var(--red)}.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--line);margin-bottom:1.2rem}.tab{border:0;background:transparent;padding:.8rem 1rem;color:var(--muted);font-weight:800;border-bottom:3px solid transparent}.tab.selected{color:var(--orange);border-bottom-color:var(--orange)}.toolbar{display:flex;gap:.8rem;margin-bottom:1rem}.search-box{position:relative;display:block;flex:1;margin:0}.search-box span{position:absolute;left:.9rem;top:50%;transform:translateY(-50%);font-size:1.4rem;color:var(--muted)}.search-box input{padding-left:2.8rem;background:var(--paper)}.toolbar select{width:min(230px,38%);background:var(--paper)}.workspace{display:grid;grid-template-columns:minmax(340px,.85fr) minmax(430px,1.15fr);gap:1rem;align-items:start}.results-panel,.detail-panel,.list-panel{background:var(--paper);border:1px solid var(--line);border-radius:18px;box-shadow:0 8px 30px rgba(61,39,24,.055)}.results-panel{overflow:hidden}.section-title{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.1rem;border-bottom:1px solid var(--line)}.section-title h2{font:700 1.12rem Georgia,serif;margin:0}.section-title span{font-size:.78rem;color:var(--muted)}.member-cards{max-height:64vh;overflow:auto;padding:.5rem}.member-card{display:grid;grid-template-columns:1fr auto;gap:.35rem .7rem;width:100%;text-align:left;border:1px solid transparent;border-radius:12px;background:transparent;padding:.8rem;color:var(--ink)}.member-card:hover,.member-card.selected{background:#fbf3e8;border-color:#ead5bf}.member-card strong{font-size:.96rem}.member-card small{color:var(--muted)}.badge{align-self:start;border-radius:999px;padding:.28rem .55rem;font-size:.7rem;font-weight:800;background:var(--red-soft);color:var(--red)}.badge.active{background:var(--green-soft);color:var(--green)}.detail-panel{min-height:420px;padding:clamp(1rem,3vw,2rem)}.empty-state{text-align:center;color:var(--muted);padding:5rem 1rem}.empty-state span{font-size:3rem}.empty-state h2{font-family:Georgia,serif;color:var(--ink);margin:.8rem 0 .4rem}.detail-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:1.3rem}.detail-head h2{font:700 clamp(1.5rem,3vw,2rem) Georgia,serif;margin:.2rem 0}.detail-actions{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem;margin:1.2rem 0}.info{background:#faf6f0;border-radius:11px;padding:.75rem}.info span{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:.25rem}.info strong{font-size:.93rem;overflow-wrap:anywhere}.history h3{font:700 1.1rem Georgia,serif}.history-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.5rem;padding:.7rem 0;border-top:1px solid var(--line);font-size:.84rem}.history-row span:last-child{text-align:right}.list-panel{overflow:hidden}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.85rem 1rem;border-bottom:1px solid var(--line);white-space:nowrap}th{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:#faf6f0}td{font-size:.88rem}.table-button{border:0;background:none;color:var(--orange);font-weight:800;padding:.4rem}dialog{border:0;border-radius:20px;padding:0;width:min(760px,calc(100% - 1.5rem));max-height:calc(100vh - 1.5rem);box-shadow:0 25px 80px rgba(35,22,14,.3);background:var(--paper)}dialog::backdrop{background:rgba(39,27,20,.55);backdrop-filter:blur(3px)}.dialog-card{padding:clamp(1.2rem,4vw,2rem);overflow:auto;max-height:calc(100vh - 1.5rem)}.dialog-card.compact{width:min(100%,520px);margin:auto}.dialog-head{display:flex;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}.dialog-head h2{font:700 1.65rem Georgia,serif;margin:0}.dialog-head p{margin:.3rem 0}.close-button{font-size:1.6rem}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1rem}.membership-fields{background:#faf4eb;border:1px solid var(--line);border-radius:14px;padding:1rem;margin:.4rem 0 1rem}.membership-fields h3{font:700 1.05rem Georgia,serif;margin:0 0 1rem}.dialog-actions{display:flex;justify-content:flex-end;gap:.7rem;margin-top:1.3rem}.hint{font-size:.8rem;color:var(--muted);line-height:1.45}.toast{position:fixed;z-index:100;left:50%;bottom:1.2rem;transform:translate(-50%,130%);background:#29221e;color:#fff;border-radius:10px;padding:.8rem 1rem;box-shadow:var(--shadow);opacity:0;transition:.25s;max-width:calc(100% - 2rem);text-align:center}.toast.show{transform:translate(-50%,0);opacity:1}.toast.error{background:#8c302a}.loading{padding:2rem;text-align:center;color:var(--muted)}
@media(max-width:850px){.auth-shell{grid-template-columns:1fr}.auth-visual{min-height:220px}.auth-brand img{width:96px;height:96px}.auth-panel{padding:1rem;margin-top:-38px;position:relative;z-index:2}.page-heading{align-items:flex-start;flex-direction:column}.stats{width:100%}.stat{flex:1;min-width:0}.workspace{grid-template-columns:1fr}.member-cards{max-height:330px}.detail-panel{min-height:360px}.topbar{height:70px}.brand small{display:none}}
@media(max-width:590px){.topbar{padding:0 .75rem}.brand strong{font-size:.95rem}.brand img{width:46px;height:46px}.top-actions .secondary{display:none}.page{padding:1rem .75rem 2rem}.stats{gap:.4rem}.stat{padding:.7rem}.stat strong{font-size:1.2rem}.toolbar{flex-direction:column}.toolbar select{width:100%}.tabs{overflow:auto}.tab{white-space:nowrap}.form-grid,.detail-grid{grid-template-columns:1fr}.detail-head{flex-direction:column}.detail-actions{width:100%;justify-content:stretch}.detail-actions .button{flex:1}.history-row{grid-template-columns:1fr 1fr}.history-row span:last-child{text-align:left;grid-column:1/-1}.dialog-actions{position:sticky;bottom:-1.2rem;background:var(--paper);padding:1rem 0}.dialog-actions .button{flex:1}th:nth-child(2),td:nth-child(2),th:nth-child(4),td:nth-child(4){display:none}.auth-card{border-radius:18px;padding:1.35rem}.auth-visual{min-height:190px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.form-field{margin-bottom:1rem}.form-field>label{margin-bottom:.45rem}.mobile-label{display:none}button{min-height:44px}.top-actions{flex-shrink:0}.brand{min-width:0}
@media(max-width:590px){.brand span{display:none}.mobile-label{display:inline}.desktop-label{display:none}.top-actions .secondary{display:inline-flex}.top-actions .button{display:inline-flex;align-items:center;justify-content:center;min-width:44px;padding:.55rem .65rem}.topbar{padding-left:max(.75rem,env(safe-area-inset-left));padding-right:max(.75rem,env(safe-area-inset-right))}.page{padding-left:max(.75rem,env(safe-area-inset-left));padding-right:max(.75rem,env(safe-area-inset-right));padding-bottom:max(2rem,env(safe-area-inset-bottom))}.auth-panel{padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right));padding-bottom:max(1rem,env(safe-area-inset-bottom))}input,select,textarea{font-size:16px}.table-button,.link-button{min-width:44px}dialog{width:min(760px,calc(100% - 1rem))}.dialog-actions{padding-bottom:max(1rem,env(safe-area-inset-bottom))}}

/* Tableau de bord plein écran, avec défilement limité aux panneaux. */
body.dashboard-active{height:100dvh;overflow:hidden}
.dashboard{height:100dvh;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.dashboard.hidden{display:none}
.topbar{position:relative;flex:0 0 78px}
.page{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.page-heading,.tabs,.toolbar{flex:none}
.workspace,.list-panel{flex:1;min-height:0}
.workspace{align-items:stretch}
.results-panel{min-height:0;display:flex;flex-direction:column}
.member-cards{flex:1;min-height:0;max-height:none;overscroll-behavior:contain}
.detail-panel{min-height:0;overflow:auto;overscroll-behavior:contain}
.list-panel{min-height:0}
.table-scroll{height:100%;overflow:auto;overscroll-behavior:contain}
thead th{position:sticky;top:0;z-index:1}
.empty-add{margin-top:1rem}
.back-results{display:none}

/* Fenêtre adhérent plus large et champs plus compacts sur ordinateur. */
#memberDialog{width:min(1040px,calc(100% - 2rem))}
.dialog-card{overscroll-behavior:contain}
.dialog-head{margin-bottom:1rem}
.close-button{flex:0 0 44px;padding:0;line-height:1}
.close-button span,.child-remove span{display:block;line-height:1;transform:translateY(-1px)}
.button:disabled{cursor:wait;opacity:.65;transform:none}
@media(min-width:851px){
  #memberDialog .member-main-grid,#memberDialog .membership-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  #memberDialog .dialog-card{padding:1.35rem 1.5rem}
  #memberDialog label{margin-bottom:.7rem}
}

.children-editor{border:1px solid var(--line);border-radius:14px;padding:.85rem 1rem;margin:.15rem 0 1rem;background:#fff}
.children-head{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.children-head h3,.children-detail h3{font:700 1.05rem Georgia,serif;margin:0}
.children-head .hint{margin:.25rem 0 0}
.child-rows:not(.empty){display:grid;gap:.65rem;margin-top:.8rem}
.child-row{display:grid;grid-template-columns:1fr 1fr minmax(150px,.65fr) 44px;gap:.65rem;align-items:end;padding-top:.65rem;border-top:1px solid var(--line)}
.child-row label{margin:0}
#memberDialog .child-row label{margin-bottom:0}
.child-remove{display:grid;place-items:center;align-self:end;width:44px;height:46px;padding:0;border:1px solid #e5cbc7;border-radius:10px;background:#fff5f3;color:var(--red);font-size:1.45rem}
.children-detail{margin:1rem 0;padding:1rem;border:1px solid var(--line);border-radius:12px}
.child-detail{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.65rem 0;border-bottom:1px solid var(--line)}
.child-detail:last-child{border-bottom:0}
.child-detail span,.legacy-child-age{font-size:.8rem;color:var(--muted)}

@media(max-width:850px){
  .topbar{flex-basis:70px}
  .page{padding:.75rem 1rem max(.75rem,env(safe-area-inset-bottom))}
  .page-heading{margin:0 0 .65rem}
  .page-heading>div:first-child{display:none}
  .stats{width:100%}
  .stat{padding:.55rem .7rem}
  .stat strong{font-size:1.2rem}
  .tabs{margin-bottom:.6rem}
  .tab{padding:.55rem .7rem}
  .toolbar{margin-bottom:.65rem}
  .workspace{grid-template-columns:1fr}
  .workspace:not(.detail-open) .detail-panel{display:none}
  .workspace.detail-open .results-panel{display:none}
  .results-panel,.detail-panel{height:100%;min-height:0}
  .member-cards{max-height:none}
  .detail-panel{padding:1rem}
  .back-results{display:inline-flex;align-items:center;min-height:44px;margin:0 0 .6rem;padding:.4rem 0;border:0;background:none;color:var(--orange);font-weight:800}
}

@media(max-width:590px){
  .page{padding-top:.6rem;padding-bottom:max(.6rem,env(safe-area-inset-bottom))}
  .stats{gap:.3rem}
  .stat{padding:.45rem .5rem;border-radius:11px}
  .stat span{font-size:.68rem}
  .toolbar{flex-direction:row;gap:.45rem}
  .toolbar select{width:41%;padding-left:.55rem;padding-right:.3rem}
  .search-box input{padding-left:2.45rem}
  .search-box span{left:.72rem}
  .section-title{padding:.7rem .85rem}
  .member-card{padding:.65rem}
  .empty-state{padding:2rem .7rem}
  .empty-state span{font-size:2.3rem}
  #memberDialog{width:calc(100% - .75rem)}
  .child-row{grid-template-columns:1fr 1fr 44px;gap:.5rem}
  .child-row label:nth-child(3){grid-column:1/3}
  .child-remove{grid-column:3;grid-row:1;align-self:end}
  .dialog-actions{bottom:-1.2rem}
  #exportButton,#addButton,#logoutButton{display:grid;width:48px;height:48px;min-width:48px;min-height:48px;padding:0;border-radius:14px;place-items:center}
  #addButton{box-shadow:0 5px 14px rgba(120,54,4,.22)}
  .top-actions .mobile-label{display:grid;width:24px;height:24px;place-items:center}
}

/* Système de boutons cohérent et adapté au tactile. */
button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.button{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;gap:.45rem;min-height:48px;padding:.72rem 1.1rem;border-radius:12px;line-height:1.1;white-space:nowrap;box-shadow:0 2px 5px rgba(61,39,24,.06);transition:background .16s,border-color .16s,box-shadow .16s,transform .16s}
.button:hover{transform:none}
.button.primary{border-color:var(--orange);background:linear-gradient(180deg,#ad510d 0%,var(--orange) 100%);box-shadow:0 5px 14px rgba(120,54,4,.18)}
.button.secondary{border-color:#ddcfc2;background:#fffdfa}
.button.danger{border-color:#a8443b;background:linear-gradient(180deg,#b44b42 0%,#983b34 100%);color:#fff;box-shadow:0 5px 14px rgba(152,59,52,.18)}
.icon-button,.close-button{display:inline-grid;place-items:center;width:46px;min-width:46px;height:46px;min-height:46px;padding:0;border:1px solid #ddcfc2;border-radius:13px;color:#574237;background:#fffdfa;line-height:1;box-shadow:0 2px 5px rgba(61,39,24,.06);transition:background .16s,border-color .16s,color .16s,transform .16s}
.close-button{flex:0 0 46px}
.icon-button svg,.top-actions svg{display:block;width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.close-button{color:#875c45}
.eye-button{display:inline-flex;align-items:center;justify-content:center;min-width:58px;min-height:40px;border-radius:9px}
.link-button{min-height:44px;border-radius:10px;padding:.65rem .8rem}
.stat{min-height:72px;border-color:#e2d5c8;box-shadow:0 2px 7px rgba(61,39,24,.045);transition:background .16s,border-color .16s,box-shadow .16s,transform .16s}
.tabs{width:max-content;max-width:100%;gap:.2rem;padding:4px;border:1px solid var(--line);border-radius:14px;background:rgba(255,253,250,.55)}
.tab{min-height:40px;padding:.55rem .9rem;border:0;border-radius:10px;line-height:1.1}
.tab.selected{border:0;background:#fff;box-shadow:0 2px 7px rgba(61,39,24,.10)}
.member-card{min-height:64px;align-items:center;transition:background .14s,border-color .14s,box-shadow .14s}
.member-card.selected{box-shadow:inset 3px 0 0 var(--orange)}
.table-button{display:inline-flex;align-items:center;justify-content:center;min-width:58px;min-height:40px;padding:.45rem .75rem;border:1px solid #ead5bf;border-radius:10px;background:#fff7ed;line-height:1;color:var(--orange)}
.back-results{justify-content:center;border-radius:10px}
.child-remove{transition:background .16s,border-color .16s,transform .16s}
.dialog-actions .button{min-width:116px}
.delete-message{margin:.4rem 0;padding:1rem;border:1px solid #efcac5;border-radius:12px;background:var(--red-soft);font:700 1.05rem Georgia,serif;color:#7d332d;overflow-wrap:anywhere}
@media(hover:hover){
  .button:hover{transform:translateY(-1px);box-shadow:0 7px 18px rgba(61,39,24,.13)}
  .button.danger:hover{background:#872f29;box-shadow:0 7px 18px rgba(125,51,45,.2)}
  .icon-button:hover,.close-button:hover{transform:translateY(-1px);border-color:#cdb9a8;background:#fff}
  .close-button:hover,.child-remove:hover{border-color:#d7a9a2;background:#fdecea;color:#91372f}
  .stat:hover{transform:translateY(-1px);border-color:#d4c0ae;box-shadow:0 7px 18px rgba(61,39,24,.09)}
  .member-card:hover{box-shadow:inset 3px 0 0 #d7a06e}
  .table-button:hover{border-color:#d9b38f;background:#ffefde}
}
.button:active,.icon-button:active,.close-button:active,.stat:active,.table-button:active,.child-remove:active{transform:translateY(1px);box-shadow:none}

@media(max-width:850px){
  .tabs{width:100%}
  .tab{flex:1}
  .stat{min-height:60px}
  .detail-actions{display:grid;grid-template-columns:1fr 1fr}
  .detail-actions .button{width:100%}
  .detail-actions .danger{grid-column:1/-1}
}
