[hidden]{display:none!important}
/* Espace adhérent et back-office : barre latérale, cartes, tableaux, graphique */
.demo-bar{background:var(--yellow);color:var(--yellow-ink);font:600 12.5px Montserrat;text-align:center;padding:8px var(--gut)}
.app{max-width:1240px;margin:0 auto;padding:24px var(--gut) 60px;display:grid;grid-template-columns:250px minmax(0,1fr);gap:24px;align-items:start}
.sb{position:sticky;top:96px;background:var(--card);border-radius:28px;padding:18px;box-shadow:0 14px 34px rgba(0,50,110,.10);display:flex;flex-direction:column;gap:6px}
.me-card{display:flex;align-items:center;gap:12px;padding:6px 6px 16px;border-bottom:1px solid var(--line);margin-bottom:8px}
.avt{flex:none;width:48px;height:48px;border-radius:50%;background:linear-gradient(150deg,#0A6AD0,#003670);color:#fff;font:900 16px Montserrat;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 3px var(--card),0 0 0 5px var(--yellow)}
.me-card b{display:block;font:800 14px/1.25 Montserrat}
.me-card span{font-size:12.5px;color:var(--muted)}
.sb button,.sb a.nav{display:flex;align-items:center;gap:12px;width:100%;border:0;background:transparent;color:var(--ink);font:600 14px Montserrat;text-align:left;padding:11px 12px;border-radius:14px;cursor:pointer;text-decoration:none;transition:background .2s,color .2s}
.sb button svg,.sb a.nav svg{width:20px;height:20px;flex:none}
.sb button:hover,.sb a.nav:hover{background:var(--soft);color:var(--link)}
.sb button[aria-current="page"]{background:rgba(245,184,25,.22);color:var(--ink)}
.sb .badge{margin-left:auto;font:800 11px Montserrat;background:var(--yellow);color:var(--yellow-ink);border-radius:999px;padding:3px 8px}
.sb .sep{height:1px;background:var(--line);margin:8px 0}
.sb button:focus-visible,.sb a.nav:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.view{display:flex;flex-direction:column;gap:20px;min-width:0}
.vh{display:flex;justify-content:space-between;align-items:end;gap:16px;flex-wrap:wrap}
.vh h1{font:900 clamp(24px,3vw,34px)/1.05 Montserrat;text-transform:uppercase;margin:0}
.vh p{margin:6px 0 0;color:var(--muted)}
.panel{background:var(--card);border-radius:26px;padding:22px 24px;box-shadow:0 12px 30px rgba(0,50,110,.09);min-width:0}
.panel h2{font:800 15px Montserrat;text-transform:uppercase;margin:0 0 14px;letter-spacing:.02em}
.ph{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.ph h2{margin:0}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.kpi{background:var(--card);border-radius:22px;padding:18px 20px;box-shadow:0 12px 30px rgba(0,50,110,.09);display:flex;flex-direction:column;gap:6px;min-width:0}
.kpi span{font:700 12px Montserrat;text-transform:uppercase;color:var(--muted);letter-spacing:.03em}
.kpi b{font:900 clamp(24px,2.6vw,32px)/1 Montserrat;font-variant-numeric:tabular-nums}
.kpi small{font-size:13px;color:var(--muted)}
.kpi .up{color:#1F7A3A;font-weight:700}
.alert{display:flex;align-items:center;gap:16px;flex-wrap:wrap;border-radius:24px;padding:18px 22px;color:#fff;background:radial-gradient(300px 200px at 100% 0%,rgba(245,184,25,.35),transparent 60%),linear-gradient(150deg,#0A6AD0,#0051A3 55%,#003670);box-shadow:0 18px 40px rgba(0,50,120,.22)}
.alert .vis{flex:none;width:48px;height:48px;border-radius:50%;background:var(--yellow);color:var(--yellow-ink);display:flex;align-items:center;justify-content:center;font:900 20px Montserrat}
.alert div{flex:1 1 240px}
.alert b{display:block;font:800 16px Montserrat;text-transform:uppercase}
.alert span{color:var(--on-blue-muted);font-size:15px}
.g2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.g3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.pill{display:inline-flex;align-items:center;gap:6px;font:800 11.5px Montserrat;text-transform:uppercase;padding:5px 10px;border-radius:999px;white-space:nowrap}
.pill::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.pill.ok{background:rgba(31,122,58,.12);color:#1F7A3A}
.pill.wait{background:rgba(245,184,25,.25);color:#7A5200}
.pill.late{background:rgba(200,50,40,.12);color:#B0302A}
.pill.info{background:rgba(0,81,163,.1);color:var(--link)}
.list2{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.list2 li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;padding:10px 8px;border-radius:16px}
.list2 li:hover{background:var(--soft)}
.list2 .dt{width:52px;text-align:center;background:linear-gradient(150deg,#0A6AD0,#003670);color:#fff;border-radius:14px;padding:6px 0;font:900 18px/1 Montserrat}
.list2 .dt small{display:block;font:700 10px Montserrat;text-transform:uppercase;color:var(--yellow);margin-top:3px}
.list2 b{display:block;font:800 14.5px/1.3 Montserrat}
.list2 span{font-size:13.5px;color:var(--muted)}
.list2 .fi{width:44px;height:44px;border-radius:14px;background:rgba(0,81,163,.08);color:var(--link);display:flex;align-items:center;justify-content:center;font:900 11px Montserrat}
.btn.sm{padding:10px 16px;font-size:12px}
.btn.ghost{background:var(--soft);color:var(--ink)}
.btn.ghost:hover{background:rgba(245,184,25,.25)}
.btn[disabled]{opacity:.55;cursor:default;transform:none;box-shadow:none}
.tbl-wrap{overflow-x:auto;margin:0 -8px}
table.tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:14px;min-width:620px}
.tbl th{text-align:left;font:700 11.5px Montserrat;text-transform:uppercase;color:var(--muted);letter-spacing:.04em;padding:10px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:12px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl tbody tr:hover td{background:var(--soft)}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums}
.tbl .who{display:flex;align-items:center;gap:10px}
.tbl .who i{width:34px;height:34px;border-radius:50%;background:rgba(0,81,163,.1);color:var(--link);font:800 12px Montserrat;font-style:normal;display:flex;align-items:center;justify-content:center;flex:none}
.tbl .who b{display:block;font:700 14px Montserrat}
.tbl .who small{color:var(--muted);font-size:12.5px}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.toolbar input,.toolbar select{font:500 14px Roboto;color:var(--ink);background:var(--soft);border:2px solid transparent;border-radius:999px;padding:10px 16px}
.toolbar input:focus,.toolbar select:focus{outline:none;border-color:var(--blue);background:var(--card)}
.seg2{display:inline-flex;gap:4px;padding:4px;background:var(--soft);border-radius:999px}
.seg2 button{border:0;background:transparent;font:700 12px Montserrat;text-transform:uppercase;color:var(--muted);padding:8px 14px;border-radius:999px;cursor:pointer}
.seg2 button[aria-pressed="true"]{background:var(--card);color:var(--ink);box-shadow:0 4px 12px rgba(0,50,110,.12)}
.seg2 button:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.bar{height:10px;border-radius:999px;background:var(--soft);overflow:hidden}
.bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#0A6AD0,#0051A3)}
.bar.y i{background:linear-gradient(90deg,#FFD258,var(--yellow))}
.hb{display:grid;gap:12px}
.hb .r{display:grid;grid-template-columns:minmax(0,150px) minmax(0,1fr) 56px;gap:12px;align-items:center;font-size:14px}
.hb .r span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hb .r b{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
.chart{position:relative}
.chart svg{display:block;width:100%;height:auto;overflow:visible}
.chart .grid line{stroke:var(--line);stroke-width:1}
.chart .ax text{font:500 11px Roboto;fill:var(--muted)}
.chart .area{fill:url(#ga)}
.chart .line{fill:none;stroke:#0051A3;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.chart .cross{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 3}
.chart .dot{fill:#0051A3;stroke:var(--card);stroke-width:2}
.tip{position:absolute;pointer-events:none;background:var(--ink);color:var(--bg);font:600 12.5px Roboto;padding:8px 11px;border-radius:12px;white-space:nowrap;transform:translate(-50%,calc(-100% - 12px));opacity:0;transition:opacity .12s}
.tip b{display:block;font:800 15px Montserrat}
.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translate(-50%,20px);background:var(--ink);color:var(--bg);font:600 14px Roboto;padding:14px 20px;border-radius:999px;box-shadow:0 14px 34px rgba(0,0,0,.25);opacity:0;transition:opacity .25s,transform .25s;z-index:50;max-width:calc(100% - 32px)}
.toast.show{opacity:1;transform:translate(-50%,0)}
.modal{position:fixed;inset:0;background:rgba(10,20,35,.55);display:flex;align-items:center;justify-content:center;padding:16px;z-index:60}
.modal[hidden]{display:none!important}
.mbox{background:var(--card);border-radius:28px;padding:28px;max-width:440px;width:100%;box-shadow:0 30px 70px rgba(0,0,0,.35);display:flex;flex-direction:column;gap:14px}
.mbox h3{font:900 20px Montserrat;text-transform:uppercase;margin:0}
.mbox p{margin:0;color:var(--muted)}
.mbox .sum{display:flex;justify-content:space-between;align-items:center;background:var(--soft);border-radius:18px;padding:14px 16px;font:800 15px Montserrat}
.mbox .sum b{font:900 22px Montserrat}
.mbox .acts{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.spin{width:40px;height:40px;border-radius:50%;border:4px solid var(--soft);border-top-color:var(--blue);animation:sp 1s linear infinite;margin:6px auto}
@keyframes sp{to{transform:rotate(360deg)}}
.check-big{width:64px;height:64px;border-radius:50%;background:rgba(31,122,58,.14);color:#1F7A3A;display:flex;align-items:center;justify-content:center;margin:0 auto;font:900 30px Montserrat}
.opts{display:grid;gap:10px}
.opt{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:12px;align-items:center;padding:14px 16px;border-radius:18px;background:var(--soft);cursor:pointer;border:2px solid transparent}
.opt:has(input:checked){border-color:var(--blue);background:var(--card)}
.opt input{accent-color:var(--blue);width:18px;height:18px}
.opt b{display:block;font:800 14px Montserrat}
.opt span{font-size:13px;color:var(--muted)}
.tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;padding:16px 0;border-bottom:1px solid var(--line)}
.tr:last-child{border-bottom:0}
.tr b{display:block;font:800 16px Montserrat}
.tr .mt{display:flex;flex-wrap:wrap;gap:8px 14px;font-size:13.5px;color:var(--muted);margin-top:4px}
.tr .bar{margin-top:10px;max-width:280px}
.preview-row{display:grid;grid-template-columns:70px minmax(0,1fr);gap:16px;align-items:center;background:var(--soft);border-radius:20px;padding:14px}
.preview-row .th{width:70px;height:70px;border-radius:50%;overflow:hidden;box-shadow:0 0 0 4px var(--card),0 0 0 6px var(--yellow)}
.preview-row .th img{width:100%;height:100%;object-fit:cover}
.preview-row h3{font:800 16px Montserrat;text-transform:uppercase;margin:0}
.preview-row .where{font:700 13px Roboto;color:var(--link)}
.preview-row .pp{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}
.preview-row .pp span{font-size:12px;background:rgba(245,184,25,.2);padding:4px 10px;border-radius:999px}
.chips2{display:flex;flex-wrap:wrap;gap:8px}
.chips2 label{cursor:pointer}
.chips2 input{position:absolute;opacity:0;width:1px;height:1px}
.chips2 span{display:inline-block;font:700 12px Montserrat;text-transform:uppercase;padding:9px 14px;border-radius:999px;background:var(--soft)}
.chips2 input:checked+span{background:var(--yellow);color:var(--yellow-ink)}
.chips2 input:focus-visible+span{outline:3px solid var(--blue);outline-offset:2px}
.login{max-width:1000px;margin:0 auto;padding:40px var(--gut) 70px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:stretch}
.login .box{border-radius:32px;display:block}
.login .lt2{padding:clamp(28px,4vw,48px);color:#fff;display:flex;flex-direction:column;justify-content:center;gap:14px;border-radius:32px;background:radial-gradient(400px 300px at 100% 100%,rgba(245,184,25,.3),transparent 60%),linear-gradient(150deg,#0A6AD0,#0051A3 50%,#003670);box-shadow:0 30px 60px rgba(0,50,120,.22)}
.login .lt2 h1{font:900 clamp(26px,3.4vw,40px)/1.05 Montserrat;text-transform:uppercase;margin:0}
.login .lt2 p{color:var(--on-blue-muted);margin:0}
.login .lt2 ul{margin:6px 0 0;padding-left:20px;color:var(--on-blue-muted)}
.login .lt2 li::marker{color:var(--yellow)}
@media (max-width:1100px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:1fr 1fr}}
@media (max-width:900px){.app{grid-template-columns:1fr}.sb{position:static;flex-direction:row;flex-wrap:wrap;gap:4px}.me-card{width:100%}.sb button,.sb a.nav{width:auto}.sb .sep{display:none}.g2,.g3{grid-template-columns:1fr}.login{grid-template-columns:1fr}}
@media (max-width:520px){.kpis{grid-template-columns:1fr 1fr}.kpi{padding:14px}.sb button span.lb{display:none}.hb .r{grid-template-columns:minmax(0,110px) minmax(0,1fr) 48px}}
@media (prefers-reduced-motion:reduce){.spin{animation:none}.toast{transition:none}}
.me-card .avt{color:#fff;font-size:15px}
