@font-face{font-family:Silkscreen;src:url(/fonts/silkscreen-400.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Silkscreen;src:url(/fonts/silkscreen-700.woff2) format("woff2");font-weight:700;font-display:swap}:root{color-scheme:light;--bg: #eef2ec;--dot: #d5ddd1;--surface: #fbfcf8;--surface-2: #e4ebe0;--ink: #22302a;--ink-2: #4c5b54;--ink-3: #7c8a83;--line: #d6dfd2;--edge: #22302a;--shadow: #c3cfbe;--accent: #2f7a68;--accent-ink: #ffffff;--accent-soft: #d3e8de;--memo: #fff4c2;--mascot: #d97757;--mascot-ink: #22302a;--mascot-blush: #f2a48c;--bell: #f2c14e;--bell-edge: #c98f12;--good: #2f8a4f;--warn: #b7791f;--danger: #c8453b;--font-pixel: "Silkscreen", ui-monospace, monospace;--font: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;--safe-bottom: env(safe-area-inset-bottom)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg: #151c1a;--dot: #222c29;--surface: #1f2825;--surface-2: #28332f;--ink: #e8efe9;--ink-2: #bccac2;--ink-3: #8a9a92;--line: #34413c;--edge: #0a0e0d;--shadow: #0a0e0d;--accent: #5cb39c;--accent-ink: #0f1a16;--accent-soft: #23443a;--memo: #3b3722;--mascot: #e0896a;--mascot-ink: #151c1a;--mascot-blush: #f5b7a1;--bell: #f5c95a;--bell-edge: #c98f12;--good: #5cbf7e;--warn: #e0a83e;--danger: #ec6a5f}}:root[data-theme=dark]{color-scheme:dark;--bg: #151c1a;--dot: #222c29;--surface: #1f2825;--surface-2: #28332f;--ink: #e8efe9;--ink-2: #bccac2;--ink-3: #8a9a92;--line: #34413c;--edge: #0a0e0d;--shadow: #0a0e0d;--accent: #5cb39c;--accent-ink: #0f1a16;--accent-soft: #23443a;--memo: #3b3722;--mascot: #e0896a;--mascot-ink: #151c1a;--mascot-blush: #f5b7a1;--bell: #f5c95a;--bell-edge: #c98f12;--good: #5cbf7e;--warn: #e0a83e;--danger: #ec6a5f}*{box-sizing:border-box}html,body{margin:0}body{min-height:100vh;color:var(--ink);font:15px/1.55 var(--font);-webkit-font-smoothing:antialiased;background:var(--bg) radial-gradient(var(--dot) 1.2px,transparent 1.3px) 0 0 / 18px 18px}body.modal-open{overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.num{font-family:var(--font-pixel);font-variant-numeric:tabular-nums;letter-spacing:.02em}.muted{color:var(--ink-3)}.small{font-size:13px}.pixel-icon{display:inline-block;flex:none;vertical-align:-2px}.card{background:var(--surface);border:2px solid var(--edge);box-shadow:4px 4px 0 var(--shadow);padding:16px}.card h2{margin:0 0 12px;font-size:15px;display:flex;align-items:center;gap:8px}.pixel-btn,.primary-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--accent);color:var(--accent-ink);border:2px solid var(--edge);box-shadow:3px 3px 0 var(--edge);padding:8px 18px;font-weight:700;border-radius:0;transition:transform .05s;white-space:nowrap}.pixel-btn:active:not(:disabled),.primary-button:active:not(:disabled),.secondary-button:active:not(:disabled){transform:translate(3px,3px);box-shadow:none}.pixel-btn.ghost,.secondary-button{background:var(--surface);color:var(--ink)}.pixel-btn.small{padding:4px 10px;font-size:13px;box-shadow:2px 2px 0 var(--edge)}.pixel-btn.small:active:not(:disabled){transform:translate(2px,2px)}.icon-btn{background:var(--surface);border:2px solid var(--edge);box-shadow:2px 2px 0 var(--edge);width:36px;height:36px;display:grid;place-items:center;padding:0}.icon-btn:active{transform:translate(2px,2px);box-shadow:none}.icon-btn.is-on{background:var(--ink);color:var(--surface)}.chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;line-height:1.5;padding:0 6px;border:1.5px solid var(--edge);background:var(--surface-2);white-space:nowrap}.chip.muted{color:var(--ink-3);border-color:var(--line);background:transparent}.chip.warn{background:color-mix(in srgb,var(--warn) 22%,var(--surface))}.chip.danger{background:color-mix(in srgb,var(--danger) 22%,var(--surface))}.chip.good{background:color-mix(in srgb,var(--good) 22%,var(--surface))}.chip.repeat{background:var(--accent-soft)}.mascot{width:100%;height:100%;overflow:visible;display:block}.mascot .m-blink{transform-box:fill-box;transform-origin:center;animation:blink 4.2s infinite}.mascot .m-wave{transform-box:fill-box;transform-origin:0 100%;animation:wave .6s steps(2) infinite}.mascot .m-ring{transform-box:fill-box;transform-origin:50% 100%;animation:ring .5s steps(2) infinite}.mascot.mood-idle,.mascot.mood-wave,.mascot.mood-ring{animation:bob 1.2s steps(2) infinite}.mascot.mood-happy{animation:hop .8s steps(4) infinite}.mascot.mood-sleep{animation:bob 2.4s steps(2) infinite}.mascot .m-bubble,.mascot .m-spark{animation:blinkslow 1.6s steps(2) infinite}@keyframes blink{0%,94%,to{transform:scaleY(1)}96%{transform:scaleY(.1)}}@keyframes bob{50%{transform:translateY(-3%)}}@keyframes hop{50%{transform:translateY(-12%)}}@keyframes wave{50%{transform:rotate(-25deg)}}@keyframes ring{50%{transform:rotate(12deg)}}@keyframes blinkslow{50%{opacity:.2}}.app{max-width:760px;margin:0 auto;padding:0 16px calc(96px + var(--safe-bottom))}.topbar{display:flex;align-items:center;gap:10px;padding:14px 0 10px;padding-top:max(14px,env(safe-area-inset-top))}.brand{display:flex;align-items:center;gap:8px;font-weight:800;font-size:18px;background:none;border:0;padding:0}.brand-mascot{width:32px;height:29px}.spacer{flex:1}.offline{gap:4px}.tabs{display:flex;gap:8px;margin:4px 0 18px}.tabs button{position:relative;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:2px solid var(--edge);background:var(--surface);font-weight:600;white-space:nowrap}.tabs button.is-on{background:var(--ink);color:var(--surface)}.badge{font-family:var(--font-pixel);font-size:11px;line-height:16px;min-width:18px;padding:0 4px;text-align:center;background:var(--accent-soft);color:var(--ink);border:1.5px solid var(--edge)}.badge.is-hot{background:var(--danger);color:#fff}@media(max-width:640px){.tabs{position:fixed;left:0;right:0;bottom:0;z-index:20;margin:0;gap:4px;padding:8px 8px calc(8px + var(--safe-bottom));background:var(--surface);border-top:2px solid var(--edge)}.tabs button{flex:1;flex-direction:column;gap:2px;padding:5px 2px;font-size:12px;border-width:0;background:transparent}.tabs button.is-on{background:var(--ink)}.tabs .badge{position:absolute;top:0;right:calc(50% - 26px);font-size:10px;line-height:14px;min-width:16px}.add-btn{padding:4px 8px}}.view{animation:enter .18s ease-out}@keyframes enter{0%{opacity:0;transform:translateY(4px)}}.view-head{margin:4px 0 14px}.view-head h1{margin:0;font-size:22px}.view-head p{margin:2px 0 0;color:var(--ink-3);font-size:13px}.hero{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 120px;gap:12px;align-items:end;overflow:hidden;padding:18px 18px 0;margin-bottom:16px;border:2px solid var(--edge);box-shadow:4px 4px 0 var(--shadow);background:linear-gradient(var(--surface) 0 calc(100% - 22px),var(--surface-2) calc(100% - 22px))}.hero-text{padding-bottom:34px}.hero-date{color:var(--ink-3);font-size:12px}.hero h1{margin:2px 0;font-size:24px}.hero p{margin:0 0 12px;color:var(--ink-2)}.hero-stats{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;color:var(--ink-2)}.hero-stats b{font-size:18px;color:var(--ink);margin-right:2px;font-weight:400}.hero-stage{align-self:end;height:120px;padding-bottom:16px}.hero-mascot{width:110px;height:99px;margin-left:auto}@media(max-width:420px){.hero{grid-template-columns:minmax(0,1fr) 82px}.hero-mascot{width:80px;height:72px}.hero-stage{height:96px}}.quick-add{margin-bottom:18px}.quick-row{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 12px;background:var(--memo);border:2px solid var(--edge);box-shadow:3px 3px 0 var(--shadow)}.quick-row input{flex:1;min-width:0;border:0;background:transparent;padding:4px 0;font-size:16px;outline:none}.quick-row input::placeholder{color:var(--ink-3)}.quick-plus{color:var(--ink-3)}.quick-preview{margin:6px 4px 0;font-size:13px;color:var(--ink-2)}.quick-preview.is-warn{color:var(--warn)}.task-groups{display:grid;gap:16px}.group-head{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;font-weight:700;color:var(--ink-2);padding:0 4px 5px}.group-head .num{font-size:12px;color:var(--ink-3);font-weight:400}.task-group.is-danger .group-head{color:var(--danger)}.task-group.is-muted .group-head{color:var(--ink-3)}.rows{background:var(--surface);border:2px solid var(--edge);box-shadow:3px 3px 0 var(--shadow)}.task-group.is-danger .rows{border-left:6px solid var(--danger)}.task-row,.sub-row{display:grid;grid-template-columns:40px minmax(0,1fr);align-items:start;border-bottom:1px solid var(--line);animation:row-in .22s ease-out both}.task-row:last-child,.sub-row:last-child{border-bottom:0}@keyframes row-in{0%{opacity:0;transform:translate(-4px)}}.check{width:40px;height:100%;min-height:48px;display:grid;place-items:center;background:none;border:0;padding:0}.check .pixel-icon{width:20px;height:20px;padding:2px;border:2px solid var(--edge);background:var(--surface);color:transparent;transition:color .1s,background .1s}.check:hover .pixel-icon{color:var(--ink-3)}.check[aria-pressed=true] .pixel-icon,.is-leaving .check .pixel-icon{background:var(--accent);color:var(--accent-ink)}.check.placeholder{min-height:0}.task-main,.sub-main{display:grid;gap:3px;text-align:left;background:none;border:0;padding:11px 12px 11px 0;min-width:0}.task-title{font-weight:600;overflow-wrap:anywhere}.task-meta{display:flex;flex-wrap:wrap;gap:4px 6px;font-size:12px;color:var(--ink-3)}.task-notes{font-size:12.5px;color:var(--ink-3);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-line}.task-row.is-done .task-title{color:var(--ink-3);text-decoration:line-through}.task-row.is-leaving .task-title{text-decoration:line-through;color:var(--ink-3);transition:color .2s}.task-row.is-leaving{opacity:.5;transition:opacity .25s}.task-row:hover,.sub-row:hover{background:color-mix(in srgb,var(--surface-2) 45%,transparent)}.sub-row{grid-template-columns:40px minmax(0,1fr) auto}.sub-row.is-dim{opacity:.6}.sub-name{font-weight:700;display:flex;flex-wrap:wrap;gap:6px;align-items:center;overflow-wrap:anywhere}.sub-info{font-size:12px;color:var(--ink-3)}.sub-side{display:grid;justify-items:end;gap:3px;padding:11px 12px 11px 0;text-align:right}.sub-side strong{font-weight:400;font-size:14px}.sub-when{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px;font-size:12px;color:var(--ink-3)}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin-bottom:18px}.tile{display:grid;gap:2px}.tile .label{font-size:13px;color:var(--ink-2)}.tile .value{font-size:clamp(18px,5vw,24px);line-height:1.25;display:grid}.empty{text-align:center;color:var(--ink-3);padding:28px 16px;border:2px dashed var(--line)}.empty-mascot{width:72px;height:65px;margin:0 auto 6px}.empty h3{margin:0 0 2px;color:var(--ink-2);font-size:15px}.empty p{margin:0;font-size:13px}.loading{min-height:60vh;display:grid;place-items:center;align-content:center;gap:8px;color:var(--ink-3)}.loading.inline{min-height:160px}.loading-mascot{width:88px;height:79px}.error-card{border-color:var(--danger)}.error-card p{margin:4px 0 0;color:var(--ink-2);font-size:13px}.more-btn{margin:16px auto 0;display:flex}.settings{display:grid;gap:16px}.kv{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;margin:0 0 10px;font-size:14px}.kv dt{color:var(--ink-2)}.kv dd{margin:0;text-align:right}.segmented{display:inline-flex;border:2px solid var(--edge);margin-bottom:8px}.segmented button{border:0;background:var(--surface);padding:6px 14px}.segmented button+button{border-left:2px solid var(--edge)}.segmented button.is-on{background:var(--ink);color:var(--surface)}.settings-form{display:grid;gap:10px;max-width:360px}.settings-form label{display:grid;gap:4px;font-size:13px;color:var(--ink-2)}.settings-form .pixel-btn{justify-self:start}.gate{min-height:100vh;display:grid;place-items:center;padding:16px}.gate-card{width:min(380px,100%);background:var(--surface);border:2px solid var(--edge);box-shadow:6px 6px 0 var(--shadow);padding:24px;text-align:center}.gate-mascot{width:96px;height:86px;margin:0 auto}.gate-card h1{margin:8px 0 4px;font-size:22px}.gate-sub{color:var(--ink-2);margin:0 0 16px;font-size:14px}.gate-error{color:var(--danger);font-weight:700;margin:0}.gate-form{display:grid;gap:12px;text-align:left}.gate-form label{display:grid;gap:4px;font-size:13px;color:var(--ink-2)}.gate-setup code{display:block;padding:10px;background:var(--surface-2);border:2px dashed var(--line);font-size:12px;word-break:break-all;text-align:left;margin-bottom:8px}.gate-form input,.settings-form input,.editor-form input,.editor-form select,.editor-form textarea{width:100%;font-size:16px;padding:9px 10px;border:2px solid var(--edge);background:var(--bg);color:var(--ink);border-radius:0;min-width:0}.gate-form input:focus,.settings-form input:focus,.editor-form input:focus,.editor-form select:focus,.editor-form textarea:focus{outline:3px solid var(--accent-soft);outline-offset:0}.editor-form textarea{resize:vertical}.sheet-bg{position:fixed;inset:0;z-index:40;background:#00000059;display:flex;align-items:flex-end;justify-content:center;animation:fade .15s}.sheet{width:min(600px,100%);max-height:90vh;overflow:auto;background:var(--bg);border:2px solid var(--edge);border-bottom:0;padding:16px 16px calc(16px + var(--safe-bottom));box-shadow:0 -4px 0 var(--shadow);animation:rise .18s ease-out}@media(min-width:641px){.sheet-bg{align-items:center}.sheet{border-bottom:2px solid var(--edge);box-shadow:6px 6px 0 var(--shadow)}}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{transform:translateY(16px);opacity:.6}}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.sheet-head h2{margin:0;font-size:18px}.editor-form{display:grid;gap:14px}.editor-form>label,.form-grid>label{display:grid;gap:4px}.editor-form label>span:first-child,.reminder-fieldset legend{font-size:13px;font-weight:700;color:var(--ink-2)}.editor-form small,.reminder-fieldset p{font-size:12px;color:var(--ink-3);margin:0}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.amount-grid{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}@media(max-width:420px){.form-grid:not(.amount-grid){grid-template-columns:1fr}}.reminder-fieldset{border:2px dashed var(--line);margin:0;padding:10px 12px 12px;display:grid;gap:8px;min-width:0}.reminder-fieldset legend{padding:0 4px}.reminder-options{display:flex;flex-wrap:wrap;gap:6px}.reminder-option{position:relative}.reminder-option input{position:absolute;opacity:0;inset:0;margin:0;width:100%;height:100%;cursor:pointer}.reminder-option span{display:inline-block;padding:4px 10px;font-size:13px;border:2px solid var(--edge);background:var(--surface)}.reminder-option input:checked+span{background:var(--accent);color:var(--accent-ink)}.reminder-option input:focus-visible+span{outline:3px solid var(--accent);outline-offset:2px}.custom-reminder{display:flex;gap:8px}.custom-reminder input{flex:1}.custom-reminder .secondary-button{padding:4px 12px;box-shadow:2px 2px 0 var(--edge)}.custom-reminder-list{display:flex;flex-wrap:wrap;gap:6px}.custom-reminder-list button{font-size:12px;padding:2px 8px;border:1.5px solid var(--edge);background:var(--accent-soft)}.check-row{display:flex!important;align-items:center;gap:8px}.check-row input{width:18px;height:18px;accent-color:var(--accent)}.form-error{color:var(--danger);font-size:13px;font-weight:700;margin:0}.form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding-top:4px}.action-spacer{flex:1}.text-button{background:none;border:0;padding:6px 2px;font-size:14px;color:var(--ink-2);text-decoration:underline;text-underline-offset:3px}.text-button.danger{color:var(--danger)}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(84px + var(--safe-bottom));z-index:50;display:flex;align-items:center;gap:12px;max-width:calc(100vw - 32px);width:max-content;padding:10px 12px 10px 14px;background:var(--ink);color:var(--surface);border:2px solid var(--edge);box-shadow:4px 4px 0 var(--shadow);font-size:14px;animation:toast-in .18s ease-out}.toast+.toast{bottom:calc(140px + var(--safe-bottom))}.toast button{flex:none;background:var(--accent);color:var(--accent-ink);border:2px solid var(--surface);padding:2px 10px;font-weight:700}.toast button.ghost{background:transparent;color:var(--surface)}@media(min-width:641px){.toast{bottom:24px}.toast+.toast{bottom:80px}}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
