:root{--bg:#f4ede3;--card:#fbf7f0;--ink:#35243f;--muted:#7b6e63;--accent:#574fca;--accent-soft:#edebfa;--line:#eae1d3;--check-border:#cdbfae;--danger:#d5545e;--serif:"Zilla Slab", Georgia, "Times New Roman", serif;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--shadow-card:0 1px 2px #35243f0d, 0 12px 32px #35243f14;--shadow-card-sm:0 1px 2px #35243f0a, 0 8px 24px #35243f0d}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}.app{max-width:560px;padding:max(20px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) calc(32px + env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));margin:0 auto}.head{margin:6px 4px 20px}.eyebrow{font-family:var(--serif);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0;font-size:12px;font-weight:600}.eyebrow.accent{color:var(--accent)}.date{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);margin:6px 0 4px;font-size:clamp(30px,9vw,38px);font-weight:700;line-height:1}.subline{color:var(--muted);margin:0;font-size:14px}.hero{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-card);text-align:center;border-radius:22px;margin-bottom:22px;padding:26px 24px 22px;position:relative;overflow:hidden}.ring{border:1.5px solid var(--line);pointer-events:none;border-radius:50%;position:absolute}.ring-1{width:190px;height:190px;top:-30px;right:-40px}.ring-3{width:150px;height:150px;bottom:-70px;left:-46px}.hero .eyebrow,.hero-cap,.stats,.dial{position:relative}@keyframes drift{50%{transform:translate(6px,-9px)}}.ring-1{animation:16s ease-in-out infinite drift}.ring-3{animation:21s ease-in-out infinite reverse drift}.dial{width:158px;margin:12px auto 0}.dial-svg{width:100%;display:block;transform:rotate(-90deg)}.dial-track{fill:none;stroke:var(--accent-soft);stroke-width:7px}.dial-fill{fill:none;stroke:var(--accent);stroke-width:7px;stroke-linecap:round;transition:stroke-dashoffset .6s var(--ease-out)}.dial-center{place-items:center;display:grid;position:absolute;inset:0}.dial.complete{border-radius:50%;animation:.6s ease-out check-pulse}.hero-num{font-family:var(--serif);letter-spacing:-.02em;color:var(--accent);font-variant-numeric:tabular-nums;font-size:52px;font-weight:700;line-height:1.1}.num-window{display:block;overflow:hidden}.num-window>span{display:inline-block}.hero-cap{color:var(--muted);margin:8px 0 0;font-size:14px}.stats{border-top:1px solid var(--line);justify-content:center;gap:34px;margin-top:20px;padding-top:18px;display:flex}.stat{flex-direction:column;gap:4px;display:flex}.stat-n{font-family:var(--serif);color:var(--ink);font-variant-numeric:tabular-nums;font-size:26px;font-weight:700;line-height:1}.stat-l{letter-spacing:.12em;color:var(--muted);font-size:11px;font-weight:600}.add{margin-bottom:8px}.add-input{width:100%;font:16px var(--sans);border:1px solid var(--line);background:var(--card);color:var(--ink);caret-color:var(--accent);border-radius:16px;outline:none;padding:15px 18px;transition:border-color .15s,box-shadow .15s}.add-input::placeholder{color:var(--muted)}.add-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.group-label,.done-header{width:100%;font-family:var(--serif);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);background:0 0;border:none;align-items:center;gap:10px;margin:24px 4px 12px;padding:0;font-size:12px;font-weight:600;display:flex}.group-label:after,.done-header:after{content:"";background:var(--line);flex:1;height:1px}.done-header{cursor:pointer;transition:transform .12s var(--ease-out);transform-origin:0}.done-header:active{transform:scale(.97)}.chevron{transition:transform .2s var(--ease-spring);font-size:10px;display:inline-block}.chevron.open{transform:rotate(90deg)}.list{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-card-sm);border-radius:18px;margin:0;padding:0;list-style:none;overflow:hidden}.row{border-bottom:1px solid var(--line);touch-action:pan-y;position:relative;overflow:hidden}.row:last-child{border-bottom:none}.delete-pane{background:var(--danger);color:#fff;justify-content:flex-end;align-items:center;padding-right:22px;font-weight:600;transition:opacity .1s;display:flex;position:absolute;inset:0}.row-face{background:var(--card);will-change:transform;min-height:56px;transition:transform .25s var(--ease-spring), background .15s;align-items:flex-start;gap:14px;padding:15px 14px 15px 16px;display:flex;position:relative}.row-face.dragging{transition:background .15s}@media (hover:hover){.row:hover .row-face{background:color-mix(in srgb, var(--accent-soft) 30%, var(--card))}.x:hover{color:var(--danger)}}.check{border:2px solid var(--check-border);color:#fff;cursor:pointer;width:26px;height:26px;transition:background .15s, border-color .15s, transform .12s var(--ease-out);background:0 0;border-radius:8px;flex:none;justify-content:center;align-items:center;margin-top:3px;padding:0;font-size:15px;line-height:1;display:flex;position:relative}.check:before{content:"";position:absolute;inset:-10px}.check:active{transform:scale(.92)}.row.done .check{background:var(--accent);border-color:var(--accent)}.tick{width:14px;height:14px;display:block}.tickpath{stroke-dasharray:1;stroke-dashoffset:1px;transition:stroke-dashoffset .25s var(--ease-out) 50ms}.row.done .tickpath{stroke-dashoffset:0}.row.checking .check{animation:.45s ease-out check-pulse}@keyframes check-pulse{0%{box-shadow:0 0 #574fca59}to{box-shadow:0 0 0 14px #574fca00}}.text{color:var(--ink);cursor:text;word-break:break-word;flex:1;padding:4px 0;font-size:16px;transition:color .2s;position:relative}.text-inner{position:relative}.text:has(.text-detail) .text-inner{font-weight:550}.text-detail{white-space:pre-wrap;color:var(--muted);margin-top:5px;font-size:14px;line-height:1.6;display:block}.text-inner:after{content:"";transform-origin:0;height:1.5px;transition:transform .25s var(--ease-out) .1s;background:currentColor;position:absolute;top:50%;left:0;right:0;transform:scaleX(0)}.row.done .text{color:var(--muted)}.row.done .text-inner:after{transform:scaleX(1)}.edit-input{font:16px var(--sans);color:var(--ink);caret-color:var(--accent);resize:none;background:0 0;border:none;outline:none;flex:1;padding:4px 0;line-height:1.5}.x{color:var(--muted);cursor:pointer;opacity:0;transition:opacity .15s, transform .12s var(--ease-out);background:0 0;border:none;flex:none;margin-top:3px;padding:6px;font-size:15px;position:relative}.x:after{content:"";position:absolute;inset:-8px}.x:active{transform:scale(.96)}.row:hover .x,.x:focus-visible{opacity:1}@media (hover:none){.x{display:none}}.empty{text-align:center;animation:fade-up .35s var(--ease-out);padding:34px 0 26px}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}}.empty-mark{width:48px}.empty-title{font-family:var(--serif);color:var(--ink);margin:12px 0 2px;font-size:20px;font-weight:700}.empty-sub{color:var(--muted);margin:0;font-size:14px}.done-section{margin-top:4px}.viewtabs{background:var(--card);border:1px solid var(--line);border-radius:14px;gap:4px;margin-bottom:22px;padding:4px;display:flex;position:relative}.viewtabs:before{content:"";background:var(--accent-soft);width:calc(50% - 6px);transition:transform .3s var(--ease-spring);border-radius:10px;position:absolute;top:4px;bottom:4px;left:4px}.viewtabs[data-view=calendar]:before{transform:translate(calc(100% + 4px))}.viewtab{color:var(--muted);font-family:var(--serif);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;transition:background .15s, color .15s, transform .12s var(--ease-out);background:0 0;border:none;border-radius:10px;flex:1;padding:9px 0;font-size:13px;font-weight:600;position:relative}.viewtab:active{transform:scale(.96)}.viewtab.on{color:var(--accent)}.cal{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-card);border-radius:22px;margin-bottom:8px;padding:20px 18px 22px;position:relative;overflow:hidden}.cal-head{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.cal-title{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);margin:0;font-size:22px;font-weight:700}.cal-nav{border:1px solid var(--line);width:44px;height:44px;color:var(--ink);cursor:pointer;transition:border-color .15s, background .15s, color .15s, transform .12s var(--ease-out);background:0 0;border-radius:12px;font-size:20px;line-height:1}.cal-nav:hover{border-color:var(--accent);color:var(--accent)}.cal-nav:active{transform:scale(.96)}.cal-weekdays,.cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.cal-weekdays{margin-bottom:6px}.cal-weekdays span{text-align:center;letter-spacing:.08em;color:var(--muted);font-size:11px;font-weight:600}.cal-grid{gap:2px}.cal-cell{cursor:pointer;min-width:0;min-height:46px;transition:background .15s, border-color .15s, transform .15s var(--ease-spring);background:0 0;border:1px solid #0000;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:6px 0;display:flex;position:relative}.cal-cell:active{transform:scale(.94)}.cal-cell.empty-cell{pointer-events:none}.cal-num{font-family:var(--serif);color:var(--ink);font-size:16px;font-weight:600;line-height:1}.cal-cell:hover{background:var(--bg)}.cal-cell.today .cal-num{color:var(--accent)}.cal-cell.today{border-color:var(--accent-soft)}.cal-cell.sel{background:var(--accent-soft);border-color:var(--accent);transform:scale(1.04)}.cal-cell.sel:active{transform:scale(.97)}.cal-dot{background:var(--accent);width:5px;height:5px;animation:dot-pop .25s var(--ease-spring) backwards;border-radius:50%}@keyframes dot-pop{0%{transform:scale(0)}}.cal-dot.alldone{border:1.5px solid var(--check-border);background:0 0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
