:root{--green:#58cc02;--green-dark:#46a302;--green-bg:#d7ffb8;--blue:#1cb0f6;--red:#ff4b4b;--orange:#ff9600;--text:#3c3c3c;--muted:#777;--border:#e5e5e5;--bg:#f7f7f7;--radius:16px}*{box-sizing:border-box}body{color:var(--text);background:var(--bg);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Nunito,sans-serif}h1{margin:.5rem 0;font-size:1.6rem}h2{margin:1.2rem 0 .5rem;font-size:1.1rem}.app-shell{max-width:560px;min-height:100vh;margin:0 auto}.topbar{border-bottom:2px solid var(--border);z-index:10;background:#fff;justify-content:space-between;align-items:center;padding:12px 16px;display:flex;position:sticky;top:0}.brand{color:var(--green-dark);font-size:1.1rem;font-weight:800;text-decoration:none}.topbar nav{gap:12px;display:flex}.topbar nav a{color:var(--muted);border-radius:10px;padding:6px 10px;font-weight:700;text-decoration:none}.topbar nav a.active{color:var(--green-dark);background:var(--green-bg)}.content{padding:16px}.page{flex-direction:column;gap:8px;display:flex}.center-screen{justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.login-card{border:2px solid var(--border);border-radius:var(--radius);text-align:center;background:#fff;flex-direction:column;gap:12px;width:100%;max-width:380px;padding:32px 24px;display:flex}.login-mascot{font-size:64px}.btn{cursor:pointer;text-align:center;color:var(--text);background:#fff;border:none;border-radius:14px;padding:12px 20px;font-size:.95rem;font-weight:800;text-decoration:none;transition:filter .1s,transform 50ms;display:inline-block}.btn:active{transform:translateY(2px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--green);color:#fff;box-shadow:0 4px 0 var(--green-dark)}.btn-primary:active{box-shadow:0 2px 0 var(--green-dark)}.btn-secondary{color:var(--blue);border:2px solid var(--border);box-shadow:0 4px 0 var(--border);background:#fff}.btn-ghost{color:var(--muted);background:0 0}.btn-ghost.danger{color:var(--red)}.btn-big{width:100%;padding:16px 24px;font-size:1.05rem}.btn-small{padding:8px 14px;font-size:.85rem}input,textarea{font:inherit;border:2px solid var(--border);background:#fff;border-radius:12px;width:100%;padding:12px}input:focus,textarea:focus{border-color:var(--blue);outline:none}input[type=number]{width:auto}input[type=checkbox]{width:22px;height:22px;accent-color:var(--green)}input[type=file]{border:none;padding:4px 0}label{flex-direction:column;gap:6px;font-size:.9rem;font-weight:700;display:flex}.label-text{margin-bottom:6px;font-size:.9rem;font-weight:700}.stack{flex-direction:column;gap:14px;display:flex}.row{align-items:center;gap:8px;display:flex}.row.wrap{flex-wrap:wrap}.row-between{justify-content:space-between;align-items:center;display:flex}.divider{color:var(--muted);margin:4px 0;font-size:.85rem}.muted{color:var(--muted)}.small{font-size:.82rem}.error{color:var(--red);font-weight:700}.challenge-card{background:linear-gradient(135deg, var(--green) 0%, #7fe030 100%);color:#fff;border-radius:var(--radius);box-shadow:0 5px 0 var(--green-dark);margin:8px 0 16px;padding:22px;text-decoration:none;display:block}.challenge-card.done{color:#6b5200;background:linear-gradient(135deg,#ffc800 0%,#ffde59 100%);box-shadow:0 5px #e5a600}.challenge-label{text-transform:uppercase;letter-spacing:.05em;opacity:.9;font-size:.85rem;font-weight:800}.challenge-name{margin:6px 0;font-size:1.5rem;font-weight:800}.challenge-sub{opacity:.9;font-size:.9rem}.streak{color:var(--orange);font-size:1.2rem;font-weight:800}.chore-list{flex-direction:column;gap:10px;display:flex}.chore-card{border:2px solid var(--border);border-radius:var(--radius);color:inherit;background:#fff;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;text-decoration:none;display:flex}.chore-card:hover{border-color:var(--green)}.chore-name{font-weight:800}.chore-meta{flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;display:flex}.chore-thumb{object-fit:cover;border-radius:10px;width:52px;height:52px}.badge{text-transform:uppercase;border-radius:999px;padding:3px 8px;font-size:.72rem;font-weight:800}.badge-overdue{color:var(--red);background:#ffe3e3}.badge-due{color:var(--orange);background:#fff1d6}.badge-ok{background:var(--green-bg);color:var(--green-dark)}.checklist{flex-direction:column;gap:8px;margin-bottom:12px;display:flex}.check-item{border:2px solid var(--border);cursor:pointer;background:#fff;border-radius:12px;flex-direction:row;align-items:center;gap:12px;padding:12px 14px;font-weight:600;display:flex}.check-item.checked{background:var(--green-bg);border-color:var(--green);color:var(--green-dark);text-decoration:line-through}.chip{border:2px solid var(--border);cursor:pointer;background:#fff;border-radius:999px;padding:8px 14px;font-size:.85rem;font-weight:700}.chip-on{background:var(--green-bg);border-color:var(--green);color:var(--green-dark)}.photo-preview,.photo-hero{border-radius:var(--radius);object-fit:cover;max-width:100%;max-height:240px}.avatar{border-radius:50%;width:40px;height:40px}.invite-box{border:2px dashed var(--blue);border-radius:var(--radius);background:#fff;margin:8px 0;padding:16px}.invite-code{letter-spacing:.15em;color:var(--blue);font-size:1.4rem;font-weight:800}.celebrate{text-align:center}.celebrate-emoji{font-size:80px;animation:.5s pop}@keyframes pop{0%{transform:scale(0)}70%{transform:scale(1.3)}to{transform:scale(1)}}.spinner{border:4px solid var(--border);border-top-color:var(--green);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.reminder-box{border:2px solid var(--border);border-radius:var(--radius);background:#fff;flex-direction:column;gap:8px;padding:12px 14px;display:flex}.check-row{align-items:center;gap:8px}.check-row input[type=checkbox]{width:20px;height:20px;accent-color:var(--green);margin:0}.check-row span{font-weight:600}
