@import "https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,500;0,600;0,700;0,800;0,900;1,400;1,600&family=Lora:ital,wght@0,500;0,600;1,500;1,600&display=swap&subset=vietnamese,latin";:root{--paper:#f4ebda;--paper-2:#efe3cd;--card:#fffbf3;--card-2:#fbf4e6;--backdrop:#d8c9ac;--ink:#2e2a20;--ink-soft:#746c58;--ink-faint:#a79c84;--line:#e7dac0;--line-soft:#efe6d3;--forest:#436043;--forest-deep:#2e472e;--sage:#8aa381;--sage-tint:#e5ebdc;--plant:#51743f;--plant-tint:#e7edd8;--pet:#c06b3a;--pet-tint:#f6e4d2;--chore:#be9038;--chore-tint:#f4e9cc;--over:#b5563b;--over-tint:#f3ddd1;--done:#5c8060;--rose:#b56a6a;--teal:#5c8a82;--shadow-sm:0 1px 2px #2e2a200d;--shadow:0 1px 2px #2e2a200d, 0 10px 26px -14px #2e2a204d;--shadow-lg:0 2px 6px #2e2a200f, 0 24px 50px -18px #2e2a2066;--r-lg:26px;--r-md:18px;--r-sm:13px;--tint-base:#fffbf3;--cat-lift:0%;--cat-tint-pct:16%;--bg-top:#dddbc6}@media (prefers-color-scheme:dark){:root{--paper:#1e1b15;--paper-2:#252118;--card:#2a2620;--card-2:#322d24;--backdrop:#15120d;--ink:#f1e9d8;--ink-soft:#b6ab92;--ink-faint:#837a66;--line:#3b352b;--line-soft:#2f2a22;--forest:#93b889;--forest-deep:#345034;--sage:#8aa381;--sage-tint:#2c3a2a;--plant:#8fb477;--plant-tint:#2c3a26;--pet:#e08a56;--pet-tint:#3a2a1e;--chore:#dcb152;--chore-tint:#3a311c;--over:#e0805e;--over-tint:#3c2920;--done:#8fb486;--tint-base:#2a2620;--cat-lift:38%;--cat-tint-pct:26%;--shadow-sm:0 1px 2px #00000073;--shadow:0 1px 2px #00000073, 0 12px 28px -14px #000000b3;--shadow-lg:0 2px 6px #00000080, 0 24px 54px -18px #000c;--bg-top:#36392d}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}::view-transition{background:var(--paper)}::view-transition-old(root){animation-duration:.18s}::view-transition-new(root){animation-duration:.18s}@media (width>=521px){::view-transition-group(*){animation:none!important}::view-transition-old(*){animation:none!important}::view-transition-new(*){animation:none!important}}@keyframes vt-slide-in-right{0%{transform:translate(100%)}}@keyframes vt-recede-left{to{opacity:.65;transform:translate(-28%)}}@keyframes vt-return-from-left{0%{opacity:.65;transform:translate(-28%)}}@keyframes vt-slide-out-right{to{transform:translate(100%)}}@keyframes vt-step-in-fwd{0%{opacity:0;transform:translate(22%)}}@keyframes vt-step-out-fwd{to{opacity:0;transform:translate(-22%)}}@keyframes vt-step-in-back{0%{opacity:0;transform:translate(-22%)}}@keyframes vt-step-out-back{to{opacity:0;transform:translate(22%)}}html:active-view-transition-type(push)::view-transition-new(root){animation:.28s cubic-bezier(.22,.61,.36,1) vt-slide-in-right}html:active-view-transition-type(push)::view-transition-old(root){animation:.28s cubic-bezier(.22,.61,.36,1) vt-recede-left}html:active-view-transition-type(pop)::view-transition-old(root){z-index:1;animation:.28s cubic-bezier(.22,.61,.36,1) vt-slide-out-right}html:active-view-transition-type(pop)::view-transition-new(root){animation:.28s cubic-bezier(.22,.61,.36,1) vt-return-from-left}html:active-view-transition-type(forward)::view-transition-new(root){animation:.22s ease-out vt-step-in-fwd}html:active-view-transition-type(forward)::view-transition-old(root){animation:.22s ease-out vt-step-out-fwd}html:active-view-transition-type(backward)::view-transition-new(root){animation:.22s ease-out vt-step-in-back}html:active-view-transition-type(backward)::view-transition-old(root){animation:.22s ease-out vt-step-out-back}.tabbar{view-transition-name:tabbar}@media (prefers-reduced-motion:reduce){::view-transition-group(*){animation:none!important}::view-transition-old(*){animation:none!important}::view-transition-new(*){animation:none!important}}html,body{min-height:100%}body{background:var(--bg-top);color:var(--ink);-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;margin:0;font-family:Nunito,system-ui,sans-serif}input,textarea{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.frame{background:var(--paper);background-image:linear-gradient(to bottom, var(--bg-top), transparent 150px), radial-gradient(140% 90% at 80% -10%, #8aa38138, transparent 60%), radial-gradient(120% 80% at 0% 110%, #c06b3a1a, transparent 55%);isolation:isolate;flex-direction:column;align-items:center;min-height:100dvh;display:flex;position:relative}.frame:before{content:"";opacity:.04;pointer-events:none;z-index:0;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");position:absolute;inset:0}.app{width:100%;max-width:440px;min-height:100dvh;color:var(--ink);position:relative}.app-main{z-index:1;padding:calc(env(safe-area-inset-top,0px) + 26px) 20px 132px;position:relative}.serif{font-family:Lora,serif}.muted{color:var(--ink-soft)}.faint{color:var(--ink-faint)}.center{text-align:center}h1,h2,h3,h4{letter-spacing:-.02em;margin:0;font-weight:800}button{color:inherit;font-family:inherit}.hdr{justify-content:space-between;align-items:center;margin-bottom:22px;display:flex}.hdr-hi{color:var(--ink-soft);white-space:nowrap;font-family:Lora,serif;font-size:16px;font-style:italic;font-weight:500}.hdr-title{letter-spacing:-.03em;margin-top:1px;font-size:27px;font-weight:800}.hdr-actions{gap:10px;display:flex}.icon-btn{background:var(--card);border:1px solid var(--line);width:44px;height:44px;color:var(--ink);box-shadow:var(--shadow-sm);cursor:pointer;border-radius:50%;place-items:center;transition:transform .12s,background .15s;display:grid;position:relative}.icon-btn:active{transform:scale(.92)}.badge-dot{background:var(--pet);border:2px solid var(--card);border-radius:50%;width:9px;height:9px;position:absolute;top:9px;right:10px}.av{color:#fff;letter-spacing:-.01em;border-radius:50%;flex-shrink:0;place-items:center;font-weight:800;display:grid;position:relative;box-shadow:inset 0 0 0 1.5px #ffffff52,0 2px 5px #2e2a2029}.av-ring{box-shadow:inset 0 0 0 1.5px #ffffff52, 0 0 0 2.5px var(--paper), 0 0 0 4px currentColor}.sec-head{justify-content:space-between;align-items:baseline;margin:26px 2px 12px;display:flex}.sec-title{letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft);align-items:center;gap:8px;font-size:13px;font-weight:800;display:flex}.sec-link{color:var(--forest);cursor:pointer;font-size:13.5px;font-weight:700}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow);position:relative}.cat-card{cursor:pointer;flex-direction:column;gap:14px;padding:18px;transition:transform .14s,box-shadow .2s;display:flex;overflow:hidden}.cat-card:active{transform:scale(.985)}.cat-top{align-items:center;gap:12px;display:flex}.cat-emoji{border-radius:14px;flex-shrink:0;place-items:center;width:46px;height:46px;display:grid}.cat-name{letter-spacing:-.02em;font-size:17px;font-weight:800}.cat-sub{color:var(--ink-soft);margin-top:1px;font-size:13px;font-weight:600}.cat-count{border-radius:999px;margin-left:auto;padding:5px 11px;font-size:13px;font-weight:800}.task{align-items:center;gap:13px;padding:13px 14px;display:flex}.task+.task{border-top:1px solid var(--line-soft)}.task-ic{cursor:pointer;border-radius:13px;flex-shrink:0;place-items:center;width:42px;height:42px;display:grid}.task-main{cursor:pointer;flex:1;min-width:0}.task-title{letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;font-size:15.5px;font-weight:700;overflow:hidden}.task-meta{color:var(--ink-soft);flex-direction:column;gap:2px;min-width:0;margin-top:2px;font-size:12.5px;font-weight:600;display:flex}.task-desc{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.task-sub{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.turn-me{background:linear-gradient(90deg,#2e7d32,#7ed957,#f2b705,#7ed957,#2e7d32) 0 0/220% 100%;-webkit-text-fill-color:transparent;color:#0000;-webkit-background-clip:text;background-clip:text;animation:1.9s linear infinite turnPulse}@keyframes turnPulse{0%{background-position:0 0}to{background-position:-200% 0}}.dot-sep{background:var(--ink-faint);border-radius:50%;width:3px;height:3px;display:inline-block}.pill{letter-spacing:-.01em;border-radius:999px;align-items:center;gap:5px;padding:3px 9px;font-size:11.5px;font-weight:800;display:inline-flex}.pill-over{background:var(--over-tint);color:var(--over)}.pill-soon{background:var(--chore-tint);color:var(--chore)}.pill-turn{background:var(--sage-tint);color:var(--forest)}.pill-done{background:var(--sage-tint);color:var(--done)}.chip{background:var(--card-2);border:1px solid var(--line);color:var(--ink-soft);border-radius:999px;align-items:center;gap:6px;padding:6px 11px;font-size:12.5px;font-weight:700;display:inline-flex}.hold{--sz:46px;--c:var(--forest);width:var(--sz);height:var(--sz);cursor:pointer;background:var(--card-2);border:1.5px solid var(--line);color:var(--ink-faint);touch-action:none;-webkit-user-select:none;user-select:none;border-radius:50%;flex-shrink:0;place-items:center;transition:color .2s,background .2s,transform .1s;display:grid;position:relative}.hold:active{transform:scale(.96)}.hold svg.ring{width:calc(var(--sz) + 3px);height:calc(var(--sz) + 3px);pointer-events:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-90deg)}.hold .ring circle{fill:none;stroke-width:6px;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1px;transition:stroke-dashoffset}.hold.is-holding .ring circle{stroke-dashoffset:0;transition:stroke-dashoffset var(--dur,.7s) linear}.hold.is-holding{background:color-mix(in srgb, var(--c) 12%, var(--card));color:var(--c)}.hold.is-done{background:var(--c);color:#fff;border-color:var(--c);animation:.42s cubic-bezier(.2,1.3,.4,1) pop}@keyframes pop{0%{transform:scale(.5)}60%{transform:scale(1.12)}to{transform:scale(1)}}.hold-tip{background:var(--ink);color:var(--paper);white-space:nowrap;box-shadow:var(--shadow);z-index:6;pointer-events:none;border-radius:9px;padding:6px 10px;font-size:11.5px;font-weight:800;animation:.18s tipIn;position:absolute;bottom:calc(100% + 9px);right:-4px}.hold-tip:after{content:"";border:5px solid #0000;border-top-color:var(--ink);position:absolute;top:100%;right:16px}@keyframes tipIn{0%{opacity:0;transform:translateY(4px)}}.tabbar{z-index:30;width:100%;max-width:440px;padding:5px 24px calc(5px + env(safe-area-inset-bottom,18px));justify-content:space-around;align-items:stretch;margin-inline:auto;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar-inner{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:19px;flex:1;justify-content:space-between;padding:4px 6px;display:flex}.tab{color:var(--ink-faint);cursor:pointer;background:0 0;border:0;border-radius:14px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:6px 0 5px;transition:color .18s;display:flex;position:relative}.tab.active{color:var(--forest)}.tab span{letter-spacing:-.01em;font-size:10.5px;font-weight:800}.tab .tab-ic{transition:transform .2s}.tab.active .tab-ic{transform:translateY(-1px)}.btn{cursor:pointer;border:0;border-radius:15px;justify-content:center;align-items:center;gap:8px;padding:14px 18px;font-family:inherit;font-size:15px;font-weight:800;transition:transform .12s,filter .15s;display:inline-flex}.btn:active{transform:scale(.97)}.btn-primary{background:linear-gradient(165deg, var(--forest), var(--forest-deep));color:#fff;box-shadow:0 8px 18px -8px #2e472eb3}.btn-ghost{background:var(--card);color:var(--ink);border:1px solid var(--line)}.btn-block{width:100%}.btn-lg{border-radius:17px;padding:17px;font-size:16px}.scrim{z-index:40;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#2822166b;animation:.25s fade;position:fixed;inset:0}.scrim[data-ending-style]{opacity:0;transition:opacity .2s}@keyframes fade{0%{opacity:0}}.sheet{z-index:41;background:var(--paper);width:100%;max-width:440px;box-shadow:var(--shadow-lg);border-radius:30px 30px 0 0;flex-direction:column;max-height:90%;margin-inline:auto;animation:.34s cubic-bezier(.2,.9,.25,1) slideUp;display:flex;position:fixed;bottom:0;left:0;right:0;overflow:hidden}.sheet[data-ending-style]{transition:transform .25s;transform:translateY(100%)}@keyframes slideUp{0%{transform:translateY(100%)}}.sheet-grip{cursor:grab;touch-action:none;flex-shrink:0;justify-content:center;padding:10px 20px 6px;display:flex}.sheet-grip:active{cursor:grabbing}.grab{background:var(--line);border-radius:999px;width:38px;height:5px}.sheet-body{-webkit-overflow-scrolling:touch;padding:2px 20px calc(24px + env(safe-area-inset-bottom,16px));overflow-y:auto}.sheet-body::-webkit-scrollbar{width:0}.field{margin-bottom:16px}.field-label{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px;font-size:12.5px;font-weight:800;display:block}.input{width:100%;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:14px;outline:none;padding:13px 14px;font-family:inherit;font-size:16px;font-weight:600;transition:border-color .15s}.input:focus{border-color:var(--sage)}.seg{background:var(--card-2);border:1px solid var(--line);border-radius:14px;gap:6px;padding:4px;display:flex}.seg button{color:var(--ink-soft);cursor:pointer;background:0 0;border:0;border-radius:10px;flex:1;padding:9px 6px;font-family:inherit;font-size:13.5px;font-weight:800;transition:all .18s}.seg button.on{background:var(--card);color:var(--forest);box-shadow:var(--shadow-sm)}@media (prefers-color-scheme:dark){.seg button.on{background:color-mix(in srgb, #fff 10%, var(--card));box-shadow:inset 0 0 0 1px var(--line-soft)}}.stepper{align-items:center;gap:14px;display:flex}.step-btn{border:1.5px solid var(--line);background:var(--card);width:40px;height:40px;color:var(--forest);cursor:pointer;border-radius:12px;place-items:center;font-size:22px;font-weight:700;display:grid}.step-btn:active{transform:scale(.92)}.step-val{text-align:center;min-width:30px;font-size:20px;font-weight:800}.tog{background:var(--line);cursor:pointer;border:0;border-radius:999px;flex-shrink:0;width:46px;height:28px;padding:0;transition:background .2s;position:relative}.tog[data-checked]{background:var(--forest)}.tog .tog-thumb{width:22px;height:22px;box-shadow:var(--shadow-sm);background:#fff;border-radius:50%;transition:transform .2s cubic-bezier(.3,1.4,.5,1);position:absolute;top:3px;left:3px}.tog[data-checked] .tog-thumb{transform:translate(18px)}.row{background:var(--card);align-items:center;gap:13px;padding:14px 16px;display:flex}.row+.row{border-top:1px solid var(--line-soft)}.row-ic{border-radius:10px;flex-shrink:0;place-items:center;width:34px;height:34px;display:grid}.row-main{flex:1;min-width:0}.row-title{font-size:15px;font-weight:700}.row-sub{color:var(--ink-soft);margin-top:1px;font-size:12.5px;font-weight:600}.av-stack{display:flex}.av-stack .av{border:2px solid var(--card);box-shadow:none;margin-left:-8px}.av-stack .av:first-child{margin-left:0}.toast{width:calc(100% - 40px);max-width:400px;left:0;right:0;bottom:calc(112px + env(safe-area-inset-bottom,0px));z-index:50;background:var(--forest-deep);color:#fff;box-shadow:var(--shadow-lg);border-radius:16px;align-items:center;gap:11px;margin-inline:auto;padding:13px 16px;font-size:14px;font-weight:700;animation:.4s cubic-bezier(.2,1.1,.3,1) toastIn;display:flex;position:fixed}@keyframes toastIn{0%{opacity:0;transform:translateY(20px)}}.toast .t-ic{background:#ffffff29;border-radius:9px;flex-shrink:0;place-items:center;width:28px;height:28px;display:grid}.bar{background:var(--line-soft);border-radius:999px;height:7px;overflow:hidden}.bar>i{border-radius:999px;height:100%;display:block}.empty{text-align:center;padding:30px 20px}.empty-ic{background:var(--card);border:1px solid var(--line);width:64px;height:64px;color:var(--ink-faint);border-radius:20px;place-items:center;margin:0 auto 14px;display:grid}.tl-item{gap:13px;padding:4px 0;display:flex}.tl-rail{flex-direction:column;align-items:center;display:flex}.tl-line{background:var(--line);flex:1;width:2px;margin-top:2px}.tl-body{flex:1;padding-bottom:18px}.tl-item:last-child .tl-body{padding-bottom:0}.tl-text{font-size:14.5px;font-weight:600;line-height:1.4}.tl-text b{font-weight:800}.tl-time{color:var(--ink-faint);margin-top:3px;font-size:12px;font-weight:700}.tl-day{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);margin:16px 0 10px 35px;font-size:12px;font-weight:800}.fade-in{animation:.45s fadeUp}@keyframes fadeUp{0%{transform:translateY(10px)}}.panel{z-index:35;flex-direction:column;width:100%;max-width:440px;margin-inline:auto;display:flex;position:fixed;inset:0;overflow:hidden}.panel-head{padding:calc(env(safe-area-inset-top,0px) + 24px) 16px 8px;z-index:1;align-items:center;gap:10px;display:flex;position:relative}.panel-main{z-index:1;flex:1;padding:6px 20px 130px;position:relative;overflow-y:auto}.panel-main::-webkit-scrollbar{width:0}.panel-title{letter-spacing:-.02em;font-size:22px;font-weight:800}.panel-sub{color:var(--ink-soft);font-size:13px;font-weight:600}.cat-hero{border-radius:var(--r-lg);color:#fff;margin-bottom:8px;padding:20px;position:relative;overflow:hidden}.cat-hero h2{font-size:24px}.cat-hero .cat-hero-ic{opacity:.22;position:absolute;bottom:-18px;right:-14px}.cfg{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}.cfg-row{align-items:center;gap:12px;padding:14px 16px;display:flex}.cfg-row+.cfg-row{border-top:1px solid var(--line-soft)}.cfg-label{flex:1;font-size:14.5px;font-weight:700}.queue{flex-direction:column;gap:2px;display:flex}.q-item{align-items:center;gap:12px;padding:10px 4px;display:flex}.q-num{width:22px;color:var(--ink-faint);text-align:center;font-size:13px;font-weight:800}.q-name{font-size:15px;font-weight:700}.q-tag{margin-left:auto;font-size:12px;font-weight:800}.q-move{flex-direction:column;gap:2px;margin-left:auto;display:flex}.q-move button{border:1px solid var(--line);background:var(--card);width:30px;height:22px;color:var(--forest);cursor:pointer;border-radius:7px;place-items:center;display:grid}.q-move button:disabled{color:var(--line);cursor:default}.mine-card{box-shadow:0 1px 2px #2e2a200d,0 12px 26px -16px #43604380}.sec-title .flag{color:var(--forest)}input[type=time],input[type=datetime-local]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){input[type=time],input[type=datetime-local]{--lightningcss-light: ;--lightningcss-dark:initial}}
