/* LeMultiservice Developers — jetons du design (dev-tokens.css) pour une application pleine page.
   Clair par défaut ; sombre avec html[data-theme=dark] (bascule dans le menu du compte). */
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;height:100%;overflow:hidden}
body{font-family:'Plus Jakarta Sans',system-ui,sans-serif;-webkit-font-smoothing:antialiased;text-wrap:pretty;background:var(--bg);color:var(--ink)}
#app{height:100%}
a{color:var(--accD)}a:hover{color:var(--ink)}
button,input,textarea,select{font-family:inherit}
:root{--bg:#F9FAFB;--card:#FFFFFF;--sub:#F3F5F4;--line:rgba(229,231,235,.8);--ink:#0F1A16;--ink2:#46554F;--ink3:#6F7F78;--deep:#113025;--btn:#113025;--acc:#3E9378;--accD:#2A7560;--mint:#E7F4EE;
  --warn:#A2560A;--warnBg:#FEF4E6;--warnDot:#E08A0B;--warnLine:rgba(224,138,11,.4);--bad:#B83A31;--badBg:#FDEDEB;--badLine:rgba(184,58,49,.35);--info:#2462B0;--infoBg:#EAF2FD;--nextBg:rgba(62,147,120,.05);--bar:rgba(62,147,120,.25);--tog:#D3DCD8;color-scheme:light}
html[data-theme=dark]{--bg:#0A1310;--card:#101C17;--sub:#15241E;--line:rgba(255,255,255,.08);--ink:#E9F1ED;--ink2:#B6C5BE;--ink3:#86988F;--deep:#0B211A;--btn:#3E9378;--acc:#4FAE8E;--accD:#8FD8BD;--mint:rgba(79,174,142,.14);
  --warn:#F2B35C;--warnBg:rgba(224,138,11,.14);--warnLine:rgba(242,179,92,.35);--bad:#F08A80;--badBg:rgba(240,138,128,.12);--badLine:rgba(240,138,128,.35);--info:#8DB8F5;--infoBg:rgba(141,184,245,.12);--nextBg:rgba(79,174,142,.07);--bar:rgba(79,174,142,.3);--tog:#2A3B34;color-scheme:dark}
input::placeholder,textarea::placeholder{color:var(--ink3);opacity:.8}
::-webkit-scrollbar{width:8px;height:6px}::-webkit-scrollbar-thumb{background:rgba(120,140,132,.35);border-radius:8px}::-webkit-scrollbar-track{background:transparent}
.lb{transition:transform .12s ease,background .2s ease,box-shadow .2s ease,color .2s ease}
.lb:not(:disabled):active{transform:scale(.97)}
.lb:not(:disabled):hover{filter:brightness(.98)}
.lc{transition:box-shadow .2s ease,border-color .2s ease}
.lc:hover{box-shadow:0 10px 28px rgba(8,20,16,.08)}
.lr{transition:background .2s ease}.lr:hover{background:var(--sub)!important}
.ln:hover{background:var(--sub)}
.li{transition:border-color .2s ease,box-shadow .2s ease}
.li:focus{border-color:var(--acc)!important;box-shadow:0 0 0 3px rgba(62,147,120,.18)}
.ld:hover{border-color:var(--acc)!important}
.lk:focus-within span:first-of-type{box-shadow:0 0 0 3px rgba(62,147,120,.25)}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:10px}
.lpage{animation:lfade .25s ease}
.lsk{background:linear-gradient(90deg,var(--sub) 25%,var(--line) 50%,var(--sub) 75%);background-size:200% 100%;animation:lsh 1.2s linear infinite}
@keyframes lfade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes lpop{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
@keyframes lup{from{transform:translateY(100%)}to{transform:none}}
@keyframes lsh{from{background-position:200% 0}to{background-position:-200% 0}}
@keyframes lfloat{from{transform:translate(0,0) scale(1)}to{transform:translate(18px,-14px) scale(1.12)}}
@media (prefers-reduced-motion:reduce){[style*="lfloat"]{animation:none!important}}
.kscan{top:18%;animation:kscan 2.4s ease-in-out infinite}@keyframes kscan{0%,100%{top:18%}50%{top:80%}}
.kspin{animation:kspin .9s linear infinite}@keyframes kspin{to{transform:rotate(360deg)}}
/* Toasts */
.toasts{position:fixed;right:20px;bottom:20px;z-index:120;display:flex;flex-direction:column;gap:8px;max-width:calc(100vw - 32px)}
