:root{--paper: #ffffff;--ink: #000000;--bead: #b45309;--positive: #15803d;--negative: #b91c1c;--font-text: system-ui, sans-serif;--font-numeric: ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace}:root[data-theme=dark]{--paper: #000000;--ink: #ffffff;--bead: #f59e0b;--positive: #4ade80;--negative: #f87171}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--paper: #000000;--ink: #ffffff;--bead: #f59e0b;--positive: #4ade80;--negative: #f87171}}body{margin:0;background:var(--paper);color:var(--ink)}a{color:var(--bead)}button,input,select,textarea{font-family:var(--font-text);background:var(--paper);color:var(--ink);border:1px solid var(--ink);border-radius:0;padding:.25rem .5rem}button{cursor:pointer}:focus-visible{outline:2px solid var(--bead);outline-offset:1px}input[type=date],.numeric,.amount{font-family:var(--font-numeric)}.amount-positive{color:var(--positive)}.amount-negative{color:var(--negative)}.app-shell{font-family:var(--font-text);padding:2rem;max-width:640px}.app-header{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}.app-nav{display:flex;flex-wrap:wrap;gap:1rem;margin:1rem 0;padding-bottom:.75rem;border-bottom:1px solid var(--ink)}.app-nav-link{text-decoration:none}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.ledger-pager{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.ledger-pager-count{font-size:.85rem;opacity:.75}.skeleton{display:block;background:color-mix(in srgb,var(--ink) 12%,transparent);border-radius:3px;position:relative;overflow:hidden}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--ink) 10%,transparent),transparent);animation:skeleton-shimmer 1.2s ease-in-out infinite}.skeleton-rows{display:flex;flex-direction:column;gap:.5rem}.section-error{color:var(--bead)}@keyframes skeleton-shimmer{to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){.skeleton:after{animation:none}}@media(max-width:640px){.app-shell{padding:1rem}.app-header{flex-direction:column;align-items:flex-start;gap:.25rem}.app-nav{row-gap:.25rem}.app-nav-link,button{min-height:44px;display:inline-flex;align-items:center}input,select,textarea,button{font-size:16px}}
