@font-face{font-family:Geist;src:url(/fonts/Geist-Variable.woff2)format("woff2-variations");font-weight:100 900;font-display:swap;font-style:normal}@font-face{font-family:Geist Mono;src:url(/fonts/GeistMono-Variable.woff2)format("woff2-variations");font-weight:100 900;font-display:swap;font-style:normal}:root{--c-bg:#f8f7f4;--c-surface:#fff;--c-surface-dim:#f0efec;--c-border:#d6d3ce;--c-divider:#e8e6e1;--c-text:#1a1a1a;--c-text-2:#5c5c5c;--c-text-3:#9c9c9c;--c-text-inv:#fafaf8;--c-accent:#3d3d4e;--c-accent-hover:#2a2a38;--c-accent-soft:#eeede8;--c-accent-ring:#3d3d4e1f;--c-danger:#c4421a;--c-danger-soft:#fdf0ec;--c-success:#3a7d44;--c-success-soft:#edf7ef;--tag-rose:#e8d5d0;--tag-rose-text:#8b5e54;--tag-sky:#d0dde8;--tag-sky-text:#4e6b82;--tag-sage:#d4e0d0;--tag-sage-text:#4e6b4e;--tag-amber:#e8ddd0;--tag-amber-text:#7a6544;--shadow-xs:0 1px 2px #28241c0a;--shadow-sm:0 1px 3px #28241c0f, 0 1px 2px #28241c08;--shadow-md:0 4px 16px #28241c14;--shadow-lg:0 8px 32px #28241c1a;--shadow-focus:0 0 0 3px var(--c-accent-ring);--r-xs:4px;--r-sm:6px;--r-md:10px;--r-lg:14px;--r-xl:20px;--r-pill:9999px;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--ease-smooth:cubic-bezier(.4, 0, .2, 1);--ease-snap:cubic-bezier(.2, 0, 0, 1);--font-sans:"Geist", "Geist Sans", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Microsoft YaHei", sans-serif;--font-mono:"Geist Mono", "SF Mono", "Fira Code", Consolas, monospace;font-family:var(--font-sans);color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"kern" 1, "cv01" 1;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-size:15px;line-height:1.6}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}:root:not([data-theme=light]){--c-bg:#111110;--c-surface:#1a1918;--c-surface-dim:#151413;--c-border:#3a3835;--c-divider:#2a2826;--c-text:#edece9;--c-text-2:#a0a0a0;--c-text-3:#6b6b6b;--c-accent:#b8b8c8;--c-accent-hover:#d0d0e0;--c-accent-soft:#b8b8c814;--c-accent-ring:#b8b8c826;--c-danger:#e8715a;--c-danger-soft:#e8715a1a;--c-success:#6bcb77;--c-success-soft:#6bcb771a;--tag-rose:#8b5e5433;--tag-rose-text:#d4a090;--tag-sky:#4e6b8233;--tag-sky-text:#90b8d4;--tag-sage:#4e6b4e33;--tag-sage-text:#90c890;--tag-amber:#7a654433;--tag-amber-text:#d4b890;--shadow-xs:0 1px 2px #0003;--shadow-sm:0 1px 3px #00000040, 0 1px 2px #00000026;--shadow-md:0 4px 16px #00000059;--shadow-lg:0 8px 32px #00000073}}[data-theme=dark]{--c-bg:#111110;--c-surface:#1a1918;--c-surface-dim:#151413;--c-border:#3a3835;--c-divider:#2a2826;--c-text:#edece9;--c-text-2:#a0a0a0;--c-text-3:#6b6b6b;--c-accent:#b8b8c8;--c-accent-hover:#d0d0e0;--c-accent-soft:#b8b8c814;--c-accent-ring:#b8b8c826;--c-danger:#e8715a;--c-danger-soft:#e8715a1a;--c-success:#6bcb77;--c-success-soft:#6bcb771a;--tag-rose:#8b5e5433;--tag-rose-text:#d4a090;--tag-sky:#4e6b8233;--tag-sky-text:#90b8d4;--tag-sage:#4e6b4e33;--tag-sage-text:#90c890;--tag-amber:#7a654433;--tag-amber-text:#d4b890;--shadow-xs:0 1px 2px #0003;--shadow-sm:0 1px 3px #00000040, 0 1px 2px #00000026;--shadow-md:0 4px 16px #00000059;--shadow-lg:0 8px 32px #00000073}*,:before,:after{box-sizing:border-box;margin:0}body{min-height:100dvh;position:relative}body:before{content:"";z-index:9999;pointer-events:none;opacity:.025;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:200px;position:fixed;inset:0}::selection{color:var(--c-text);background:#3d3d4e1f}.todo-app{flex-direction:column;gap:1.75rem;max-width:580px;margin:0 auto;padding:3rem 1.75rem 5rem;display:flex}.todo-header{animation:fadeUp .7s var(--ease-out) both;flex-direction:column;gap:.375rem;display:flex}.todo-eyebrow{text-transform:uppercase;letter-spacing:.14em;width:fit-content;color:var(--c-text-3);background:var(--c-surface-dim);border:1px solid var(--c-divider);border-radius:var(--r-pill);align-items:center;margin-bottom:.5rem;padding:.25rem .75rem;font-size:.625rem;font-weight:600;display:inline-flex}.todo-app h1{color:var(--c-text);letter-spacing:-.04em;text-wrap:balance;font-size:1.875rem;font-weight:700;line-height:1.15}.todo-subtitle{color:var(--c-text-3);letter-spacing:-.01em;font-size:.8125rem;font-weight:400}.todo-actions{animation:fadeUp .7s var(--ease-out) 80ms both;justify-content:flex-end;gap:.375rem;display:flex}.todo-actions button,.todo-actions label{background:var(--c-surface);color:var(--c-text-2);border:1px solid var(--c-divider);border-radius:var(--r-md);cursor:pointer;transition:all .2s var(--ease-smooth);letter-spacing:-.01em;align-items:center;gap:.375rem;padding:.4375rem .875rem;font-family:inherit;font-size:.75rem;font-weight:500;display:inline-flex}.todo-actions button:hover,.todo-actions label:hover{color:var(--c-text);border-color:var(--c-border);background:var(--c-surface-dim);box-shadow:var(--shadow-xs)}.todo-actions button:active,.todo-actions label:active{transform:scale(.97)}.todo-actions svg{opacity:.6;flex-shrink:0;width:13px;height:13px}.todo-input-wrapper{border-bottom:1.5px solid var(--c-border);transition:border-color .35s var(--ease-out);animation:fadeUp .7s var(--ease-out) .12s both;align-items:center;gap:.625rem;padding:0;display:flex}.todo-input-icon{width:14px;height:14px;color:var(--c-text-3);transition:color .25s var(--ease-out);flex-shrink:0}.todo-input-wrapper:focus-within .todo-input-icon{color:var(--c-accent)}.todo-input-wrapper:focus-within{border-color:var(--c-accent)}.todo-input-wrapper input[type=text]{color:var(--c-text);letter-spacing:-.01em;background:0 0;border:none;outline:none;flex:1;padding:.75rem 0;font-family:inherit;font-size:.9375rem;font-weight:500}.todo-input-wrapper input[type=text]::placeholder{color:var(--c-text-3);font-weight:400}.todo-input-wrapper .add-btn{color:var(--c-text-inv);background:var(--c-accent);border-radius:var(--r-md);cursor:pointer;transition:all .18s var(--ease-spring);letter-spacing:-.01em;border:none;flex-shrink:0;padding:.4375rem 1rem;font-family:inherit;font-size:.8125rem;font-weight:600}.todo-input-wrapper .add-btn:hover{background:var(--c-accent-hover);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.todo-input-wrapper .add-btn:active{transform:scale(.96)translateY(0)}.todo-search{border-bottom:1px solid var(--c-divider);transition:border-color .25s var(--ease-out);animation:fadeUp .7s var(--ease-out) .16s both;align-items:center;gap:.5rem;padding:.4375rem 0;display:flex}.todo-search:focus-within{border-color:var(--c-accent)}.todo-search-icon{width:14px;height:14px;color:var(--c-text-3);transition:color .25s var(--ease-out);flex-shrink:0}.todo-search:focus-within .todo-search-icon{color:var(--c-accent)}.todo-search input[type=text]{color:var(--c-text);letter-spacing:-.01em;background:0 0;border:none;outline:none;flex:1;padding:0;font-family:inherit;font-size:.8125rem;font-weight:500}.todo-search input[type=text]::placeholder{color:var(--c-text-3);font-weight:400}.todo-search .search-count{color:var(--c-accent);background:var(--c-accent-soft);border-radius:var(--r-pill);font-variant-numeric:tabular-nums;flex-shrink:0;padding:.125rem .5rem;font-size:.6875rem;font-weight:600}.todo-filters{color:var(--c-text-3);animation:fadeUp .7s var(--ease-out) .2s both;flex-wrap:wrap;align-items:center;gap:.625rem;font-size:.8125rem;display:flex}.todo-filters .count-label{letter-spacing:-.01em;font-weight:400}.todo-filters .count-label strong{color:var(--c-text-2);font-variant-numeric:tabular-nums;font-weight:600}.filter-buttons{background:var(--c-surface-dim);border:1px solid var(--c-divider);border-radius:var(--r-pill);gap:0;margin-left:auto;padding:.1875rem;display:inline-flex}.filter-buttons button{color:var(--c-text-3);cursor:pointer;transition:all .25s var(--ease-spring);border-radius:var(--r-pill);letter-spacing:-.01em;background:0 0;border:none;padding:.375rem .75rem;font-family:inherit;font-size:.75rem;font-weight:500;position:relative}.filter-buttons button:hover{color:var(--c-text-2)}.filter-buttons button[aria-pressed=true]{color:var(--c-text);background:var(--c-surface);box-shadow:var(--shadow-sm), 0 0 0 1px var(--c-divider);font-weight:600}.clear-completed-btn{border-radius:var(--r-sm);color:var(--c-text-3);cursor:pointer;transition:all .18s var(--ease-smooth);background:0 0;border:none;padding:.375rem .75rem;font-family:inherit;font-size:.75rem;font-weight:500}.clear-completed-btn:hover{color:var(--c-danger);background:var(--c-danger-soft)}.todo-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.todo-list+p,.todo-filters+p{text-align:center;color:var(--c-text-3);padding:2.5rem 0;font-size:.875rem}.todo-empty{text-align:center;animation:fadeUp .7s var(--ease-out) both;flex-direction:column;align-items:center;gap:1rem;padding:4rem 1.5rem;display:flex;position:relative}.todo-empty:before{content:"";background:radial-gradient(circle, var(--c-accent-soft) 0%, transparent 70%);pointer-events:none;opacity:.6;border-radius:50%;width:200px;height:200px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.todo-empty-icon{width:2.5rem;height:2.5rem;color:var(--c-text-3);opacity:.35;z-index:1;position:relative}.todo-empty p{color:var(--c-text-3);z-index:1;margin:0;font-size:.875rem;position:relative}.todo-item{border-radius:var(--r-lg);transition:background .25s var(--ease-smooth), box-shadow .25s var(--ease-smooth);animation:itemIn .5s var(--ease-out) both;align-items:flex-start;gap:.875rem;padding:.9375rem .875rem;display:flex}.todo-item+.todo-item{border-top:1px solid var(--c-divider)}.todo-item:hover{background:var(--c-surface-dim)}.todo-item:first-child{animation-delay:0s}.todo-item:nth-child(2){animation-delay:40ms}.todo-item:nth-child(3){animation-delay:80ms}.todo-item:nth-child(4){animation-delay:.12s}.todo-item:nth-child(5){animation-delay:.16s}.todo-item:nth-child(6){animation-delay:.2s}.todo-item:nth-child(7){animation-delay:.24s}.todo-item:nth-child(8){animation-delay:.28s}.todo-item .checkbox-wrapper{flex-shrink:0;width:1.25rem;height:1.25rem;margin-top:.125rem;position:relative}.todo-item input[type=checkbox]{opacity:0;cursor:pointer;z-index:1;width:100%;height:100%;margin:0;position:absolute}.todo-item .checkbox-visual{border:1.5px solid var(--c-border);border-radius:var(--r-xs);width:1.25rem;height:1.25rem;transition:all .25s var(--ease-spring);background:var(--c-surface);justify-content:center;align-items:center;display:flex}.todo-item .checkbox-visual svg{stroke:#fff;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;fill:none;opacity:0;width:8px;height:8px;transition:all .3s var(--ease-spring);transform:scale(.3)}.todo-item input:checked+.checkbox-visual{background:var(--c-accent);border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-ring)}.todo-item input:checked+.checkbox-visual svg{opacity:1;transform:scale(1)}.todo-item input:focus-visible+.checkbox-visual{box-shadow:var(--shadow-focus)}.todo-item .todo-content{flex-direction:column;flex:1;gap:.1875rem;min-width:0;display:flex}.todo-item .todo-text{color:var(--c-text);word-break:break-word;letter-spacing:-.015em;font-size:.9375rem;font-weight:500;line-height:1.5;transition:color .25s,opacity .25s}.todo-item.completed .todo-text{text-decoration:line-through;-webkit-text-decoration-color:var(--c-text-3);text-decoration-color:var(--c-text-3);color:var(--c-text-3);opacity:.7}.todo-item .delete-btn{border-radius:var(--r-sm);width:1.875rem;height:1.875rem;color:var(--c-text-3);cursor:pointer;opacity:0;transition:all .18s var(--ease-smooth);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin-top:-.0625rem;font-family:inherit;display:flex}.todo-item .delete-btn svg{width:14px;height:14px}.todo-item:hover .delete-btn{opacity:1}.todo-item .delete-btn:hover{color:var(--c-danger);background:var(--c-danger-soft);transform:scale(1.05)}.todo-item .delete-btn:active{transform:scale(.88)}.todo-item.editing{background:var(--c-surface);box-shadow:var(--shadow-sm);border-radius:var(--r-lg)}.todo-item.editing .todo-text-input{width:100%;color:var(--c-text);background:var(--c-surface-dim);border:1.5px solid var(--c-accent);border-radius:var(--r-sm);transition:box-shadow .25s var(--ease-smooth);letter-spacing:-.015em;outline:none;padding:.4375rem .75rem;font-family:inherit;font-size:.9375rem;font-weight:500}.todo-item.editing .todo-text-input:focus{box-shadow:var(--shadow-focus)}.todo-item .due-date{font-size:.6875rem;font-family:var(--font-mono);color:var(--c-text-3);letter-spacing:-.02em;align-items:center;gap:.25rem;width:fit-content;font-weight:500;display:inline-flex}.todo-item .due-date .due-icon{opacity:.5;width:12px;height:12px}.todo-item .due-date.overdue{background:var(--c-danger-soft);color:var(--c-danger);border-radius:var(--r-pill);padding:.125rem .5rem;font-weight:600}.todo-item .tag-chips{flex-wrap:wrap;gap:.25rem;margin-top:.1875rem;display:flex}.todo-item .tag-chip{letter-spacing:.04em;border-radius:var(--r-pill);background:var(--c-accent-soft);color:var(--c-accent);text-transform:none;align-items:center;gap:.25rem;padding:.125rem .5rem;font-size:.625rem;font-weight:600;display:inline-flex}.todo-item .tag-chip button{color:inherit;cursor:pointer;opacity:.4;background:0 0;border:none;margin:0;padding:0;font-family:inherit;font-size:.6875rem;line-height:1;transition:opacity .15s}.todo-item .tag-chip button:hover{opacity:1}.todo-tag-input{flex-direction:column;gap:.375rem;display:flex}.todo-tag-input .tag-chips{flex-wrap:wrap;gap:.25rem;display:flex}.todo-tag-input .tag-chip{letter-spacing:.04em;border-radius:var(--r-pill);background:var(--c-accent-soft);color:var(--c-accent);text-transform:none;align-items:center;gap:.25rem;padding:.125rem .5rem;font-size:.625rem;font-weight:600;display:inline-flex}.todo-tag-input .tag-chip button{color:inherit;cursor:pointer;opacity:.4;background:0 0;border:none;margin:0;padding:0;font-family:inherit;font-size:.6875rem;line-height:1;transition:opacity .15s}.todo-tag-input .tag-chip button:hover{opacity:1}.todo-tag-input>input[type=text]{color:var(--c-text);border:none;border-bottom:1px solid var(--c-divider);transition:border-color .25s var(--ease-out);letter-spacing:-.01em;background:0 0;outline:none;padding:.4375rem .625rem;font-family:inherit;font-size:.8125rem;font-weight:500}.todo-tag-input>input[type=text]:focus{border-bottom-color:var(--c-accent)}.todo-tag-input>input[type=text]::placeholder{color:var(--c-text-3);font-weight:400}.todo-tag-input .preset-tags{flex-wrap:wrap;gap:.25rem;display:flex}.todo-tag-input .preset-tags button{border:1px dashed var(--c-border);border-radius:var(--r-pill);color:var(--c-text-3);cursor:pointer;transition:all .18s var(--ease-smooth);background:0 0;padding:.1875rem .5rem;font-family:inherit;font-size:.6875rem;font-weight:500}.todo-tag-input .preset-tags button:hover{border-color:var(--c-accent);color:var(--c-accent);background:var(--c-accent-soft);border-style:solid}.todo-date-picker{align-items:center;gap:.375rem;margin-top:.125rem;display:inline-flex}.todo-date-picker input[type=date]{font-family:var(--font-mono);border:1px solid var(--c-divider);border-radius:var(--r-sm);background:var(--c-surface);color:var(--c-text-2);cursor:pointer;padding:.25rem .5rem;font-size:.75rem;font-weight:500;transition:all .18s}.todo-date-picker input[type=date]:focus{border-color:var(--c-accent);box-shadow:var(--shadow-focus);outline:none}.todo-date-picker input[type=date]::-webkit-calendar-picker-indicator{opacity:.4;cursor:pointer}.todo-date-picker .overdue{background:var(--c-danger-soft);color:var(--c-danger);border-radius:var(--r-pill);align-items:center;gap:.25rem;padding:.125rem .5rem;font-size:.6875rem;font-weight:600;display:inline-flex}.todo-toast-container{z-index:100;pointer-events:none;flex-direction:column;gap:.5rem;display:flex;position:fixed;bottom:1.25rem;left:50%;transform:translate(-50%)}.todo-toast{background:var(--c-surface);border:1px solid var(--c-divider);border-radius:var(--r-lg);color:var(--c-text);box-shadow:var(--shadow-lg);animation:toastIn .45s var(--ease-out) both;pointer-events:auto;letter-spacing:-.01em;align-items:center;gap:.75rem;padding:.8125rem 1.125rem;font-size:.8125rem;font-weight:500;display:flex}.todo-toast .undo-btn{border-radius:var(--r-md);background:var(--c-accent);color:var(--c-text-inv);cursor:pointer;transition:all .2s var(--ease-spring);letter-spacing:-.01em;border:none;flex-shrink:0;padding:.3125rem .875rem;font-family:inherit;font-size:.75rem;font-weight:600}.todo-toast .undo-btn:hover{background:var(--c-accent-hover);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.todo-toast .undo-btn:active{transform:scale(.95)translateY(0)}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes itemIn{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes toastIn{0%{opacity:0;transform:translateY(12px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-delay:0s!important}}@media (width<=640px){.todo-app{gap:1.375rem;padding:1.5rem 1.25rem 3.5rem}.todo-app h1{font-size:1.5rem}.todo-item .delete-btn{opacity:1}.todo-filters{flex-direction:column;align-items:stretch;gap:.625rem}.todo-filters .count-label{text-align:center}.filter-buttons{justify-content:center;margin-left:0}.filter-buttons button{padding:.4375rem .875rem;font-size:.8125rem}}
