:root{
  --bg:#f4f7fb;--card:#fff;--text:#17212b;--muted:#6b7785;--line:#e2e8f0;--navy:#20364d;
  --red:#d9363e;--red2:#b91c28;--green:#17855b;--green-soft:#eaf8f2;--orange:#b76a08;--orange-soft:#fff5dd;
  --danger:#b42318;--danger-soft:#fff0ef;--blue:#1769aa;--blue-soft:#eaf4ff;--shadow:0 10px 30px rgba(29,49,70,.08);
  --radius:20px;--radius-sm:14px;--tap:48px;
}
*{box-sizing:border-box}html{background:var(--bg);color-scheme:light}body{margin:0;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}img{max-width:100%}
.app-shell{min-height:100vh;padding-bottom:88px}.app-top{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.app-top-inner{max-width:1040px;margin:auto;min-height:72px;display:flex;align-items:center;justify-content:space-between;padding:10px 18px;gap:12px}.brand{display:flex;align-items:center;gap:11px;min-width:0}.brand-logo{width:46px;height:46px;object-fit:contain;border-radius:50%;background:#fff}.brand-copy{min-width:0}.brand-title{font-weight:850;letter-spacing:-.02em;font-size:18px;line-height:1.08}.brand-sub{font-size:12px;color:var(--muted);margin-top:3px}.top-user{display:flex;align-items:center;gap:9px;padding:7px 10px;border:1px solid var(--line);border-radius:999px;background:#fff;max-width:48%}.top-avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--navy);color:#fff;font-weight:800;font-size:13px}.top-user-text{min-width:0}.top-user-name{font-size:13px;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top-user-role{font-size:11px;color:var(--muted);white-space:nowrap}.container{width:min(100% - 28px,1000px);margin:0 auto;padding:22px 0}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:18px}.page-title{font-size:clamp(26px,4vw,36px);line-height:1.05;letter-spacing:-.035em;margin:0;color:var(--navy)}.page-kicker{font-size:13px;color:var(--muted);margin:6px 0 0}.campaign-pill{white-space:nowrap;border:1px solid #f1c8ca;background:#fff6f6;color:var(--red2);border-radius:999px;padding:8px 12px;font-weight:800;font-size:13px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.card+.card{margin-top:14px}.card-title{font-size:19px;font-weight:850;color:var(--navy);margin:0 0 4px}.card-sub{color:var(--muted);font-size:14px;margin:0}.section-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:25px 0 11px}.section-title h2{font-size:19px;color:var(--navy);margin:0}.section-title small{color:var(--muted)}
.hero{overflow:hidden;position:relative;background:linear-gradient(135deg,#1d344b 0%,#274d70 100%);color:#fff;border:none;box-shadow:0 14px 36px rgba(21,47,72,.22)}.hero:after{content:"📅";position:absolute;right:-12px;bottom:-28px;font-size:128px;opacity:.08;transform:rotate(-8deg)}.hero h1{color:#fff;margin:0;font-size:30px;letter-spacing:-.035em}.hero p{max-width:620px;color:#dfeaf4;margin:8px 0 18px}.hero .campaign{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.19);border-radius:999px;padding:6px 10px;font-size:12px;font-weight:800;margin-bottom:13px}.hero-actions{display:flex;gap:10px;flex-wrap:wrap;position:relative;z-index:2}
.btn{min-height:var(--tap);border:1px solid var(--line);border-radius:14px;padding:11px 16px;background:#fff;color:var(--text);display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:800;transition:.15s ease}.btn:hover{transform:translateY(-1px);box-shadow:0 7px 20px rgba(20,40,60,.08)}.btn:active{transform:translateY(0)}.btn-primary{background:var(--red);color:#fff;border-color:var(--red)}.btn-primary:hover{background:var(--red2)}.btn-dark{background:var(--navy);color:#fff;border-color:var(--navy)}.btn-soft{background:#f8fafc}.btn-danger{background:var(--danger);color:#fff;border-color:var(--danger)}.btn-success{background:var(--green);color:#fff;border-color:var(--green)}.btn-block{width:100%}.btn-sm{min-height:38px;padding:7px 11px;border-radius:11px;font-size:13px}.btn:disabled{opacity:.48;cursor:not-allowed;transform:none;box-shadow:none}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.stat{padding:16px;border-radius:17px;background:#fff;border:1px solid var(--line)}.stat-icon{font-size:22px}.stat-value{font-size:24px;font-weight:900;letter-spacing:-.03em;color:var(--navy);margin-top:9px}.stat-label{font-size:12px;color:var(--muted);margin-top:2px}.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.quick-card{min-height:118px;padding:16px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 6px 20px rgba(30,50,70,.04);display:flex;flex-direction:column;justify-content:space-between}.quick-card .emoji{font-size:28px}.quick-card strong{font-size:15px;color:var(--navy)}.quick-card span{font-size:12px;color:var(--muted)}
.flash{border-radius:14px;padding:12px 14px;margin:0 0 16px;border:1px solid;font-weight:650}.flash-success{background:var(--green-soft);color:#116447;border-color:#bfe7d6}.flash-error{background:var(--danger-soft);color:#8f1d16;border-color:#f4c2bd}.flash-info{background:var(--blue-soft);color:#155e91;border-color:#c8e3fa}.flash-warning{background:var(--orange-soft);color:#865006;border-color:#f3d38d}
.field{margin-bottom:16px}.label{display:block;font-weight:800;color:#354251;margin-bottom:7px}.label .req{color:var(--red)}.hint{font-size:12px;color:var(--muted);margin-top:6px}.input,.select,.textarea{width:100%;min-height:50px;border:1px solid #ccd5df;border-radius:14px;background:#fff;color:var(--text);padding:12px 14px;outline:none;transition:.15s}.input:focus,.select:focus,.textarea:focus{border-color:#7ca7c8;box-shadow:0 0 0 4px rgba(44,116,167,.10)}.textarea{min-height:96px;resize:vertical}.input-icon-wrap{display:flex;border:1px solid #ccd5df;border-radius:14px;overflow:hidden;background:#fff}.input-icon{width:52px;display:grid;place-items:center;background:#f8fafc;border-right:1px solid var(--line);font-size:20px}.input-icon-wrap .input{border:0;border-radius:0;box-shadow:none}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:13px}.form-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:18px}.separator{height:1px;background:var(--line);margin:20px 0}
.team-list{display:flex;gap:8px;flex-wrap:wrap}.team-chip{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:6px 10px;background:#f5f8fb;border:1px solid var(--line);font-weight:750;font-size:13px}.grade-thumb{width:26px;height:26px;object-fit:contain}.you-chip{background:#edf4ff;border-color:#cbdff5;color:#214f79}.dynamic-select{margin-top:10px}.dynamic-select.hidden{display:none}
.active-banner{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.active-banner .left{min-width:0}.active-place{font-size:25px;font-weight:900;letter-spacing:-.03em;color:var(--navy);margin-top:4px}.active-street{font-size:16px;color:var(--muted);margin-top:2px}.progress-bar{height:9px;background:#edf1f5;border-radius:999px;overflow:hidden}.progress-bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--red),#f06a70);border-radius:999px}.progress-row{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--muted);margin-top:6px}
.status-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.status-choice{position:relative}.status-choice input{position:absolute;opacity:0;pointer-events:none}.status-choice label{min-height:68px;border:1px solid var(--line);border-radius:15px;background:#fff;display:flex;align-items:center;gap:10px;padding:12px;cursor:pointer;font-weight:800}.status-choice label .ico{font-size:23px}.status-choice input:checked+label{box-shadow:0 0 0 3px rgba(32,54,77,.10);border-color:var(--navy);background:#f8fbfe}.status-choice.don input:checked+label{border-color:var(--green);background:var(--green-soft)}.status-choice.repasse input:checked+label{border-color:#d89a24;background:var(--orange-soft)}.status-choice.refus input:checked+label{border-color:var(--danger);background:var(--danger-soft)}.status-choice.absent input:checked+label{border-color:#64748b;background:#f1f5f9}
.quick-amounts{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.amount-btn{border:1px solid var(--line);border-radius:13px;background:#fafcfe;padding:10px 5px;min-height:52px;font-weight:900;color:var(--navy)}.amount-btn.active{border-color:var(--green);background:var(--green-soft);color:#0f6948}.receipt-box{border:1px dashed #bdc9d4;border-radius:15px;padding:14px;background:#fbfcfd}.check-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.switch{position:relative;width:48px;height:28px;flex:0 0 auto}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;inset:0;background:#cbd5e1;border-radius:999px;transition:.2s}.slider:before{content:"";position:absolute;height:22px;width:22px;left:3px;top:3px;background:#fff;border-radius:50%;box-shadow:0 1px 4px rgba(0,0,0,.2);transition:.2s}.switch input:checked+.slider{background:var(--blue)}.switch input:checked+.slider:before{transform:translateX(20px)}.receipt-fields{margin-top:13px}.receipt-fields.hidden{display:none}
.entry-list{display:grid;gap:9px}.entry{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:11px;border:1px solid var(--line);border-radius:14px;padding:11px 12px;background:#fff}.entry-no{width:46px;height:40px;border-radius:12px;display:grid;place-items:center;background:#f2f5f8;font-weight:900;color:var(--navy)}.entry-main{min-width:0}.entry-title{font-weight:800}.entry-sub{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:5px 8px;font-size:11px;font-weight:850;white-space:nowrap}.status-success{background:var(--green-soft);color:#126644}.status-warning{background:var(--orange-soft);color:#915709}.status-danger{background:var(--danger-soft);color:#92231c}.status-muted{background:#eef2f6;color:#596777}.status-neutral{background:#f4f6f8;color:#74808d}
.street-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}.danger-zone{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}
.repass-card{display:flex;justify-content:space-between;align-items:center;gap:12px}.repass-address{font-weight:900;color:var(--navy);font-size:17px}.repass-meta{font-size:13px;color:var(--muted);margin-top:3px}.empty{padding:32px 18px;text-align:center;color:var(--muted)}.empty .emoji{font-size:42px;margin-bottom:8px}.empty strong{display:block;color:var(--navy);font-size:18px;margin-bottom:3px}
.village-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.progress-card{border:1px solid var(--line);border-radius:17px;padding:15px;background:#fff}.progress-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.progress-name{font-weight:900;color:var(--navy)}.progress-pct{font-weight:900;color:var(--red)}.progress-meta{display:flex;gap:11px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin-top:9px}.street-list{display:grid;gap:9px}.street-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:12px;background:#fff}.street-name{font-weight:850;color:var(--navy)}.street-meta{font-size:12px;color:var(--muted);margin-top:3px}.street-state{display:flex;align-items:center;gap:8px}.done-check{font-size:18px}.number-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.number-card{min-height:70px;border:1px solid var(--line);border-radius:13px;padding:9px;background:#fff;display:flex;flex-direction:column;justify-content:space-between}.number-card .num{font-size:16px;font-weight:900;color:var(--navy)}.number-card.nonref{border-style:dashed}.number-card .mini{font-size:10px;color:var(--muted)}
.history-list{display:grid;gap:11px}.history-card{border:1px solid var(--line);border-radius:16px;background:#fff;padding:15px}.history-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.history-id{font-weight:900;color:var(--navy)}.history-date{font-size:12px;color:var(--muted)}.history-stats{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:13px}.history-team{margin-top:9px;display:flex;gap:6px;flex-wrap:wrap}.mini-chip{font-size:11px;border:1px solid var(--line);border-radius:999px;padding:4px 7px;background:#fafcfd}
.admin-note{background:#fff9e9;border:1px solid #f0d99c;color:#73530d;border-radius:15px;padding:13px 14px;font-size:13px}.source-line{font-size:12px;color:var(--muted)}
.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:40;background:rgba(255,255,255,.96);backdrop-filter:blur(14px);border-top:1px solid var(--line);padding:7px max(8px,env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}.bottom-nav-inner{max-width:720px;margin:auto;display:grid;grid-template-columns:repeat(5,1fr);gap:3px}.nav-item{min-height:56px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:2px;color:#718091;font-size:10px;font-weight:800}.nav-item .ico{font-size:20px;line-height:1}.nav-item.active{background:#fff0f1;color:var(--red)}.nav-item-center{transform:translateY(-13px);background:var(--red)!important;color:#fff!important;border-radius:18px;box-shadow:0 9px 22px rgba(217,54,62,.26);min-height:60px;border:4px solid var(--bg)}
.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top,#eef4fb 0,#f6f8fb 40%,#eef2f6 100%)}.login-card{width:min(100%,430px);background:#fff;border:1px solid var(--line);border-radius:26px;padding:26px;box-shadow:0 20px 50px rgba(24,44,65,.12)}.login-logo{width:82px;height:82px;object-fit:contain;display:block;margin:0 auto 12px}.login-title{text-align:center;font-size:27px;font-weight:900;color:var(--navy);letter-spacing:-.03em}.login-sub{text-align:center;color:var(--muted);font-size:14px;margin:5px 0 22px}.login-footer{text-align:center;font-size:12px;color:var(--muted);margin-top:17px}
@media(max-width:760px){.container{width:min(100% - 20px,1000px);padding-top:16px}.app-top-inner{padding:8px 11px;min-height:64px}.brand-logo{width:41px;height:41px}.brand-title{font-size:16px}.brand-sub{display:none}.top-user{padding:5px 7px;border:0;background:transparent;max-width:50%}.top-user-role{display:none}.page-head{margin-bottom:14px}.page-title{font-size:28px}.campaign-pill{padding:6px 9px}.card{padding:16px;border-radius:17px}.hero h1{font-size:27px}.stats-grid{grid-template-columns:1fr 1fr}.quick-grid{grid-template-columns:1fr 1fr}.village-grid{grid-template-columns:1fr}.number-grid{grid-template-columns:repeat(3,1fr)}.two-col{grid-template-columns:1fr}.status-grid{grid-template-columns:1fr 1fr}.street-actions{grid-template-columns:1fr}.repass-card{align-items:flex-start;flex-direction:column}.repass-card .btn{width:100%}.active-banner{flex-direction:column}.top-user-text{display:none}}
@media(max-width:430px){.page-title{font-size:25px}.hero{padding:17px}.hero h1{font-size:24px}.stats-grid{gap:8px}.stat{padding:12px}.stat-value{font-size:20px}.quick-grid{gap:8px}.quick-card{min-height:105px;padding:13px}.status-grid{grid-template-columns:1fr}.quick-amounts{grid-template-columns:repeat(5,1fr)}.number-grid{grid-template-columns:repeat(2,1fr)}.entry{grid-template-columns:auto 1fr}.entry>.status-badge{grid-column:2;justify-self:start}.bottom-nav-inner{gap:0}.nav-item{font-size:9px}.nav-item .ico{font-size:19px}}

/* Numéros de rue et statistiques — v2 */
.address-select{border:0;border-radius:0;box-shadow:none;min-height:50px;background:#fff}.manual-address-box{border:1px dashed #aebdca;border-radius:14px;padding:14px;background:#fafcfe;margin-top:-4px;margin-bottom:16px}.manual-address-box.hidden{display:none}
.stats-grid-wide{grid-template-columns:repeat(4,1fr)}.stats-year-card{margin-bottom:18px}.year-form{display:flex;align-items:center;justify-content:space-between;gap:18px}.year-form .select{width:130px;flex:0 0 130px}.table-card{padding:0;overflow:hidden}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.stats-table{width:100%;border-collapse:collapse;min-width:690px}.stats-table th,.stats-table td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--line);font-size:13px;vertical-align:middle}.stats-table th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:#f8fafc;white-space:nowrap}.stats-table tbody tr:last-child td{border-bottom:0}.stats-table .money{font-weight:900;color:var(--green);white-space:nowrap}.stats-note{margin:15px;border:1px solid #cfe0ef;background:#f4f9fd;color:#39566f;border-radius:13px;padding:11px 12px;font-size:12px}.ranking-list{display:grid}.ranking-row{display:grid;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px 15px;border-top:1px solid var(--line)}.ranking-row:first-child{border-top:0}.rank-num{width:38px;height:38px;border-radius:12px;background:#f2f5f8;color:var(--navy);display:grid;place-items:center;font-size:12px;font-weight:900}.rank-main{min-width:0}.rank-name{font-weight:900;color:var(--navy)}.rank-meta{font-size:11px;color:var(--muted);margin-top:2px}.rank-amount{font-weight:950;color:var(--green);white-space:nowrap}.mini-progress{height:5px;background:#edf1f5;border-radius:999px;overflow:hidden;margin-top:7px}.mini-progress span{display:block;height:100%;background:linear-gradient(90deg,var(--red),#ef7278);border-radius:999px}.stats-filter-row{display:flex;align-items:end;gap:12px;padding:14px;border-bottom:1px solid var(--line);background:#fbfcfd}.stats-filter-row .label{margin:0;white-space:nowrap}.stats-filter-row .select{max-width:280px}.empty.compact{padding:24px 16px}
@media(max-width:760px){.stats-grid-wide{grid-template-columns:1fr 1fr}.year-form{align-items:flex-end}.ranking-row{grid-template-columns:38px minmax(0,1fr)}.rank-amount{grid-column:2;margin-top:-3px}.stats-filter-row{align-items:stretch;flex-direction:column}.stats-filter-row .select{max-width:none;width:100%}}
@media(max-width:430px){.stats-grid-wide{grid-template-columns:1fr 1fr}.ranking-row{padding:12px}.rank-meta{line-height:1.35}.stats-table th,.stats-table td{padding:10px 11px}}

/* Ajustements V5 */
.app-top-inner{min-height:124px}
.brand-logo{height:111px;width:auto;border-radius:0;background:transparent;filter:drop-shadow(0 10px 18px rgba(15,23,42,.10))}
.hero{padding-bottom:22px}.hero h1{margin-bottom:0}.quick-grid{grid-template-columns:repeat(3,1fr)}
.free-donation-box{display:flex;align-items:center;gap:13px;border:1px solid #d8e2ec;background:#f8fbfe;border-radius:16px;padding:15px;margin-bottom:14px}.free-donation-icon{width:48px;height:48px;border-radius:14px;background:var(--green-soft);display:grid;place-items:center;font-size:25px}.free-donation-box strong{font-size:17px;color:var(--navy)}
body.modal-open{overflow:hidden}.donation-modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:18px}.donation-modal.hidden{display:none}.donation-modal-backdrop{position:absolute;inset:0;border:0;background:rgba(16,28,40,.58);backdrop-filter:blur(3px)}.donation-modal-card{position:relative;z-index:1;width:min(100%,560px);max-height:min(86vh,760px);overflow:auto;background:#fff;border-radius:24px;padding:20px;border:1px solid rgba(255,255,255,.6);box-shadow:0 30px 80px rgba(0,0,0,.28)}.donation-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:18px}.donation-modal-kicker{font-size:12px;font-weight:900;color:var(--green);text-transform:uppercase;letter-spacing:.06em}.donation-modal-head h3{margin:3px 0 0;font-size:25px;color:var(--navy);letter-spacing:-.03em}.modal-close{width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:#f8fafc;font-weight:900}.donation-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.donation-modal-actions .btn{min-width:150px}
@media(max-width:760px){.app-top-inner{min-height:110px;padding:6px 11px}.brand-logo{height:99px;width:auto}.brand-title{font-size:16px}.quick-grid{grid-template-columns:1fr 1fr}.donation-modal{align-items:end;padding:0}.donation-modal-card{width:100%;max-height:91vh;border-radius:24px 24px 0 0;padding:18px 16px calc(18px + env(safe-area-inset-bottom))}.donation-modal-actions{position:sticky;bottom:0;background:#fff;padding-top:12px}.donation-modal-actions .btn{flex:1;min-width:0}}
.login-logo{width:110px;height:110px}
@media(max-width:760px){.login-logo{width:100px;height:100px}}

/* Campagnes, chèques et récapitulatif de fin de tournée — V6 */
.hero-note{margin:10px 0 0!important;color:#e8f1f8!important;max-width:720px!important}
.payment-check{position:absolute;opacity:0;pointer-events:none}.payment-choice{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:14px;background:#fff;padding:12px 14px;cursor:pointer;transition:.15s}.payment-choice:hover{border-color:#aab8c6}.payment-icon{width:42px;height:42px;border-radius:12px;background:#f3f6f9;display:grid;place-items:center;font-size:22px}.payment-choice strong{display:block;color:var(--navy)}.payment-choice small{display:block;color:var(--muted);font-size:11px;margin-top:2px}.payment-check:checked+.payment-choice{border-color:var(--blue);background:var(--blue-soft);box-shadow:0 0 0 3px rgba(23,105,170,.08)}.payment-check:checked+.payment-choice .payment-icon{background:#dceeff}
.sort-pills{display:flex;gap:8px;padding:14px;border-bottom:1px solid var(--line);background:#fbfcfd;flex-wrap:wrap}.sort-pill{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:#fff;font-size:12px;font-weight:850;color:#516170}.sort-pill.active{background:var(--navy);border-color:var(--navy);color:#fff}
.campaign-admin-card{display:grid;gap:18px}.campaign-admin-main{display:flex;align-items:center;gap:22px}.campaign-year-big{font-size:44px;line-height:1;font-weight:950;letter-spacing:-.05em;color:var(--navy);margin-bottom:8px}.campaign-admin-text{color:var(--muted);max-width:620px}.campaign-create-form{display:flex;align-items:flex-end;gap:12px}.campaign-create-form .btn{flex:0 0 auto}
.tour-total-card{display:flex;justify-content:space-between;align-items:center;gap:20px;background:linear-gradient(135deg,#20364d,#2d587f);color:#fff;border:0}.tour-total-label{font-size:13px;color:#d7e4ef;font-weight:750}.tour-total-value{font-size:40px;font-weight:950;letter-spacing:-.05em;line-height:1.05;margin-top:5px}.tour-total-meta{font-size:12px;color:#d7e4ef;margin-top:6px}.tour-total-card .team-chip{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.22);color:#fff}.summary-village-list{display:grid;gap:12px}.summary-village-card{box-shadow:none}.summary-village-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.summary-village-amount{font-size:26px;font-weight:950;color:var(--green);white-space:nowrap}.recount-box{margin-top:15px;padding-top:15px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:end;gap:16px}.recount-copy{display:flex;flex-direction:column;gap:3px}.recount-copy span{font-size:12px;color:var(--muted)}.recount-box.recount-ok .recount-copy strong{color:var(--green)}.recount-box.recount-diff .recount-copy strong{color:var(--orange)}.recount-form{display:flex;gap:8px;align-items:center}.recount-input{width:210px}.summary-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:20px}.donation-admin-table form{margin:0}.donation-admin-table .btn{white-space:nowrap}
@media(max-width:760px){.campaign-admin-main,.campaign-create-form,.tour-total-card,.recount-box{flex-direction:column;align-items:stretch}.campaign-admin-main{display:flex}.campaign-create-form .btn{width:100%}.tour-total-card .team-list{margin-top:2px}.recount-form{width:100%}.recount-input{width:auto;flex:1}.summary-village-head{align-items:center}.summary-actions .btn{flex:1}.sort-pills{padding:12px}.sort-pill{flex:1}}
@media(max-width:430px){.tour-total-value{font-size:34px}.summary-village-amount{font-size:22px}.recount-form{flex-direction:column;align-items:stretch}.recount-input{width:100%}.summary-actions{flex-direction:column}.summary-actions .btn{width:100%}}


/* Correctifs V7 */
.top-user-text{display:flex;flex-direction:column;gap:2px}.top-user-name,.top-user-role{display:block}
.free-village-recap{border-style:dashed;background:linear-gradient(135deg,#fbfffd,#f2faf6)}.free-village-recap .progress-name{color:var(--green)}
.recount-menu-list{display:grid;gap:12px}.recount-menu-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center}.recount-menu-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.recount-state{font-size:12px;font-weight:850;padding:6px 9px;border-radius:999px;background:#f3f6f9;color:#526171}.recount-state.ok{background:var(--green-soft);color:#116447}.recount-state.diff{background:var(--orange-soft);color:#865006}.recount-state.pending{background:var(--blue-soft);color:#155e91}.admin-donation-toolbar{display:flex;align-items:flex-end;gap:12px;padding:14px;border-bottom:1px solid var(--line);background:#fbfcfd}.admin-donation-toolbar .field{margin:0;flex:1}.admin-donation-toolbar .select{max-width:180px}
@media(max-width:760px){.top-user-text{display:none}.recount-menu-card{grid-template-columns:1fr}.recount-menu-card .btn{width:100%}.admin-donation-toolbar{flex-direction:column;align-items:stretch}.admin-donation-toolbar .select{max-width:none}}


/* V11 — validation de recomptage avec feu d'artifice */
.recount-success-screen{position:fixed;inset:0;z-index:500;display:grid;place-items:center;overflow:hidden;padding:20px;background:radial-gradient(circle at 50% 30%,#315f88 0,#20364d 46%,#142537 100%);color:#fff}.fireworks-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.recount-success-card{position:relative;z-index:2;width:min(92vw,470px);text-align:center;padding:30px 24px;border:1px solid rgba(255,255,255,.22);border-radius:26px;background:rgba(20,37,55,.72);box-shadow:0 30px 90px rgba(0,0,0,.34);backdrop-filter:blur(12px)}.recount-success-icon{width:70px;height:70px;margin:0 auto 14px;border-radius:50%;display:grid;place-items:center;font-size:34px;background:#eaf8f2;color:#116447;box-shadow:0 0 0 8px rgba(255,255,255,.08)}.recount-success-kicker{font-size:12px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:#bfe7d6}.recount-success-card h1{margin:5px 0 8px;font-size:34px;line-height:1.05;letter-spacing:-.04em}.recount-success-card p{margin:6px 0;color:#e4edf5}.recount-success-amount{font-size:38px;font-weight:950;letter-spacing:-.04em;margin:12px 0;color:#fff}.recount-success-copy{font-size:14px}.recount-success-delay{margin-top:18px;font-size:12px;color:#c6d6e5;font-weight:750}
@media(max-width:520px){.recount-success-card{padding:26px 18px}.recount-success-card h1{font-size:29px}.recount-success-amount{font-size:34px}}

/* V12 — journal d'activité administrateur */
.log-filter-form,.log-delete-form{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.log-filter-form .field,.log-delete-form .field{margin:0;min-width:180px}.log-summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.log-summary span{color:var(--muted);font-size:13px}.log-table-wrap{padding:0;overflow:auto}.log-table{min-width:900px}.log-table td{vertical-align:top}.log-date{white-space:nowrap}.log-pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin:16px 0}.log-delete-card{display:grid;gap:18px;border-color:#efc6c2;background:#fffdfd}.log-delete-form .btn{flex:0 0 auto}
@media(max-width:760px){.log-filter-form,.log-delete-form{display:grid;grid-template-columns:1fr 1fr}.log-filter-form .btn,.log-delete-form .btn{grid-column:1/-1;width:100%}.log-filter-form .field,.log-delete-form .field{min-width:0}.quick-amounts{gap:6px}.amount-btn{min-height:48px;padding:8px 3px}}


/* V13 — remise à zéro sécurisée de la campagne */
.danger-zone-card{border-color:#efb3ad;background:linear-gradient(180deg,#fff 0%,#fff8f7 100%)}
.danger-reset-note{margin:14px 0;padding:12px 14px;border-radius:13px;background:var(--danger-soft);color:#8f1d16;font-weight:750;font-size:13px}
.campaign-reset-modal-card{width:min(100%,620px)}
.campaign-reset-step.hidden{display:none}.campaign-reset-step h4{margin:0 0 8px;color:var(--navy);font-size:20px}.campaign-reset-step p{margin:0 0 16px;color:var(--muted);line-height:1.55}
.reset-step-badge{display:inline-flex;margin-bottom:12px;border-radius:999px;padding:5px 9px;background:#f1f5f9;color:#526273;font-size:11px;font-weight:900}
.reset-preserved{padding:12px 14px;border:1px solid #bfe7d6;background:var(--green-soft);border-radius:13px;color:#126644;font-size:13px}
.final-reset-warning{padding:14px;border:1px solid #f0b7b1;background:var(--danger-soft);color:#8f1d16;border-radius:14px;font-weight:800;line-height:1.45}
.final-reset-check{display:flex;align-items:flex-start;gap:10px;margin-top:16px;padding:13px;border:1px solid var(--line);border-radius:13px;background:#fff;font-weight:750;cursor:pointer}.final-reset-check input{margin-top:3px;transform:scale(1.18)}


/* V14 — tournée plus compacte et saisie mobile optimisée */
.tour-context-card{margin-bottom:14px;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:0 5px 16px rgba(29,49,70,.05);padding:9px 12px;display:grid;gap:7px}
.tour-context-card.tour-context-live{border-left:4px solid var(--green)}
.tour-context-row{display:grid;grid-template-columns:24px auto minmax(0,1fr) auto;align-items:center;gap:7px;min-height:28px}
.tour-context-icon{font-size:16px;text-align:center}.tour-context-label{font-size:11px;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.tour-context-value{min-width:0;font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tour-context-status{font-size:11px;font-weight:850;color:#865006;background:var(--orange-soft);padding:4px 7px;border-radius:999px;white-space:nowrap}
.tour-context-progress{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:9px;padding-left:31px}.tour-context-progress .progress-bar{height:6px}.tour-context-progress>span{font-size:10px;color:var(--muted);white-space:nowrap}
.visit-section-title{margin-top:14px;margin-bottom:8px;scroll-margin-top:124px}.visit-card{padding-top:16px}
.status-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.status-choice label{min-height:64px;justify-content:flex-start}.status-choice.absent label span:last-child{line-height:1.12}
.donation-modal-actions .donation-cancel{min-width:0!important;flex:0 0 auto!important;padding:7px 11px}.donation-modal-actions .donation-save{background:var(--green);border-color:var(--green);color:#fff;flex:1}.donation-modal-actions .donation-save:hover{filter:brightness(.96)}
.quick-amount-field{margin-bottom:13px}
@media(max-width:760px){
  .tour-context-card{padding:7px 9px;gap:5px;margin-bottom:9px;border-radius:13px}
  .tour-context-row{grid-template-columns:20px auto minmax(0,1fr) auto;gap:5px;min-height:24px}.tour-context-icon{font-size:14px}.tour-context-label{font-size:9px}.tour-context-value{font-size:12px}.tour-context-status{font-size:9px;padding:3px 5px}
  .tour-context-progress{padding-left:25px;gap:6px}.tour-context-progress>span{font-size:9px}
  .visit-section-title{margin-top:9px;margin-bottom:6px;scroll-margin-top:118px}.visit-section-title h2{font-size:18px}.visit-card{padding:13px}
  .visit-card .field{margin-bottom:12px}.visit-card .label{margin-bottom:5px;font-size:13px}.visit-card .hint{font-size:10px;margin-top:4px}
  .status-grid{gap:7px}.status-choice label{min-height:58px;padding:8px 7px;gap:6px;font-size:12px;border-radius:12px}.status-choice label .ico{font-size:20px}
  .donation-modal-actions{align-items:center}.donation-modal-actions .donation-cancel{flex:0 0 auto!important;width:auto!important}.donation-modal-actions .donation-save{flex:1!important}
}
@media(max-width:430px){
  .status-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .status-choice label{min-height:56px;padding:7px 6px;font-size:11px}.status-choice label .ico{font-size:19px}
  .tour-context-row{grid-template-columns:18px auto minmax(0,1fr) auto}.tour-context-label{font-size:8.5px}.tour-context-value{font-size:11.5px}
  .quick-amounts{gap:5px}.amount-btn{min-height:44px;font-size:13px}
}
/* Portail de connexion uniforme — V16 */
.login-separator{display:flex;align-items:center;gap:12px;color:#8a96a3;font-size:12px;margin:19px 0 13px}
.login-separator::before,.login-separator::after{content:"";height:1px;background:var(--line);flex:1}
.login-portal-link{width:100%;min-height:48px;border:1px solid #d9e2eb;border-radius:14px;background:#f8fafc;color:var(--navy);display:flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;font-weight:800;transition:.15s ease}
.login-portal-link:hover{background:#f1f5f9;transform:translateY(-1px)}


/* V17 — portail de connexion */
.login-card .btn-primary{background:var(--blue);border-color:var(--blue);color:#fff}
.login-card .btn-primary:hover{background:#12598f;border-color:#12598f}
.login-portal-button{width:100%;min-height:50px;border:1px solid #9fc4e2;border-radius:14px;background:#edf6fd;color:#155e91;display:flex;align-items:center;justify-content:center;gap:9px;text-decoration:none;font-weight:850;transition:.15s ease}
.login-portal-button:hover{background:#dfeffc;border-color:#79afd4;transform:translateY(-1px);box-shadow:0 7px 20px rgba(23,105,170,.10)}


/* V48 — bouton utilisateur / déconnexion identique au site principal */
.top-user{
  display:flex!important;align-items:center;gap:9px!important;padding:7px 10px!important;
  border:1px solid var(--line)!important;border-radius:999px!important;background:rgba(255,255,255,.96)!important;
  text-decoration:none!important;max-width:46%!important;box-shadow:0 5px 18px rgba(15,23,42,.05)!important;flex:0 0 auto;
}
.top-avatar{width:34px!important;height:34px!important;flex:0 0 34px!important;border-radius:50%!important;display:grid!important;place-items:center!important;background:#20364d!important;color:#fff!important;font-weight:900!important;font-size:12px!important}
.top-user-text{min-width:0!important;display:flex!important;flex-direction:column!important;gap:0!important;line-height:1.1!important}
.top-user-name{display:block!important;font-size:12px!important;font-weight:850!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;color:#20364d!important}
.top-user-role{display:block!important;font-size:10px!important;color:var(--muted)!important;white-space:nowrap!important;margin-top:3px!important}
@media(max-width:760px){
  .top-user{gap:6px!important;padding:5px 7px!important;max-width:43%!important;border:1px solid var(--line)!important;background:rgba(255,255,255,.96)!important}
  .top-avatar{width:30px!important;height:30px!important;flex-basis:30px!important;font-size:10px!important}
  .top-user-text{display:flex!important}
  .top-user-name{font-size:10px!important;max-width:84px!important}
  .top-user-role{display:block!important;font-size:9px!important;margin-top:2px!important}
}
@media(max-width:390px){.top-user{max-width:40%!important;padding:5px 6px!important}.top-user-name{max-width:72px!important}}
