:root{--accent:#1f4e8c;--accent-l:#e7eef8;--grey:#5b5b5b;--line:#d6d6d6;--bad:#b3261e}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#1b1b1b;background:#fafaf8;line-height:1.45}main{max-width:1100px;margin:0 auto;padding:16px}h1{color:var(--accent);font-size:1.6rem;margin:.4em 0}h2{font-size:1.2rem;margin:1.4em 0 .5em}a{color:var(--accent)}header.top{background:var(--accent);color:#fff;padding:10px 16px;display:flex;gap:16px;align-items:center;flex-wrap:wrap}header.top a{color:#fff;text-decoration:none;font-weight:600}header.top .sp{flex:1 1}nav.admin a{margin-right:14px}.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px;margin:12px 0}.notice{background:#fff7e0;border:1px solid #ecd48a;border-radius:8px}.error,.notice{padding:10px 14px;margin:12px 0}.error{background:#fdecea;border:1px solid #f1b5b0;color:var(--bad);border-radius:8px}.ok{background:var(--accent-l);border:1px solid #b9d3c8;padding:10px 14px;border-radius:8px;margin:12px 0}table{width:100%;border-collapse:collapse;background:#fff;font-size:.92rem}td,th{border:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}th{background:var(--accent);color:#fff;position:-webkit-sticky;position:sticky;top:0}td.num,th.num{text-align:right;white-space:nowrap}tr.total td{font-weight:700;background:var(--accent-l)}button,input,select,textarea{font:inherit;padding:7px 9px;border:1px solid #bbb;border-radius:6px;background:#fff}input[type=number]{width:5.5em;text-align:right}.btn,button{background:var(--accent);color:#fff;border:0;cursor:pointer;text-decoration:none;display:inline-block;padding:8px 14px;border-radius:6px;font-weight:600}.btn.sec,button.sec{background:#fff;color:var(--accent);border:1px solid var(--accent)}button.danger{background:var(--bad)}.btn.small,button.small{padding:4px 9px;font-size:.85rem}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:end}.row>label{display:flex;flex-direction:column;gap:3px;font-size:.85rem;color:var(--grey)}.grid-kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:10px;gap:10px}.kpi{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px}.kpi b{display:block;font-size:1.4rem;color:var(--accent)}.fam{background:var(--accent-l);font-weight:700}.muted{color:var(--grey);font-size:.85rem}.sticky-total{position:-webkit-sticky;position:sticky;bottom:0;background:#fff;border-top:2px solid var(--accent);padding:10px 16px;display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}details>summary{cursor:pointer;color:var(--accent)}.tablewrap{overflow-x:auto}@media (max-width:640px){td,th{padding:5px}.hide-sm{display:none}}@media print{.noprint,header.top,nav{display:none!important}body{background:#fff}main{max-width:none;padding:0}th{background:#eee!important;color:#000!important;position:static}.card{border:0;padding:0}}tr.subtotal td{font-weight:600;background:#f4f6fa}.badge{display:inline-block;padding:1px 8px;border-radius:10px;font-size:.8rem;background:#eee;white-space:nowrap}.st-demande{background:#eef1f5}.st-engage{background:#fff3cd}.st-service_fait{background:#dbeafe}.st-liquide{background:#e0e7ff}.st-paye{background:#d1f2e0}.st-annule{background:#f3f3f3;color:#888}.print-only{display:none}@media print{.print-only{display:inline!important}}details>summary{padding:2px 0}.ro form[method=post i] button,.ro form[method=post i] input[type=file]{display:none}.ro form[method=post i] :is(input,select,textarea){pointer-events:none;background:#f6f6f6;border-color:#e4e4e4}.ro details.card:has(form[method=post i]){display:none}header.top .who{opacity:.85;font-size:.9rem}table.masses tr.sous td{color:var(--grey);font-size:.85rem;background:#fbfbfb}table.masses tr.sous td:first-child{padding-left:26px}table.masses thead+tbody+thead th{border-top:10px solid #fafaf8}.jauge{position:relative;display:block;height:18px;background:#eceff3;border-radius:9px;overflow:hidden;min-width:120px}.jauge>span{position:absolute;inset:0 auto 0 0;background:#8fb0dc;border-radius:9px}.jauge>span.depasse{background:#ee9a94}.jauge>b{position:relative;display:block;text-align:center;font-size:.75rem;line-height:18px;color:#10233f}@media print{.jauge{border:1px solid #999}}.filtres{align-items:end}.filtres select{max-width:220px}.periodes{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 4px}.periodes a{padding:3px 10px;border:1px solid var(--accent);border-radius:14px;text-decoration:none;font-size:.85rem;background:#fff}.periodes a.on{background:var(--accent);color:#fff}.puces{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.puces a{background:var(--accent-l);border-radius:12px;padding:2px 10px;text-decoration:none;font-size:.85rem}.grille2{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));grid-gap:0 14px;gap:0 14px}@media (max-width:640px){.grille2{grid-template-columns:1fr}}.graphe h3{margin:0 0 8px;font-size:1rem}table.barres{border:0;background:transparent}table.barres td{border:0;padding:3px 6px;vertical-align:middle}table.barres td.lib{width:38%;font-size:.85rem}table.barres td.barre{width:45%}table.barres td.barre span{display:block;height:14px;background:#8fb0dc;border-radius:3px;min-width:2px}table.barres tr:hover td{background:#f4f6fa}.colonnes{display:grid;grid-gap:4px;gap:4px;height:220px;align-items:end}.colonnes .col{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%}.colonnes .col span{display:block;width:100%;background:#8fb0dc;border-radius:3px 3px 0 0;min-height:1px}.colonnes .col small{font-size:.7rem;color:var(--grey)}.colonnes .col em{font-style:normal;font-size:.72rem;color:var(--grey);white-space:nowrap;margin-top:3px}table.occupation{font-size:.75rem;table-layout:fixed}table.occupation td,table.occupation th{padding:4px 2px;text-align:center;border-color:#eceff3}table.occupation thead th{position:static}table.occupation tbody th{background:#fff;color:#1b1b1b;width:42px}.multi{display:flex;flex-direction:column;gap:3px;font-size:.85rem;color:var(--grey)}.multi,.multi details,.multi summary{position:relative}.multi summary{list-style:none;min-width:150px;max-width:220px;padding:7px 26px 7px 9px;border:1px solid #bbb;border-radius:6px;background:#fff;color:#1b1b1b;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.multi summary::-webkit-details-marker{display:none}.multi summary:after{content:"▾";position:absolute;right:9px;top:7px;color:var(--grey)}.multi details[open] summary{border-color:var(--accent)}.multi-liste{position:absolute;z-index:20;top:calc(100% + 2px);left:0;min-width:260px;max-width:420px;max-height:320px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.12);padding:6px}.multi-liste label{display:flex;gap:6px;align-items:flex-start;padding:3px 4px;color:#1b1b1b;font-size:.88rem;cursor:pointer;border-radius:4px}.multi-liste label:hover{background:var(--accent-l)}.multi-liste input{margin-top:3px}table.barres tr.choisi td{background:var(--accent-l)}table.barres a.plus{margin-left:6px;padding:0 6px;border:1px solid var(--accent);border-radius:9px;text-decoration:none;font-size:.75rem}.mesure{display:flex;gap:6px;align-items:center;margin:14px 0 0;font-size:.9rem;color:var(--grey)}.mesure a{padding:3px 12px;border:1px solid var(--accent);border-radius:14px;text-decoration:none;background:#fff}.mesure a.on{background:var(--accent);color:#fff}table.barres thead th{background:transparent;color:var(--grey);font-weight:600;font-size:.75rem;border:0;padding:0 6px 2px;position:static}.colonnes .col span.m,table.barres td.barre span.m{background:#9cc7a4}table.mois{font-size:.8rem}table.mois th{position:static;white-space:nowrap}table.mois td:first-child{font-weight:600;white-space:nowrap}.titre-jour{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}.titre-jour .jour{color:var(--grey);font-size:1rem;font-weight:600}.multi-liste label.tout{font-weight:700;border-bottom:1px solid var(--line);border-radius:0;margin-bottom:4px;padding-bottom:6px}.modeles{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));grid-gap:8px;gap:8px}.modele{display:flex;gap:8px;align-items:flex-start;border:1px solid var(--line);border-radius:8px;padding:10px;cursor:pointer;background:#fff}.modele:has(input:checked){border-color:var(--accent);background:var(--accent-l)}.modele input{margin-top:3px}