:root{font:15px Arial,sans-serif;color:#123e72;background:#f7faff}body{background:#f7faff}header{display:flex;align-items:center;gap:28px;background:#f7faff;color:#006b62;border-bottom:4px solid #007b70;padding:24px 30px;min-height:90px}header h1{font-size:25px;white-space:nowrap}header h1 small{display:none}header>small{font-size:12px;color:#527285;margin-left:auto}header h1:before{content:'●●●';letter-spacing:4px;margin-right:24px}main{max-width:none;margin:0;padding:22px 30px}#app>p{display:flex;justify-content:flex-end;align-items:center;gap:14px;margin:0 0 16px;font-weight:bold}.notice{display:none}nav{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:22px;border-bottom:1px solid #ccd9e6;padding-bottom:18px}button{border-radius:0;min-height:43px;padding:11px 22px;background:#0860bd;border:1px solid #c5ccd5;border-bottom:3px solid #6e7780;font-weight:bold;color:white}button.secondary{background:#114a87;color:white}button.warn{background:#d9202c;color:white}button.green{background:#009747}button.purple{background:#6547ac}button.orange{background:#e68a00}button.teal{background:#008879}button.gray{background:#555b61}button:hover{filter:brightness(1.08)}button:disabled{cursor:not-allowed;filter:none;opacity:.45}nav button{flex:1;min-width:110px;padding:11px}nav button.active{outline:2px solid #123f73;outline-offset:2px}nav button:nth-child(3n+1){background:#6248ab}nav button:nth-child(3n+2){background:#075fbe}nav button:nth-child(3n){background:#008941}section,.card{border-radius:0;box-shadow:none;background:#f7faff;border:1px solid #c8d8e8;padding:22px;margin:0 0 20px}h2{font-size:22px;margin:0 0 24px;text-transform:uppercase}h3{font-size:17px;margin:0 0 18px}input,select,textarea{font:inherit;border-radius:0;border:1px solid #9aa4af;background:white;color:#152a40;padding:12px;max-width:none;width:100%;margin:9px 0 15px}input[readonly],input:disabled{background:#edf0f2;color:#354b61}textarea{min-height:95px}label{font-size:15px}form{align-items:start}table{background:white;font-size:14px}th{background:#eaf2fb;color:#06447e;font-size:12px;text-transform:uppercase;padding:14px 10px;position:sticky;top:0;z-index:1}td{padding:11px 10px;border-bottom:1px solid #e2e9ef}tbody tr:hover{background:#edf6ff}tr.selected{background:#dcecff;outline:1px solid #286cae}td.amount{text-align:right}.scroll{max-height:440px;overflow:auto;border:1px solid #becbd7}.scroll table{min-width:700px}.toolbar{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}.toolbar button{flex:1;min-width:145px}.split{display:grid;grid-template-columns:minmax(300px,34%) 1fr;gap:30px}.identity{display:block}.identity label{display:grid;grid-template-columns:125px 1fr;align-items:center;gap:12px}.identity input,.identity select{margin:0 0 13px}.identity .toolbar{display:flex}.photo-panel{display:flex;align-items:center;gap:24px;margin-top:22px;padding:18px;border:1px solid #a9b6c5}.photo{height:145px;width:135px;object-fit:contain;background:white;border:1px solid #b7c5d4}.placeholder{display:flex;align-items:center;justify-content:center;font-size:12px;color:#73859b}.photo-actions{display:flex;gap:12px;flex-wrap:wrap}.kpis{gap:20px;margin-bottom:20px}.kpis .card{padding:20px;border:1px solid #cfdeeb;border-top:0;background:#eaf4fd;font-weight:bold;text-transform:uppercase;font-size:14px}.kpis strong{font-size:32px;margin-top:12px}.kpis .card.income,.kpis .card.paid{background:#e6f6ef;color:#00874c}.kpis .card.expense,.kpis .card.unpaid{background:#fff0f3;color:#d91c3c}.kpis .card.partial{background:#fff5e4;color:#c77700}.kpis .card.balance{background:#eaf4fd;color:#06477d}.dashboard-grid{display:grid;grid-template-columns:2fr 1fr;gap:26px}.dashboard-grid canvas{width:100%;height:300px}.summary-row{display:flex;justify-content:space-between;padding:15px 0;border-bottom:1px solid #dce7ef;font-weight:bold}.summary-row strong{font-size:22px}.filters label{min-width:140px}.filters{gap:25px}.pill{border-radius:0;padding:6px 10px}.muted{font-size:13px;line-height:1.5;color:#5c6f82}.pagehead{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}.pagehead h2{margin:0}.banner{background:#eaf4fd;padding:16px;border-left:4px solid #0860bd;margin:18px 0}.error{color:#ac1b2c}footer{background:#0b3e74;color:white;text-align:left;padding:14px 30px;font-size:13px}.empty{padding:36px}.selected-info{font-size:18px;font-weight:bold;margin-bottom:18px}.operation-total{background:#e3f5e8;font-size:20px;font-weight:bold;padding:15px}.file-status{font-size:12px;color:#5b7187}#auth{max-width:500px;margin:55px auto;background:white}#authForm{display:block}.modal-bg{position:fixed;inset:0;background:#132b4e66;z-index:10;display:flex;align-items:center;justify-content:center;padding:20px}.modal{max-height:90vh;overflow:auto;max-width:1100px;width:100%;background:#f7faff;padding:30px}.close{float:right}.chartlegend{display:flex;gap:24px;font-size:13px;margin-top:15px}.chartlegend span:first-child{color:#008c4b}.chartlegend span:last-child{color:#dc2443}.top-actions{display:flex;gap:10px;margin-left:auto}.print-only{display:none}.operation-fields{display:grid;grid-template-columns:repeat(5,1fr);gap:20px}.operation-fields input{margin-bottom:0}
@media(min-width:1550px){main{padding:26px 45px}header{padding:26px 45px}table{font-size:15px}.kpis strong{font-size:36px}}
@media(max-width:1000px){.split,.dashboard-grid{grid-template-columns:1fr}.operation-fields{grid-template-columns:repeat(2,1fr)}header{flex-wrap:wrap}header h1{font-size:20px}header>small{margin-left:0}main{padding:16px}nav{gap:8px}nav button{min-width:130px}.kpis{grid-template-columns:repeat(2,1fr)}}
@media print{header,nav,footer,#app>p,.toolbar,.filters,button,.notice,.no-print,#auth{display:none!important}body,main,section{background:white;color:black;margin:0;padding:5px;border:0}.scroll{max-height:none;overflow:visible;border:0}.scroll table{min-width:0}table{font-size:10px}th,td{padding:6px}.kpis strong{font-size:20px}.dashboard-grid{grid-template-columns:1fr}.print-only{display:block}.modal-bg{position:static;background:white;padding:0}.modal{overflow:visible;max-height:none}.modal-bg~*{display:none}}
.dashboard-extra{margin:10px 0;color:#164772}.dashboard-extra summary{cursor:pointer;padding:8px 0;font-size:13px;font-weight:bold}.dashboard-extra[open] #dashboardDues{margin-top:12px}
/* Vue globale du bilan sur ordinateur : la place va aux indicateurs et au graphique. */
@media screen and (min-width:1100px){
 body.dashboard-view header{min-height:56px;padding:10px 24px;padding-right:660px}
 body.dashboard-view header h1{font-size:22px}body.dashboard-view header h1:before{margin-right:16px;font-size:17px}
 body.dashboard-view header>small{display:none}
 body.dashboard-view #app>p{position:absolute;right:24px;top:9px;gap:10px;font-size:13px;margin:0;max-width:650px}
 body.dashboard-view #app>p button{min-height:34px;padding:7px 12px;font-size:12px}
 body.dashboard-view main{padding:8px 20px}
 body.dashboard-view nav{gap:10px;padding-bottom:6px;margin-bottom:8px;flex-wrap:nowrap}
 body.dashboard-view nav button{min-width:0;min-height:37px;font-size:12px;padding:8px}
 body.dashboard-view .dashboard-panel{padding:10px 16px;margin-bottom:0}
 body.dashboard-view .dashboard-panel>.pagehead{margin-bottom:8px}
 body.dashboard-view .pagehead h2{font-size:19px}
 body.dashboard-view .dashboard-panel button{min-height:35px;padding:8px 14px;font-size:12px}
 body.dashboard-view .dashboard-panel>.filters{display:grid;grid-template-columns:1.1fr 1.25fr .7fr .85fr;gap:20px;align-items:center;margin-bottom:10px}
 body.dashboard-view .dashboard-panel>.filters label{display:flex;align-items:center;gap:12px;min-width:0;font-size:13px;white-space:nowrap}
 body.dashboard-view .dashboard-panel>.filters select{padding:9px;margin:0;min-width:0;font-size:13px}
 body.dashboard-view .kpis{gap:14px;margin-bottom:8px}
 body.dashboard-view #dashboardCounts .kpis{grid-template-columns:repeat(6,minmax(0,1fr))}
 body.dashboard-view #dashboardMoney .kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
 body.dashboard-view .kpis .card{padding:8px 14px;min-width:0;font-size:12px;border:1px solid #d0ddea}
 body.dashboard-view #dashboardCounts strong{font-size:25px;margin-top:4px}
 body.dashboard-view #dashboardMoney .card{font-size:14px;padding:8px 18px}
 body.dashboard-view #dashboardMoney strong{font-size:30px;margin-top:4px;white-space:nowrap}
 body.dashboard-view #dashboardCounts .card:nth-child(3){background:#eff2f4;color:#65717d}
 body.dashboard-view .dashboard-panel>.muted{font-size:11px;margin:4px 0 8px;line-height:1.3}
 body.dashboard-view .dashboard-grid{grid-template-columns:minmax(0,2.1fr) minmax(270px,1fr);gap:20px;height:clamp(205px,calc(100dvh - 540px),350px)}
 body.dashboard-view .dashboard-grid section{padding:10px 14px;margin:0;min-width:0;min-height:0;display:flex;flex-direction:column}
 body.dashboard-view .dashboard-grid h3{font-size:14px;margin-bottom:8px;text-transform:uppercase;flex-shrink:0}
 body.dashboard-view .dashboard-grid canvas{height:0;min-height:0;flex:1;width:100%}
 body.dashboard-view .chartlegend{margin-top:4px;font-size:11px}
 body.dashboard-view #dashboardSummary{flex:1;display:flex;flex-direction:column;justify-content:space-evenly;min-height:0}
 body.dashboard-view .summary-row{padding:5px 0;font-size:13px}
 body.dashboard-view .summary-row strong{font-size:18px}
 body.dashboard-view .dashboard-panel>.toolbar{margin-top:10px;gap:16px}
 body.dashboard-view .dashboard-extra{margin:5px 0}
 body.dashboard-view footer{font-size:11px;padding:9px 24px}
}
@media screen and (min-width:1100px) and (max-height:780px){
 body.dashboard-view header{min-height:56px;padding-top:10px;padding-bottom:10px}
 body.dashboard-view #app>p{top:9px}
 body.dashboard-view .dashboard-panel{padding:12px}
 body.dashboard-view .dashboard-panel>.filters{margin-bottom:10px}
 body.dashboard-view .kpis .card{padding:9px 12px}
 body.dashboard-view #dashboardCounts strong{font-size:23px;margin-top:4px}
 body.dashboard-view #dashboardMoney strong{font-size:27px;margin-top:4px}
 body.dashboard-view #dashboardMoney .card{padding:9px 14px;font-size:14px}
 body.dashboard-view .summary-row{padding:6px 0}
}
/* Disposition validée : quatre actions sous les deux panneaux. */
.dashboard-panel>.toolbar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:24px}
.dashboard-panel>.toolbar button{min-width:0;width:100%}
@media screen and (min-width:1100px){
 body.dashboard-view .dashboard-panel>.toolbar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:24px;margin-bottom:4px}
 body.dashboard-view .dashboard-grid{min-height:250px;height:clamp(250px,calc(100dvh - 540px),350px)}
 body.dashboard-view .summary-row{flex:1;min-height:0;padding:0;align-items:center;line-height:1.15}
 body.dashboard-view .summary-row strong{line-height:1.1}
 body.dashboard-view .dashboard-panel>.pagehead{min-height:28px}
}
@media screen and (max-width:850px){.dashboard-panel>.toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media screen and (max-width:480px){.dashboard-panel>.toolbar{grid-template-columns:1fr}}
@media print{.dashboard-panel>.toolbar{display:none!important}}

.cancelled-payment{background:#fff1f2;color:#7c4650}.cancelled-payment td{vertical-align:top}.cancelled-payment .muted{display:inline-block;max-width:280px;white-space:normal;overflow-wrap:anywhere}
