:root{
  --bg:#eef2f6; --surface:#fff; --line:#d5dde6; --fg:#14202e; --muted:#5b6b7c;
  --accent:#1d4f8c; --accent-soft:#e2ebf7; --on-accent:#fff;
  --soins:#b4232c; --soins-bg:#fbe5e6; --pret:#16774a; --pret-bg:#ddf3e7; --warn-bg:#fff4d6; --warn:#7a5300;
  --f-body:"Atkinson Hyperlegible",system-ui,sans-serif;
  --f-num:"Atkinson Hyperlegible Mono",ui-monospace,monospace;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0f1620; --surface:#18222f; --line:#2a3747; --fg:#e8eef5; --muted:#9aabbd;
  --accent:#8db6ec; --accent-soft:#1f3049; --on-accent:#0f1620;
  --soins:#ff8b92; --soins-bg:#3a1c20; --pret:#6fdca6; --pret-bg:#15342a; --warn-bg:#3a2f12; --warn:#f1cc72;
  color-scheme:dark}}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--fg);font-family:var(--f-body);font-size:15px;line-height:1.45;
  padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
.wrap{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:16px 40px;max-width:1700px;margin:0 auto;display:flex;flex-direction:column;gap:18px}
button{font:inherit;cursor:pointer}
a{color:var(--accent)}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.num{font-family:var(--f-num);font-variant-numeric:tabular-nums}
.status{font-size:13px;color:var(--muted);margin:0}
.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);font-weight:700}
.btn{border:1px solid var(--line);background:var(--surface);color:var(--fg);border-radius:8px;padding:8px 14px;font-size:14px}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:700}
.btn.danger{color:var(--soins);border-color:var(--soins)}
.btn.link{border:0;background:none;color:var(--accent);padding:4px 0;text-decoration:underline}
.btn:disabled{opacity:.5;cursor:default}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.sp{flex:1}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:20px;display:flex;flex-direction:column;gap:14px}
.auth{max-width:460px;width:100%;margin:5vh auto 0}
.auth h1{margin:0;font-size:24px;text-wrap:balance}
.auth p{margin:0;color:var(--muted)}
.field{display:flex;flex-direction:column;gap:6px;font-size:14px}
.field span{font-weight:700}
.field small{color:var(--muted);font-weight:400}
.field input,.field select,input.in,select.in{font:inherit;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--fg);min-width:0;width:100%}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:480px){.grid2{grid-template-columns:1fr}}
.check{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--muted)}
.check input{margin-top:3px}
.err{background:var(--soins-bg);color:var(--soins);border-radius:8px;padding:10px 12px;font-size:14px}
.ok{background:var(--pret-bg);color:var(--pret);border-radius:8px;padding:10px 12px;font-size:14px}
.warn{background:var(--warn-bg);color:var(--warn);border-radius:8px;padding:10px 12px;font-size:14px}
.qr{background:#fff;border-radius:10px;padding:10px;width:200px;max-width:100%;align-self:center}
code.secret{font-family:var(--f-num);word-break:break-all;background:var(--bg);padding:6px 8px;border-radius:6px;font-size:13px}
.session{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:13px;color:var(--muted)}
.session strong{color:var(--fg)}
.tabs{display:flex;gap:4px;flex-wrap:wrap}
.tab{border:0;background:transparent;color:var(--muted);padding:7px 12px;border-radius:8px;font-size:14px}
.tab[aria-selected="true"]{background:var(--accent-soft);color:var(--accent);font-weight:700}
.badge{display:inline-block;min-width:20px;padding:0 6px;border-radius:999px;background:var(--soins);color:var(--surface);font-size:12px;font-weight:700;text-align:center;margin-left:4px}
.head{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:start}
.head h1{margin:2px 0 0;font-size:clamp(20px,2.4vw,30px);letter-spacing:.04em;text-transform:uppercase;text-wrap:balance}
.note{margin:8px 0 0;font-weight:700}
.legend{display:flex;flex-direction:column;gap:4px;margin-top:8px;font-size:13px;color:var(--muted)}
.clock{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 16px;min-width:190px}
.clock small{display:block;color:var(--muted);font-size:12px}
.clock .t{font-size:34px;font-weight:700;line-height:1.1}
.clock .t span{color:var(--muted);font-size:20px}
@media (max-width:640px){.head{grid-template-columns:1fr}.clock{justify-self:start}}
.pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:2px 10px;font-size:13px;font-weight:700;white-space:nowrap}
.pill::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}
.pill.soins{background:var(--soins-bg);color:var(--soins)}
.pill.pret{background:var(--pret-bg);color:var(--pret)}
.board{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.salle{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 12px 8px;min-width:0}
.salle h2{margin:0 0 6px;font-size:18px;display:flex;justify-content:space-between;align-items:baseline}
.salle h2 small{font-size:12px;color:var(--pret)}
.poste{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:7px 4px;border:0;border-top:1px solid var(--line);width:100%;background:none;color:inherit;text-align:left}
.poste:first-of-type{border-top:0}
button.poste:hover{background:var(--accent-soft)}
.poste .lab{font-size:13px;color:var(--muted);min-width:58px}
.poste .h{font-size:17px;font-weight:700}
.poste.is-pret .h{color:var(--pret)}
.empty{color:var(--muted);font-size:14px;padding:6px 4px}
body.tv .wrap{max-width:none;padding-block:2vh}
body.tv .session,body.tv .tabs{display:none}
body.tv{font-size:1.2vw}
body.tv .head h1{font-size:2.2vw}
body.tv .note{font-size:1.25vw}
body.tv .legend{font-size:1vw}
body.tv .clock .t{font-size:3vw}
body.tv .board{grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:1vw}
body.tv .salle h2{font-size:1.6vw}
body.tv .poste{padding:.7vh .3vw}
body.tv .poste .lab{font-size:1vw}
body.tv .poste .h{font-size:1.5vw}
body.tv .pill{font-size:1vw}
.tv-exit{position:fixed;right:calc(12px + env(safe-area-inset-right,0px));bottom:calc(12px + env(safe-area-inset-bottom,0px));opacity:.2}
.tv-exit:hover,.tv-exit:focus-visible{opacity:1}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:14px}
.panel h2{margin:0;font-size:18px}
.panel > p{margin:0;color:var(--muted);font-size:14px}
.mgmt{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.mgmt .poste{grid-template-columns:1fr auto}
.list{display:flex;flex-direction:column}
.it{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;padding:12px 0;border-top:1px solid var(--line)}
.it:first-child{border-top:0}
.it .who{min-width:0;flex:1 1 240px}
.it .who b{display:block}
.it .who span{display:block;font-size:13px;color:var(--muted);overflow-wrap:anywhere}
.it select.in{width:auto}
.tag{font-size:12px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent)}
.tag.attente{background:var(--warn-bg);color:var(--warn)}
.tag.suspendu{background:var(--soins-bg);color:var(--soins)}
.log{font-size:14px}
.log .it{padding:8px 0}
.log time{color:var(--muted);font-size:13px;min-width:130px}
.overlay{position:fixed;inset:0;background:rgb(10 18 28 / .5);display:flex;align-items:flex-end;justify-content:center;z-index:20;padding:16px calc(16px + env(safe-area-inset-right,0px)) calc(16px + env(safe-area-inset-bottom,0px)) calc(16px + env(safe-area-inset-left,0px))}
@media (min-width:700px){.overlay{align-items:center}}
.sheet{background:var(--surface);border-radius:16px;padding:20px;width:100%;max-width:420px;display:flex;flex-direction:column;gap:14px;max-height:90vh;overflow:auto}
.sheet h3{margin:0;font-size:20px}
.choice{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.choice button{border:2px solid var(--line);background:var(--bg);color:var(--fg);border-radius:10px;padding:14px 8px;font-weight:700;font-size:16px}
.choice button.on.soins{border-color:var(--soins);background:var(--soins-bg);color:var(--soins)}
.choice button.on.pret{border-color:var(--pret);background:var(--pret-bg);color:var(--pret)}
.confirm{background:var(--soins-bg);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px;font-size:14px}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(20px + env(safe-area-inset-bottom,0px));background:var(--fg);color:var(--bg);padding:10px 16px;border-radius:10px;font-size:14px;z-index:30;max-width:calc(100% - 32px)}
@media (prefers-reduced-motion:no-preference){.pill{transition:background .3s,color .3s}}
