.todo-toolbar{display:flex;align-items:end;flex-wrap:wrap;gap:12px;margin:0 0 22px}.todo-tabs{display:flex;gap:6px;padding:4px;border:1px solid #e1e1d8;border-radius:12px;background:#ffffff7d}.todo-tabs .btn{border:0;border-radius:8px;background:transparent}.todo-tabs [aria-pressed=true]{background:var(--ink);color:#fff}.todo-total{margin-left:auto;padding-bottom:10px;color:var(--muted);font-size:11px}.todo-list{display:grid;gap:22px;max-width:1180px}.todo-group{border:1px solid #e3e2d9;border-radius:15px;background:#fbfaf5;overflow:hidden}.todo-group>header{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid #e6e5dc;background:#f4f3ec}.todo-group>header h2{margin:0;font-size:12px;font-weight:650}.todo-group>header span{display:inline-flex;min-width:20px;height:20px;align-items:center;justify-content:center;border-radius:10px;background:#e6e6dd;color:var(--muted);font-size:10px}.todo-group[data-group=overdue]>header{background:#f7eee8}.todo-group[data-group=overdue]>header h2{color:#a14f31}.todo-row{display:grid;grid-template-columns:42px minmax(0,1fr);min-height:70px;border-bottom:1px solid #e8e7de;background:#fffefb}.todo-row:last-child{border-bottom:0}.todo-row:hover{background:#fafaf4}.todo-row.is-complete .todo-row-copy strong{text-decoration:line-through;color:#818078}.todo-check{align-self:start;width:20px;height:20px;margin:19px 0 0 16px;padding:0;border:1.6px solid #a9aaa2;border-radius:50%;background:#fff;cursor:pointer}.todo-check:hover{border-color:#4d8669}.todo-check:active{transform:scale(.94)}.todo-check.is-checked{border-color:#4d8669;background:#4d8669}.todo-check.is-checked span::after{content:"";display:block;width:7px;height:4px;margin:5px 0 0 5px;border-left:1.8px solid #fff;border-bottom:1.8px solid #fff;transform:rotate(-45deg)}.todo-check:disabled{cursor:default;opacity:.35}.todo-row-open{min-width:0;display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:24px;align-items:center;padding:13px 18px 13px 5px;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer}.todo-row-copy{min-width:0}.todo-row-copy strong,.todo-row-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.todo-row-copy strong{font-size:14px;line-height:1.5}.todo-row-copy small{max-width:680px;margin-top:4px;color:var(--muted);font-size:11px}.todo-row-meta{display:flex;align-items:center;justify-content:flex-end;gap:12px;color:var(--muted);font-size:10px;white-space:nowrap}.todo-row-meta time{font-variant-numeric:tabular-nums}.todo-progress{padding:3px 7px;border-radius:8px;background:#ecefe8;color:#51705e}.todo-countdown{min-width:74px;padding:5px 8px;border-radius:8px;background:#edf3ee;color:#3d7258;font-weight:650;text-align:center}.todo-countdown.is-overdue{background:#f8e8de;color:#a14f31}.todo-load-more{display:flex;justify-content:center;max-width:1180px;margin-top:18px}.todo-detail-layer{position:fixed;inset:0;z-index:90}.todo-detail-scrim{position:absolute;inset:0;width:100%;height:100%;border:0;background:#2830291f;backdrop-filter:blur(2px)}.todo-detail{position:absolute;top:0;right:0;width:min(440px,100vw);height:100dvh;display:flex;flex-direction:column;overflow:auto;border-left:1px solid #ffffffed;background:#fbfaf3;box-shadow:-24px 0 70px #20342b1c}.todo-detail>header{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding:25px 25px 19px;border-bottom:1px solid var(--line)}.todo-detail>header span{color:var(--muted);font-size:10px;letter-spacing:1.4px}.todo-detail>header h2{max-width:330px;margin:5px 0 0;font-size:19px;line-height:1.45;overflow-wrap:anywhere}.todo-detail-close{width:36px;height:36px;flex:0 0 36px;border:0;border-radius:50%;background:#eeede5;color:var(--muted);font-size:22px;cursor:pointer}.todo-detail-countdown{margin:20px 25px 0;padding:10px 13px;border-radius:10px;background:#edf3ee;color:#3d7258;font-size:12px;font-weight:650}.todo-detail-countdown.is-overdue{background:#f8e8de;color:#a14f31}.todo-detail-form,.todo-detail-readonly{padding:4px 25px 28px}.todo-detail-form .field{margin:18px 0}.todo-detail-form textarea{resize:vertical;line-height:1.7}.todo-detail-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:24px;padding-top:18px;border-top:1px solid var(--line)}.todo-detail-readonly h3{margin:24px 0 10px;font-size:18px}.todo-detail-readonly>p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.75}.todo-detail-readonly dl{margin:24px 0}.todo-detail-readonly dl>div{display:grid;grid-template-columns:82px minmax(0,1fr);gap:15px;padding:11px 0;border-bottom:1px solid var(--line);font-size:12px}.todo-detail-readonly dt{color:var(--muted)}.todo-detail-readonly dd{margin:0;overflow-wrap:anywhere}
@media(max-width:860px){.todo-row-open{grid-template-columns:minmax(0,1fr)}.todo-row-meta{justify-content:flex-start;flex-wrap:wrap;gap:8px 12px}.todo-countdown{margin-left:auto}.todo-row-copy small{max-width:60vw}}
@media(max-width:700px){.todo-toolbar{align-items:stretch;gap:10px}.todo-tabs{width:100%}.todo-tabs .btn{flex:1}.todo-toolbar .filter{flex:1;min-width:140px}.todo-total{width:100%;margin:0;padding:0}.todo-list{gap:17px}.todo-group{border-radius:13px}.todo-row{grid-template-columns:38px minmax(0,1fr)}.todo-row-open{gap:7px;padding:12px 12px 12px 2px}.todo-check{margin-left:12px}.todo-row-copy strong{font-size:13px}.todo-row-copy small{max-width:72vw}.todo-row-meta{font-size:9px}.todo-row-meta>span:first-child{max-width:100px;overflow:hidden;text-overflow:ellipsis}.todo-countdown{min-width:66px;padding:4px 7px}.todo-detail-layer{display:flex;align-items:flex-end}.todo-detail-scrim{background:#2d312b42}.todo-detail{position:relative;top:auto;right:auto;width:100%;height:auto;max-height:88dvh;border-left:0;border-top:1px solid #fff;border-radius:22px 22px 0 0;box-shadow:0 -20px 60px #26352d26}.todo-detail::before{content:"";display:block;width:38px;height:4px;margin:9px auto -8px;border-radius:4px;background:#d5d4ca}.todo-detail>header{padding:22px 20px 16px}.todo-detail>header h2{max-width:270px;font-size:17px}.todo-detail-countdown{margin:16px 20px 0}.todo-detail-form,.todo-detail-readonly{padding:2px 20px 24px}.todo-detail-form .field{margin:15px 0}}
