:root{color-scheme:light dark;font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,Hiragino Sans,sans-serif;color:#20231e;background:#f5f5f7;font-synthesis:none;--bg: #f5f5f7;--surface: #ffffff;--text: #20231e;--muted: #74786f;--line: rgba(60, 60, 67, .16);--accent: #252b22;--accent-text: #f7ffd7;--highlight: #d6f36b;--danger: #c83c3c;--sunday: #d94b43;--saturday: #3978b8;--today: #e5e5ea;--chart-point-focus: rgba(60, 60, 67, .22)}*{box-sizing:border-box}html{background:var(--bg);touch-action:manipulation}body{margin:0;min-width:320px;min-height:100dvh;background:var(--bg);color:var(--text);touch-action:manipulation;-webkit-tap-highlight-color:transparent}body.page-locked{position:fixed;right:0;left:0;width:100%;overflow:hidden}button,input{font:inherit}button{color:inherit}[hidden]{display:none!important}button:focus-visible,input:focus-visible{outline:3px solid color-mix(in srgb,var(--highlight) 75%,transparent);outline-offset:2px}#app{width:min(100%,580px);min-height:100dvh;margin:0 auto;padding:env(safe-area-inset-top) 20px calc(104px + env(safe-area-inset-bottom))}.topbar{display:flex;align-items:center;justify-content:flex-end;height:72px}.topbar-actions{display:flex;gap:8px;transform:translateY(12px)}.icon-button{display:grid;width:46px;height:46px;place-items:center;border:1px solid var(--line);border-radius:50%;background:var(--surface)}.icon-button svg{width:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.export-button svg{width:18px;stroke-width:1.65}.add-button{border-color:transparent;background:var(--accent);color:var(--accent-text)}.view{display:none;animation:appear .18s ease;touch-action:pan-y pinch-zoom}.view.active{display:block}@keyframes appear{0%{opacity:0;transform:translateY(3px)}}.month-nav h2,.trend-period-nav h3{margin:0;font-size:19px;line-height:1.2;letter-spacing:-.02em}.edit-form{display:grid;gap:14px}.field{display:block;padding:14px 17px 12px;border:1px solid var(--line);border-radius:17px;background:var(--surface);transition:border-color .15s}.field:focus-within{border-color:#aeb68e}.field>span:first-child,.date-field>span{display:block;margin-bottom:6px;color:var(--muted);font-size:12px;font-weight:600}.field input{width:100%;padding:0;border:0;outline:0;background:transparent;color:var(--text);font-size:19px}.field input::placeholder{color:#b3b5ae}.amount-input{display:flex;align-items:baseline}.amount-input input{min-width:0;font-size:30px;font-weight:650;letter-spacing:-.03em}.amount-input b{font-size:16px}.date-field{display:flex;min-height:46px;align-items:center;justify-content:space-between;padding:0 4px}.date-field>span{margin:0}.date-field input{min-height:42px;border:0;outline:0;background:transparent;color:var(--text);font-size:15px;font-weight:600}.primary-button{width:100%;min-height:58px;margin-top:7px;border:0;border-radius:18px;background:var(--accent);color:var(--accent-text);font-size:17px;font-weight:700}.primary-button:active{transform:scale(.985)}.primary-button:disabled{opacity:.55}.month-nav,.trend-period-nav{display:grid;grid-template-columns:48px 1fr 48px;align-items:center;margin:12px 0 8px;text-align:center}.month-nav button,.trend-period-nav button{width:46px;height:46px;border:0;background:transparent;font-size:30px;font-weight:300;line-height:1}.calendar-card{padding:13px 8px 10px;border:1px solid var(--line);border-radius:20px;background:var(--surface)}.weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.weekdays{margin-bottom:5px;color:var(--muted);font-size:10px;font-weight:600;text-align:center}.weekdays span:first-child{color:var(--sunday)}.weekdays span:last-child{color:var(--saturday)}.calendar-grid{row-gap:1px}.calendar-blank,.calendar-day{min-width:0;min-height:44px}.calendar-day{display:flex;align-items:center;flex-direction:column;justify-content:flex-start;padding:2px 1px 3px;border:0;border-radius:12px;background:transparent}.calendar-day:active{background:color-mix(in srgb,var(--highlight) 15%,transparent)}.calendar-day.selected{background:var(--accent);color:var(--accent-text)}.day-number{display:grid;width:22px;height:22px;place-items:center;border-radius:50%;font-size:13px;font-weight:600}.calendar-day.today:not(.selected){background:var(--today)}.day-amount{width:100%;min-height:12px;margin-top:1px;overflow:hidden;color:var(--muted);font-size:8.5px;font-variant-numeric:tabular-nums;font-weight:600;letter-spacing:-.05em;text-align:center;text-overflow:ellipsis;white-space:nowrap}.calendar-day.selected .day-amount{color:var(--accent-text);opacity:.75}.day-summary{display:flex;min-height:56px;align-items:center;justify-content:space-between;margin-top:3px;padding:2px 3px;border-bottom:1px solid var(--line)}.day-summary time{font-size:18px;font-weight:650;letter-spacing:-.02em}.day-summary div{display:flex;align-items:baseline;gap:7px}.day-summary span{color:var(--muted);font-size:11px}.day-summary strong{font-size:21px;letter-spacing:-.03em}.expense-list{margin-top:9px;overflow:hidden;border-radius:17px;background:var(--surface)}.expense-list.is-empty{display:none}.expense-item{display:grid;width:100%;min-height:72px;grid-template-columns:58px minmax(0,1fr) auto 12px;align-items:center;padding:10px 13px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;gap:8px}.expense-item.day-item{grid-template-columns:minmax(0,1fr) auto 12px;padding-left:17px}.expense-item:last-child{border-bottom:0}.expense-item:active{background:color-mix(in srgb,var(--highlight) 12%,var(--surface))}.expense-name{overflow:hidden;font-size:14px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.expense-item strong{font-size:15px;white-space:nowrap}.chevron{color:var(--muted);font-size:23px}.trend-range-toggle{position:relative;display:grid;width:104px;height:46px;grid-template-columns:1fr 1fr;padding:3px;border-radius:23px;background:#7676801f}.trend-range-toggle:before{position:absolute;top:3px;bottom:3px;left:3px;width:calc(50% - 3px);border-radius:20px;background:var(--surface);box-shadow:0 1px 3px #00000024;content:"";transition:transform .18s cubic-bezier(.25,.8,.25,1)}.trend-range-toggle.is-year:before{transform:translate(100%)}.trend-range-toggle button{position:relative;z-index:1;border:0;border-radius:20px;background:transparent;color:var(--muted);font-size:13px;font-weight:600;transition:color .18s ease}.trend-range-toggle button.active{color:var(--text)}.chart-card{overflow:hidden;padding:16px 10px 10px;border:1px solid var(--line);border-radius:22px;background:var(--surface)}.chart{width:100%;overflow-x:auto}.chart svg{display:block;width:100%}.chart-grid{stroke:var(--line);stroke-width:1}.chart-axis{fill:var(--muted);font-size:var(--chart-label-size, 11px)}.chart-axis-x{font-weight:600}.chart-line{fill:none;stroke:var(--accent);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.chart-dot{fill:var(--accent);stroke:var(--accent);stroke-width:1}.chart-point{cursor:pointer}.chart-point:focus{outline:none}.chart-focus-ring{fill:none;stroke:var(--chart-point-focus);stroke-width:2;opacity:0;transition:opacity .12s ease}.chart-point:focus .chart-focus-ring{opacity:1}.chart-hit{fill:transparent;pointer-events:all}.chart-tooltip{pointer-events:none}.chart-tooltip-text{fill:var(--text);stroke:var(--surface);stroke-width:5px;stroke-linejoin:round;paint-order:stroke;font-size:var(--chart-label-size, 11px);font-weight:700}.chart-summary{margin:0 8px;padding:17px 0 8px;border-top:1px solid var(--line)}.chart-summary.has-average{display:grid;grid-template-columns:1fr 1fr}.chart-summary div{padding-left:13px}.chart-summary.has-average div+div{border-left:1px solid var(--line)}.chart-summary span,.chart-summary strong{display:block}.chart-summary span{color:var(--muted);font-size:11px}.chart-summary strong{margin-top:5px;font-size:16px}.ranking{margin-top:27px}.ranking-list{overflow:hidden;border-radius:17px;background:var(--surface)}.ranking-item{display:grid;width:100%;min-height:66px;grid-template-columns:27px minmax(0,1fr) auto 12px;align-items:center;padding:8px 13px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;gap:9px}.ranking-item:last-child{border-bottom:0}.ranking-item:active{background:color-mix(in srgb,var(--highlight) 12%,var(--surface))}.rank{display:grid;width:25px;height:25px;place-items:center;border-radius:50%;background:var(--bg);color:var(--muted);font-size:12px;font-weight:700}.ranking-detail{min-width:0}.ranking-detail strong,.ranking-detail small{display:block}.ranking-detail strong{overflow:hidden;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.ranking-detail small{margin-top:3px;color:var(--muted);font-size:11px}.ranking-item>b{font-size:15px;white-space:nowrap}.load-more{width:100%;min-height:48px;margin-top:9px;border:0;border-radius:14px;background:var(--surface);color:var(--text);font-size:13px;font-weight:600}.load-more:active{background:color-mix(in srgb,var(--highlight) 12%,var(--surface))}.tabbar{position:fixed;z-index:5;bottom:0;left:50%;display:grid;width:min(100%,580px);height:calc(72px + env(safe-area-inset-bottom));grid-template-columns:repeat(2,1fr);padding:7px 54px env(safe-area-inset-bottom);transform:translate(-50%);border-top:1px solid color-mix(in srgb,var(--line) 82%,transparent);background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.tabbar button{display:grid;min-height:55px;place-content:center;gap:3px;border:0;background:transparent;color:var(--muted);font-size:10px}.tabbar button.active{color:var(--text);font-weight:700}.tabbar svg{width:23px;margin:auto;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.tabbar button.active svg{stroke-width:2.5}dialog{width:min(100% - 20px,560px);max-height:calc(100dvh - 35px);margin:auto auto 0;padding:0;overflow:auto;border:0;border-radius:25px 25px 0 0;background:var(--surface);color:var(--text);box-shadow:0 -10px 50px #00000029}dialog::backdrop{background:#0c0e0b61;backdrop-filter:blur(2px)}dialog[open]{animation:sheet-in .2s ease-out}@keyframes sheet-in{0%{transform:translateY(20px);opacity:0}}.edit-form{padding:8px 20px calc(22px + env(safe-area-inset-bottom))}.sheet-handle{width:38px;height:5px;margin:2px auto 3px;border-radius:9px;background:var(--line)}.sheet-heading{display:flex;align-items:center;justify-content:space-between}.sheet-handle,.sheet-heading{touch-action:none}.sheet-heading h2{margin:12px 0 10px;font-size:22px}.close-button{width:42px;height:42px;border:0;border-radius:50%;background:var(--bg);font-size:25px}.edit-date{padding-inline:5px}.delete-button{min-height:48px;border:0;background:transparent;color:var(--danger);font-size:14px;font-weight:600}.export-sheet{padding:8px 20px calc(22px + env(safe-area-inset-bottom))}.data-actions{margin-top:5px}.export-action-row{display:flex;min-height:56px;align-items:center;justify-content:space-between;padding:0 4px;border-bottom:1px solid var(--line);font-size:14px;font-weight:600}.export-options{display:flex;gap:6px}.export-options button{min-width:54px;min-height:36px;padding:0 10px;border:0;border-radius:9px;background:var(--bg);font-size:12px;font-weight:700}.export-options button:active{background:color-mix(in srgb,var(--highlight) 12%,var(--bg))}.import-button,.clear-data-button{width:100%;min-height:52px;padding:0 4px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--text);font-size:14px;font-weight:600;text-align:left}.clear-data-button{border-bottom:0;color:var(--danger)}.toast{position:fixed;z-index:20;bottom:calc(86px + env(safe-area-inset-bottom));left:50%;max-width:calc(100% - 40px);padding:11px 17px;transform:translate(-50%,10px);border-radius:30px;background:#20231e;color:#fff;font-size:13px;opacity:0;pointer-events:none;transition:.2s ease;white-space:nowrap}.toast.show{transform:translate(-50%);opacity:1}@media(prefers-color-scheme:dark){:root{--bg: #111210;--surface: #1d1f1b;--text: #f0f1ec;--muted: #969b90;--line: #30332d;--accent: #d6f36b;--accent-text: #1b2018;--highlight: #d6f36b;--danger: #ff7474;--sunday: #ff6961;--saturday: #6ba7e5;--today: #2c2c2e;--chart-point-focus: rgba(235, 235, 245, .25)}.primary-button{box-shadow:none}.toast{background:#ecefe7;color:#171916}}@media(min-width:700px){#app{border-inline:1px solid var(--line)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}
