@font-face{font-family:Josefin Sans;font-weight:400;font-display:swap;src:url(/fonts/josefin-sans-400.woff2) format("woff2")}@font-face{font-family:Josefin Sans;font-weight:600;font-display:swap;src:url(/fonts/josefin-sans-600.woff2) format("woff2")}@font-face{font-family:Josefin Sans;font-weight:700;font-display:swap;src:url(/fonts/josefin-sans-700.woff2) format("woff2")}:root{--bg: #f5f7f6;--surface: #ffffff;--surface-2: #f2f5f3;--ink: #17242b;--muted: #5f6e74;--line: #e2e8e4;--brand: #1f4e3d;--brand-2: #3a7d1f;--side: #ffffff;--side-2: #edf6e6;--side-ink: #2a3a40;--on-accent: #ffffff;--brand-soft: #edf6e6;--accent: #72b63a;--ok: #1e7b45;--ok-soft: #e4f4ea;--ko: #b42828;--ko-soft: #fce8e8;--warn: #9a6200;--warn-soft: #fdf2dc;--info: #1d5f8f;--info-soft: #e5f0f9;--radius: 14px;--shadow: 0 1px 2px rgba(20, 40, 30, .04), 0 6px 24px rgba(20, 40, 30, .06);--ring: 0 0 0 3px rgba(58, 125, 31, .22);--font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--title: "Josefin Sans", system-ui, sans-serif;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0f1513;--surface: #17201d;--surface-2: #1e2925;--ink: #e8efec;--muted: #9fb0aa;--line: #2c3a35;--brand: #a9d98a;--brand-2: #8fcf68;--side: #131b18;--side-2: #22331f;--side-ink: #dfe9e4;--on-accent: #0c1a07;--brand-soft: #22331f;--ring: 0 0 0 3px rgba(143, 207, 104, .3);--ok: #4cc38a;--ok-soft: #173a2a;--ko: #f08080;--ko-soft: #3e1e1e;--warn: #f2b84b;--warn-soft: #3a2e14;--info: #8cc2ef;--info-soft: #182e42;color-scheme:dark}}:root[data-theme=dark]{--bg: #0f1513;--surface: #17201d;--surface-2: #1e2925;--ink: #e8efec;--muted: #9fb0aa;--line: #2c3a35;--brand: #a9d98a;--brand-2: #8fcf68;--side: #131b18;--side-2: #22331f;--side-ink: #dfe9e4;--on-accent: #0c1a07;--brand-soft: #22331f;--ring: 0 0 0 3px rgba(143, 207, 104, .3);--ok: #4cc38a;--ok-soft: #173a2a;--ko: #f08080;--ko-soft: #3e1e1e;--warn: #f2b84b;--warn-soft: #3a2e14;--info: #8cc2ef;--info-soft: #182e42;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--font);-webkit-font-smoothing:antialiased}h1,h2,h3,.title{font-family:var(--title);font-weight:600;letter-spacing:.01em;margin:0}h1{font-size:28px;color:var(--brand)}h2{font-size:19px}h3{font-size:16px}a{color:var(--brand)}button,input,select,textarea{font:inherit;color:inherit}.muted{color:var(--muted)}.small{font-size:13px}.mono{font-family:ui-monospace,Consolas,monospace;font-size:13px}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:12px}.grow{flex:1}.right{margin-left:auto}.center{text-align:center}.nowrap{white-space:nowrap}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 16px}.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}@media(max-width:900px){.grid3,.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.grid2,.grid3,.grid4{grid-template-columns:1fr}}.shell{display:grid;grid-template-columns:248px 1fr;min-height:100vh}.side{background:var(--side);color:var(--side-ink);border-right:1px solid var(--line);padding:18px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh;overflow-y:auto}.side .logo{font-family:var(--title);font-size:21px;padding:4px 10px 2px;color:#fff}.side .tag{font-size:12px;color:var(--muted);padding:2px 12px 16px;text-transform:uppercase;letter-spacing:.08em;font-weight:600}.side a{color:var(--side-ink);text-decoration:none;padding:9px 12px;border-radius:10px;display:flex;gap:10px;align-items:center;font-size:14.5px;position:relative;transition:background .15s}.side a:hover{background:var(--surface-2)}.side a.on{background:var(--side-2);color:var(--brand-2);font-weight:600}.side a.on:before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:4px;border-radius:0 4px 4px 0;background:var(--brand-2)}.side .sep{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600;padding:16px 12px 4px}.side .me{margin-top:auto;padding:12px;font-size:13px;border-top:1px solid var(--line)}.side .me a{display:inline;padding:0;color:var(--brand-2)}.side .me a:before{display:none}.side .me button{background:none;border:0;color:var(--muted);padding:0;cursor:pointer;text-decoration:underline}.main{padding:28px 36px 64px;min-width:0;max-width:1440px}.topbar{display:none}@media(max-width:900px){.shell{grid-template-columns:1fr}.side{position:fixed;inset:0 30% 0 0;z-index:50;transform:translate(-105%);transition:transform .2s;height:100%}.side.open{transform:none;box-shadow:0 0 0 100vmax #00000059}.topbar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--surface);color:var(--ink);border-bottom:1px solid var(--line);position:sticky;top:env(safe-area-inset-top,0px);z-index:40}.topbar button{background:none;border:0;color:var(--ink);font-size:22px}.main{padding:16px 16px 60px}}.page-head{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:20px}.page-head .sub{color:var(--muted);font-size:14px;margin-top:2px}.page-head .grow{min-width:min(100%,320px);flex-basis:320px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;min-width:0}.card+.card{margin-top:16px}.grid2>.card,.grid3>.card,.grid4>.card{margin-top:0}.card h2,.card h3{margin-bottom:10px}.kpi{padding:18px 20px}.kpi .v{font-family:var(--title);font-size:32px;font-weight:700;line-height:1.1;color:var(--brand)}.kpi .l{color:var(--muted);font-size:13px}.kpi.ko .v{color:var(--ko)}.kpi.warn .v{color:var(--warn)}.kpi.ok .v{color:var(--ok)}.kpi[role=button]{cursor:pointer;transition:transform .15s,box-shadow .15s}.kpi[role=button]:hover{border-color:var(--brand-2);transform:translateY(-1px);box-shadow:0 10px 28px #14281e17}.btn{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--surface);padding:8px 16px;border-radius:10px;cursor:pointer;font-weight:500;white-space:nowrap;min-height:40px;text-decoration:none;color:var(--ink);transition:background .15s,border-color .15s,box-shadow .15s}.btn:hover{border-color:var(--brand-2);background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--brand-2);border-color:var(--brand-2);color:var(--on-accent);font-weight:600;box-shadow:0 2px 6px #3a7d1f40}.btn.primary:hover{filter:brightness(1.08);background:var(--brand-2)}.btn.danger{color:var(--ko);border-color:var(--ko)}.btn.ghost{border-color:transparent;background:transparent}.btn.big{padding:14px 20px;font-size:16px;min-height:52px}.btn.sm{padding:4px 10px;min-height:30px;font-size:13px}.btn-tile{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:20px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);cursor:pointer;text-align:left;min-height:116px;box-shadow:var(--shadow);transition:transform .15s,border-color .15s,box-shadow .15s}.btn-tile:hover{border-color:var(--brand-2);box-shadow:0 10px 28px #14281e17;transform:translateY(-1px)}.btn-tile strong{font-family:var(--title);font-size:18px}.btn-tile span{color:var(--muted);font-size:13.5px}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field>span{font-size:13px;color:var(--muted);font-weight:500}.field .req{color:var(--ko)}input,select,textarea{background:var(--surface);border:1px solid #cfd8d3;border-radius:10px;padding:9px 12px;min-height:42px;width:100%;transition:border-color .15s,box-shadow .15s}input:hover,select:hover,textarea:hover{border-color:#b3c1b9}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand-2);box-shadow:var(--ring)}.btn:focus-visible,button:focus-visible{outline:none;box-shadow:var(--ring)}textarea{min-height:70px;resize:vertical}input[type=checkbox]{width:auto;min-height:0}.input-big{font-size:20px;padding:12px 14px;min-height:54px}.check{display:flex;gap:8px;align-items:center;cursor:pointer}.seg{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}.seg button{border:0;background:transparent;padding:6px 12px;border-radius:8px;cursor:pointer;color:var(--muted);font-weight:500}.seg button:hover{background:var(--surface);color:var(--ink)}.seg button.on{background:var(--brand-2);color:var(--on-accent)}.seg.ok-ko button.on.ok{background:var(--ok)}.seg.ok-ko button.on.ko{background:var(--ko)}.seg.ok-ko button.on.na{background:var(--muted)}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;font-weight:600;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.05em;background:var(--surface);position:sticky;top:0;border-bottom:2px solid var(--line)}th,td{padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:middle}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#f7faf6}tr.clickable{cursor:pointer}tr.sel{background:var(--brand-soft)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.points input{min-height:34px;padding:5px 8px}.points td{padding:5px 6px}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:999px;font-size:12.5px;font-weight:600;white-space:nowrap;background:var(--surface-2);color:var(--muted)}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.ko{background:var(--ko-soft);color:var(--ko)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.info{background:var(--info-soft);color:var(--info)}.chips{display:flex;gap:8px;flex-wrap:wrap}.chip{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:6px 13px;transition:border-color .15s,background .15s;cursor:pointer;font-size:13.5px;display:inline-flex;gap:6px;align-items:center}.chip b{font-variant-numeric:tabular-nums}.chip.on{background:var(--brand-2);border-color:var(--brand-2);color:var(--on-accent)}.banner{border-radius:12px;padding:12px 16px;display:flex;gap:10px;align-items:flex-start;border:1px solid transparent}.banner.info{background:var(--info-soft);color:var(--info)}.banner.warn{background:var(--warn-soft);color:var(--warn)}.banner.ko{background:var(--ko-soft);color:var(--ko)}.banner.ok{background:var(--ok-soft);color:var(--ok)}.group-banner{border-left:5px solid var(--accent);background:var(--surface);padding:10px 14px;border-radius:8px;box-shadow:var(--shadow)}.offline-bar{background:var(--ko);color:#fff;padding:6px 16px;font-size:14px;text-align:center}.sync-pill{font-size:12px;padding:3px 10px;border-radius:999px;background:var(--warn-soft);color:var(--warn)}.modal-bg{position:fixed;inset:0;background:#0f1e1966;backdrop-filter:blur(3px);display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px;z-index:100;overflow-y:auto}.modal{background:var(--surface);border-radius:18px;width:min(720px,100%);box-shadow:0 20px 60px #00000040}.modal.wide{width:min(1080px,100%)}.modal header{padding:18px 22px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px}.modal .body{padding:18px}.modal footer{padding:12px 18px;border-top:1px solid var(--line);display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}.toasts{position:fixed;bottom:18px;right:18px;display:flex;flex-direction:column;gap:8px;z-index:200;max-width:min(420px,calc(100vw - 32px))}.toast{background:var(--ink);color:var(--bg);padding:12px 16px;border-radius:12px;box-shadow:var(--shadow);font-size:14px}.toast.ko{background:var(--ko);color:#fff}.toast.ok{background:var(--ok);color:#fff}.empty{padding:30px;text-align:center;color:var(--muted)}.spinner{width:18px;height:18px;border:2px solid var(--line);border-top-color:var(--brand-2);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.bars{display:flex;align-items:flex-end;gap:6px;height:140px;padding-top:10px}.bars>div{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0;height:100%;justify-content:flex-end}.bars .b{width:100%;background:linear-gradient(180deg,#8cc664,var(--brand-2));border-radius:6px 6px 0 0;min-height:2px}.bars .b.nc{background:var(--ko)}.bars small{font-size:11px;color:var(--muted);white-space:nowrap}.bars small.lbl{font-size:10.5px;line-height:1.15;text-align:center;white-space:normal}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:14px;overflow-x:auto}.tabs button{background:none;border:0;padding:9px 14px;cursor:pointer;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap}.tabs button.on{color:var(--brand);border-bottom-color:var(--brand-2);font-weight:600}.steps{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}.steps span{padding:4px 10px;border-radius:999px;background:var(--surface-2);font-size:13px;color:var(--muted)}.steps span.on{background:var(--brand-2);color:var(--on-accent)}.sig{border:1px dashed var(--line);border-radius:8px;background:#fff;touch-action:none;width:100%;height:160px}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(1200px 600px at 10% -10%,#e3f2d8 0%,transparent 60%),radial-gradient(900px 500px at 110% 110%,#dcefe9 0%,transparent 55%),var(--bg)}.login{width:min(440px,100%)}.login .card{padding:30px;border-radius:20px;box-shadow:0 20px 60px #14281e1a}.login-tagline{color:var(--muted);margin-top:16px}.demo-accounts button{text-align:left;width:100%}.perf{font-size:12px;color:var(--muted)}.tree-row{display:grid;grid-template-columns:1fr 70px 70px 70px;gap:8px;padding:6px 8px;border-bottom:1px solid var(--line);cursor:pointer}.tree-row:hover{background:var(--surface-2)}.sticky-actions{position:sticky;bottom:0;background:var(--surface);border-top:1px solid var(--line);padding:12px;margin:14px -16px -16px;display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end;border-radius:0 0 var(--radius) var(--radius)}details summary{cursor:pointer;font-weight:600;padding:4px 0}.kbd{border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:0 5px;font-size:12px}.brand-logo{display:inline-block}.brand-logo .bl-sombre{display:none!important}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .brand-logo .bl-clair{display:none!important}:root:not([data-theme=light]) .brand-logo .bl-sombre{display:block!important}}:root[data-theme=dark] .brand-logo .bl-clair{display:none!important}:root[data-theme=dark] .brand-logo .bl-sombre{display:block!important}.side .logo-img{padding:6px 10px}.meter{height:10px;background:var(--surface-2);border-radius:5px;overflow:hidden}.meter i{display:block;height:100%;background:var(--brand-2);border-radius:5px}.ko-text{color:var(--ko)}.sign-wrap{min-height:100vh;padding:12px;display:flex;justify-content:center;align-items:flex-start;background:var(--bg)}.sign-wrap>.card{width:min(520px,100%)}.sign-list{list-style:none;margin:0;padding:0;max-height:34vh;overflow:auto;border:1px solid var(--line);border-radius:8px}.sign-list li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;border-bottom:1px solid var(--line)}.sign-list li:last-child{border-bottom:0}.sig-phone{width:100%;height:190px;touch-action:none;background:#fff;border:2px dashed var(--line);border-radius:10px}.qr-sign{display:block;width:min(300px,80vw);height:auto;margin:0 auto;image-rendering:pixelated}.th-sort{all:unset;cursor:pointer;display:inline-flex;gap:6px;align-items:center;font:inherit;text-transform:inherit;letter-spacing:inherit;color:inherit}.th-sort:focus-visible{outline:2px solid var(--brand-2);outline-offset:2px;border-radius:4px}.th-sort .arrow{opacity:.35;font-size:10px}.th-sort .arrow.on{opacity:1;color:var(--brand-2)}.btn-all-ok{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:52px;font:600 17px/1.2 var(--font);color:#fff;background:var(--ok);border:0;border-radius:10px;cursor:pointer;box-shadow:0 2px 6px #157a4640}.btn-all-ok:hover{filter:brightness(1.07)}.btn-all-ok:focus-visible{outline:3px solid var(--brand-2);outline-offset:2px}.btn-all-ok .ico{font-size:22px}.btn-all-ok.done{background:var(--ok-soft);color:var(--ok);box-shadow:none;border:2px solid var(--ok)}.verdict-block{margin-top:14px;padding:14px;border:2px solid var(--line);border-radius:12px;background:var(--surface-2);display:flex;flex-direction:column;gap:12px}.verdict-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}@media(max-width:760px){.verdict-tiles{grid-template-columns:1fr 1fr}}.vtile{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:92px;padding:10px;border-radius:12px;border:2px solid currentColor;background:var(--surface);font:600 15px/1.2 var(--font);cursor:pointer;text-align:center}.vtile .ico{font-size:26px;line-height:1}.vtile:focus-visible{outline:3px solid var(--brand-2);outline-offset:2px}.vtile.conforme{color:var(--ok)}.vtile.non_conforme{color:var(--ko)}.vtile.conforme_restriction{color:var(--warn)}.vtile.aucun{color:var(--muted)}.vtile.on{color:#fff;box-shadow:0 3px 10px #0000002e}.vtile.on.conforme{background:var(--ok);border-color:var(--ok)}.vtile.on.non_conforme{background:var(--ko);border-color:var(--ko)}.vtile.on.conforme_restriction{background:var(--warn);border-color:var(--warn)}.vtile.on.aucun{background:var(--muted);border-color:var(--muted)}.vtile .prop{position:absolute;top:6px;right:8px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;opacity:.85}
