:root{--bg:#f3f6fb;--c:#fff;--t:#1f2937;--m:#6b7280;--a:#4f46e5;--g:#16a34a;--b:#d1d5db}
@media(prefers-color-scheme:dark){:root{--bg:#0f172a;--c:#1e293b;--t:#f1f5f9;--m:#94a3b8;--b:#475569}}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--t);font:16px system-ui,sans-serif}
#app{max-width:900px;margin:auto;padding:16px}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
h1{margin:0;font-size:1.5rem}h2,h3{margin:.6em 0}.card{background:var(--c);border-radius:12px;padding:14px;margin:10px 0;box-shadow:0 1px 3px #0002}
button{font:inherit;padding:8px 14px;border-radius:8px;border:1px solid var(--b);background:var(--c);color:var(--t);cursor:pointer}
button.p,.tab.on,.day.on{background:var(--a);color:#fff;border-color:var(--a)}button.x{color:#dc2626}
input,select{font:inherit;padding:6px;border-radius:6px;border:1px solid var(--b);background:var(--c);color:var(--t);max-width:100%}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.big{font-size:1.5rem;padding:28px}
.row{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.day{flex:1;min-width:60px}.day.today{border-color:var(--g);border-width:2px}
.chore{display:flex;align-items:center;gap:14px;font-size:1.25rem;padding:14px;background:var(--c);border-radius:12px;margin:8px 0;cursor:pointer;border:2px solid transparent}
.chore.done{opacity:.55;text-decoration:line-through;border-color:var(--g)}.chore input{width:28px;height:28px}
.bar{height:12px;background:var(--b);border-radius:6px;overflow:hidden}.bar i{display:block;height:100%;background:var(--g)}
.m{color:var(--m);font-size:.9rem}table{width:100%;border-collapse:collapse}td,th{padding:4px;text-align:left}td input[type=text],td input:not([type]){width:100%}
td input[type=number]{width:75px}.lbl{display:inline-flex;gap:3px;margin-right:10px;align-items:center}
@media print{header,.tabs,.noprint{display:none}}

/* ===== fun kid theme (only when a kid is logged in) ===== */
body.kidmode{background:linear-gradient(160deg,#ffe29f,#ffa99f 55%,#ff9de2) fixed;font-family:"Chalkboard SE","Comic Sans MS","Trebuchet MS",system-ui,sans-serif;color:#2b2140}
@media(prefers-color-scheme:dark){body.kidmode{background:linear-gradient(160deg,#2b1055,#5b247a 60%,#1b4b8f) fixed;color:#fff}}
.kid h1{font-size:1.9rem;text-shadow:2px 2px 0 #fff8}.kid .card{border-radius:22px;border:3px solid #fff;background:#fffffff0;color:#2b2140}
.kid button{border-radius:14px;border:3px solid #fff;background:#fffffff0;color:#2b2140;font-weight:bold}
.hello{display:flex;align-items:center;gap:12px}.hello h2{flex:1;margin:0;font-size:1.7rem}.avatar{font-size:3.2rem;animation:bob 2s ease-in-out infinite}.stars{font-size:1.4rem;font-weight:bold;background:#fffffff0;color:#2b2140;border-radius:20px;padding:6px 14px}
.kid .day{border-radius:18px}.kid .day.on{background:#7c3aed;color:#fff;transform:scale(1.08)}.kid .day.today{border-color:#16a34a}
.kid .chore{border-radius:24px;border:4px solid #fff;background:#fffffff0;color:#2b2140;box-shadow:0 6px 0 #0002;transition:transform .15s}
.kid .chore:active{transform:scale(.97)}.kid .chore input{width:36px;height:36px;accent-color:#16a34a}.kid .m{color:#6b5b8a}
.kid .chore.done{opacity:1;text-decoration:none;background:#d9f99d;border-color:#65a30d;color:#14532d}.kid .chore.done .m{color:#365314}.kid .chore.done .emoji{animation:pop .5s}
.emoji{font-size:2.3rem}.track{position:relative;height:22px;background:#e9d5ff;border-radius:12px;margin:30px 0 8px}
.track i{display:block;height:100%;background:linear-gradient(90deg,#34d399,#facc15);border-radius:12px;transition:width .5s}.rocket{position:absolute;top:-26px;font-size:1.9rem;transform:translateX(-50%);transition:left .5s}
.confetti{position:fixed;top:-20px;width:10px;height:14px;z-index:9;pointer-events:none;animation:fall 1.7s ease-in forwards}
@keyframes bob{50%{transform:translateY(-6px) rotate(6deg)}}@keyframes pop{40%{transform:scale(1.6) rotate(-12deg)}}@keyframes fall{to{transform:translateY(105vh) rotate(540deg)}}
@media(prefers-reduced-motion:reduce){.avatar,.kid .chore.done .emoji,.confetti{animation:none!important}}
