:root{--paper: #fdfbf6;--card: #ffffff;--card-warm: #fffdf8;--ink: #4a4458;--ink-soft: #71697e;--line: #e6e1d8;--mint: #9ed8be;--mint-deep: #2f5f4c;--mint-wash: #f1faf5;--peach: #ffc2a1;--peach-wash: #fff6ec;--lavender: #c4b7ec;--lavender-wash: #f5f1fe;--sky: #a9d2f0;--sky-wash: #eff7fd;--butter: #f7de95;--rose: #f3afbb;--rose-deep: #a84f60;--day-sun: #ef737b;--day-mon: #edc94f;--day-tue: #ec91ac;--day-wed: #66b58a;--day-thu: #e99a52;--day-fri: #5ca6d6;--day-sat: #8974c7;--r-wobble: 18px 12px 20px 14px / 14px 20px 12px 18px;--r-wobble-2: 14px 20px 12px 18px / 18px 12px 20px 14px;--r-blob: 50% 48% 52% 47% / 47% 52% 48% 50%;--font-hand: "Itim", "Mali", cursive;--font-ui: "Mali", "Itim", system-ui, sans-serif;--gap: 10px;--pad: 16px}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-ui);font-size:15px;line-height:1.5;background-image:radial-gradient(circle at 1px 1px,rgba(74,68,88,.05) 1px,transparent 0);background-size:22px 22px;overscroll-behavior-y:none}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}input{font:inherit;color:inherit}.cr{position:relative}.cr:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border:2.5px solid var(--bd, var(--ink));border-radius:var(--r-wobble);filter:url(#crayon);opacity:.9;pointer-events:none}.cr.dbl:after{content:"";position:absolute;top:2px;right:1px;bottom:1px;left:2px;border:1.5px solid var(--bd, var(--ink));border-radius:var(--r-wobble-2);filter:url(#crayon2);opacity:.32;pointer-events:none}.cr.thin:before{border-width:2px}.press{transition:transform .09s ease}.press:active{transform:scale(.965) rotate(-.4deg)}.app{max-width:460px;margin:0 auto;min-height:100%;padding:16px 14px calc(112px + env(safe-area-inset-bottom));display:flex;flex-direction:column}.appbar{display:flex;align-items:center;gap:10px;margin-bottom:14px}.appbar .titles{flex:1;min-width:0}.brandicon{width:46px;height:46px;flex:0 0 auto;border-radius:12px 10px 13px 9px;object-fit:cover}.kicker{font-size:12.5px;color:var(--ink-soft)}.title{font-family:var(--font-hand);font-size:26px;line-height:1.15}.roundbtn{width:44px;height:44px;flex:0 0 auto;display:grid;place-items:center;font-size:20px;background:var(--card);border-radius:var(--r-blob)}.roundbtn.cr:before{border-radius:var(--r-blob);--bd: var(--line);border-width:2px}.voicebtn{background:var(--butter)}.voicebtn.cr:before{--bd: var(--ink)}.micmark{width:31px;height:31px;overflow:visible}.micmark-head{fill:var(--peach);stroke:var(--ink);stroke-width:2.5}.micmark-stand,.micmark-shine,.micmark-sound{fill:none;stroke:var(--ink);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.micmark-shine{stroke:var(--card);stroke-width:2}.micmark-sound{stroke:var(--rose-deep);stroke-width:2}.voicebtn.listening{background:var(--rose);animation:voice-pulse .9s ease-in-out infinite alternate}.voicebtn.listening .micmark-head{fill:var(--card)}@keyframes voice-pulse{to{transform:scale(1.07) rotate(-1.5deg)}}.card{background:var(--card);border-radius:var(--r-wobble);padding:15px;margin-bottom:14px}.card.warm{background:var(--card-warm)}.label{font-size:12.5px;color:var(--ink-soft)}.money{font-size:36px;font-weight:700;letter-spacing:-.01em;line-height:1.15;font-variant-numeric:tabular-nums;margin:2px 0 6px}.money.sm{font-size:22px;margin:0}.money.in{color:var(--mint-deep)}.money.over{color:var(--rose-deep)}.monthnav{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.monthnav b{font-family:var(--font-hand);font-size:19px;font-weight:400}.arrow{width:44px;height:44px;display:grid;place-items:center;font-size:18px;color:var(--ink-soft)}.bar{height:13px;position:relative;margin-top:6px}.bar.cr:before{--bd: var(--ink);border-width:2px;opacity:.5}.bar i{position:absolute;inset:2.5px auto 2.5px 2.5px;background:var(--mint);border-radius:8px 6px 7px 5px/5px 7px 6px 8px;transition:width .3s ease}.bar i.over{background:var(--rose)}.barnote{display:flex;justify-content:space-between;font-size:11.5px;color:var(--ink-soft);margin-top:7px}.chartcard{background:var(--card-warm);border-radius:var(--r-wobble);padding:14px 12px 10px;margin-bottom:14px}.weekhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.weekhead span{font-family:var(--font-hand);font-size:17px}.bars{display:flex;align-items:flex-end;gap:7px;height:112px;padding-bottom:22px}.daycol{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;position:relative;border-radius:10px;padding-bottom:0}.daycol .stack{width:100%;border-radius:8px 6px 7px 5px/5px 7px 6px 8px;min-height:4px;display:flex;flex-direction:column-reverse;overflow:hidden;transition:height .25s ease}.daycol .stack i{display:block;flex-basis:0;min-height:2px}.daycol .stack.zero{background:var(--line)}.daycol .dname{position:absolute;bottom:-20px;font-size:11px;color:var(--ink-soft)}.daycol.sel .dname{color:var(--day-color);font-weight:700}.daycol.sel:after{content:"";position:absolute;top:-4px;right:-3px;bottom:-24px;left:-3px;border:2.5px solid var(--day-color);border-radius:var(--r-wobble);filter:url(#crayon2)}.sectionhead{font-family:var(--font-hand);font-size:19px;margin:4px 2px 9px}.list{display:flex;flex-direction:column;gap:9px}.item{display:flex;align-items:center;gap:11px;padding:10px 12px;background:var(--card);border-radius:var(--r-wobble);width:100%;text-align:left}.item.cr:before{--bd: var(--line);border-width:2px}.emoji{width:36px;height:36px;flex:0 0 auto;display:grid;place-items:center;font-size:19px;border-radius:13px 9px 12px 8px/8px 12px 9px 13px}.it-t{font-size:14px;font-weight:600}.it-s{font-size:11.5px;color:var(--ink-soft)}.amt{margin-left:auto;font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.amt.in{color:var(--mint-deep)}.empty{text-align:center;padding:12px;color:var(--ink-soft);font-size:13.5px}.empty .face{font-size:34px;display:block;margin-bottom:6px}.bottombar{position:fixed;left:0;right:0;bottom:0;display:flex;justify-content:space-between;align-items:center;max-width:460px;margin:0 auto;padding:12px 14px max(16px,env(safe-area-inset-bottom));background:var(--paper);z-index:10}.bottombar .roundbtn{pointer-events:auto}.addbtn{pointer-events:auto;width:44px;height:44px;flex:0 0 auto;display:grid;place-items:center;background:var(--mint);border-radius:var(--r-blob)}.addmark{width:33px;height:33px;overflow:visible}.addmark-coin{fill:var(--butter);stroke:var(--ink);stroke-width:2.8;stroke-linejoin:round}.addmark-plus{fill:none;stroke:var(--mint-deep);stroke-width:5;stroke-linecap:round}.addbtn.cr:before{border-radius:var(--r-blob);--bd: var(--ink)}.seg{display:flex;gap:9px;margin-bottom:13px}.seg button{flex:1;padding:10px 0;font-size:14px;font-weight:700;background:var(--card);border-radius:var(--r-wobble)}.seg button.cr:before{--bd: var(--line);border-width:2px}.seg button.on{background:var(--mint-wash)}.seg button.on.cr:before{--bd: var(--mint);border-width:2.5px}.seg button.spent.on{background:var(--peach-wash)}.seg button.spent.on.cr:before{--bd: var(--peach);border-width:2.5px}.amountbox{text-align:center;padding:18px 12px;background:var(--card-warm);border-radius:var(--r-wobble);margin-bottom:13px}.amountbox.cr:before{--bd: var(--lavender)}.amountbox .money{font-size:42px;margin:2px 0 0}.entry-amount{padding-inline:54px}.entry-amount .money{overflow-wrap:anywhere}.amount-clear{position:absolute;top:8px;right:8px;width:44px;height:44px;display:grid;place-items:center;background:var(--peach);border-radius:var(--r-blob)}.amount-clear.cr:before{--bd: var(--ink);border-radius:var(--r-blob)}.amount-clear svg{width:24px;height:24px;fill:none;stroke:var(--ink);stroke-width:3;stroke-linecap:round}.amount-clear:focus-visible{outline:3px solid var(--ink);outline-offset:3px}.noteinput{width:100%;padding:11px 13px;background:var(--card);border-radius:var(--r-wobble);font-size:14px;outline:none;border:none;margin-bottom:13px}.noteinput.cr:before{--bd: var(--line);border-width:2px}.inputwrap{position:relative;margin-bottom:13px}.inputwrap input{width:100%;padding:11px 13px;background:var(--card);border-radius:var(--r-wobble);font-size:14px;outline:none;border:none}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:15px}.chip{min-height:44px;display:flex;align-items:center;gap:6px;padding:8px 13px;font-size:13px;font-weight:600;background:var(--card);border-radius:var(--r-wobble)}.chip.cr:before{--bd: var(--category-color, var(--line));border-width:2px}.chip.sel{background:var(--category-color, var(--peach))}.chip.sel.cr:before{--bd: var(--ink);border-width:3px}.chip-check{width:12px;font-weight:700}.empty-art{display:grid;place-items:center;width:116px;height:88px;margin:0 auto 8px;background:var(--mint-wash);border-radius:var(--r-blob)}.wallet-shadow{fill:var(--mint-deep);opacity:.12}.pad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}.key{padding:13px 0;font-size:21px;font-weight:600;background:var(--card);border-radius:var(--r-wobble)}.key.cr:before{--bd: var(--line);border-width:2px}.bigbtn{display:block;width:100%;padding:14px;font-size:16px;font-weight:700;background:var(--mint);color:var(--mint-deep);border-radius:var(--r-wobble);text-align:center}.bigbtn.ghost{background:var(--card);color:var(--ink-soft);font-weight:600}.bigbtn.danger{background:var(--card);color:var(--rose-deep)}.bigbtn.danger.cr:before{--bd: var(--rose)}.bigbtn:disabled{opacity:.45;cursor:default}.spacer{flex:1;min-height:8px}.setrow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px;background:var(--card);border-radius:var(--r-wobble);margin-bottom:9px;font-size:14px;font-weight:600;width:100%;text-align:left}.setrow.cr:before{--bd: var(--line);border-width:2px}.setrow em{font-style:normal;color:var(--ink-soft);font-weight:400;font-size:13px}.setrow.danger{color:var(--rose-deep)}.setrow.danger.cr:before{--bd: var(--rose)}.swatchrow{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:13px}.swatch{width:40px;height:40px;border-radius:var(--r-blob)}.swatch.cr:before{border-radius:var(--r-blob);--bd: var(--line);border-width:2px}.swatch.sel.cr:before{--bd: var(--ink);border-width:3px}.emojirow{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:13px}.emojipick{width:44px;height:44px;display:grid;place-items:center;font-size:20px;background:var(--card);border-radius:var(--r-wobble)}.emojipick.cr:before{--bd: var(--line);border-width:2px}.emojipick.sel.cr:before{--bd: var(--peach);border-width:3px}.catlist .item{cursor:pointer}.dragnote{font-size:12px;color:var(--ink-soft);margin:2px 2px 10px}.mascot{position:relative;display:block;flex:none;width:var(--m);height:var(--m)}.mascot .wallet-art{display:block;width:100%;height:100%;object-fit:contain;transition:filter .26s ease,transform .26s ease}.mascot:focus-visible{outline:2px solid var(--mint-deep);outline-offset:4px;border-radius:var(--r-blob)}.wallet-limbs{opacity:0}.wallet-wave .wallet-limbs,.wallet-jump .wallet-limbs{opacity:1}.wallet-body{transform-origin:60px 65px}.wallet-clone{opacity:0;transform-origin:60px 65px;pointer-events:none;filter:url(#wallet-clone-soft)}.wallet-jump .wallet-clone{opacity:.22}.wallet-jump .clone-a{animation:wallet-clone-a .9s ease-in-out}.wallet-jump .clone-b{animation:wallet-clone-b .9s ease-in-out}.wallet-jump .wallet-body{animation:wallet-jump-spin .9s ease-in-out}@keyframes wallet-jump-spin{0%,to{transform:translateY(0) rotate(0)}20%{transform:translateY(3px) scale(1.08,.92)}50%{transform:translateY(-16px) rotate(360deg)}85%{transform:translateY(-3px) rotate(720deg)}to{transform:translateY(0) rotate(720deg)}}@keyframes wallet-clone-a{0%,to{transform:translate(-5px) rotate(-12deg)}50%{transform:translate(-9px,-10px) rotate(330deg)}}@keyframes wallet-clone-b{0%,to{transform:translate(5px) rotate(12deg)}50%{transform:translate(9px,-6px) rotate(-330deg)}}@media (prefers-reduced-motion: reduce){.wallet-jump .wallet-body{animation:wallet-gentle-tap .15s ease}.wallet-jump .wallet-clone{animation:none;opacity:.16}@keyframes wallet-gentle-tap{50%{opacity:.8}}}.mascot-happy .wallet-art{filter:drop-shadow(0 2px 3px rgba(74,68,88,.18))}.mascot-ok .wallet-art{filter:drop-shadow(0 0 7px rgba(247,222,149,.95)) drop-shadow(0 2px 3px rgba(74,68,88,.18)) saturate(.85)}.mascot-sad .wallet-art{filter:grayscale(.55) saturate(.6) brightness(.96) drop-shadow(0 2px 3px rgba(74,68,88,.18));transform:rotate(-4deg) translateY(2px)}.mascot-drop{position:absolute;top:4%;right:-2%;font-size:calc(var(--m) * .3);line-height:1;animation:mascot-drip 2.4s ease-in-out infinite}@keyframes mascot-drip{0%,70%,to{transform:translateY(0);opacity:.9}85%{transform:translateY(14%);opacity:1}}@media (prefers-reduced-motion: reduce){.mascot .wallet-art,.mascot-drop,.voicebtn.listening{transition:none;animation:none}}.mascotwrap{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--card-warm);border-radius:var(--r-wobble);margin-bottom:14px}.mascotwrap.cr:before{--bd: var(--butter)}.mascotsay{font-family:var(--font-hand);font-size:16px;line-height:1.35}.catrow{display:flex;align-items:center;gap:10px;padding:9px 4px;font-size:14px;border-bottom:2px dotted var(--line)}.catrow:last-child{border-bottom:none}.catrow b{margin-left:auto;font-variant-numeric:tabular-nums}.catbar{height:9px;border-radius:6px 4px 5px 3px/3px 5px 4px 6px;min-width:6px}@media (prefers-reduced-motion: reduce){*{transition:none!important}}:focus-visible{outline:3px dashed var(--lavender);outline-offset:3px}.welcome{padding-bottom:max(24px,env(safe-area-inset-bottom))}.welcome-brand{display:flex;align-items:center;gap:8px;font-family:var(--font-hand);font-size:20px}.welcome-brand img{border-radius:9px}.welcome-tag{margin-left:auto;color:var(--ink-soft);font-family:var(--font-ui);font-size:11px}.welcome-hero{text-align:center;padding:18px 0 22px}.welcome-art{position:relative;width:240px;height:200px;margin:0 auto 10px;background:var(--mint-wash);border-radius:48% 52% 43% 57%;display:grid;place-items:center}.welcome-wallet{animation:welcome-float 3.6s ease-in-out infinite}.welcome-spark{position:absolute;font-size:32px;color:var(--mint-deep)}.spark-one{left:12px;top:24px;transform:rotate(-15deg)}.spark-two{right:10px;top:62px;color:var(--rose-deep)}.welcome-sticker{position:absolute;bottom:0;right:-5px;padding:6px 12px;background:var(--butter);border-radius:var(--r-wobble);transform:rotate(-5deg);font-size:12px;--bd: var(--butter)}.welcome-eyebrow{color:var(--ink-soft);font-size:12px;margin:18px 0 8px}.welcome h1{font-family:var(--font-hand);font-size:42px;font-weight:400;line-height:1.12}.welcome h1 span{color:var(--mint-deep)}.welcome-intro{margin-top:12px;font-size:13px;line-height:1.8;color:var(--ink-soft)}.welcome-guide{margin:0 4px 22px}.welcome-guide h2{font-family:var(--font-hand);font-size:21px;font-weight:400;margin-bottom:12px}.welcome-guide ol{list-style:none;display:grid;gap:14px}.welcome-guide li{display:flex;gap:12px;align-items:center}.guide-number{flex:0 0 34px;height:34px;display:grid;place-items:center;border-radius:var(--r-blob);background:var(--peach);font-family:var(--font-hand);font-size:21px}.welcome-guide li:nth-child(2) .guide-number{background:var(--sky)}.welcome-guide li:nth-child(3) .guide-number{background:var(--lavender)}.welcome-guide strong{font-size:13px}.welcome-guide li p{font-size:11px;color:var(--ink-soft);margin-top:2px}.welcome-name{padding:20px;background:var(--card);border-radius:var(--r-wobble);--bd: var(--mint)}.welcome-name label{display:block;font-family:var(--font-hand);font-size:25px}.welcome-name p{font-size:12px;color:var(--ink-soft);margin:2px 0 12px}.name-input{display:block;width:100%;min-width:0;min-height:48px;padding:10px 12px;border:2px solid var(--line);border-radius:12px;background:var(--paper);font-size:16px}.welcome-start,.name-save{min-height:48px;padding:12px 16px;background:var(--mint);border-radius:var(--r-wobble);font-weight:700;--bd: var(--mint-deep)}.welcome-start{width:100%;margin-top:12px;display:flex;justify-content:space-between;align-items:center}.welcome-start:disabled,.name-save:disabled{opacity:.5;cursor:default}.welcome-note{text-align:center;color:var(--ink-soft);font-size:10px;margin:16px 0 0}.profile-card{display:grid;gap:10px}.greeting-name{overflow-wrap:anywhere}@keyframes welcome-float{0%,to{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-9px) rotate(3deg)}}@media (prefers-reduced-motion: reduce){.welcome-wallet{animation:none}}
