:root{--paper: #f7f3ea;--card: #fffcf6;--sage: #a8b8a0;--green: #718776;--caramel: #b68b68;--apricot: #e8c7b8;--mist: #a8b9c3;--ink: #51473f;--sub: #91877d;--line: #d9cfbf;--line-soft: #e9e1d3;--warn: #b9735a;--desk: #efe9dc;--on-primary: #fffcf6;--notice: #f1e9d8;--today-bg: #efe6d3;--done-bg: #f4f6ef;--shade: 81, 71, 63;--icon-ink: #51473f;--blob-op: .35;--paper-ink: #51473f;--font-body: "Noto Serif TC", "Songti TC", "Noto Serif CJK TC", "PMingLiU", serif;--font-hand: "Iansui", "Klee One", "LXGW WenKai TC", "Kaiti TC", "BiauKai", "DFKai-SB", var(--font-body);--wobble-a: 255px 18px 225px 18px / 18px 225px 18px 255px;--wobble-b: 18px 225px 18px 255px / 255px 18px 225px 18px;--shadow: 0 1px 0 rgba(var(--shade), .06), 0 6px 16px -10px rgba(var(--shade), .35);--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%}body{background:var(--desk);color:var(--ink);transition:background .3s;font-family:var(--font-body);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}#root{min-height:100%}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:none;border:0;padding:0}h1,h2,h3,p{margin:0}img{display:block;max-width:100%}:focus-visible{outline:2px dashed var(--green);outline-offset:2px}.app{position:relative;max-width:480px;min-height:100dvh;margin:0 auto;background-color:var(--paper);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .32 0 0 0 0 .28 0 0 0 0 .25 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");box-shadow:0 0 40px rgba(var(--shade),.12)}.page{padding:calc(18px + var(--safe-t)) 18px calc(104px + var(--safe-b));animation:fade .35s ease both}.screen{position:fixed;inset:0;z-index:30;max-width:480px;margin:0 auto;overflow-y:auto;background-color:var(--paper);background-image:inherit;padding:calc(14px + var(--safe-t)) 18px calc(40px + var(--safe-b));animation:slide-in .28s ease backwards}.screen-bg{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .32 0 0 0 0 .28 0 0 0 0 .25 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}.hand{font-family:var(--font-hand);letter-spacing:.02em}.sub{color:var(--sub);font-size:13px}.tiny{font-size:12px;color:var(--sub)}.row{display:flex;align-items:center;gap:10px}.between{justify-content:space-between}.grow{flex:1;min-width:0}.stack>*+*{margin-top:12px}.center{text-align:center}.wrap{flex-wrap:wrap}.mt{margin-top:18px}.mt-s{margin-top:8px}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.title{font-family:var(--font-hand);font-size:26px;line-height:1.3}.section-title{font-family:var(--font-hand);font-size:18px;display:flex;align-items:center;gap:8px;margin:24px 0 10px}.section-title:after{content:"";flex:1;border-top:1.5px dashed var(--line);transform:rotate(-.3deg)}.section-title .count{font-size:13px;color:var(--sub);font-family:var(--font-body)}.card{position:relative;background:var(--card);border:1.5px solid var(--line);border-radius:var(--wobble-a);padding:14px 16px;box-shadow:var(--shadow)}.card:nth-child(2n){border-radius:var(--wobble-b)}.card.flat{box-shadow:none}.card.tap,.note.tap{cursor:pointer;transition:transform .15s}.card.tap:active{transform:scale(.985)}.card-in{animation:card-in .4s ease both}.tape{position:absolute;top:-9px;left:50%;width:74px;height:20px;margin-left:-37px;background:color-mix(in srgb,var(--tape, var(--sage)) 62%,transparent);transform:rotate(-2deg);border-left:1px dashed rgba(255,255,255,.7);border-right:1px dashed rgba(255,255,255,.7);pointer-events:none}.tape.left{left:22px;margin-left:0;transform:rotate(-7deg);width:56px}.tape.right{left:auto;right:22px;margin-left:0;transform:rotate(5deg);width:56px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:8px 18px;border:1.5px solid var(--ink);border-radius:var(--wobble-a);background:var(--card);font-family:var(--font-hand);font-size:16px;transition:transform .12s,background .2s;white-space:nowrap;flex:none}.btn.grow{flex:1}.btn.block{flex:initial}.btn:active{transform:translateY(1px) scale(.98)}.btn.primary{background:var(--green);border-color:var(--green);color:var(--on-primary)}.btn.soft{border-color:var(--line);color:var(--ink)}.btn.danger{border-color:var(--warn);color:var(--warn)}.btn.small{min-height:34px;padding:4px 12px;font-size:14px}.btn.block{width:100%}.btn:disabled{opacity:.45;cursor:default}.icon-btn{width:40px;height:40px;display:inline-grid;place-items:center;border-radius:50%;color:var(--ink);flex:none}.icon-btn:active{background:var(--line-soft)}.link{color:var(--green);text-decoration:underline;text-decoration-style:dashed;text-underline-offset:3px}.chip{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;min-height:26px;font-size:12.5px;border-radius:999px;border:1.2px solid var(--line);background:var(--card);white-space:nowrap}.chip.on{background:var(--green);border-color:var(--green);color:var(--on-primary)}button.chip{min-height:34px;padding:4px 13px;font-size:13.5px}.status{font-family:var(--font-hand);font-size:13.5px;padding:1px 9px;border-radius:999px;white-space:nowrap}.status.overdue{background:color-mix(in srgb,var(--warn) 22%,var(--card));color:color-mix(in srgb,var(--warn) 75%,var(--ink))}.status.today{background:color-mix(in srgb,var(--caramel) 25%,var(--card));color:color-mix(in srgb,var(--caramel) 60%,var(--ink))}.status.soon{background:color-mix(in srgb,var(--green) 20%,var(--card));color:color-mix(in srgb,var(--green) 70%,var(--ink))}.status.later,.status.none,.status.done,.status.paused,.status.archived{background:var(--line-soft);color:var(--sub)}.field{display:block}.field>.label,.label{display:block;font-family:var(--font-hand);font-size:14.5px;color:var(--ink);margin-bottom:5px}.label .opt{color:var(--sub);font-size:12px;font-family:var(--font-body);margin-left:6px}.input,select.input,textarea.input{width:100%;min-height:44px;padding:8px 12px;background:var(--card);border:1.5px solid var(--line);border-radius:12px 16px 12px 15px;font-size:16px;appearance:none;-webkit-appearance:none}textarea.input{min-height:84px;resize:vertical;line-height:1.6}.input:focus{outline:none;border-color:var(--green)}select.input{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%2391877D' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.seg{display:flex;border:1.5px solid var(--line);border-radius:14px;overflow:hidden;background:var(--card)}.seg button{flex:1;min-height:42px;padding:6px 4px;font-family:var(--font-hand);font-size:15px;color:var(--sub)}.seg button+button{border-left:1.5px dashed var(--line)}.seg button.on{background:var(--sage);color:var(--ink)}.check{display:flex;align-items:flex-start;gap:10px;cursor:pointer}.check input{width:22px;height:22px;margin:2px 0 0;accent-color:var(--green);flex:none}.hint{font-size:12.5px;color:var(--sub);margin-top:4px}.error-text{color:var(--warn);font-size:13px;margin-top:4px}.picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(46px,1fr));gap:6px}.picker button{aspect-ratio:1;border-radius:14px;border:1.5px solid transparent;display:grid;place-items:center}.picker button.on{border-color:var(--ink);background:var(--card)}.swatch{width:34px;height:34px;border-radius:50%;border:2px solid var(--card);box-shadow:0 0 0 1.5px var(--line)}.swatch.on{box-shadow:0 0 0 2px var(--ink)}.item-card{display:flex;gap:12px;align-items:center;padding:12px 12px 12px 14px}.item-card .name{font-family:var(--font-hand);font-size:18px;line-height:1.3}.item-card .meta{font-size:12.5px;color:var(--sub);line-height:1.5}.done-btn{width:52px;height:52px;flex:none;border-radius:50%;border:1.8px dashed var(--green);color:var(--green);display:grid;place-items:center;background:var(--done-bg);transition:transform .15s,background .2s}.done-btn.done-today{border-style:solid;background:var(--green);color:var(--on-primary);cursor:default}.done-btn:active{transform:scale(.9) rotate(-8deg);background:var(--sage)}.bubble-line{display:flex;align-items:center;gap:8px;margin-top:8px;padding-top:8px;border-top:1.2px dashed var(--line-soft);font-size:13px;color:var(--ink)}.icon-blob{position:relative;flex:none;display:grid;place-items:center}.art{position:relative;overflow:hidden;flex:none}.art img{width:100%;height:100%;object-fit:contain;transform-origin:center}.art.avatar{border-radius:50%;background:var(--card);border:1.5px solid var(--line)}.art.avatar img{object-fit:cover;object-position:50% 0;transform-origin:50% 0}.art .zz{position:absolute;right:4%;top:2%;font-family:var(--font-hand);color:var(--sub);font-size:max(11px,.55em);letter-spacing:.08em;pointer-events:none}.art.sleeping img{filter:saturate(.75) brightness(.96)}.art.framed{background:#fff;--x: 0;padding:8px 8px 26px;border:1.5px solid var(--line);box-shadow:var(--shadow);transform:rotate(-1.5deg);overflow:visible}.art.framed .inner{width:100%;height:100%;overflow:hidden}.art.framed img{object-fit:cover}.breath{animation:breath 4.2s ease-in-out infinite;transform-origin:bottom center}.speech{position:relative;background:var(--card);border:1.5px solid var(--line);border-radius:var(--wobble-b);padding:10px 14px;font-size:14.5px;box-shadow:var(--shadow);animation:pop .3s ease both}.hello{display:flex;gap:12px;align-items:center;margin-top:14px}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:20;max-width:480px;margin:0 auto;display:grid;grid-template-columns:repeat(5,1fr);align-items:end;padding:6px 8px calc(8px + var(--safe-b));background:color-mix(in srgb,var(--card) 94%,transparent);backdrop-filter:blur(6px);border-top:1.5px dashed var(--line)}.tab{display:flex;flex-direction:column;align-items:center;gap:1px;min-height:52px;justify-content:center;color:var(--sub);font-family:var(--font-hand);font-size:12.5px;position:relative}.tab.on{color:var(--ink)}.tab.on:after{content:"";position:absolute;bottom:0;width:22px;height:3px;border-radius:3px;background:var(--caramel);transform:rotate(-2deg)}.tab .dot{position:absolute;top:6px;right:24%;width:9px;height:9px;border-radius:50%;background:var(--caramel);border:2px solid var(--card)}.tab.add .plus{width:54px;height:54px;margin-top:-24px;border-radius:50%;background:var(--green);color:var(--on-primary);display:grid;place-items:center;border:3px solid var(--paper);box-shadow:var(--shadow);transition:transform .15s}.tab.add:active .plus{transform:scale(.93) rotate(45deg)}.overlay{position:fixed;inset:0;z-index:50;background:rgba(var(--shade),.32);display:flex;align-items:flex-end;justify-content:center;animation:fade .2s ease both}.sheet{width:100%;max-width:480px;max-height:90dvh;overflow-y:auto;background:var(--paper);border-radius:26px 22px 0 0;padding:10px 18px calc(22px + var(--safe-b));border-top:1.5px solid var(--line);animation:sheet-up .28s ease both}.sheet .grip{width:44px;height:4px;border-radius:4px;background:var(--line);margin:0 auto 10px}.sheet-title{font-family:var(--font-hand);font-size:21px;margin-bottom:12px}.overlay.mid{align-items:center;padding:22px}.overlay.dark{background:#3c342eb8}.dialog{width:100%;max-width:380px;background:var(--card);border:1.5px solid var(--line);border-radius:var(--wobble-a);padding:20px;animation:pop .25s ease both}.toasts{position:fixed;left:0;right:0;bottom:calc(92px + var(--safe-b));z-index:70;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;padding:0 16px}.toast{pointer-events:auto;max-width:440px;width:100%;background:var(--card);border:1.5px solid var(--line);border-radius:var(--wobble-b);padding:10px 14px;box-shadow:0 10px 24px -12px rgba(var(--shade),.5);display:flex;flex-wrap:wrap;gap:8px;align-items:center;animation:toast-in .3s ease both}.stamp-layer{position:fixed;inset:0;z-index:80;pointer-events:none;display:grid;place-items:center}.stamp{width:150px;height:150px;border-radius:50%;border:4px double var(--warn);color:var(--warn);display:grid;place-items:center;font-family:var(--font-hand);font-size:30px;transform:rotate(-12deg);animation:stamp 1.1s cubic-bezier(.2,1.4,.4,1) both;background:#fffcf68c;text-align:center;line-height:1.15}.stamp small{display:block;font-size:13px;letter-spacing:.1em}.spark{position:absolute;color:var(--caramel);animation:spark .9s ease-out both}.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal .wd{text-align:center;font-size:12px;color:var(--sub);font-family:var(--font-hand);padding:2px 0}.day{aspect-ratio:1 / 1.08;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:5px;font-size:14px;position:relative}.day.out{visibility:hidden}.day.is-today{background:var(--today-bg)}.day.sel{outline:1.8px solid var(--ink);outline-offset:-2px;border-radius:var(--wobble-a)}.day .dots{display:flex;gap:2px;margin-top:2px;flex-wrap:wrap;justify-content:center;max-width:30px}.day .d{width:6px;height:6px;border-radius:50%}.d.done{background:var(--green)}.d.due{background:transparent;border:1.5px solid var(--caramel)}.note{color:var(--paper-ink);position:relative;padding:24px 18px 14px;font-size:15px;line-height:1.8;background:color-mix(in srgb,var(--theme) 20%,#fffcf6);border-radius:3px 3px 22px;transform:rotate(-.8deg);box-shadow:0 1px #51473f0f,0 8px 18px -10px #51473f73}.note:before{content:"";position:absolute;top:-9px;left:50%;width:70px;height:20px;margin-left:-35px;transform:rotate(-2deg);background:color-mix(in srgb,var(--theme) 45%,transparent);border-left:1px dashed rgba(255,255,255,.7);border-right:1px dashed rgba(255,255,255,.7)}.note .text{font-family:var(--font-hand);font-size:17px;white-space:pre-wrap}.note-meta{display:flex;align-items:center;gap:8px;margin-top:12px;padding-top:10px;border-top:1.2px dashed color-mix(in srgb,var(--theme) 35%,transparent);font-size:12.5px;color:#91877d}.envelope{position:relative;display:inline-grid;place-items:center;animation:wiggle 2.6s ease-in-out infinite;transform-origin:50% 80%}.envelope-open{animation:unfold .6s cubic-bezier(.2,.9,.3,1.1) both;transform-origin:top center}.star-pop{animation:starpop .55s ease both}.room{position:relative;aspect-ratio:3 / 4;width:100%;border:1.5px solid var(--line);border-radius:18px;overflow:hidden;background:#e9d9c3;box-shadow:var(--shadow)}.room .room-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center bottom;transition:opacity .8s ease;pointer-events:none}.room .who{position:absolute;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;cursor:pointer;z-index:2;filter:drop-shadow(0 5px 6px rgba(90,60,40,.28)) saturate(.94);transition:filter .8s}.room.night .who{filter:drop-shadow(0 5px 8px rgba(30,15,10,.45)) brightness(.86) sepia(.12)}.room .say{position:absolute;left:9%;right:9%;z-index:3;display:flex;justify-content:center}.room .say .speech{max-width:100%;background:color-mix(in srgb,#fffcf6 94%,transparent);color:#51473f}.room .say .speech:after{content:"";position:absolute;left:50%;bottom:-8px;width:14px;height:14px;margin-left:-7px;background:inherit;border-right:1.5px solid var(--line);border-bottom:1.5px solid var(--line);transform:rotate(45deg)}.room.night .say .speech{border-color:#8a6f5c}.room .desk-mail{position:absolute;left:15%;bottom:51.2%;z-index:2}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.stat{background:var(--card);border:1.5px solid var(--line);border-radius:var(--wobble-b);padding:10px 14px}.stat b{display:block;font-family:var(--font-hand);font-size:24px;font-weight:400;line-height:1.3}.menu-row{display:flex;align-items:center;gap:12px;padding:12px 4px;border-bottom:1.2px dashed var(--line);width:100%;text-align:left}.menu-row:last-child{border-bottom:0}.hist{display:flex;gap:12px;padding:10px 0;border-bottom:1.2px dashed var(--line-soft);align-items:flex-start}.hist:last-child{border-bottom:0}.photo-thumb{width:64px;height:64px;object-fit:cover;border-radius:6px;border:4px solid #fff;box-shadow:var(--shadow);transform:rotate(-2deg)}.empty{text-align:center;padding:28px 10px;color:var(--sub)}.empty .hand{color:var(--ink);font-size:18px}.exp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.exp-cell{border:1.5px dashed var(--line);border-radius:14px;padding:6px;text-align:center;background:var(--card);min-height:118px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;position:relative}.exp-cell.has{border-style:solid}.notice{background:var(--notice);border:1.5px dashed var(--caramel);border-radius:var(--wobble-b);padding:10px 14px;font-size:13.5px}.topbar{display:flex;align-items:center;gap:6px;margin:0 -8px 10px}.topbar .title{font-size:21px}.file-card{background:var(--card);border:1.5px solid var(--line);border-radius:6px 18px 6px 16px;padding:22px 16px 16px;position:relative;box-shadow:var(--shadow)}.file-tab{position:absolute;top:-13px;left:18px;background:var(--theme, var(--caramel));color:var(--on-primary);font-family:var(--font-hand);font-size:13px;padding:1px 12px;border-radius:8px 8px 0 0;transform:rotate(-1deg)}:root[data-theme=sage]{--paper: #f1f4ee;--card: #fbfcf8;--sage: #b5c6ae;--green: #67846b;--caramel: #a88b6a;--apricot: #dccfb8;--mist: #a9bcc2;--ink: #43493f;--sub: #858b7f;--line: #d1d9c9;--line-soft: #e3e9dd;--desk: #e5eade;--notice: #e8eedf;--today-bg: #e2eadb;--done-bg: #eef3ea;--shade: 67, 73, 63;--icon-ink: #43493f}:root[data-theme=mist]{--paper: #f0f3f4;--card: #fbfcfc;--sage: #b4c3ce;--green: #5f7c99;--caramel: #a88b76;--apricot: #d9c9c4;--mist: #a8b9c3;--ink: #434b55;--sub: #868e97;--line: #d0d8de;--line-soft: #e2e8ec;--desk: #e2e8ec;--notice: #e6ecf0;--today-bg: #e1e8ee;--done-bg: #edf2f5;--shade: 67, 75, 85;--icon-ink: #434b55}:root[data-theme=peach]{--paper: #f9f1ec;--card: #fff9f5;--sage: #e8c7b8;--green: #bf7c66;--caramel: #b68b68;--apricot: #f0d5c8;--mist: #c9b8c4;--ink: #5a463f;--sub: #9a857c;--line: #e8d4c9;--line-soft: #f1e3da;--desk: #f1e2d9;--notice: #f6e5da;--today-bg: #f4e0d4;--done-bg: #fbeee6;--shade: 90, 70, 63;--icon-ink: #5a463f}:root[data-theme=darkroom]{--paper: #1d1316;--card: #2a1c20;--sage: #793d4b;--green: #a65c6d;--caramel: #c7b5ba;--apricot: #542b35;--mist: #aaaeb2;--ink: #e4d9dc;--sub: #a99a9f;--line: #4b343a;--line-soft: #3a272d;--warn: #d48a7a;--desk: #100b0d;--on-primary: #fff6f8;--notice: #2f1f24;--today-bg: #3b252b;--done-bg: #331f25;--shade: 0, 0, 0;--icon-ink: #3a262b;--blob-op: .95;color-scheme:dark}:root[data-theme=darkroom] .app{background-image:none}:root[data-theme=darkroom] .tape{opacity:.6}.theme-card{border:1.5px solid var(--line);border-radius:14px;padding:8px;background:var(--card);text-align:left}.theme-card.on{border-color:var(--ink);box-shadow:0 0 0 1.5px var(--ink)}.theme-card .sw{display:flex;height:34px;border-radius:8px;overflow:hidden;margin-bottom:6px;border:1px solid rgba(0,0,0,.06)}.theme-card .sw i{flex:1}@keyframes fade{0%{opacity:0}}@keyframes slide-in{0%{opacity:0;transform:translate(18px)}}@keyframes card-in{0%{opacity:0;transform:translateY(12px) rotate(-.6deg)}}@keyframes sheet-up{0%{transform:translateY(40px);opacity:0}}@keyframes pop{0%{transform:scale(.94);opacity:0}}@keyframes toast-in{0%{transform:translateY(14px);opacity:0}}@keyframes stamp{0%{transform:scale(2.4) rotate(-28deg);opacity:0}35%{transform:scale(.92) rotate(-12deg);opacity:1}50%{transform:scale(1) rotate(-12deg)}80%{opacity:1}to{transform:scale(1) rotate(-12deg);opacity:0}}@keyframes spark{0%{transform:translate(0) scale(.4);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(1.1) rotate(40deg);opacity:0}}@keyframes breath{50%{transform:scaleY(1.015) translateY(-2px)}}@keyframes wiggle{0%,70%,to{transform:rotate(0)}76%{transform:rotate(-7deg)}84%{transform:rotate(6deg)}92%{transform:rotate(-3deg)}}@keyframes unfold{0%{transform:scaleY(.2) translateY(-20px);opacity:0}}@keyframes starpop{40%{transform:scale(1.5) rotate(18deg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.rm *,.rm *:before,.rm *:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}@media(min-width:481px){body{padding:0}}
