:root{--ink:#14223f;--muted:#6f7788;--line:#dfe3e9;--soft:#f4f6f8;--paper:#fff;--coral:#f4514a;--coral-dark:#d93e38;--mint:#159b68;--gold:#b87b12;--danger:#c83434;--radius:8px;--nav-height:72px;color:var(--ink);font-family:Inter,Noto Sans JP,Hiragino Sans,Yu Gothic,Meiryo,sans-serif;font-synthesis:none}*{box-sizing:border-box}html{background:var(--soft)}body{background:var(--paper);color:var(--ink);letter-spacing:0;margin:0;min-height:100vh;min-width:320px}button,input,select,textarea{font:inherit;letter-spacing:0}a,button{-webkit-tap-highlight-color:transparent}a{text-decoration:none}a,button{color:inherit}.app-shell{background:var(--paper);min-height:100vh}.app-column{min-height:100vh;padding-bottom:calc(var(--nav-height) + env(safe-area-inset-bottom))}.desktop-rail{display:none}.app-header{align-items:center;background:#fff;border-bottom:1px solid var(--line);display:grid;grid-template-columns:72px minmax(0,1fr) 72px;height:64px;padding:env(safe-area-inset-top) 12px 0;position:sticky;top:0;z-index:20}.app-header h1{font-size:20px;font-weight:750;margin:0;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.header-side{display:flex;justify-content:flex-start}.header-side-end{justify-content:flex-end}.icon-button{background:transparent;border:0;border-radius:50%;cursor:pointer;display:grid;height:42px;padding:0;place-items:center;width:42px}.icon-button:hover{background:var(--soft)}.header-action{background:transparent;border:0;color:var(--coral-dark);cursor:pointer;font-size:14px;font-weight:750;padding:9px 4px}.header-action:disabled{color:#a7acb6;cursor:default}.bottom-nav{background:#fff;border-top:1px solid var(--line);bottom:0;display:grid;grid-template-columns:repeat(3,1fr);height:calc(var(--nav-height) + env(safe-area-inset-bottom));left:0;padding-bottom:env(safe-area-inset-bottom);position:fixed;right:0;z-index:30}.bottom-nav a{align-items:center;color:var(--muted);display:flex;flex-direction:column;font-size:12px;font-weight:650;gap:5px;justify-content:center;min-width:0;position:relative}.bottom-nav a:before{background:transparent;content:"";height:3px;position:absolute;top:0;width:54px}.bottom-nav a.active{color:var(--coral)}.bottom-nav a.active:before{background:var(--coral)}.page{background:#fff;min-height:100vh}.page-content{margin:0 auto;padding:20px 18px 32px;width:min(100%,760px)}.page-content.flush{padding:0}.section-heading{align-items:center;display:flex;justify-content:space-between;margin:0 0 12px}.section-heading h2{font-size:18px;font-weight:760;margin:0}.text-link{color:var(--coral-dark);font-size:13px;font-weight:700}.empty-state,.muted{color:var(--muted)}.empty-state{padding:40px 20px;text-align:center}.error-banner,.success-banner{border-radius:var(--radius);font-size:14px;margin:14px 18px;padding:12px 14px}.error-banner{background:#fff0f0;border:1px solid #f4c4c4;color:#8a2020}.success-banner{background:#eaf8f1;border:1px solid #b9e7d0;color:#0b6846}.danger-button,.primary-button,.secondary-button{align-items:center;border-radius:var(--radius);cursor:pointer;display:inline-flex;font-size:15px;font-weight:760;gap:9px;justify-content:center;min-height:48px;padding:0 18px}.primary-button{background:var(--coral);border:1px solid var(--coral);color:#fff}.primary-button:hover{background:var(--coral-dark)}.primary-button:disabled{background:#b8bcc5;border-color:#b8bcc5;cursor:wait}.secondary-button{background:var(--paper);border:1px solid var(--ink)}.secondary-button:hover{background:var(--soft)}.danger-button{background:#fff;border:1px solid #e6bcbc;color:var(--danger)}.full-button{width:100%}.form-stack{display:grid;gap:17px}.field{display:grid;gap:7px}.field-label,.field>label{color:var(--muted);font-size:13px;font-weight:700}.field input,.field select,.field textarea{background:#fff;border:1px solid #ccd2dc;border-radius:var(--radius);color:var(--ink);min-height:48px;outline:none;padding:11px 13px;width:100%}.field textarea{min-height:88px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--ink);box-shadow:0 0 0 3px #14223f12}.field-error{color:var(--danger);font-size:12px}.transaction-list{border-top:1px solid var(--line)}.transaction-row{align-items:center;background:#fff;border-bottom:1px solid var(--line);display:grid;gap:11px;grid-template-columns:42px minmax(0,1fr) auto 20px;min-height:82px;padding:13px 18px}.transaction-row:hover{background:#fafbfc}.transaction-icon{background:#fff5d8;border-radius:50%;color:var(--gold);display:grid;height:42px;place-items:center;width:42px}.transaction-icon.income{background:#e5f6ed;color:var(--mint)}.transaction-copy{display:grid;gap:5px;min-width:0}.transaction-copy strong{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.transaction-copy small{align-items:center;color:var(--muted);display:flex;font-size:12px;gap:7px}.inline-icon{align-items:center;display:inline-flex;gap:3px}.transaction-value{display:grid;gap:4px;justify-items:end}.transaction-value small{color:var(--gold);font-size:11px}.transaction-value strong{font-size:15px;white-space:nowrap}.transaction-value strong.expense{color:var(--ink)}.transaction-value strong.income{color:var(--mint)}.row-chevron{color:#89909e}.segmented{background:var(--soft);border:1px solid var(--line);border-radius:var(--radius);display:grid;gap:4px;grid-template-columns:1fr 1fr;padding:4px}.segmented button{align-items:center;background:transparent;border:0;border-radius:5px;cursor:pointer;display:flex;font-size:14px;font-weight:720;gap:7px;justify-content:center;min-height:44px}.segmented button.active{background:#fff;box-shadow:0 1px 3px #14223f16}.segmented button.expense.active{color:var(--coral-dark)}.segmented button.income.active{color:var(--mint)}.amount-display{background:#f8f9fb;border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;display:grid;min-height:104px;padding:14px 18px;text-align:left;width:100%}.amount-display span{color:var(--muted);font-size:13px;font-weight:700}.amount-display strong{align-self:center;font-size:34px;line-height:1.1}.amount-display.active{border-color:var(--coral);box-shadow:0 0 0 3px #f4514a12}.keypad{background:#f1f3f5;border-top:1px solid #cdd2da;bottom:0;box-shadow:0 -8px 24px #14223f12;left:0;padding:8px 10px calc(10px + env(safe-area-inset-bottom));position:fixed;right:0;z-index:40}.keypad-grid{display:grid;gap:6px;grid-template-columns:repeat(3,minmax(0,1fr));margin:0 auto;max-width:520px}.keypad button{background:#fff;border:1px solid #d5d9e0;border-radius:6px;box-shadow:0 1px 2px #14223f10;cursor:pointer;display:grid;font-size:20px;font-weight:650;height:46px;min-width:0;padding:0;place-items:center}.keypad button:active{background:#e5e8ed;transform:translateY(1px)}.keypad .clear-key{color:var(--danger);font-size:16px}.keypad .done-key{background:var(--coral);border-color:var(--coral);color:#fff;font-size:16px;grid-column:span 2}.keypad-enter-active,.keypad-leave-active{transition:transform .18s ease,opacity .18s ease}.keypad-enter-from,.keypad-leave-to{opacity:0;transform:translateY(30px)}@media(min-width:900px){.app-shell{background:var(--soft);display:grid;grid-template-columns:228px minmax(0,1fr)}.desktop-rail{background:var(--ink);display:block;height:100vh;padding:28px 18px;position:sticky;top:0}.wordmark{color:#fff;display:block;font-size:26px;font-weight:780;margin:0 12px 28px}.desktop-rail .bottom-nav{-webkit-backdrop-filter:none;backdrop-filter:none;background:transparent;border:0;display:grid;gap:6px;grid-template-columns:1fr;height:auto;padding:0;position:static}.desktop-rail .bottom-nav a{border-radius:6px;color:#c7cede;flex-direction:row;font-size:14px;gap:12px;justify-content:flex-start;min-height:48px;padding:0 13px}.desktop-rail .bottom-nav a:before{display:none}.desktop-rail .bottom-nav a.active{background:#ffffff14;color:#fff}.mobile-nav{display:none}.app-column{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 12px 36px #14223f0d;margin:20px auto;min-height:calc(100vh - 40px);overflow:hidden;padding-bottom:0;width:min(920px,calc(100vw - 260px))}.app-header{position:sticky}.page-content{padding-left:30px;padding-right:30px}.keypad{border:1px solid #cdd2da;border-bottom:0;border-radius:8px 8px 0 0;left:calc(50% + 114px);right:auto;transform:translate(-50%);width:min(560px,calc(100vw - 300px))}}@media(prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}
