*{box-sizing:border-box}body{margin:0}.app-shell--full{max-width:680px}.skip-link{position:absolute;left:-9999px}.skip-link:focus{left:1rem;top:1rem;z-index:9;background:var(--surface);padding:.75rem}.topbar{display:flex;align-items:center;justify-content:space-between;padding:1.35rem 0 1rem}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.68rem;font-weight:700;color:var(--color-teal-dark);margin:0}.topbar h1{font-size:2rem;line-height:1;margin:.22rem 0;color:var(--color-primary)}button,.button{font:inherit}.icon-button,.month-nav button{width:44px;height:44px;border:1px solid var(--border);border-radius:50%;background:var(--surface-raised);color:var(--text);cursor:pointer}.month-card{background:linear-gradient(145deg,var(--color-primary),var(--color-secondary));color:#fff;border-radius:22px;padding:1.2rem;box-shadow:0 10px 25px var(--color-primary-shadow)}.month-nav{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;text-align:center}.month-nav h2{font-size:1.45rem;margin:0}.month-nav p{margin:.1rem 0 0;font-size:.8rem;opacity:.82}.month-nav button{color:#fff;background:#ffffff20;border-color:#ffffff38;font-size:1.8rem}.progress-row{display:flex;justify-content:space-around;text-align:center;margin:1.15rem 0 .75rem}.progress-row div{display:flex;flex-direction:column}.progress-row strong{font-size:1.15rem}.progress-row span{font-size:.68rem;opacity:.8}.progress-track{height:6px;background:#ffffff35;border-radius:9px;overflow:hidden}.progress-track span{display:block;height:100%;width:0;background:#fff;transition:width .25s}.filters{display:flex;gap:.5rem;margin:1.2rem 0;overflow:auto}.filters button{border:1px solid var(--border);background:var(--surface-raised);color:var(--text-muted);padding:.55rem .9rem;border-radius:999px;white-space:nowrap}.filters button.active{background:var(--color-teal);border-color:var(--color-teal);color:#fff}.days{display:grid;gap:.85rem}.day-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:18px;overflow:hidden}.day-card.today{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-shadow)}.day-head{display:flex;align-items:center;gap:.9rem;padding:1rem}.date-badge{width:48px;text-align:center;flex:none}.date-badge b{font-size:1.4rem;display:block;color:var(--color-primary)}.date-badge span{font-size:.65rem;text-transform:uppercase;color:var(--text-muted)}.day-head h3{margin:0;font-size:1rem}.day-head p{margin:.12rem 0 0;font-size:.77rem;color:var(--text-muted)}.tasks{border-top:1px solid var(--border)}.task{display:grid;grid-template-columns:32px 1fr auto;align-items:center;gap:.55rem;padding:.75rem 1rem;border-bottom:1px solid var(--border)}.task:last-child{border:0}.check{width:28px;height:28px;border:2px solid var(--color-teal);border-radius:9px;background:transparent;color:white;cursor:pointer}.task.done .check{background:var(--color-teal)}.task.done .check:after{content:'✓'}.task.done .task-text{text-decoration:line-through;opacity:.58}.tag{display:block;font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;color:var(--color-teal-dark);font-weight:700}.task-text{font-size:.88rem}.votes{display:flex;gap:.2rem}.vote{border:0;background:transparent;border-radius:8px;padding:.4rem;color:var(--text-muted);cursor:pointer}.vote.selected{background:var(--color-primary-light);color:var(--color-primary)}footer{padding:1.5rem 0;text-align:center;display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem}.button{border-radius:12px;padding:.75rem 1rem;border:1px solid var(--color-primary);cursor:pointer}.primary{background:var(--color-primary);color:#fff}.secondary{background:transparent;color:var(--color-primary)}footer p{width:100%;font-size:.72rem;color:var(--text-muted)}.empty{text-align:center;padding:3rem 1rem;color:var(--text-muted)}.empty span{font-size:2.5rem}.toast{position:fixed;left:50%;bottom:1.5rem;transform:translate(-50%,120px);background:var(--text);color:var(--surface);padding:.7rem 1rem;border-radius:10px;transition:.2s;z-index:5}.toast.show{transform:translate(-50%,0)}@media(max-width:430px){.task{grid-template-columns:30px 1fr}.votes{grid-column:2;justify-self:start}.progress-row{font-size:.9rem}}
