:root{--color-ink-navy: #1b2a41;--color-paper: #fafaf7;--color-ledger-green: #2e6e4e;--color-muted-brick: #a63d2f;--color-stamp-blue: #2456a6;--color-hairline: #d8d6cf;--font-display: "Fraunces", "Source Serif 4", Georgia, serif;--font-body: "Public Sans", "Inter", system-ui, sans-serif;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--space-12: 48px;--space-16: 64px;--radius: 6px;--radius-lg: 12px;--prose-max-width: 68ch;--container-max-width: 1180px}.money,[data-money]{font-variant-numeric:tabular-nums lining-nums}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--color-paper);color:var(--color-ink-navy);font-family:var(--font-body);line-height:1.5}.app-header,.app-main,.app-footer,.auth-card{overflow-wrap:anywhere}img,svg,video{max-width:100%;height:auto}h1,h2,h3{font-family:var(--font-display);line-height:1.2}h1{font-size:2rem;margin:var(--space-2) 0 var(--space-6)}h2{font-size:1.375rem;margin:var(--space-8) 0 var(--space-3)}h3{margin:var(--space-6) 0 var(--space-3)}p{margin:0 0 var(--space-4)}a{color:var(--color-stamp-blue);text-underline-offset:2px}@media(max-width:480px){h1{font-size:1.75rem}h2{font-size:1.25rem}}.app-header{background:var(--color-ink-navy);color:#fff;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.app-header-inner{max-width:960px;margin:0 auto;padding:var(--space-3) var(--space-4);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-1) var(--space-6)}.app-header-brand{font-family:var(--font-display);font-weight:700;font-size:1.25rem;color:#fff;text-decoration:none;padding:var(--space-2) 0}.app-header-nav{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2) var(--space-6)}.app-header-nav a,.app-header-nav button{color:#fff;font-size:1rem;font-family:var(--font-body);padding:var(--space-3) 0}.app-header-nav a{text-decoration:none}.app-header-nav a:hover{text-decoration:underline}.app-header-nav button{display:inline;min-height:0;width:auto;background:none;border:none;margin:0;cursor:pointer;font-weight:inherit;line-height:inherit;text-decoration:none;white-space:nowrap}.app-header-nav button:hover{background:none;text-decoration:underline}.app-main{padding:var(--space-8) max(var(--space-4),env(safe-area-inset-right)) var(--space-16) max(var(--space-4),env(safe-area-inset-left))}.app-footer{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-2) var(--space-6);padding:var(--space-4);border-top:1px solid var(--color-hairline)}.app-footer a{color:var(--color-stamp-blue);font-size:.875rem;text-decoration:none;padding:var(--space-2) 0}.app-footer a:hover{text-decoration:underline}.page-narrow{width:100%;max-width:var(--prose-max-width);margin:0 auto}.back-link{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--color-stamp-blue);font-size:.9375rem;text-decoration:none;margin-bottom:var(--space-4);padding:var(--space-2) 0}.back-link:hover{text-decoration:underline}.back-link:before{content:"←"}.auth-shell{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.auth-shell .app-main{flex:1;display:flex;align-items:flex-start;justify-content:center;padding-top:var(--space-12)}.auth-card{width:100%;max-width:440px;background:#fff;border:1px solid var(--color-hairline);border-radius:var(--radius-lg);padding:var(--space-8)}.auth-card h1{font-size:1.625rem;margin:0 0 var(--space-4)}.auth-card form{margin:var(--space-4) 0 0}@media(max-width:480px){.auth-shell .app-main{padding-top:var(--space-6)}.auth-card{padding:var(--space-6) var(--space-4)}}form{display:flex;flex-direction:column;gap:var(--space-3);width:100%;max-width:520px;margin:var(--space-4) 0}.field{display:flex;flex-direction:column;gap:var(--space-2);max-width:520px;margin:var(--space-4) 0}label{font-weight:600}input:not([type=checkbox]):not([type=radio]),select,textarea{display:block;box-sizing:border-box;width:100%;max-width:100%;min-width:0;min-height:48px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-hairline);border-radius:var(--radius);font-size:1rem;font-family:var(--font-body);background:#fff;color:var(--color-ink-navy)}select{text-overflow:ellipsis}input[type=file]{padding:var(--space-3);min-height:0}input[type=file]::file-selector-button{margin-right:var(--space-3);padding:var(--space-2) var(--space-4);border:1px solid var(--color-hairline);border-radius:var(--radius);background:var(--color-paper);color:var(--color-ink-navy);font-family:var(--font-body);font-weight:600;cursor:pointer}textarea{resize:vertical}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-stamp-blue);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-stamp-blue) 25%,transparent)}button:focus-visible,a:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--color-stamp-blue) 30%,transparent)}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);box-sizing:border-box;max-width:100%;padding:12px var(--space-6);min-height:48px;background:var(--color-stamp-blue);color:#fff;border:2px solid var(--color-stamp-blue);border-radius:var(--radius);font-family:var(--font-body);font-size:1rem;font-weight:600;line-height:1.2;text-align:center;cursor:pointer;text-decoration:none;white-space:normal;width:fit-content;margin:var(--space-2) 0 var(--space-4)}:where(button,.button)+:where(button,.button){margin-left:var(--space-3)}button:hover,.button:hover{background:color-mix(in srgb,var(--color-stamp-blue) 85%,black);border-color:color-mix(in srgb,var(--color-stamp-blue) 85%,black)}button:disabled{opacity:.5;cursor:not-allowed}.button-secondary{background:#fff;color:var(--color-stamp-blue)}.button-secondary:hover{background:color-mix(in srgb,var(--color-stamp-blue) 8%,white);color:var(--color-stamp-blue)}.button-danger{min-height:40px;padding:var(--space-2) var(--space-4);background:#fff;color:var(--color-muted-brick);border-color:var(--color-muted-brick);font-size:.875rem;margin:0}.button-danger:hover{background:color-mix(in srgb,var(--color-muted-brick) 8%,white);color:var(--color-muted-brick)}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);margin:var(--space-4) 0}.actions>button,.actions>.button{margin:0}@media(max-width:480px){.actions{flex-direction:column;align-items:stretch}.actions>button,.actions>.button{width:100%}form>button[type=submit]{width:100%}}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--color-muted-brick);border-width:2px}.field-error{margin:calc(-1 * var(--space-1)) 0 0;font-size:.9375rem;font-weight:600;color:var(--color-muted-brick)}.error-summary{max-width:520px;margin:var(--space-4) 0;padding:var(--space-4);border-left:5px solid var(--color-muted-brick);border-radius:var(--radius);background:color-mix(in srgb,var(--color-muted-brick) 8%,var(--color-paper))}.error-summary:focus{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--color-muted-brick) 35%,transparent)}.error-summary h2{margin:0 0 var(--space-2);font-size:1.125rem;color:var(--color-muted-brick)}.error-summary ul{margin:0;padding-left:var(--space-6)}.error-summary li{margin:var(--space-1) 0}.error-summary a{color:var(--color-muted-brick);font-weight:600}.hint{font-size:.875rem;color:var(--color-ink-navy);opacity:.75}.error{color:var(--color-muted-brick)}.banner{border-radius:var(--radius);border-left:5px solid;padding:var(--space-4);margin:var(--space-4) 0;font-weight:600}.banner-list{margin:0;padding-left:var(--space-6)}.banner-success{background:color-mix(in srgb,var(--color-ledger-green) 12%,var(--color-paper));border-color:var(--color-ledger-green);color:var(--color-ledger-green)}.banner-error{background:color-mix(in srgb,var(--color-muted-brick) 12%,var(--color-paper));border-color:var(--color-muted-brick);color:var(--color-muted-brick)}.business-list{list-style:none;padding:0;margin:var(--space-4) 0;display:flex;flex-direction:column;gap:var(--space-3)}.business-list li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3) var(--space-4);padding:var(--space-4);border:1px solid var(--color-hairline);border-radius:var(--radius);background:#fff}.row-main{flex:1 1 14rem;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2)}.row-title{font-weight:600}.row-meta{font-size:.875rem;opacity:.75}.row-sub{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-3)}.business-list li button,.business-list li .button{min-height:40px;padding:var(--space-2) var(--space-4);font-size:.9375rem;margin:0;flex-shrink:0}@media(max-width:480px){.business-list li>button,.business-list li>.button{width:100%}}.badge{display:inline-block;font-size:.75rem;font-weight:700;padding:3px 10px;border-radius:999px;text-transform:uppercase;letter-spacing:.02em;white-space:nowrap}.badge-open{background:color-mix(in srgb,var(--color-stamp-blue) 15%,var(--color-paper));color:var(--color-stamp-blue)}.badge-fulfilled{background:color-mix(in srgb,var(--color-ledger-green) 15%,var(--color-paper));color:var(--color-ledger-green)}.badge-type{background:color-mix(in srgb,var(--color-ink-navy) 10%,var(--color-paper));color:var(--color-ink-navy)}.summary-card{border:1px solid var(--color-hairline);border-radius:var(--radius);padding:var(--space-4) var(--space-6);margin:var(--space-4) 0;background:#fff}.summary-card dl{margin:0}.summary-card h2{margin-top:var(--space-2)}.summary-card>:last-child{margin-bottom:0}.summary-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-4);padding:var(--space-4) 0;border-bottom:1px solid var(--color-hairline)}.summary-row:last-child{border-bottom:none}.summary-row dt{color:var(--color-ink-navy);opacity:.75}.summary-row dd{margin:0;min-width:0;font-weight:600;text-align:right}.summary-value{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--space-2) var(--space-4)}.summary-row button,.summary-row .button{margin:0}@media(max-width:480px){.summary-card{padding:var(--space-2) var(--space-4)}.summary-row{flex-direction:column;align-items:flex-start}.summary-row dd,.summary-value{text-align:left;justify-content:flex-start;width:100%}.summary-row .summary-value button{width:100%}}.table-scroll{overflow-x:auto;margin:var(--space-4) 0}.record-table{width:100%;min-width:480px;border-collapse:collapse;background:#fff;border:1px solid var(--color-hairline);border-radius:var(--radius);overflow:hidden}.record-table th,.record-table td{text-align:left;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-hairline);font-size:.9375rem;vertical-align:middle}.record-table th{background:color-mix(in srgb,var(--color-ink-navy) 5%,var(--color-paper));font-weight:700}.record-table tr:last-child td{border-bottom:none}.record-table td[data-money]{text-align:right;white-space:nowrap}.record-table .empty-row td{color:var(--color-ink-navy);opacity:.6;font-style:italic}@media(max-width:640px){.table-scroll{overflow-x:visible}.record-table{min-width:0;background:transparent;border:none;border-radius:0;overflow:visible}.record-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.record-table,.record-table tbody{display:block}.record-table tr{display:grid;grid-template-columns:1fr auto;grid-template-areas:"date amount" "desc desc" "cat action";align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-3);background:#fff;border:1px solid var(--color-hairline);border-radius:var(--radius)}.record-table td{display:block;padding:0;border:none;font-size:.9375rem;min-width:0}.record-table .col-date{grid-area:date;font-size:.875rem;opacity:.75}.record-table .col-amount{grid-area:amount;font-weight:700}.record-table .col-desc{grid-area:desc;font-weight:600}.record-table .col-cat{grid-area:cat;font-size:.875rem;opacity:.75}.record-table .col-cat:last-child{grid-column:1 / -1;opacity:1}.record-table .col-action{grid-area:action}.record-table .empty-row{display:block;text-align:center}.record-table .empty-row td{display:block}}.stamp-note{font-style:italic}.receipt{border:1px solid var(--color-hairline);border-radius:var(--radius);padding:var(--space-6);margin:var(--space-4) 0;background:#fff}.receipt h2{margin-top:0}@media(max-width:480px){.receipt{padding:var(--space-4)}}
