@font-face{font-family:Chakra Petch;font-weight:400;font-display:swap;src:url(/fonts/chakra_petch_regular.ttf) format("truetype")}@font-face{font-family:Chakra Petch;font-weight:500;font-display:swap;src:url(/fonts/chakra_petch_medium.ttf) format("truetype")}@font-face{font-family:Chakra Petch;font-weight:600 700;font-display:swap;src:url(/fonts/chakra_petch_semibold.ttf) format("truetype")}:root{--primary: #6750a4;--on-primary: #fff;--bg: #fef7ff;--surface: #f3edf7;--surface-high: #ece6f0;--surface-var: #e7e0ec;--on-surface: #1d1b20;--on-surface-var: #49454f;--outline: #cac4d0;--error: #b3261e;--snack: #322f35;--on-snack: #f5eff7;--snack-action: #d0bcff;--radius: 24px;--glass-bg: radial-gradient(circle at 15% 12%, rgb(255 183 77 / .5), transparent 60%), radial-gradient(circle at 90% 45%, rgb(149 117 205 / .5), transparent 62%), radial-gradient(circle at 20% 85%, rgb(79 195 247 / .45), transparent 60%), linear-gradient(#fff4e6, #ede7ff);--glass-card: rgb(255 255 255 / .45);--glass-edge: rgb(255 255 255 / .7);color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--primary: #d0bcff;--on-primary: #381e72;--bg: #141218;--surface: #211f26;--surface-high: #2b2930;--surface-var: #49454f;--on-surface: #e6e0e9;--on-surface-var: #cac4d0;--outline: #49454f;--error: #f2b8b5;--snack: #e6e0e9;--on-snack: #322f35;--snack-action: #6750a4;--glass-bg: radial-gradient(circle at 15% 12%, rgb(255 183 77 / .35), transparent 60%), radial-gradient(circle at 90% 45%, rgb(149 117 205 / .35), transparent 62%), radial-gradient(circle at 20% 85%, rgb(79 195 247 / .32), transparent 60%), linear-gradient(#1a1426, #0f1a24);--glass-card: rgb(255 255 255 / .08);--glass-edge: rgb(255 255 255 / .18);color-scheme:dark}}:root[data-theme=dark]{--primary: #d0bcff;--on-primary: #381e72;--bg: #141218;--surface: #211f26;--surface-high: #2b2930;--surface-var: #49454f;--on-surface: #e6e0e9;--on-surface-var: #cac4d0;--outline: #49454f;--error: #f2b8b5;--snack: #e6e0e9;--on-snack: #322f35;--snack-action: #6750a4;--glass-bg: radial-gradient(circle at 15% 12%, rgb(255 183 77 / .35), transparent 60%), radial-gradient(circle at 90% 45%, rgb(149 117 205 / .35), transparent 62%), radial-gradient(circle at 20% 85%, rgb(79 195 247 / .32), transparent 60%), linear-gradient(#1a1426, #0f1a24);--glass-card: rgb(255 255 255 / .08);--glass-edge: rgb(255 255 255 / .18);color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;background:var(--bg);color:var(--on-surface)}body{font-family:Chakra Petch,system-ui,Noto Sans Thai,sans-serif;font-size:16px;line-height:1.4}button{font:inherit;color:inherit}#app{height:100dvh;display:flex;justify-content:center}.shell{width:100%;max-width:480px;height:100%;display:flex;flex-direction:column;padding-top:env(safe-area-inset-top);position:relative}.content{flex:1;min-height:0;display:flex;flex-direction:column;position:relative}.tabbar{display:flex;background:var(--surface);border-top:1px solid var(--outline);padding-bottom:env(safe-area-inset-bottom)}.tab{flex:1;height:56px;border:0;background:none;cursor:pointer;font-weight:500;color:var(--on-surface-var);font-size:15px}.tab[aria-selected=true]{color:var(--primary);font-weight:600;box-shadow:inset 0 -3px 0 var(--primary)}.placeholder{flex:1;display:grid;place-items:center;color:var(--on-surface-var)}.list{flex:1;min-height:0;overflow-y:auto;padding:16px 16px 8px;display:flex;flex-direction:column;gap:12px;overscroll-behavior:contain}.empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:24px;text-align:center}.empty h2{margin:0;font-size:22px;font-weight:600}.empty p{margin:0;color:var(--on-surface-var)}.card{--goal: var(--primary);display:flex;align-items:center;gap:16px;padding:16px;border-radius:var(--radius);background:var(--surface-high);cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;position:relative;transition:transform .16s ease,box-shadow .16s ease;touch-action:pan-y}.card.dragging{transition:box-shadow .16s ease;box-shadow:0 8px 24px #0000004d;z-index:2;opacity:.95}.card.shifting{transition:transform .16s ease}.card.nomove{transition:none}.card .body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.card .title{font-size:16px;font-weight:500;line-height:1.7;padding-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card .days{font-size:24px;font-weight:600;line-height:1.2}.card .end{font-size:12px;color:var(--on-surface-var)}.card .done{font-size:14px;font-weight:600;color:var(--goal)}.lead{flex:none;width:64px;height:64px;display:grid;place-items:center;position:relative}.lead svg{position:absolute;top:0;right:0;bottom:0;left:0}.lead .emo{font-size:22px;position:relative}.lead .emo.big{font-size:30px}.lead .cd{text-align:center;line-height:1.1}.lead .cd b{display:block;font-size:22px}.lead .cd span{font-size:11px}.strip{margin-top:6px}.strip .bar{height:8px;border-radius:4px;background:var(--surface-var);overflow:hidden}.strip .bar i{display:block;height:100%;background:var(--goal);border-radius:4px}.strip svg{width:100%;height:36px;display:block}.lscreen{flex:1;min-height:0;display:flex;flex-direction:column}.lscreen[data-ls=GLASS]{background:var(--glass-bg)}.lscreen[data-ls=GLASS] .card{background:var(--glass-card);box-shadow:inset 0 0 0 1px var(--glass-edge)}.lscreen[data-ls=GLASS] .card.dragging{box-shadow:inset 0 0 0 1px var(--glass-edge),0 8px 24px #0000004d}.lscreen[data-ls=TINTED] .card{background:color-mix(in srgb,var(--goal) 18%,var(--surface))}.lscreen[data-ls=FLAT] .list{gap:0}.lscreen[data-ls=FLAT] .card{background:none;border-radius:0;padding:12px 0}.lscreen[data-ls=FLAT] .card:not(:last-child){border-bottom:1px solid var(--outline)}.lscreen[data-ls=FLAT] .card.dragging{background:var(--bg);border-radius:12px}.lscreen[data-ls=STRIPE] .card{overflow:hidden;padding-left:20px}.lscreen[data-ls=STRIPE] .card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--goal)}.lscreen[data-ls=GRID] .list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start}.lscreen[data-ls=GRID] .card{flex-direction:column;justify-content:flex-start;gap:4px;padding:12px;min-width:0;text-align:center}.lt-name{width:100%;font-size:14px;font-weight:500;line-height:1.7;padding-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lt-dt{font-size:16px;font-weight:600;line-height:1.6}.lt-done{font-size:12px;font-weight:600;line-height:1.6;color:var(--goal)}.lscreen[data-compact] .list{gap:6px}.lscreen[data-compact][data-ls=FLAT] .list{gap:0}.lscreen[data-compact] .card{border-radius:16px;gap:10px;padding:10px 14px}.lscreen[data-compact][data-ls=FLAT] .card{border-radius:0}.lscreen[data-compact][data-ls=FLAT] .card.dragging{border-radius:12px}.lscreen[data-compact][data-ls=STRIPE] .card{padding-left:18px}.lscreen[data-compact][data-ls=GRID] .list{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.lscreen[data-compact][data-ls=GRID] .card{gap:0;padding:8px}.lscreen[data-compact][data-ls=GRID] .lt-name{font-size:11px}.lscreen[data-compact][data-ls=GRID] .lt-dt{font-size:12px;font-weight:500}.crow-emo{font-size:16px;line-height:1.6}.crow-name{flex:1;min-width:0;font-size:14px;font-weight:500;line-height:1.7;padding-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crow-dt{font-size:14px;font-weight:500;line-height:1.6}.cring{flex:none;position:relative;display:grid;place-items:center}.cring svg{position:absolute;top:0;right:0;bottom:0;left:0}.cring .emo{position:relative;font-size:16px;line-height:1}.lsw-row{display:flex;align-items:center;gap:12px;line-height:1.6;cursor:pointer}.lsw-row>span{flex:1}.lsw{-moz-appearance:none;appearance:none;-webkit-appearance:none;flex:none;width:52px;height:32px;margin:0;border-radius:16px;background:var(--surface-var);border:2px solid var(--outline);position:relative;cursor:pointer;transition:background .12s ease}.lsw:after{content:"";position:absolute;top:4px;left:4px;width:20px;height:20px;border-radius:50%;background:var(--on-surface-var);transition:transform .12s ease}.lsw:checked{background:var(--primary);border-color:var(--primary)}.lsw:checked:after{background:var(--on-primary);transform:translate(20px)}.lsw:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.sstrip{padding:12px 16px 0;display:flex;flex-direction:column;gap:6px}.sline{font-size:14px;font-weight:500;line-height:1.7;overflow-wrap:anywhere}.sbar{height:6px;border-radius:3px;background:var(--surface-var);overflow:hidden}.sbar i{display:block;height:100%;background:var(--primary);border-radius:3px}.actions{display:flex;gap:8px;padding:12px 16px 16px}.btn{height:56px;border-radius:28px;border:0;padding:0 24px;font-size:16px;font-weight:600;cursor:pointer}.btn.primary{flex:1;background:var(--primary);color:var(--on-primary)}.btn.outline{background:none;border:1px solid var(--outline);color:var(--primary)}.menu-wrap{position:relative}.menu-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10}.menu{position:absolute;right:0;bottom:64px;z-index:11;min-width:200px;padding:8px 0;background:var(--surface-high);border-radius:12px;box-shadow:0 4px 20px #0000004d}.menu button{display:block;width:100%;text-align:left;background:none;border:0;padding:12px 16px;cursor:pointer}.menu button:hover{background:var(--surface-var)}.snack-dock{position:relative;height:0;flex:none;z-index:20}.snack{position:absolute;left:16px;right:16px;bottom:8px;z-index:20;display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:8px;background:var(--snack);color:var(--on-snack)}.snack span{flex:1}.snack button{background:none;border:0;font-weight:600;color:var(--snack-action);cursor:pointer;padding:4px 8px}.detail{--goal: var(--primary);flex:1;min-height:0;display:flex;flex-direction:column;position:relative}.topbar{display:flex;align-items:center;padding:4px 8px}.grow{flex:1;min-width:0}.grow2{flex:1.5;min-width:0}.tbtn{background:none;border:0;padding:10px 12px;font-weight:600;color:var(--primary);cursor:pointer;border-radius:20px}.tbtn:disabled{opacity:.4;cursor:default}.tbtn:hover:not(:disabled){background:var(--surface-var)}.pager{display:flex;align-items:center;gap:4px;font-weight:500}.icon{width:40px;height:40px;border:0;border-radius:20px;background:var(--surface-high);font-size:22px;line-height:1;cursor:pointer}.dbody{flex:1;min-height:0;overflow-y:auto;padding:8px 16px 16px;display:flex;flex-direction:column;align-items:center;gap:16px;touch-action:pan-y;overscroll-behavior:contain}.dtitle{margin:0;font-size:24px;font-weight:600;line-height:1.7;padding-top:2px;text-align:center}.reason{color:var(--goal);text-align:center;line-height:1.7}.small{font-size:12px;color:var(--on-surface-var);line-height:1.6}.muted{color:var(--on-surface-var);line-height:1.6;margin:0}.phase{display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center;line-height:1.7}.phase b{font-size:18px;font-weight:600}.stats{display:flex;gap:20px;flex-wrap:wrap;justify-content:center;line-height:1.7}.badges{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.badge{display:flex;flex-direction:column;align-items:center;line-height:1.6}.badge .b{font-size:26px;line-height:1.4}.tl{width:100%;display:flex;flex-direction:column;gap:8px}.tl-title{margin:8px 0 0;font-size:14px;font-weight:600;line-height:1.6}.tl-row{display:flex;gap:8px;line-height:1.6}.tl-row.future{opacity:.5}.tl-mark{flex:none;width:20px}.tl-body{flex:1;min-width:0}.tl-day{font-size:12px;color:var(--on-surface-var);line-height:1.6}.tl-text{font-size:14px;line-height:1.6}.tl-row.cur .tl-mark,.tl-row.cur .tl-day{color:var(--primary)}.tl-row.cur .tl-day,.tl-row.cur .tl-text{font-weight:700}.lapses{width:100%}.lapses h3,.panel h3{margin:8px 0 4px;font-size:14px;font-weight:600;line-height:1.6}.lrow{display:flex;align-items:center;gap:8px;line-height:1.6}.backdate{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:center}.hero{width:100%;display:flex;flex-direction:column;align-items:center;gap:12px}.hero-ring{position:relative;display:grid;place-items:center}.hero-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.5}.hero-center .big{font-size:40px;font-weight:600;line-height:1.3}.hero-line{font-size:16px;font-weight:500;line-height:1.6}.hero-line.big2{font-size:22px;font-weight:500}.hero-pct{font-size:56px;font-weight:700;line-height:1.3}.hero-bar{width:100%;height:12px;border-radius:6px;background:var(--surface-var);overflow:hidden}.hero-bar.thick{height:16px;border-radius:8px}.hero-bar i{display:block;height:100%;background:var(--goal);border-radius:inherit}.hero-dots{width:100%}.hero-dots svg{width:100%;display:block}.detail .btn.wide{width:auto;align-self:stretch;margin:8px 16px 0;height:56px;flex:none}.detail>.btn.danger{margin-bottom:12px}.btn.danger{background:var(--error);color:var(--bg);flex:none}.btn.goal{flex:1;background:var(--goal);color:#fff;padding:0 8px}.done-box{padding:12px 16px;display:flex;flex-direction:column;gap:8px}.done-title{font-weight:600;line-height:1.6}.row{display:flex;gap:8px}.row.end{justify-content:flex-end}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#0006;display:flex;align-items:center;justify-content:center;padding:16px}.panel:focus{outline:none}.overlay.sheet{align-items:flex-end;padding:0}.panel{width:100%;max-width:420px;max-height:90dvh;overflow-y:auto;background:var(--surface-high);border-radius:28px;padding:24px;display:flex;flex-direction:column;gap:8px}.sheet .panel{max-width:480px;border-radius:28px 28px 0 0;padding:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom))}.panel h2{margin:0;font-size:20px;font-weight:600;line-height:1.7}.panel p{margin:0;line-height:1.7}.pre{white-space:pre-line}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1px solid var(--outline);background:none;border-radius:8px;padding:6px 12px;line-height:1.6;cursor:pointer}.chip[aria-pressed=true]{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}.field{width:100%;font:inherit;color:inherit;background:var(--surface);border:1px solid var(--outline);border-radius:8px;padding:10px 12px;line-height:1.6}.btn.wide{width:100%}.btn.primary.wide{flex:none;margin-top:8px}.icon:disabled{opacity:.35;cursor:default}.edit{flex:1;min-height:0;display:flex;flex-direction:column}.ebody{flex:1;min-height:0;overflow-y:auto;padding:8px 16px 16px;display:flex;flex-direction:column;gap:12px;overscroll-behavior:contain}.etitle{margin:0;font-size:22px;font-weight:600;line-height:1.7}.ebody h3{margin:8px 0 0;font-size:14px;font-weight:600;line-height:1.7}.fl{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--on-surface-var);line-height:1.6}.fl .field{font-size:16px;color:var(--on-surface)}.fl .field[aria-invalid=true]{border-color:var(--error)}.err{color:var(--error);font-size:12px;line-height:1.6}.erow{display:flex;gap:12px;align-items:flex-start}.erow.money{gap:8px}.erow .fl{min-width:0}.bigemoji{font-size:36px;line-height:1.6;padding-top:6px}.fgroup{display:flex;flex-direction:column;gap:6px}.presets{display:flex;flex-wrap:wrap;gap:12px}.preset{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:96px;padding:16px;border:1px solid var(--outline);border-radius:12px;background:none;color:inherit;font:inherit;line-height:1.7;cursor:pointer}.preset .pe{font-size:28px;line-height:1.6}.radios{display:flex;flex-direction:column}.radio{display:flex;align-items:center;gap:8px;padding:8px 0;line-height:1.7;cursor:pointer}.danger-text{color:var(--error);align-self:flex-start}.btn.primary.esave{flex:none;width:auto;margin:8px 16px 16px}.settings{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:20px}.settings section{display:flex;flex-direction:column;gap:8px}.settings h3{margin:0;font-size:14px;font-weight:600;color:var(--on-surface-var)}.settings .btn{flex:none;height:48px}.settings .hint{margin:0;font-size:13px;color:var(--on-surface-var)}.settings .ver{text-align:center}.seg{display:flex;border:1px solid var(--outline);border-radius:20px;overflow:hidden}.seg button{flex:1;height:44px;border:0;background:none;color:var(--on-surface);font:inherit;cursor:pointer}.seg button+button{border-left:1px solid var(--outline)}.seg button.on{background:var(--primary);color:var(--on-primary);font-weight:600}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--on-surface-var);border-top-color:transparent;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.stats-tab{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;line-height:1.6}.stats-tab>*{flex-shrink:0}.stats-tab h3{margin:8px 0 0;font-size:16px;font-weight:600;line-height:1.7}.stats-tab p{margin:0;line-height:1.7}.tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px}.tile{background:var(--surface-high);border-radius:12px;padding:16px;min-width:0}.tile .tv{font-size:24px;font-weight:700;line-height:1.5}.tile .tc{font-size:12px;line-height:1.6;color:var(--on-surface-var)}.heat{width:100%;height:auto;display:block}.legend{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px 6px;font-size:11px;line-height:1.6;color:var(--on-surface-var)}.legend .sw{width:10px;height:10px;border-radius:2px;margin-left:6px}.bars{width:100%;height:120px;display:block}.barnums{display:grid;grid-template-columns:repeat(8,1fr);text-align:center;font-size:11px;line-height:1.6}.share-row{display:flex;gap:12px;overflow-x:auto;padding:4px 0 8px}.share-item{flex:none;display:flex;flex-direction:column;align-items:center;gap:4px;padding:0;border:0;background:none;cursor:pointer}.share-item:disabled{cursor:default}.share-card{width:100%;display:flex;align-items:center;justify-content:center;border-radius:12px;overflow:hidden;background:var(--surface)}.share-card img{width:100%;height:100%;display:block}.share-label{font-size:12px;font-weight:500;line-height:1.6;color:var(--on-surface-var)}.spinner.small{width:24px;height:24px;border-width:2px}.srow{display:flex;gap:8px}.srow .fl{flex:1;min-width:0}
