:root{--ink:#1d1d1f;--muted:#6e6e73;--line:rgba(60,60,67,.16);--soft:#f5f5f7;--paper:#fff;--material:hsla(0,0%,100%,.78);--accent:#007aff;--accent-dark:#0062cc;--coral:#ff453a;--coral-dark:#d92d27;--mint:#248a3d;--gold:#c76d00;--danger:#d70015;--radius:8px;--nav-height:72px;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Hiragino Sans,Yu Gothic,Meiryo,sans-serif;font-synthesis:none}*{box-sizing:border-box}html{min-height:100%}body,html{background:var(--soft);min-width:320px}body{color:var(--ink);letter-spacing:0;margin:0;min-height:100vh}button,input,select,textarea{font:inherit;letter-spacing:0}a,button{-webkit-tap-highlight-color:transparent}a{text-decoration:none}a,button{color:inherit}a,button:not(:disabled){touch-action:manipulation}.app-shell{background:var(--soft);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;backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);background:#f9f9f9c7;display:grid;grid-template-columns:72px minmax(0,1fr) 72px;height:calc(56px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 10px 0;position:sticky;top:0;z-index:20}.app-header:after{background:linear-gradient(#0000000a,transparent);bottom:-8px;content:"";height:8px;left:0;pointer-events:none;position:absolute;right:0}.app-header h1{font-size:17px;font-weight:700;line-height:1.2;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%;color:var(--accent);cursor:pointer;display:grid;height:42px;padding:0;place-items:center;transition:background-color .14s ease,transform .1s ease;width:42px}.icon-button:hover{background:#7676801a}.icon-button:active{background:#7676802e;transform:scale(.93);transition-duration:70ms}.header-action{background:transparent;border:0;color:var(--accent);cursor:pointer;font-size:15px;font-weight:650;min-height:42px;padding:0 4px;transition:opacity .1s ease,transform .1s ease}.header-action:active{opacity:.55;transform:scale(.96)}.header-action:disabled{color:#aeaeb2;cursor:default;transform:none}.bottom-nav{backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);background:#f9f9f9d1;border-top:1px solid rgba(60,60,67,.12);bottom:0;display:grid;grid-template-columns:repeat(3,1fr);height:calc(var(--nav-height) + env(safe-area-inset-bottom));left:0;padding:4px 8px env(safe-area-inset-bottom);position:fixed;right:0;z-index:30}.bottom-nav a{align-items:center;border-radius:8px;color:#74747a;display:flex;flex-direction:column;font-size:10px;font-weight:600;gap:3px;justify-content:center;min-width:0;position:relative;transition:color .14s ease,transform .1s ease}.bottom-nav a:active{transform:scale(.93);transition-duration:70ms}.bottom-nav a.active{color:var(--accent)}.page{background:var(--soft);min-height:100vh}.page-content{margin:0 auto;padding:20px 16px 36px;width:min(100%,760px)}.page-content.flush{padding:0}.section-heading{align-items:center;display:flex;justify-content:space-between;margin:0 0 10px}.section-heading h2{font-size:20px;font-weight:700;margin:0}.text-link{color:var(--accent);font-size:14px;font-weight:500;min-height:32px}.empty-state,.muted{color:var(--muted)}.empty-state{font-size:14px;padding:44px 20px;text-align:center}.error-banner,.success-banner{border-radius:var(--radius);font-size:14px;line-height:1.45;margin:14px 16px;padding:12px 14px}.error-banner{background:#fff1f0;border:1px solid #ffccc7;color:#9b1c1c}.success-banner{background:#edf9f0;border:1px solid #b7e4c1;color:#176b35}.danger-button,.primary-button,.secondary-button{align-items:center;border-radius:var(--radius);cursor:pointer;display:inline-flex;font-size:16px;font-weight:650;gap:8px;justify-content:center;min-height:50px;padding:0 18px;transition:filter .14s ease,background-color .14s ease,transform .1s ease,opacity .1s ease}.primary-button{background:var(--accent);border:1px solid var(--accent);color:#fff}.primary-button:hover{background:var(--accent-dark);border-color:var(--accent-dark)}.danger-button:active,.primary-button:active,.secondary-button:active{transform:scale(.97);transition-duration:70ms}.primary-button:disabled{background:#aeaeb2;border-color:#aeaeb2;color:#f2f2f7;cursor:wait;transform:none}.secondary-button{background:#ffffffe6;border:1px solid rgba(0,122,255,.28);color:var(--accent)}.secondary-button:hover{background:#edf6ff}.danger-button{background:#fff;border:1px solid rgba(215,0,21,.24);color:var(--danger)}.full-button{width:100%}.form-stack{display:grid;gap:16px}.field{display:grid;gap:7px}.field-label,.field>label{color:var(--muted);font-size:13px;font-weight:600;padding-left:2px}.field input,.field select,.field textarea{background:#fff;border:1px solid var(--line);border-radius:var(--radius);color:var(--ink);min-height:50px;outline:none;padding:12px 14px;transition:border-color .14s ease,box-shadow .14s ease;width:100%}.field textarea{min-height:92px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #007aff24}.field-error{color:var(--danger);font-size:12px}.transaction-list{border-top:1px solid var(--line);overflow:hidden}.transaction-list,.transaction-row{background:#fff;border-bottom:1px solid var(--line)}.transaction-row{align-items:center;display:grid;gap:11px;grid-template-columns:42px minmax(0,1fr) auto 18px;min-height:76px;padding:11px 16px;transition:background-color .1s ease,transform .1s ease}.transaction-row:last-child{border-bottom:0}.transaction-row:hover{background:#f8f8fa}.transaction-row:active{background:#eeeef2;transform:scale(.995)}.transaction-icon{background:#fff0ef;border-radius:50%;color:var(--coral-dark);display:grid;height:40px;place-items:center;width:40px}.transaction-icon.income{background:#ecf8ef;color:var(--mint)}.transaction-copy{display:grid;gap:4px;min-width:0}.transaction-copy strong{font-size:15px;font-weight:650;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:3px;justify-items:end}.transaction-value small{color:var(--muted);font-size:11px}.transaction-value strong{font-size:15px;font-weight:650;white-space:nowrap}.transaction-value strong.expense{color:var(--ink)}.transaction-value strong.income{color:var(--mint)}.row-chevron{color:#c7c7cc}.segmented{background:#e9e9ee;border:0;border-radius:var(--radius);display:grid;gap:2px;grid-template-columns:1fr 1fr;padding:3px}.segmented button{align-items:center;background:transparent;border:0;border-radius:6px;cursor:pointer;display:flex;font-size:14px;font-weight:600;gap:7px;justify-content:center;min-height:40px;transition:background-color .16s ease,box-shadow .16s ease,transform .1s ease}.segmented button:active{transform:scale(.98)}.segmented button.active{background:#fff;box-shadow:0 1px 4px #00000024}.segmented button.expense.active{color:var(--coral-dark)}.segmented button.income.active{color:var(--mint)}.amount-display{background:#fff;border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;display:grid;min-height:108px;padding:16px 18px;text-align:left;transition:border-color .14s ease,box-shadow .14s ease,transform .1s ease;width:100%}.amount-display span{color:var(--muted);font-size:13px;font-weight:600}.amount-display strong{align-self:center;font-size:34px;font-weight:700;line-height:1.1}.amount-display:active{transform:scale(.99)}.amount-display.active{border-color:var(--accent);box-shadow:0 0 0 3px #007aff1f}.keypad{backdrop-filter:blur(28px) saturate(160%);-webkit-backdrop-filter:blur(28px) saturate(160%);background:#eeeef3e6;border-top:1px solid rgba(60,60,67,.14);bottom:0;box-shadow:0 -10px 35px #0000001f;left:0;padding:10px 10px calc(12px + env(safe-area-inset-bottom));position:fixed;right:0;z-index:40}.keypad-grid{display:grid;gap:7px;grid-template-columns:repeat(3,minmax(0,1fr));margin:0 auto;max-width:520px}.keypad button{background:#fff;border:0;border-radius:7px;box-shadow:0 1px 2px #00000029;cursor:pointer;display:grid;font-size:21px;font-weight:500;height:47px;min-width:0;padding:0;place-items:center;transition:background-color .1s ease,transform 80ms ease}.keypad button:active{background:#d8d8dd;transform:scale(.96)}.keypad .clear-key{color:var(--danger);font-size:16px}.keypad .done-key{background:var(--accent);color:#fff;font-size:16px;font-weight:650;grid-column:span 2}.keypad-enter-active,.keypad-leave-active{transition:transform .28s cubic-bezier(.2,.8,.2,1),opacity .18s ease}.keypad-enter-from,.keypad-leave-to{opacity:0;transform:translateY(100%)}@media(min-width:900px){.app-shell{display:grid;grid-template-columns:236px minmax(0,1fr)}.desktop-rail{backdrop-filter:blur(30px) saturate(180%);-webkit-backdrop-filter:blur(30px) saturate(180%);background:#f2f2f7c7;border-right:1px solid var(--line);display:flex;flex-direction:column;height:100vh;padding:24px 16px;position:sticky;top:0}.wordmark{align-items:center;display:flex;font-size:21px;font-weight:700;gap:10px;margin:2px 10px 28px}.wordmark-mark{background:var(--accent);border-radius:8px;box-shadow:0 5px 14px #007aff38;color:#fff;display:grid;height:34px;place-items:center;width:34px}.rail-caption{color:#8e8e93;font-size:11px;line-height:1.5;margin:auto 10px 0}.desktop-rail .bottom-nav{-webkit-backdrop-filter:none;backdrop-filter:none;background:transparent;border:0;display:grid;gap:4px;grid-template-columns:1fr;height:auto;padding:0;position:static}.desktop-rail .bottom-nav a{border-radius:7px;color:#55555a;flex-direction:row;font-size:14px;gap:12px;justify-content:flex-start;min-height:46px;padding:0 12px}.desktop-rail .bottom-nav a:hover{background:#7676801a}.desktop-rail .bottom-nav a.active{background:#007aff1a;color:var(--accent)}.mobile-nav{display:none}.app-column{min-height:100vh;overflow:visible;padding-bottom:0;width:100%}.app-header{padding-left:24px;padding-right:24px}.page-content{padding:28px 30px 44px}.transaction-list{border:1px solid var(--line);border-radius:var(--radius)}.keypad{border:1px solid var(--line);border-bottom:0;border-radius:8px 8px 0 0;left:calc(50% + 118px);right:auto;transform:translate(-50%);width:min(560px,calc(100vw - 320px))}}@media(prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}.keypad-enter-from,.keypad-leave-to{transform:none}}@media(prefers-reduced-transparency:reduce){.app-header,.bottom-nav,.desktop-rail,.keypad{backdrop-filter:none;-webkit-backdrop-filter:none;background:#f9f9fb}}@media(prefers-contrast:more){:root{--line:rgba(0,0,0,.38);--muted:#4d4d52}.app-header,.bottom-nav,.desktop-rail{background:#fff}.field input:focus,.field select:focus,.field textarea:focus,.primary-button{border-width:2px}}
