:root{--bg:#fff3c4;--bg2:#ffe1ea;--bg3:#d9f3ff;--card:#ffffff;--ink:#33204f;--soft:#75648a;--line:#f3dfe6;--accent:#e6246f;--accent2:#ff9a1f;--accent3:#12b5c9;--done:#22c98a;--later:#ffb52e;--skip:#c9c1d8;--late:#d6336c;--on-accent:#fff;--on-bright:#21123a;--Maison:#ff9a4d;--Enfants:#ff6fa5;--Administratif:#8d9bb5;--Concours:#8b5cf6;--Anglais:#3b9dff;--Soins:#f472d0;--Sport:#22c98a;--Famille:#ffb52e;--Emploi:#14b8a6;--Pour-moi:#c084fc}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#1c1440;--bg2:#2a1650;--bg3:#0f2a4d;--card:#2c2152;--ink:#fdf6ff;--soft:#c0b3dc;--line:#43356e;--accent:#ff7bab;--accent2:#ffb347;--accent3:#4fd8e8;--done:#35d69a;--later:#ffc14d;--skip:#6c6390;--late:#ff8fb1;--on-accent:#21123a;--on-bright:#21123a;color-scheme:dark}}
:root[data-theme="dark"]{--bg:#1c1440;--bg2:#2a1650;--bg3:#0f2a4d;--card:#2c2152;--ink:#fdf6ff;--soft:#c0b3dc;--line:#43356e;--accent:#ff7bab;--accent2:#ffb347;--accent3:#4fd8e8;--done:#35d69a;--later:#ffc14d;--skip:#6c6390;--late:#ff8fb1;--on-accent:#21123a;--on-bright:#21123a;color-scheme:dark}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
html{background:var(--bg)}body{min-height:100vh;background:linear-gradient(170deg,var(--bg),var(--bg2) 55%,var(--bg3)) fixed}html,body{margin:0;color:var(--ink);font:600 16px/1.35 Nunito,ui-rounded,-apple-system,BlinkMacSystemFont,sans-serif;overscroll-behavior-y:contain}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer}
#app{max-width:560px;margin:0 auto;padding-block:calc(env(safe-area-inset-top) + 14px) calc(env(safe-area-inset-bottom) + 96px);padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
h1{font:600 31px/1.08 Fredoka,ui-rounded,"SF Pro Rounded",-apple-system,sans-serif;margin:0;text-wrap:balance}h1::first-letter{text-transform:uppercase}
.top{display:flex;justify-content:space-between;align-items:flex-end;gap:12px}
.top small{color:var(--soft);display:block;margin-bottom:2px;font-size:14px}
.count{font:600 16px/1 Fredoka,ui-rounded,sans-serif;color:var(--on-accent);background:var(--accent);border-radius:99px;padding:8px 13px;white-space:nowrap;font-variant-numeric:tabular-nums}.cheer{font:500 16px/1.2 Fredoka,ui-rounded,sans-serif;color:var(--accent);margin:0 2px 12px}
.bar{height:12px;border-radius:7px;background:color-mix(in srgb,var(--card) 70%,transparent);margin:12px 0 8px;overflow:hidden}.bar i{display:block;height:100%;min-width:12px;border-radius:7px;background:linear-gradient(90deg,var(--accent2),var(--accent),var(--accent3));transition:width .45s cubic-bezier(.3,1.5,.5,1)}
.strip{display:flex;gap:6px;margin:0 -16px 8px;padding:0 16px;overflow-x:auto;scrollbar-width:none}.strip::-webkit-scrollbar{display:none}
.day{flex:0 0 48px;height:60px;border-radius:18px;background:color-mix(in srgb,var(--card) 65%,transparent);display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--soft);font-size:12px}
.day b{font-size:18px;color:var(--ink);font-weight:600}.day.on{background:var(--accent);color:var(--on-accent)}.day.on b{color:var(--on-accent)}
.chips{display:flex;gap:6px;margin:0 -16px 6px;padding:0 16px;overflow-x:auto;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}
.chip{flex:none;padding:7px 13px;border-radius:99px;font-size:14px;border:1px solid var(--line);color:var(--soft);min-height:36px}.chip{background:color-mix(in srgb,var(--card) 65%,transparent)}.chip.on{background:var(--accent3);color:var(--on-bright);border-color:var(--accent3)}
.hint{color:var(--soft);font-size:13px;margin:10px 2px 0;display:flex;justify-content:space-between}.hint button{color:var(--accent);font-size:13px}
h2{font:600 19px/1.2 Fredoka,ui-rounded,sans-serif;color:var(--ink);margin:20px 2px 9px}
.late-head{display:flex;width:100%;justify-content:space-between;align-items:center;margin-top:16px;padding:12px 14px;border-radius:14px;background:color-mix(in srgb,var(--late) 12%,var(--card));color:var(--late);font-weight:600;min-height:46px}
.row{position:relative;margin-bottom:9px;border-radius:20px;overflow:hidden;background:var(--line)}
.under{position:absolute;inset:0;display:flex;align-items:center;padding:0 20px;color:var(--on-bright);font-weight:800;font-size:16px;opacity:0}
.under.r{background:var(--done);justify-content:flex-start}.under.l{background:var(--later);justify-content:flex-end}.under.l.grey{background:var(--skip)}
.card{position:relative;display:flex;gap:11px;align-items:center;padding:10px 13px;min-height:62px;background:color-mix(in srgb,var(--c) 15%,var(--card));touch-action:pan-y;user-select:none;-webkit-user-select:none;will-change:transform}
.t{flex:0 0 42px;font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--soft)}
.dot{flex:none;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:19px;font-style:normal;background:color-mix(in srgb,var(--c) 35%,var(--card))}
.body{flex:1;min-width:0}.title{font-size:16px;font-weight:700;overflow-wrap:anywhere}.sub{font-size:12.5px;color:var(--soft);margin-top:2px}.sub .warn{color:var(--late)}
.isdone .title{text-decoration:line-through;color:var(--soft)}.isdone .card{opacity:.7}
.empty{color:var(--soft);text-align:center;padding:44px 12px}
.tabs{position:fixed;left:0;right:0;bottom:0;display:flex;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:5}
.tabs button{flex:1;height:58px;font-size:14px;color:var(--soft);position:relative}.tabs button.on{color:var(--accent);font-weight:600}.tabs .add{color:var(--on-accent)}.tabs .add span{display:inline-flex;width:50px;height:50px;border-radius:50%;background:linear-gradient(135deg,var(--accent2),var(--accent));box-shadow:0 4px 12px color-mix(in srgb,var(--accent) 45%,transparent);align-items:center;justify-content:center;font-size:26px;line-height:1}
.badge{display:inline-block;margin-left:5px;min-width:19px;padding:1px 5px;border-radius:10px;background:var(--late);color:#fff;font-size:12px;font-weight:600}
.scrim{position:fixed;inset:0;background:#0007;z-index:10;display:flex;align-items:flex-end;justify-content:center}
.sheet{background:var(--card);width:100%;max-width:560px;max-height:90vh;overflow:auto;border-radius:20px 20px 0 0;padding:18px 16px calc(env(safe-area-inset-bottom) + 18px)}
.sheet h3{font:600 22px/1.2 Fredoka,ui-rounded,-apple-system,sans-serif;margin:0 0 12px}
label{display:block;font-size:13px;color:var(--soft);margin:10px 0 4px}
input,select,textarea{width:100%;font-size:16px;padding:11px;border-radius:11px;border:1px solid var(--line);background:var(--card);min-height:44px}
.two{display:flex;gap:10px}.two>div{flex:1;min-width:0}
.quick{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.btn{height:50px;border-radius:25px;background:var(--accent);color:var(--on-accent);font-weight:600;width:100%;margin-top:14px}.btn.ghost{background:none;color:var(--late);margin-top:6px}
.err{color:var(--late);font-size:14px;margin-top:8px;min-height:18px}
#toast{position:fixed;left:16px;right:16px;bottom:calc(env(safe-area-inset-bottom) + 70px);max-width:528px;margin:0 auto;background:var(--ink);color:var(--bg);border-radius:13px;padding:0 16px;display:none;align-items:center;justify-content:space-between;min-height:48px;z-index:20;font-size:15px}
#toast.on{display:flex}#toast button{color:inherit;font-weight:700;min-height:44px;padding-left:16px}
.login{min-height:80vh;display:flex;flex-direction:column;justify-content:center}.login p{color:var(--soft)}

.confetti{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:30}
.confetti i{position:absolute;width:9px;height:13px;border-radius:3px;animation:fly var(--d) cubic-bezier(.15,.7,.4,1) forwards}
@keyframes fly{to{transform:translate(var(--x),var(--y)) rotate(var(--r));opacity:0}}
@media (prefers-reduced-motion:reduce){.confetti{display:none}.bar i,.card{transition:none!important}}
