:root{color:#1f2937;background:#eef2ec;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0}button{font:inherit}.app-frame{min-height:100svh;max-width:520px;margin:0 auto;padding:20px 16px 92px;background:#fffdf8}.app-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.app-header h1{margin:0;font-size:28px}.app-header p{margin:6px 0 0;color:#667085}.empty-state{padding:32px 0;color:#667085;text-align:center}.timeline{display:grid;grid-gap:10px;gap:10px}.event-item{display:grid;grid-template-columns:40px 1fr 40px 40px;grid-gap:8px;gap:8px;align-items:center;min-height:64px;padding:10px;border:1px solid #dde5d8;border-radius:8px;background:#ffffff}.event-item-completed{opacity:.58}.event-main{min-width:0}.event-main p,.event-main strong{overflow-wrap:anywhere}.event-time{display:block;color:#667085;font-size:13px}.icon-button{display:inline-grid;width:36px;height:36px;place-items:center;border:1px solid #d0d5dd;border-radius:8px;background:#f9fafb;color:#344054}.icon-button.danger{color:#b42318}.calendar-view{margin-inline:-16px}.calendar-header{display:grid;grid-template-columns:36px 1fr 36px;grid-gap:8px;gap:8px;align-items:center;padding:0 16px 8px}.calendar-heading{min-width:0;text-align:center}.calendar-heading h2{margin:0;font-size:32px;line-height:1.05;color:#060606}.calendar-month-switcher{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px;margin-top:6px}.calendar-month-switcher label{display:inline-flex;align-items:center;gap:4px;color:#667085;font-size:12px}.calendar-month-switcher select{min-height:30px;border:1px solid #d0d5dd;border-radius:8px;padding:4px 24px 4px 8px;background:#ffffff;color:#344054;font:inherit}.calendar-weekdays{position:-webkit-sticky;position:sticky;top:0;z-index:1;align-items:center;min-height:28px;border-top:1px solid #eaecf0;border-bottom:1px solid #d0d5dd;background:rgba(255,253,248,.97);color:#667085;font-size:13px;font-weight:700;text-align:center}.calendar-grid,.calendar-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.calendar-day,.calendar-empty-cell{display:grid;grid-template-rows:28px 14px 6px;align-content:start;justify-items:center;min-width:0;min-height:56px;padding:6px 2px 4px;border:0;border-bottom:1px solid #eaecf0;background:transparent;color:#060606}.calendar-day span{display:inline-grid;width:30px;height:30px;place-items:center;border-radius:999px;font-size:21px;font-weight:800;line-height:1}.calendar-day.selected span{background:#060606;color:#ffffff}.calendar-day small{display:block;min-height:14px;color:#667085;font-size:10px;line-height:14px}.calendar-day small:not(:empty):after{display:block;width:7px;height:7px;margin:1px auto 0;border-radius:999px;background:#f4b95b;content:""}.selected-day-list{display:grid;grid-gap:10px;gap:10px;margin-top:12px;padding-inline:16px}.tab-bar{position:fixed;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:8px;gap:8px;max-width:520px;margin:0 auto;padding:10px 16px 18px;border-top:1px solid #dde5d8;background:rgba(255,253,248,.96)}.tab-bar button{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;border:1px solid #d0d5dd;border-radius:8px;background:#ffffff}.tab-bar button.active{border-color:#2f6f4e;background:#2f6f4e;color:#ffffff}.nl-input{margin-bottom:18px;min-width:0}.nl-input label,.sheet label{display:grid;grid-gap:6px;gap:6px;color:#344054;font-size:14px}.nl-input div{display:grid;grid-template-columns:minmax(0,1fr) 44px;grid-gap:8px;gap:8px;align-items:stretch;margin-top:6px;min-width:0}.nl-input input,.sheet input,.sheet textarea{width:100%;min-width:0;min-height:44px;border:1px solid #d0d5dd;border-radius:8px;padding:10px 12px;background:#ffffff;color:#1f2937;font-size:16px;line-height:1.35}.nl-input button,.sheet-actions button{min-height:44px;border:1px solid #2f6f4e;border-radius:8px;background:#2f6f4e;color:#ffffff}.nl-input button{display:inline-grid;width:44px;min-width:44px;padding:0;place-items:center}.sheet{position:fixed;right:0;bottom:0;left:0;display:grid;grid-gap:12px;gap:12px;max-width:520px;margin:0 auto;padding:16px;border-top:1px solid #dde5d8;background:#fffdf8;box-shadow:0 -12px 40px rgba(31,41,55,.14)}.sheet-actions{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.login-frame{display:grid;min-height:100svh;place-items:center;padding:24px 16px;background:#eef2ec}.login-panel{width:min(100%,420px);grid-gap:16px;gap:16px;padding:28px 20px;border:1px solid #dde5d8;background:#fffdf8}.login-icon,.login-panel{display:grid;border-radius:8px}.login-icon{width:48px;height:48px;place-items:center;background:#e8f3ec;color:#2f6f4e}.login-panel h1{margin:0;font-size:26px}.login-panel label{display:grid;grid-gap:8px;gap:8px;color:#344054;font-size:14px}.login-panel input{min-height:46px;border:1px solid #d0d5dd;border-radius:8px;padding:10px 12px;background:#ffffff;color:#1f2937;font:inherit}.login-panel button{min-height:46px;border:1px solid #2f6f4e;border-radius:8px;background:#2f6f4e;color:#ffffff}.login-panel button:disabled{border-color:#98a2b3;background:#98a2b3}.login-error{margin:0;color:#b42318}.expense-frame{--expense-bg:#f5f7f5;--expense-surface:#ffffff;--expense-surface-muted:#edf4f1;--expense-ink:#14201d;--expense-muted:#66736f;--expense-subtle:#87938f;--expense-line:#dde8e3;--expense-primary:#175e64;--expense-primary-strong:#123f44;--expense-accent:#2f8f6b;--expense-accent-soft:#dff0e9;--expense-warm:#c9782c;--expense-danger:#c9353f;--expense-shadow:0 10px 28px rgba(20,32,29,0.08);--expense-ease-out:cubic-bezier(0.23,1,0.32,1);--expense-ease-drawer:cubic-bezier(0.32,0.72,0,1);padding:18px 14px 126px;background:var(--expense-bg);color:var(--expense-ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.expense-frame .app-header{align-items:center;margin-bottom:16px;padding:4px 2px 0}.expense-frame .app-header h1{font-size:26px;line-height:1.08;font-weight:850}.expense-frame .app-header p{margin-top:5px;color:var(--expense-muted);font-size:13px}.expense-month-input{width:132px;min-height:42px;border:1px solid var(--expense-line);border-radius:8px;padding:0 12px;background:var(--expense-surface);color:var(--expense-ink);font:inherit;font-weight:700;box-shadow:0 1px 0 rgba(20,32,29,.03)}.expense-panel{display:grid;grid-gap:16px;gap:16px}.expense-panel h2{margin:6px 0 -2px;color:var(--expense-ink);font-size:16px;line-height:1.25}.expense-warning{margin:0;padding:10px 12px;border:1px solid #f1c38f;border-radius:8px;background:#fff6eb;color:#8a4b18;font-size:13px}.expense-summary-strip{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,.65fr);grid-gap:10px;gap:10px}.expense-summary-strip>div{min-width:0;padding:15px 14px 14px;border:1px solid rgba(23,94,100,.14);border-radius:8px;background:var(--expense-surface);box-shadow:var(--expense-shadow)}.expense-summary-strip>div:first-child{border-color:transparent;background:var(--expense-primary-strong);box-shadow:0 14px 32px rgba(18,63,68,.2)}.expense-summary-strip span{display:block;color:var(--expense-muted);font-size:12px;line-height:1.25}.expense-summary-strip strong{display:block;margin-top:5px;color:var(--expense-ink);font-size:24px;line-height:1.1;overflow-wrap:anywhere}.expense-summary-strip>div:first-child span{color:#cfe2dc}.expense-summary-strip>div:first-child strong{color:#ffffff;font-size:34px}.expense-list{display:grid;grid-gap:16px;gap:16px}.expense-day-group{display:grid;grid-gap:8px;gap:8px}.expense-day-group h2{margin:0;color:var(--expense-muted);font-size:12px;line-height:1.2}.expense-item{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) max-content;grid-gap:12px;gap:12px;align-items:center;min-height:66px;width:100%;padding:14px 16px;border:1px solid var(--expense-line);border-radius:8px;background:var(--expense-surface);color:inherit;font:inherit;text-align:left;touch-action:pan-y;transition:transform .18s var(--expense-ease-out),border-color .16s var(--expense-ease-out),box-shadow .16s var(--expense-ease-out)}.expense-item:active{border-color:rgba(23,94,100,.32);box-shadow:0 5px 16px rgba(20,32,29,.08)}.expense-item p,.expense-item strong{overflow-wrap:anywhere}.expense-item strong{color:var(--expense-ink);font-size:16px;line-height:1.25}.expense-item p{margin:5px 0 0;color:var(--expense-muted);font-size:12px;line-height:1.35}.expense-item>span{color:var(--expense-primary-strong);font-size:17px;font-weight:800;line-height:1;white-space:nowrap}.expense-swipe-row{position:relative;overflow:hidden;border-radius:8px;box-shadow:0 1px 0 rgba(23,33,31,.03)}.expense-swipe-row.open .expense-item{transform:translateX(-80px)}.expense-delete-action{position:absolute;z-index:0;top:0;right:0;bottom:0;width:80px;border:0;border-radius:0 8px 8px 0;background:var(--expense-danger);color:#ffffff;font-weight:800;opacity:0;pointer-events:none;transition:opacity .12s var(--expense-ease-out)}.expense-swipe-row.open .expense-delete-action{opacity:1;pointer-events:auto}.expense-edit-overlay{position:fixed;inset:0;z-index:50;display:grid;align-items:end;background:rgba(18,28,26,.42)}.expense-edit-sheet{display:grid;grid-gap:14px;gap:14px;padding:18px 16px calc(48px + env(safe-area-inset-bottom));border:1px solid rgba(255,255,255,.72);border-bottom:0;border-radius:20px 20px 0 0;background:var(--expense-surface);box-shadow:0 -20px 48px rgba(20,32,29,.2);transition:transform .22s var(--expense-ease-drawer),opacity .18s var(--expense-ease-out)}.expense-edit-sheet header{display:grid;grid-template-columns:64px minmax(0,1fr) 64px;align-items:center;grid-gap:8px;gap:8px;min-height:40px}.expense-edit-sheet h2{margin:0;text-align:center;font-size:16px;line-height:1.2}.expense-edit-sheet header button{min-height:40px;border:0;border-radius:8px;background:transparent;color:var(--expense-primary);font:inherit;font-weight:700}.expense-edit-sheet header button:disabled{color:var(--expense-subtle)}.expense-edit-sheet label{display:grid;grid-gap:7px;gap:7px;color:var(--expense-muted);font-size:13px;font-weight:700}.expense-edit-sheet input,.expense-edit-sheet select{min-height:58px;border:1px solid var(--expense-line);border-radius:8px;padding:0 13px;background:#fbfdfc;color:var(--expense-ink);font:inherit;font-size:17px}.expense-edit-sheet select{height:58px}.expense-edit-sheet input:focus,.expense-edit-sheet select:focus,.expense-month-input:focus{border-color:var(--expense-primary);outline:3px solid rgba(31,111,120,.16)}.expense-edit-error{margin:0;color:var(--expense-danger);font-size:13px}.expense-segmented{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:4px;gap:4px;padding:4px;border:1px solid var(--expense-line);border-radius:8px;background:var(--expense-surface-muted)}.expense-segmented button{min-height:44px;border:0;border-radius:6px;background:transparent;color:var(--expense-muted);font-weight:700;touch-action:manipulation}.expense-segmented button.active{background:var(--expense-surface);color:var(--expense-primary-strong);box-shadow:0 4px 14px rgba(20,32,29,.1)}.expense-bars{display:grid;grid-gap:13px;gap:13px;padding:16px;border:1px solid var(--expense-line);border-radius:8px;background:var(--expense-surface)}.expense-bar-row{display:grid;grid-template-columns:76px minmax(0,1fr) 88px;grid-gap:9px;gap:9px;align-items:center;color:var(--expense-muted);font-size:13px}.expense-bar-row>span,.expense-bar-row>strong{min-width:0;overflow-wrap:anywhere}.expense-bar-row>strong{color:var(--expense-ink);text-align:right}.expense-bar-track{height:12px;overflow:hidden;border-radius:999px;background:#e8eeeb}.expense-bar-fill{height:100%;border-radius:inherit;background:var(--expense-accent)}.expense-trend{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(34px,1fr);align-items:end;grid-gap:8px;gap:8px;min-height:172px;padding:16px 10px 12px;border:1px solid var(--expense-line);border-radius:8px;background:var(--expense-surface)}.expense-trend-item{display:grid;justify-items:center;align-items:end;grid-gap:7px;gap:7px;color:var(--expense-muted);font-size:12px}.expense-trend-bar{width:100%;max-width:28px;border-radius:8px 8px 3px 3px;background:var(--expense-warm)}.expense-frame .tab-bar{z-index:30;right:14px;bottom:calc(12px + env(safe-area-inset-bottom));left:14px;gap:6px;height:64px;max-width:492px;padding:8px;border:1px solid rgba(31,111,120,.16);border-radius:8px;background:rgba(255,255,255,.94);-webkit-backdrop-filter:blur(20px) saturate(160%);backdrop-filter:blur(20px) saturate(160%);box-shadow:0 16px 40px rgba(20,32,29,.16)}.expense-frame .tab-bar button{min-height:46px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--expense-muted);font-weight:700;touch-action:manipulation}.expense-frame .tab-bar button.active{border-color:rgba(23,94,100,.16);background:var(--expense-surface);color:var(--expense-primary-strong);box-shadow:0 5px 18px rgba(20,32,29,.1)}.expense-frame button:active{transform:scale(.98);transition:transform .12s var(--expense-ease-out)}.expense-frame button:focus-visible{outline:3px solid rgba(23,94,100,.18);outline-offset:2px}@media (prefers-reduced-motion:reduce){.expense-frame *,.expense-frame :after,.expense-frame :before{scroll-behavior:auto;transition-duration:1ms}}