:root{--ink: #1a1f16;--ink-soft: #4b5245;--muted: #5c6354;--line: #dbdfd3;--line-strong: #8f9787;--paper: #fbfbf8;--surface: #ffffff;--stripe: rgba(26, 31, 22, .035);--hover: rgba(26, 31, 22, .05);--accent: #1f6f43;--accent-ink: #163a1a;--accent-soft: #e4f0e8;--accent-line: #b9d7c3;--danger: #a03123;--danger-soft: #fbe9e6;--danger-line: #e3b3ab;--warning-bg: #fbedc7;--warning-line: #d9a63e;--warning-ink: #6b4c05;--pending-bg: #fdf6e3;--pending-line: #e8cf8a;--pending-ink: #7a5c00;--focus-ring: #2f7dd1;--radius-sm: 4px;--radius-md: 7px;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--fs-2xs: .7rem;--fs-xs: .8rem;--fs-sm: .9rem;--fs-base: 1rem;--fs-md: 1.15rem;--fs-lg: 1.4rem;--fs-xl: 2rem;font-family:var(--font-sans);font-size:14px;line-height:1.45;color:var(--ink);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;background:var(--paper)}h1,h2,h3,p{margin:0 0 .6em}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:var(--radius-sm)}@media(prefers-reduced-motion:no-preference){button,input,select,textarea,a,tr,.dropzone{transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease,color .12s ease}}button{font:inherit;font-size:var(--fs-xs);font-weight:600;padding:.4rem .85rem;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink-soft);cursor:pointer}button:hover:not(:disabled){border-color:var(--ink-soft);color:var(--ink)}button:disabled{opacity:.5;cursor:default}button.active{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-soft)}button.primary{border-color:var(--accent);background:var(--accent);color:#fff}button.primary:hover:not(:disabled){border-color:var(--accent-ink);background:var(--accent-ink)}button.danger{border-color:var(--danger-line);color:var(--danger);background:var(--surface)}button.danger:hover:not(:disabled){border-color:var(--danger);background:var(--danger-soft)}.delete-confirm button.danger{border-color:var(--danger);background:var(--danger);color:#fff}.delete-confirm button.danger:hover:not(:disabled){background:#841f14;border-color:#841f14}button.link{border:none;background:none;padding:0;font-weight:600;color:var(--accent-ink);text-decoration:underline;text-underline-offset:.15em}button.link:hover:not(:disabled){color:var(--accent)}input,select,textarea{font:inherit;font-size:var(--fs-sm);color:var(--ink);padding:.32rem .5rem;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);max-width:100%}input::placeholder,textarea::placeholder{color:var(--muted);font-style:italic}input.money{text-align:right;width:7.5rem;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}label{display:inline-flex;flex-direction:column;gap:.3rem;font-size:var(--fs-2xs);font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}label>input,label>select,label>textarea{font-size:var(--fs-sm);font-weight:400;color:var(--ink);text-transform:none;letter-spacing:normal}.error{color:var(--danger);background:var(--danger-soft);border-left:3px solid var(--danger);padding:.45rem .7rem;border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:var(--fs-xs)}.muted{color:var(--muted);font-size:var(--fs-xs)}.warning{background:var(--warning-bg);color:var(--warning-ink);border-left:3px solid var(--warning-line);padding:.45rem .7rem;border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:var(--fs-xs);font-weight:600}.empty-state,.no-image{border:1px dashed var(--line-strong);border-radius:var(--radius-md);color:var(--muted);background:var(--surface);text-align:center;padding:2rem 1rem}.no-image{min-height:16rem;display:flex;align-items:center;justify-content:center}.topbar{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;align-items:center;gap:1rem;padding:.55rem 1rem;border-bottom:1px solid var(--line);background:var(--surface)}.topbar nav{display:flex;gap:.2rem;flex:1}.topbar nav button{border:1px solid transparent;background:none;color:var(--muted);padding:.4rem .75rem;border-radius:var(--radius-sm)}.topbar nav button:hover:not(:disabled){border-color:transparent;background:var(--stripe);color:var(--ink)}.topbar nav button.active{background:var(--accent-soft);color:var(--accent-ink);border-color:transparent}.brand{font-weight:800;font-size:var(--fs-md);color:var(--accent-ink);letter-spacing:-.01em}.topbar-actions{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;flex-basis:100%;justify-content:flex-end}@media(min-width:40rem){.topbar-actions{flex-basis:auto}}.topbar .signout{border-color:transparent;background:none;color:var(--muted)}.topbar .signout:hover:not(:disabled){color:var(--ink);border-color:var(--line-strong)}main{padding:1.25rem 1.5rem 3rem;max-width:75rem;margin:0 auto}main>section>h2{font-size:var(--fs-md);font-weight:700;color:var(--ink)}.signin{max-width:24rem;margin:15vh auto;text-align:center;display:flex;flex-direction:column;align-items:center;gap:.9rem}.signin h1{font-size:var(--fs-xl);color:var(--accent-ink);letter-spacing:-.02em}.signin p{color:var(--muted);font-size:var(--fs-sm)}.signin>button.primary{width:100%;padding:.6rem;font-size:var(--fs-sm)}.dev-token{display:flex;flex-direction:column;gap:.6rem;text-align:left;width:100%;border:1px solid var(--line);border-radius:var(--radius-md);padding:.9rem;background:var(--surface)}.dev-token input{width:100%}.dev-token code{font-family:var(--font-mono);font-size:.85em}.table-controls{display:flex;flex-wrap:wrap;gap:.9rem;align-items:end;margin-bottom:1rem;padding-bottom:.9rem;border-bottom:1px solid var(--line)}.table-controls .grow{flex:1;min-width:12rem}.table-controls .grow input{width:100%}.table-controls input[list]{width:9rem}.sort-order{align-self:end;white-space:nowrap}.confirm-queue{border-color:var(--warning-line);background:var(--warning-bg);color:var(--warning-ink);font-weight:700}.confirm-queue:hover:not(:disabled){border-color:var(--warning-ink)}.confirm-queue:disabled{background:var(--surface);border-color:var(--line-strong);color:var(--muted)}table.receipts{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}table.receipts thead th{position:sticky;top:3.1rem;z-index:10;text-align:left;font-size:var(--fs-2xs);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:var(--paper);border-bottom:2px solid var(--line-strong);padding:.5rem}table.receipts th.num,table.receipts td.num{text-align:right}table.receipts td{border-bottom:1px solid var(--line);padding:.4rem .5rem;vertical-align:middle}table.receipts td.num,table.receipts td input.money{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}table.receipts tbody tr:nth-child(2n) td{background:var(--stripe)}table.receipts tbody tr:hover td{box-shadow:inset 0 0 0 999px var(--hover)}table.receipts tbody tr:focus-within td{box-shadow:inset 0 0 0 1px var(--accent)}table.receipts td input,table.receipts td select{border-color:transparent;border-bottom:1px solid transparent;border-radius:0;background:transparent;width:100%;padding:.15rem .2rem;text-overflow:ellipsis}table.receipts tbody tr:hover td input,table.receipts tbody tr:hover td select{border-bottom-color:var(--line-strong)}table.receipts td input.money{width:7rem}table.receipts td input:focus,table.receipts td select:focus{border-color:transparent;border-bottom-color:var(--accent);background:var(--surface);outline:none}tr.pending td{background:var(--pending-bg)}tr.pending:nth-child(2n) td{background:var(--pending-bg)}tr.pending:hover td{box-shadow:inset 0 0 0 999px #7a5c000f}tr.row-error td{padding:.5rem .6rem;background:var(--danger-soft);border-bottom:1px solid var(--danger-line)}tr.row-error .error{background:none;border:none;padding:0;display:inline}button.link.status-pending{color:var(--pending-ink);font-weight:700;text-transform:uppercase;font-size:var(--fs-2xs);letter-spacing:.04em;text-decoration:none}button.link.status-confirmed{color:var(--muted);font-weight:600;text-transform:uppercase;font-size:var(--fs-2xs);letter-spacing:.04em;text-decoration:none}button.link.status-pending:hover,button.link.status-confirmed:hover{text-decoration:underline}.load-more{margin-top:1rem}.detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.status-tag{font-size:var(--fs-2xs);text-transform:uppercase;font-weight:700;letter-spacing:.06em;padding:.25rem .55rem;border-radius:999px}.status-tag.pending{color:var(--pending-ink);background:var(--pending-bg);border:1px solid var(--pending-line)}.status-tag.confirmed{color:var(--muted);background:var(--stripe);border:1px solid var(--line)}.detail-body{display:flex;gap:2rem;align-items:flex-start}.detail-image{flex:1;min-width:0}.receipt-photo{max-width:100%;border:1px solid var(--line);border-radius:var(--radius-md)}.receipt-pdf{width:100%;height:75vh;border:1px solid var(--line);border-radius:var(--radius-md)}.detail-fields{flex:1;min-width:22rem}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:.9rem 1.2rem;align-items:start}.field-grid .notes,.field-grid .warning,.field-grid p.warning{grid-column:1 / -1}.field-grid textarea{width:100%;resize:vertical;min-height:4.5rem;font-family:inherit}.field-grid label.total-field{grid-column:1 / -1;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:.7rem .9rem .6rem}.field-grid label.total-field input.money{font-size:var(--fs-xl);font-weight:700;width:100%;border:none;padding:.1rem 0;background:none}.field-grid label.total-field input.money:focus{outline:none}.field-grid label.total-field+p.warning{grid-column:1 / -1;margin-top:-.6rem;border-radius:0 0 var(--radius-md) var(--radius-md);border-left:none;border-top:1px solid var(--warning-line)}.field-grid label.suggested input,.field-grid label.suggested select,.field-grid label.suggested.total-field{background:var(--warning-bg);border-color:var(--warning-line)}.field-grid label.suggested.total-field input.money{background:none}.detail-actions{margin-top:1.1rem;display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.delete-confirm{display:inline-flex;gap:.6rem;align-items:center;flex-wrap:wrap;color:var(--danger);background:var(--danger-soft);border:1px solid var(--danger-line);border-radius:var(--radius-md);padding:.6rem .8rem;font-size:var(--fs-xs);font-weight:600}.topbar .delete-confirm{flex-basis:100%}.upload-view{max-width:45rem}.dropzone{border:2px dashed var(--line-strong);border-radius:var(--radius-md);padding:2.4rem 1rem;text-align:center;margin:1rem 0;background:var(--surface);color:var(--ink-soft)}.dropzone.dragging{border-color:var(--accent);background:var(--accent-soft)}.upload-queue{list-style:none;padding:0;margin:.5rem 0 0;font-size:var(--fs-xs)}.upload-queue li{display:flex;justify-content:space-between;gap:1rem;padding:.4rem 0;border-bottom:1px solid var(--line)}.upload-queue li.duplicate span:last-child{color:var(--muted)}.upload-queue li.failed span:last-child,.upload-queue li.unsupported span:last-child{color:var(--danger);font-weight:600}.upload-queue li.created span:last-child{color:var(--accent-ink);font-weight:600}.upload-queue li.uploading span:last-child{color:var(--muted);font-style:italic}.filename{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.export-view{max-width:55rem}.export-starters{display:flex;gap:2.5rem;flex-wrap:wrap;margin:1.1rem 0 1.4rem}.starter{display:flex;gap:.8rem;align-items:end;flex-wrap:wrap;padding:.9rem 1rem;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}table.export-jobs{width:100%;border-collapse:collapse;margin-top:.5rem;font-size:var(--fs-sm)}table.export-jobs th{text-align:left;font-size:var(--fs-2xs);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:.4rem .5rem;border-bottom:2px solid var(--line-strong)}table.export-jobs td{text-align:left;padding:.5rem;border-bottom:1px solid var(--line)}table.export-jobs tbody tr:hover td{background:var(--stripe)}.export-status{font-weight:600}.export-status.failed{color:var(--danger)}.export-status.complete{color:var(--accent-ink)}.export-status.expired,.export-status.stale{color:var(--warning-ink)}.download-link{display:inline-block;font-weight:700;font-size:var(--fs-xs);color:var(--accent-ink);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--radius-sm);padding:.25rem .6rem;text-decoration:none}.download-link:hover{background:var(--accent-line)}
