: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{background:#fbfaf7}.expense-month-input{width:132px;min-height:36px;border:1px solid #d0d5dd;border-radius:8px;padding:4px 8px;background:#ffffff;color:#344054;font:inherit}.expense-panel{display:grid;grid-gap:16px;gap:16px}.expense-panel h2{margin:8px 0 0;font-size:18px}.expense-warning{margin:0;padding:10px 12px;border:1px solid #fedf89;border-radius:8px;background:#fffaeb;color:#93370d;font-size:13px}.expense-summary-strip{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.expense-summary-strip>div{padding:12px;border:1px solid #dde5d8;border-radius:8px;background:#ffffff}.expense-summary-strip span{display:block;color:#667085;font-size:12px}.expense-summary-strip strong{display:block;margin-top:4px;color:#101828;font-size:22px}.expense-list{display:grid;grid-gap:14px;gap:14px}.expense-day-group{display:grid;grid-gap:8px;gap:8px}.expense-day-group h2{margin:0;color:#667085;font-size:13px}.expense-item{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:12px;gap:12px;align-items:center;min-height:64px;padding:12px;border:1px solid #dde5d8;border-radius:8px;background:#ffffff}.expense-item p,.expense-item strong{overflow-wrap:anywhere}.expense-item p{margin:4px 0 0;color:#667085;font-size:13px}.expense-item>span{font-weight:800}.expense-segmented{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:4px;gap:4px;padding:4px;border:1px solid #d0d5dd;border-radius:8px;background:#f2f4f7}.expense-segmented button{min-height:36px;border:0;border-radius:6px;background:transparent;color:#344054}.expense-segmented button.active{background:#ffffff;color:#101828;box-shadow:0 1px 2px rgba(16,24,40,.12)}.expense-bars{display:grid;grid-gap:10px;gap:10px}.expense-bar-row{display:grid;grid-template-columns:72px minmax(0,1fr) 78px;grid-gap:8px;gap:8px;align-items:center;font-size:13px}.expense-bar-row>span,.expense-bar-row>strong{min-width:0;overflow-wrap:anywhere}.expense-bar-track{height:10px;overflow:hidden;border-radius:999px;background:#eaecf0}.expense-bar-fill{height:100%;border-radius:inherit;background:#5b8def}.expense-trend{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(34px,1fr);align-items:end;grid-gap:8px;gap:8px;min-height:156px}.expense-trend-item{display:grid;justify-items:center;align-items:end;grid-gap:6px;gap:6px;color:#667085;font-size:12px}.expense-trend-bar{width:100%;max-width:28px;border-radius:8px 8px 2px 2px;background:#f4b95b}