*{box-sizing:border-box}html,body{touch-action:pan-x pan-y;-webkit-text-size-adjust:100%;overscroll-behavior-y:none}body{min-height:100vh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);color:#282a26;background:#f7f6f2;margin:0;font-family:DM Sans,sans-serif}input,select,textarea{font-size:16px!important}button,input{font:inherit}button{cursor:pointer}[hidden]{display:none!important}:focus-visible{outline-offset:3px;outline:3px solid #a6c7a0}.app{background:radial-gradient(circle at 85% 15%,#e9eee4 0,#0000 28%),#f7f6f2;min-height:100vh}.topbar{justify-content:space-between;align-items:center;max-width:1180px;height:88px;margin:auto;padding:0 32px;display:flex}.brand{color:#252924;letter-spacing:-.8px;align-items:center;gap:10px;font:700 24px Outfit,sans-serif;text-decoration:none;display:inline-flex}.brand-mark{color:#fff;background:#50755e;border-radius:9px;place-items:center;width:30px;height:30px;font:700 19px DM Sans,sans-serif;display:grid}.brand-accent{color:#648a69}.topbar-label{color:#91968b;letter-spacing:2px;font-size:11px;font-weight:700}.content{max-width:850px;margin:0 auto;padding:24px 24px 50px}h2,p{margin:0}h2{font-family:Outfit,sans-serif}.card{background:#fff;border:1px solid #e9ece5;border-radius:18px;padding:37px 38px 26px;box-shadow:0 20px 55px #273d2910}.login-card{max-width:440px;margin:0 auto}.login-form{gap:10px;margin-top:28px;display:grid}.login-form label{margin-top:8px;font-size:13px;font-weight:700}.login-form input{background:#fbfcfa;border:1px solid #e4e9e0;border-radius:7px;width:100%;padding:12px}.login-form button{color:#fff;background:#557b60;border:0;border-radius:7px;margin-top:14px;padding:13px;font-weight:700}.login-form button:hover{background:#41694d}.auth-links{gap:18px;margin-top:20px;display:flex}.auth-links a{color:#557b60;font-size:13px;text-decoration:underline}.auth-hint{color:#6c786d;margin-top:14px;font-size:13px}.error{color:#a44343;margin-top:18px;font-size:13px}.card-heading{justify-content:space-between;align-items:end;gap:16px;display:flex}.card-actions{align-items:center;gap:12px;display:flex}.logout{color:#6c786d;background:0 0;border:0;font-size:12px;text-decoration:underline}.section-label{color:#9b9f98;letter-spacing:2px;font-size:10px;font-weight:700}h2{letter-spacing:-.8px;margin-top:9px;font-size:26px;font-weight:600}.progress{color:#55775d;background:#eef4ed;border-radius:7px;flex:none;margin-bottom:4px;padding:8px 12px;font-size:12px;font-weight:700}.task-form{background:#fbfcfa;border:1px solid #e4e9e0;border-radius:9px;align-items:center;gap:10px;margin-top:30px;padding:6px 6px 6px 18px;transition:border-color .2s;display:flex}.task-form:focus-within{border-color:#8fad91}.input-icon{color:#7c9c80;font-size:25px;line-height:1}.task-form input{color:#282a26;background:0 0;border:0;outline:0;flex:1;min-width:0;padding:11px 3px;font-size:14px}.task-form input::placeholder{color:#a4aaa1}.task-form button{color:#fff;background:#557b60;border:0;border-radius:6px;flex:none;padding:12px 19px;font-size:13px;font-weight:700;transition:background .2s}.task-form button:hover{background:#41694d}.task-form button span{margin-left:11px;font-size:17px;font-weight:400}.list-header{border-bottom:1px solid #eef0eb;justify-content:space-between;align-items:center;gap:10px;margin-top:34px;padding-bottom:15px;display:flex}.filters{gap:5px;display:flex}.filter{color:#91968e;background:0 0;border:0;border-radius:6px;padding:8px 11px;font-size:12px;font-weight:700}.filter:hover{color:#50755e}.filter.active{color:#52765b;background:#eef4ed}#task-summary{color:#a0a59d;font-size:12px}.task-list{margin:0;padding:0;list-style:none}.task{border-bottom:1px solid #f0f1ed;align-items:center;gap:12px;min-height:62px;padding:10px 3px;display:flex}.task-label{cursor:pointer;flex:1;align-items:center;gap:13px;min-width:0;font-size:14px;display:flex}.task-label span{overflow-wrap:anywhere}.task-label input{appearance:none;cursor:pointer;border:1.5px solid #bbc9b9;border-radius:5px;flex:none;width:19px;height:19px;margin:0}.task-label input:checked{background:#557b60;border-color:#557b60}.task-label input:checked:after{content:"✓";color:#fff;text-align:center;font-size:13px;line-height:16px;display:block}.completed .task-label span{color:#a7aca5;text-decoration:line-through}.remove{color:#b3b9b0;background:0 0;border:0;font-size:25px;line-height:1}.remove:hover{color:#b15e5e}.empty-state{text-align:center;padding:52px 10px 48px}.empty-icon{color:#78977a;background:#f0f5ed;border-radius:14px;place-items:center;width:48px;height:48px;margin:0 auto 17px;font-size:26px;display:grid}.empty-state strong{font:600 19px Outfit,sans-serif}.empty-state p{color:#a1a79e;margin-top:7px;font-size:13px}.footnote{color:#adb1a9;text-align:center;margin-top:27px;font-size:12px}.footnote span{color:#95aa93;margin-left:5px}.push-controls{color:#557b60;background:#f7faf5;border:1px solid #e4e9e0;border-radius:9px;justify-content:space-between;align-items:center;gap:16px;margin-top:20px;padding:14px 16px;font-size:13px;display:flex}.push-controls[hidden]{display:none}.push-controls>div{flex:none;gap:8px;display:flex}.push-controls button{color:#fff;background:#557b60;border:0;border-radius:6px;padding:9px 12px;font-weight:700}.push-controls button[data-push-dismiss]{color:#6c786d;background:0 0;text-decoration:underline}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=640px){.topbar{height:72px;padding:0 21px}.topbar-label{display:none}.content{padding:16px 16px 32px}.card{padding:27px 18px 17px}.card-heading{align-items:start}.card-actions{flex-direction:column;align-items:end}h2{font-size:22px}.progress{margin-top:15px}.task-form{margin-top:25px;padding-left:12px}.task-form button{padding:12px}.task-form button span{display:none}.list-header{margin-top:25px}.filter{padding:8px 7px;font-size:11px}#task-summary{display:none}input,select,textarea,.task-form input{font-size:16px}.app{padding-bottom:env(safe-area-inset-bottom)}.push-controls{flex-direction:column;align-items:stretch}.push-controls>div{flex-wrap:wrap}}
