:root{--bg:#eef1f4;--panel:#fff;--ink:#18212c;--mute:#56616e;--line:#d3dae2;--acc:#0e6e6a;--acc2:#b8741a;--ok:#1d7a46;--bad:#b23a3a;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#10161d;--panel:#18212b;--ink:#e6ebf0;--mute:#9aa6b3;--line:#2a3542;--acc:#4fc2bb;--acc2:#e0a450;--ok:#5bc489;--bad:#e07a7a;color-scheme:dark}}*{box-sizing:border-box}body,html{margin:0;height:100%}body{background:var(--bg);color:var(--ink);font:16px/1.55 system-ui,-apple-system,Segoe UI,sans-serif}a{color:inherit}h1{font-size:clamp(26px,5vw,40px);line-height:1.15;margin:12px 0;text-wrap:balance}h1 em{color:var(--acc);font-style:normal}h2{font-size:18px;margin:6px 0}.page{max-width:1000px;margin:0 auto;padding:20px max(16px,env(safe-area-inset-left))}.narrow{max-width:420px}.top{display:flex;align-items:center;gap:12px;justify-content:space-between;padding-bottom:12px;border-bottom:1px solid var(--line);margin-bottom:16px}.top.slim{margin:0;padding:8px 16px;background:var(--panel)}.logo{font-weight:800;letter-spacing:.08em;color:var(--acc);text-decoration:none;font-size:20px}.muted{color:var(--mute)}.small{font-size:13px}.lead{font-size:18px;max-width:60ch}.hero{padding:24px 0 32px}.btn{display:inline-block;background:var(--acc);color:#fff;border:0;border-radius:8px;padding:10px 16px;font-family:inherit;font-weight:600;font-size:15px;line-height:1.3;text-decoration:none;cursor:pointer;text-align:center}.btn.alt{background:transparent;color:var(--ink);border:1px solid var(--line)}.btn.small{padding:6px 12px;font-size:13px}.btn:disabled{opacity:.6}.stack{display:flex;flex-direction:column;gap:8px}input{font:inherit;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink)}label{font-size:13px;font-weight:600}.sep,label{color:var(--mute)}.sep{text-align:center}.ok{color:var(--ok)}.bad{color:var(--bad)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:14px;gap:14px}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;text-decoration:none;display:flex;flex-direction:column;gap:4px}.card:hover{border-color:var(--acc)}.card p{margin:0}.chip{align-self:flex-start;font-size:11px;font-weight:700;border:1px solid var(--acc);border-radius:999px;padding:1px 8px}.list{padding-left:18px}.module{display:flex;flex-direction:column;height:100%}.back{text-decoration:none;color:var(--acc);font-weight:600}.frame{flex:1 1;border:0;width:100%}.auth{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);min-height:100%}.auth-brand{background:var(--acc);color:#fff;padding:32px max(24px,env(safe-area-inset-left));display:flex;flex-direction:column;justify-content:space-between;gap:24px}.logo.light{color:#fff}.auth-tag{font-size:clamp(26px,4vw,40px);font-weight:800;line-height:1.1;margin:0 0 16px;text-wrap:balance}.auth-tag em{font-style:normal;text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:4px}.auth-points{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px;font-size:16px}.auth-points li:before{content:"✓  ";font-weight:700}.auth-foot{opacity:.8;margin:0}.auth-form{display:flex;align-items:center;justify-content:center;padding:32px 16px}.auth-card{width:100%;max-width:400px;display:flex;flex-direction:column;gap:10px}.auth-card h1,.auth-card p{margin:0}.auth-step{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--acc)}.btn.big{padding:13px 16px;font-size:16px;width:100%}.code-input{font-size:28px;letter-spacing:.5em;text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;padding:12px}.auth-links{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}.linkbtn{background:none;border:0;color:var(--acc);font-family:inherit;font-weight:600;font-size:14px;cursor:pointer;padding:4px 0}.linkbtn:disabled{color:var(--mute);cursor:default}.alert{padding:10px 12px;border-radius:8px;font-size:14px}.alert.bad{background:color-mix(in srgb,var(--bad) 12%,transparent);color:var(--bad)}.alert.ok{background:color-mix(in srgb,var(--ok) 12%,transparent);color:var(--ok)}a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--acc);outline-offset:2px}@media (max-width:720px){.auth{grid-template-columns:1fr}.auth-brand{padding:20px 16px;gap:12px}.auth-foot,.auth-points{display:none}.auth-tag{font-size:24px;margin:0}}.sync{margin:0;padding:4px 12px;font-size:13px;opacity:.75}.bloc{margin-top:28px;padding-top:16px;border-top:1px solid var(--line)}.code{font:600 15px ui-monospace,monospace;padding:2px 6px;border:1px solid var(--line);border-radius:6px}.erreur{color:#c0392b}.tab{width:100%;border-collapse:collapse;font-size:14px}.tab td,.tab th{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line)}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:12px;gap:12px}.kpi strong{display:block;font-size:28px}.land .page{max-width:1040px}.top.nob{border:0;margin:0 auto}.eyebrow{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--acc);margin:18px 0 8px}.land .hero{padding:40px max(16px,env(safe-area-inset-left)) 48px}.land .hero h1{font-size:clamp(32px,6vw,56px);max-width:18ch}.cta{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:24px}.btn.big-inline{padding:13px 22px;font-size:16px}.feats{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:1px;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden}.feats article{background:var(--panel);padding:22px}.feats h3{margin:6px 0;font-size:17px}.feats p{margin:0;color:var(--mute);font-size:15px}.num{font:700 13px ui-monospace,monospace;color:var(--acc2)}.steps{padding-top:40px}.steps ol{padding-left:20px;display:flex;flex-direction:column;gap:8px;font-size:17px}.foot{padding-top:40px;padding-bottom:32px;border-top:1px solid var(--line);margin-top:40px}.row{align-items:center;gap:10px}.hello,.row{display:flex;flex-wrap:wrap}.hello{justify-content:space-between;align-items:flex-end;gap:16px;margin:8px 0 24px}.hello h1{margin:0}.hello p{margin:4px 0 0}.stat{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 14px}.stat strong{font-size:28px;color:var(--acc)}.card h3{margin:4px 0;font-size:17px}.foot-card{margin-top:auto!important;padding-top:8px}.catalogue summary{display:flex;align-items:baseline;gap:10px;cursor:pointer;list-style:none}.catalogue summary::-webkit-details-marker{display:none}.catalogue summary h2:before{content:"＋ ";color:var(--acc)}.catalogue[open] summary h2:before{content:"－ "}.module{height:100dvh}:root{--accsoft:#d6ecea;--ambsoft:#f6e7d1;--amb:#9a5f12;--badsoft:#f7dede;--goodsoft:#ddf1e3}@media (prefers-color-scheme:dark){:root{--accsoft:#16373a;--ambsoft:#3a2c18;--amb:#e0a450;--badsoft:#3d1d1d;--goodsoft:#173524}}body{font-family:IBM Plex Sans,system-ui,sans-serif}.big,.logo,h1,h2,h3{font-family:Bricolage Grotesque,system-ui,sans-serif;letter-spacing:-.01em}.chip,.eyebrow,.k,.num{font-family:IBM Plex Mono,ui-monospace,monospace}.k{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);font-weight:500}.t{font-weight:600;margin:0}.big{font-size:32px;font-weight:800;line-height:1.05;margin:2px 0}.between{justify-content:space-between}.chip{border:0;background:var(--accsoft);color:var(--acc);border-radius:5px;padding:2px 8px;font-weight:500}.chip.amber{background:var(--ambsoft);color:var(--amb)}.chip.bad{background:var(--badsoft);color:var(--bad)}.chip.good{background:var(--goodsoft);color:var(--ok)}.card.hi{background:var(--acc);border-color:var(--acc);color:#fff}.card.hi .k,.card.hi .muted{color:inherit;opacity:.85}.card.hi h2{font-size:22px;margin:2px 0 6px}.btn.inv{background:#fff;color:var(--acc);align-self:flex-start}.card.soft{background:var(--accsoft);border-color:transparent}.tasks{list-style:none;padding:0;margin:4px 0 10px;display:flex;flex-direction:column;gap:8px}.tasks li{display:flex;gap:10px;align-items:flex-start}.tasks li:before{content:"";flex:none;width:17px;height:17px;border-radius:50%;border:1.8px solid;margin-top:3px}.tasks li.done{opacity:.7;text-decoration:line-through}.tasks li.done:before{background:currentColor}.days{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:5px;gap:5px;margin-top:6px}.days i{height:26px;border-radius:6px;background:var(--line);font:500 11px IBM Plex Mono,monospace;font-style:normal;display:flex;align-items:center;justify-content:center;color:var(--mute)}.days i.on{background:var(--acc);color:#fff}.days i.today{outline:2px solid var(--acc);outline-offset:1px;background:var(--panel);color:var(--acc)}.today{display:flex;flex-direction:column;gap:16px}.today header h1{margin:0}.duo{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:16px;gap:16px}.list-plain{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:6px}.kpis .card{gap:2px}.bar{height:6px;border-radius:3px;background:var(--line);overflow:hidden}.bar i{display:block;height:100%;background:var(--acc);transition:width .3s}.narrow-m{max-width:560px}.onb{gap:14px;padding-top:12px}.onb,.onb section{display:flex;flex-direction:column}.onb section{gap:12px}.onb h1{font-size:clamp(24px,5vw,32px)}.onb h1,.onb p{margin:0}.opt{border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--panel);color:var(--ink);display:flex;flex-direction:column;gap:8px;text-align:left;font:inherit}.opt.sel{border-color:var(--acc);background:var(--accsoft)}.opt label.row{font-size:15px;font-weight:400;color:var(--ink);cursor:pointer}.opt input[type=checkbox]{width:20px;height:20px;accent-color:var(--acc)}.big-opt{cursor:pointer;font-size:16px;padding:14px}.date{display:flex;flex-direction:column;gap:4px}.onb-nav{margin-top:8px}select{font:inherit;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink)}.form-grid{max-width:520px;margin-top:10px}.form-grid label{display:flex;flex-direction:column;gap:4px}.nav{gap:4px;max-width:1000px;margin:0 auto;padding:10px max(16px,env(safe-area-inset-left));border-bottom:1px solid var(--line)}.nav,.nav a{display:flex;align-items:center}.nav a{gap:6px;text-decoration:none;color:var(--mute);padding:8px 12px;border-radius:8px;font-weight:500;font-size:15px}.nav a.on{color:var(--acc);background:var(--accsoft)}.nav-logo{margin-right:auto;padding-left:0!important;background:none!important;color:var(--acc)!important;font-weight:800!important}@media (max-width:700px){.shell{padding-bottom:calc(70px + env(safe-area-inset-bottom))}.nav{position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--panel);border-top:1px solid var(--line);border-bottom:0;padding:6px 4px calc(6px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(4,1fr)}.nav-logo{display:none!important}.nav a{flex-direction:column;gap:2px;font-size:11px;padding:4px}.nav a.on{background:none}.kpis{grid-template-columns:repeat(2,1fr)}.tab{display:block;overflow-x:auto}}[hidden]{display:none!important}.inc{font-weight:500;color:var(--ink);cursor:pointer}.inc input{width:18px;height:18px;accent-color:var(--acc)}button,input,select,textarea{font-family:inherit}.shell:has(>.module){padding-bottom:0}.tabw{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:8px}.tabw .tab{min-width:560px}.badge-ok{display:inline-block;font-size:13px;background:hsla(0,0%,100%,.18);border-radius:6px;padding:2px 8px;margin:0 0 6px}.gate{max-width:440px;margin:0 auto;padding:48px 16px;display:flex;flex-direction:column;gap:12px}.gate h1{margin:0}.dates-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.dates-form input[name=source]{flex:1 1;min-width:160px}.page-title{margin:4px 0 16px}.err-page{max-width:520px;margin:0 auto;padding:64px 16px;display:flex;flex-direction:column;gap:12px;align-items:flex-start}@media (max-width:720px){.auth{min-height:100dvh;grid-template-rows:auto 1fr}.auth-form{align-items:flex-start;padding-top:28px}}@media (max-width:700px){.tabw .tab.dates{min-width:0}.tab.dates tr{display:block;padding:10px 0;border-bottom:1px solid var(--line)}.tab.dates td{display:block;border:0;padding:3px 0}}.bar.warn i{background:var(--amb)}.bar.bad i{background:var(--bad)}.prog h2{margin:0}.prog .bar{margin:4px 0}.chap{margin:8px 0}.chap summary{cursor:pointer;color:var(--acc);font-weight:600;font-size:14px}.chap li{margin-top:8px}.faibles .card{padding:10px 12px;gap:2px}.mbar{margin-top:6px}.test{display:flex;flex-direction:column;gap:12px;padding-top:16px}.test h1{margin:0}.tq{font-size:19px;line-height:1.35;margin:4px 0}.opt.bon{border-color:var(--ok);background:var(--goodsoft)}.opt.faux{border-color:var(--bad);background:var(--badsoft)}.opt:disabled{cursor:default;color:var(--ink)}form.stack label{display:flex;flex-direction:column;gap:4px}.timer{font:700 26px IBM Plex Mono,monospace;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.timer.bad{color:var(--bad)}.qn{display:grid;grid-template-columns:repeat(auto-fill,minmax(36px,1fr));grid-gap:5px;gap:5px}.qn button{height:32px;border-radius:6px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font:500 12px IBM Plex Mono,monospace;cursor:pointer}.qn button.ok{background:var(--accsoft);border-color:var(--acc)}.qn button.cur{background:var(--acc);color:#fff;border-color:var(--acc)}.corrige{padding-left:20px;display:flex;flex-direction:column;gap:10px}.corrige p{margin:2px 0}.corrige li.bon::marker{color:var(--ok)}.corrige li.faux::marker{color:var(--bad)}.np{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.np strong{font:800 26px Bricolage Grotesque,sans-serif}