[hidden]{display:none!important}
:root{--navy:#142b42;--ink:#1a2a3a;--muted:#607387;--line:#e0e7ee;--bg:#f4f7fa;--card:#fff;--teal:#00897b;--danger:#b42318;--ok:#137b58;--warn:#986200}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font:15px/1.52 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;margin:0}a{color:#126b8a;text-decoration:none}a:hover{text-decoration:underline}.topbar{padding:14px max(20px,calc((100vw - 1340px)/2));background:var(--navy);color:#fff;display:flex;align-items:center;gap:28px;flex-wrap:wrap}.brand{font-size:19px;font-weight:800;white-space:nowrap}.brand span:not(.logo){color:#7ee2d6}.brand small{font-weight:400;color:#adbdc9;font-size:11px}.logo{display:inline-flex;background:var(--teal);align-items:center;justify-content:center;border-radius:9px;width:32px;height:32px;margin-right:8px}.topbar nav{display:flex;flex-wrap:wrap;gap:15px;flex:1}.topbar a{color:#dae8f1;font-size:13px}.who{font-size:12px;display:flex;align-items:center;gap:12px}.who small{color:#a6c2cf}.container{max-width:1300px;margin:28px auto;padding:0 20px}.page-head{display:flex;justify-content:space-between;align-items:end;gap:16px;margin-bottom:22px;flex-wrap:wrap}.page-head h1{margin:1px 0 5px;font-size:29px;letter-spacing:-.6px}.page-head p{color:var(--muted);margin:0}.eyebrow{text-transform:uppercase;font-size:11px;letter-spacing:1.3px;color:#087b73;font-weight:800}h2{font-size:18px;margin:0 0 15px}p{line-height:1.6}.card{background:var(--card);border:1px solid var(--line);border-radius:15px;padding:23px;box-shadow:0 4px 14px rgba(20,43,66,.035);margin-bottom:20px}.grid{display:grid;gap:16px}.metrics{grid-template-columns:repeat(4,1fr);margin-bottom:20px}.metrics.three{grid-template-columns:repeat(3,1fr)}.metric{margin:0;min-height:110px}.metric span{display:block;color:var(--muted);font-size:12px;max-width:190px}.metric strong{display:block;font-size:28px;margin-top:11px;font-weight:800}.main-grid{grid-template-columns:1fr 1fr}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.section-head h2{margin-bottom:10px}.tag{display:inline-block;background:#edf8f6;color:#087b73;padding:6px 9px;border-radius:6px;font-size:12px}.status{font-size:12px;padding:4px 8px;border-radius:7px;background:#e6f5ee;color:var(--ok);font-weight:700;white-space:nowrap}.status.alerte,.status.difference,.status.refusee{background:#ffedeb;color:var(--danger)}.status.incomplet,.status.en_pause,.status.non_comparable,.status.en_attente,.status.sans_pointage{background:#fff6e0;color:var(--warn)}.status.absence_validee,.status.validee,.status.conforme{background:#e6f5ee;color:var(--ok)}.notice{padding:12px 14px;margin:15px 0;border-radius:8px;background:#edf6fc;color:#28485f}.notice.danger{background:#fff0ef;color:var(--danger)}.notice.warning{background:#fff5df;color:#80580e}.subtle,.help{color:var(--muted)}.help{font-size:12px}.pair{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line)}.pair span{color:var(--muted)}.pair strong{font-size:14px}.link{display:inline-block;margin-top:16px}.actions{display:flex;gap:12px}.btn,button{cursor:pointer;border:1px solid #b6c8d4;border-radius:9px;padding:10px 15px;font-family:inherit;font-weight:700;font-size:13px;background:#fff;color:var(--navy);text-decoration:none;display:inline-block}.btn.primary,button.primary{background:var(--teal);border-color:var(--teal);color:#fff}.btn:hover,button:hover{filter:brightness(.96);text-decoration:none}.ghost{background:transparent;color:inherit;border-color:var(--line)}.who .ghost{color:#fff;border-color:#7390a5}.small{padding:6px 10px;font-size:12px}.full{width:100%}label{display:block;font-size:13px;color:var(--muted);font-weight:650}input,select,textarea{font-family:inherit;font-size:14px;display:block;padding:10px 12px;border:1px solid #bdcbd7;border-radius:8px;margin-top:5px;width:100%;color:var(--ink);background:#fff}input:focus,select:focus,textarea:focus{outline:2px solid #8ed0c9}.stack{display:flex;flex-direction:column;gap:15px}.auth{max-width:430px;margin:7vh auto}.auth h1{margin:3px 0}.auth form{display:flex;flex-direction:column;gap:18px;margin-top:24px}.auth .subtle{font-size:12px}.monthform,.filters{display:flex;gap:10px;align-items:end}.monthform input{min-width:140px}.filters select{min-width:230px}.inline{display:flex;gap:7px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:13px;white-space:nowrap}th{color:var(--muted);text-transform:uppercase;letter-spacing:.4px;font-size:10px;background:#f3f7fa}th,td{padding:12px 10px;border-bottom:1px solid var(--line)}tbody tr:hover{background:#f8fbfc}.negative{color:var(--danger);font-weight:700}.narrow{max-width:570px;margin:5vh auto}footer{font-size:11px;color:#82919f;text-align:center;padding:25px 10px}code{font-size:12px;word-break:break-word}@media(max-width:860px){.main-grid{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(2,1fr)}.topbar{gap:15px}.topbar nav{order:3;width:100%}}@media(max-width:520px){.metrics,.metrics.three{grid-template-columns:1fr 1fr}.card{padding:16px}.metric strong{font-size:24px}.page-head h1{font-size:24px}.filters{flex-wrap:wrap}}
/* --- Personal PWA (v0.5) --- */
.topbar nav a[aria-current=page]{color:#fff;font-weight:700;text-decoration:underline;text-underline-offset:4px}
.nav-sep{color:#8fb0c4;font-size:11px;text-transform:uppercase;letter-spacing:.8px;align-self:center}
.tag.count{padding:1px 7px;background:#f5c84c;color:#3b2a00}
.offline-banner{position:sticky;top:0;z-index:20;background:#7a2e1f;color:#fff;padding:9px 14px;font-size:13px;text-align:center}
.tabbar{display:none}
.badge-page{max-width:520px;margin:0 auto;text-align:center}
.badge-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px 16px;box-shadow:0 4px 14px rgba(20,43,66,.05)}
.badge-qr{width:min(86vw,440px);height:auto;image-rendering:pixelated;background:#fff;display:block;margin:0 auto}
.badge-name{font-weight:800;font-size:18px;margin:12px 0 4px}
.badge-actions{justify-content:center;flex-wrap:wrap;margin-top:12px}
.badge-note{margin-top:14px}
.badge-card:fullscreen,.badge-card.pseudo-full{background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:0;border:0}
.badge-card.pseudo-full{position:fixed;inset:0;z-index:50}
.badge-card:fullscreen .badge-qr,.badge-card.pseudo-full .badge-qr{width:min(92vw,92vh)}
.badge-card:fullscreen .badge-actions,.badge-card:fullscreen .help,.badge-card.pseudo-full .badge-actions,.badge-card.pseudo-full .help{display:none}
.moves{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0}
.move{padding:5px 9px;border-radius:8px;font-size:13px;font-weight:650}.move.in{background:#e6f5ee;color:var(--ok)}.move.out{background:#fff0e8;color:#ad4331}
.day-card{padding:16px 18px}.day-card h2{font-size:16px;margin-bottom:6px}
@media(max-width:860px){
 body.signed-in{padding-bottom:72px}
 body.signed-in .topbar nav{display:none}
 .tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:30;background:#fff;border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
 .tabbar a{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;color:var(--navy);text-decoration:none;position:relative}
 .tabbar a span{font-size:19px;line-height:1.1}
 .tabbar a b{position:absolute;top:-2px;right:18%;background:#d64545;color:#fff;border-radius:9px;font-size:10px;padding:0 5px}
 .tabbar .tab-badge span{color:var(--teal)}
 .who span{display:none}
}
