:root{--shell:oklch(24% .022 160);--shell-2:oklch(30% .024 160);--shell-line:oklch(38% .024 160);--shell-ink:oklch(94% .012 160);--shell-ink-2:oklch(78% .02 160);--paper:oklch(97.6% .006 120);--paper-2:oklch(99.4% .003 120);--paper-sunken:oklch(93.5% .008 120);--paper-line:oklch(80% .012 160);--paper-line-strong:oklch(56% .014 160);--ink:oklch(22% .016 160);--ink-2:oklch(43% .016 160);--accent:oklch(70% .19 38);--accent-press:oklch(64% .19 38);--accent-ink:oklch(20% .05 38);--ok:oklch(45% .12 155);--bad:oklch(49% .18 28);--bad-bg:oklch(94.5% .035 28);--bad-on-shell:oklch(78% .13 28);--radius:12px;--radius-paper:6px;--tap:3.5rem;--ease:cubic-bezier(.25, 1, .5, 1);--mono:ui-monospace, "SF Mono", "Cascadia Mono", "Roboto Mono", Menlo, monospace;--step--1:1rem;--step-0:1.125rem;--step-1:1.35rem;--step-2:1.62rem;--step-3:2rem;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--shell-ink);background:var(--shell);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:100%;line-height:1.45}*,:before,:after{box-sizing:border-box}body{font-size:var(--step-0);background:var(--shell);margin:0}h1,h2,p,ol{margin:0}h1{font-size:var(--step-2);letter-spacing:-.015em;font-weight:700;line-height:1.15}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}:focus-visible{outline:3px solid var(--shell-ink);outline-offset:2px}.slip :focus-visible{outline-color:var(--ink)}.app{flex-direction:column;min-height:100dvh;display:flex}.topbar{width:100%;max-width:36rem;padding:calc(env(safe-area-inset-top) + .75rem) 1.25rem .75rem;justify-content:space-between;align-items:center;gap:1rem;margin:0 auto;display:flex}.tabs{border-radius:var(--radius);background:var(--shell-2);padding:4px;display:flex}.tab{min-height:2.75rem;color:var(--shell-ink-2);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:9px;padding:0 1.125rem;font-weight:650}.tab[aria-selected=true]{background:var(--paper);color:var(--ink)}.col{flex-direction:column;flex:1;display:flex}.app[data-tab=scan] .col--history,.app[data-tab=history] .col--scan{display:none}.screen{flex-direction:column;flex:1;width:100%;max-width:36rem;margin:0 auto;padding:.75rem 1.25rem 0;display:flex}.screen.review{padding-top:0}.bar{z-index:2;padding:1rem 1.25rem calc(env(safe-area-inset-bottom) + 1rem);background:var(--shell);border-top:1px solid var(--shell-line);gap:.625rem;margin:auto -1.25rem 0;display:grid;position:sticky;bottom:0}.bar--split{grid-template-columns:1fr 2fr}.bar-error{color:var(--bad-on-shell);grid-column:1/-1;font-weight:600}.btn{min-height:var(--tap);border-radius:var(--radius);font:inherit;cursor:pointer;transition:background-color .16s var(--ease), transform .12s var(--ease);border:1px solid #0000;justify-content:center;align-items:center;gap:.5rem;padding:0 1.25rem;font-weight:650;display:inline-flex}.btn:active:not(:disabled){transform:scale(.985)}.btn:disabled{cursor:not-allowed;opacity:.55}.btn--primary{background:var(--accent);color:var(--accent-ink);font-size:var(--step-1)}.btn--primary:active:not(:disabled){background:var(--accent-press)}.btn--secondary{color:var(--shell-ink);border-color:var(--shell-ink-2);background:0 0}.btn--quiet{color:var(--shell-ink);text-underline-offset:.2em;background:0 0;justify-self:start;padding:0 .25rem;text-decoration:underline}.slip .btn--quiet{color:var(--ink);min-height:3rem}.slip .btn--danger{color:var(--bad)}@media (hover:hover){.btn--primary:hover:not(:disabled){background:var(--accent-press)}.btn--secondary:hover:not(:disabled){background:var(--shell-2)}.line:hover{background:var(--paper-sunken)}}.slip{border-radius:var(--radius-paper) var(--radius-paper) 0 0;background:var(--paper);color:var(--ink);gap:.25rem;margin-bottom:1.5rem;padding:1.25rem 1rem 1.5rem;display:grid;position:relative}.slip:after{content:"";background:conic-gradient(from -45deg at bottom, var(--paper) 90deg, transparent 0) 0 0 / 14px 100% repeat-x;height:7px;position:absolute;bottom:-7px;left:0;right:0}.perf{border:0;border-top:2px dashed var(--paper-line);width:100%;margin:.625rem 0}.slip-vendor,.slip-meta,.line{border-radius:var(--radius-paper);width:calc(100% + 1rem);min-height:3rem;color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:.75rem;margin:0 -.5rem;padding:.375rem .5rem;display:flex}.slip-vendor{font-size:var(--step-2);letter-spacing:-.015em;font-weight:700;line-height:1.15}.slip-meta{min-height:2.75rem;color:var(--ink-2);font-family:var(--mono);font-size:var(--step--1)}.line{justify-content:space-between}.line-desc{overflow-wrap:anywhere;flex:1;min-width:0}.line-qty{min-width:2.5ch;color:var(--ink-2);font-family:var(--mono);margin-right:.5rem;display:inline-block}.line-value{font-family:var(--mono);font-variant-numeric:tabular-nums;flex:none}.line--strong{border-top:2px solid var(--ink);font-size:var(--step-1);border-radius:0;margin-top:.5rem;padding-top:.75rem;font-weight:700}.line--open{padding:.5rem 0;display:block}.line--open .field{grid-template-columns:1fr minmax(0,11rem);align-items:center}.line--open .field-error{text-align:right;grid-column:1/-1}.line--flagged{border-radius:var(--radius-paper);background:var(--bad-bg);color:var(--bad);margin:.25rem -.5rem;padding:.5rem}.line--flagged.line--strong{border-top:2px solid var(--bad)}.line--flagged label{color:var(--bad)}.slip-items{padding:0;list-style:none;display:grid}.slip-edit{gap:.75rem;padding:.75rem 0;display:grid}.slip-edit.line--flagged{padding:.75rem .5rem}.item-nums{grid-template-columns:3.5rem 1fr 1.25fr;gap:.5rem;display:grid}.item-nums input{padding:0 .625rem}.item-actions{justify-content:space-between;display:flex}.pair{grid-template-columns:1fr 6.5rem;gap:.625rem;display:grid}.verdict{justify-items:start;gap:.5rem;margin-top:1.25rem;display:grid}.verdict p{color:var(--ink)}.verdict-note{color:var(--ink-2);font-size:var(--step--1)}.stamp{font-family:var(--mono);font-weight:800;font-size:var(--step--1);letter-spacing:.08em;text-transform:uppercase;border:2.5px solid;border-radius:4px;padding:.25rem .75rem;display:inline-block;transform:rotate(-3deg)}.stamp--ok{color:var(--ok)}.stamp--bad{color:var(--bad)}.pinned{z-index:1;height:28dvh;padding-top:env(safe-area-inset-top);background:var(--shell-2);border-bottom:1px solid var(--shell-line);margin:0 -1.25rem 1rem;position:sticky;top:0}.pinned--big{height:64dvh}.pinned img{object-fit:contain;width:100%;height:100%;display:block}.pinned-toggle{border-radius:var(--radius);border:1px solid var(--shell-line);background:var(--shell);width:3rem;height:3rem;color:var(--shell-ink);cursor:pointer;place-items:center;display:grid;position:absolute;bottom:.75rem;right:.75rem}.field{gap:.375rem;min-width:0;display:grid}.field label{font-size:var(--step--1);color:var(--ink-2);font-weight:600}.field input{width:100%;min-height:var(--tap);border-radius:var(--radius);border:1px solid var(--paper-line-strong);background:var(--paper-2);color:var(--ink);font:inherit;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;padding:0 .875rem}.field--num input{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}.field input:focus-visible{outline:3px solid var(--ink);outline-offset:0}.field input[aria-invalid=true]{border:2px solid var(--bad)}.field-error{color:var(--bad);font-size:var(--step--1);font-weight:600}.brand{letter-spacing:-.01em;font-weight:700}.counter{color:var(--shell-ink-2);font-family:var(--mono)}.intro{gap:.75rem;margin-top:auto;padding:2rem 0 1.5rem;display:grid}.intro h1{font-size:var(--step-3);max-width:13ch}.intro p{color:var(--shell-ink-2);max-width:34ch}.slip--mini{justify-items:start;gap:.75rem;margin-top:1.75rem}.reading-photo{object-fit:contain;border-radius:var(--radius-paper);background:var(--shell-2);width:100%;max-height:34dvh}.reading-status{font-size:var(--step-1);margin:1.25rem 0 1rem;font-weight:650}.reading-status .num{color:var(--shell-ink-2);margin-left:.5rem;font-weight:400}.skeleton{gap:.75rem}.skeleton span{background:var(--paper-sunken);height:1.1rem;animation:pulse 1.4s var(--ease) infinite alternate;border-radius:3px;display:block}.skeleton .w-40{width:40%}.skeleton .w-50{width:50%}.skeleton .w-60{width:60%;height:1.6rem}.skeleton .w-70{width:70%}@keyframes pulse{to{opacity:.4}}.problem-text{color:var(--bad-on-shell);gap:.5rem;margin-top:1.5rem;display:grid}.problem-text h1{color:var(--shell-ink)}.problem-text p{color:var(--shell-ink-2)}@media (prefers-reduced-motion:reduce){.skeleton span{animation:none}.btn{transition:none}.btn:active:not(:disabled){transform:none}}.drop-hint{font-size:var(--step--1);display:none}.home--drop{outline:2px dashed var(--accent);outline-offset:-.5rem;border-radius:var(--radius)}@media (pointer:fine){.drop-hint{display:block}}.history{align-content:start;gap:1.25rem;width:100%;max-width:36rem;margin:0 auto;padding:.75rem 1.25rem 2.5rem;display:grid}.history-head{gap:1rem;display:grid}.history .field label,.history .empty p{color:var(--shell-ink-2)}.search-box{position:relative}.search-box svg{color:var(--ink-2);pointer-events:none;position:absolute;top:50%;left:.875rem;transform:translateY(-50%)}.search-box input{padding-left:2.75rem}.empty{gap:.5rem;padding:2rem 0;display:grid}.empty h2{font-size:var(--step-1)}.month{margin-bottom:1rem}.month-head{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.25rem 1rem;display:grid}.month-head h2{font-size:var(--step-1);letter-spacing:-.01em;font-weight:700}.month-meta{color:var(--ink-2);font-size:var(--step--1);flex-wrap:wrap;gap:0 .75rem;margin-top:.25rem;display:flex}.month-check{color:var(--bad);font-weight:650}.month-totals{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;justify-items:end;gap:.125rem;font-weight:700;display:grid}.hrows{border-top:2px dashed var(--paper-line);margin:.75rem 0 0;padding:0;list-style:none}.hrows>li+li{border-top:1px dashed var(--paper-line)}.hrow summary{border-radius:var(--radius-paper);cursor:pointer;flex-wrap:wrap;align-items:baseline;gap:.125rem .75rem;min-height:3.5rem;margin:0 -.5rem;padding:.625rem .5rem;list-style:none;display:flex}.hrow summary:after{content:"";flex-basis:100%;order:3}.hrow summary::-webkit-details-marker{display:none}.hrow[open] summary{background:var(--paper-sunken)}@media (hover:hover){.hrow summary:hover{background:var(--paper-sunken)}}.hrow-date{color:var(--ink-2);font-family:var(--mono);font-size:var(--step--1);order:4;grid-area:date}.hrow-vendor{overflow-wrap:anywhere;flex:1;order:1;grid-area:vendor;min-width:0;font-weight:650}.hrow-number{min-width:0;color:var(--ink-2);font-family:var(--mono);font-size:var(--step--1);text-overflow:ellipsis;white-space:nowrap;flex:1;order:5;grid-area:number;overflow:hidden}.hrow-stamp{order:6;grid-area:stamp;justify-self:end}.hrow-total{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;order:2;grid-area:total;justify-self:end;font-weight:650}.stamp--sm{border-width:2px;padding:.05rem .4rem;font-size:.8rem}.hrow-body{gap:.75rem;padding:.75rem 0 1rem;display:grid}.hrow-items{color:var(--ink-2);font-family:var(--mono);font-size:var(--step--1);gap:.25rem;margin:0;padding:0;list-style:none;display:grid}.hrow-sums{grid-template-columns:1fr auto;gap:.25rem 1rem;margin:0;display:grid}.hrow-sums dt{color:var(--ink-2)}.hrow-sums dd{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;margin:0}.hrow-sums dt:last-of-type,.hrow-sums dd:last-of-type{border-top:2px solid var(--ink);color:var(--ink);padding-top:.375rem;font-weight:700}.hrow-scanned{color:var(--ink-2);font-size:var(--step--1)}@media (width>=900px){.app{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(22rem,27rem) minmax(0,1fr);height:100dvh;display:grid}.topbar{border-bottom:1px solid var(--shell-line);grid-column:1/-1;max-width:none;padding:.875rem 1.5rem}.tabs{display:none}.app[data-tab] .col{min-height:0;display:flex;overflow-y:auto}.col--scan{border-right:1px solid var(--shell-line)}.history{max-width:68rem;padding:1.5rem 2rem 3rem}.history-head{grid-template-columns:1fr minmax(0,22rem);align-items:end}.hrow summary{grid-template-columns:5.5rem minmax(0,1fr) minmax(0,13rem) 5.5rem minmax(9rem,auto);grid-template-areas:"date vendor number stamp total";align-items:center;display:grid}.hrow summary:after{content:none}.hrow-body{grid-template-columns:minmax(0,1fr) minmax(0,20rem);align-items:start;padding-left:5.5rem}.hrow-scanned{grid-column:1/-1}}
