:root{--paper: #f6f1e7;--paper-deep: #ede5d3;--card: #fffdf7;--ink: #1f1b16;--ink-soft: #6b6155;--line: #d8cfbc;--accent: #c2402a;--accent-soft: #f6ddd6;--ok: #2e6e4e;--ok-soft: #ddebe2;--font-sans: "Avenir Next", "Segoe UI", system-ui, -apple-system, sans-serif;--font-mono: "SF Mono", ui-monospace, "Cascadia Mono", Menlo, monospace;--text-base: clamp(.95rem, .9rem + .2vw, 1.05rem);--text-hero: clamp(1.9rem, 1.2rem + 2.6vw, 3.2rem);--space-section: clamp(1.5rem, 1rem + 2vw, 3rem);--duration-fast: .15s;--ease-out: cubic-bezier(.16, 1, .3, 1)}*{box-sizing:border-box}body{margin:0;background:radial-gradient(1200px 500px at 80% -10%,var(--paper-deep),transparent 60%),var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-base);line-height:1.55;min-height:100vh}.shell{max-width:1080px;margin:0 auto;padding:var(--space-section) 1.25rem 4rem}.masthead{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem;border-bottom:3px double var(--ink);padding-bottom:1rem}.masthead h1{font-size:var(--text-hero);line-height:1.05;margin:0;letter-spacing:-.02em}.masthead h1 .stamp{display:inline-block;color:var(--accent);border:2.5px solid var(--accent);border-radius:6px;padding:0 .35em;transform:rotate(-3deg);font-family:var(--font-mono);font-size:.55em;vertical-align:middle;margin-left:.4em}.masthead .sub{color:var(--ink-soft);font-family:var(--font-mono);font-size:.8rem;text-align:right}.tabs{display:flex;gap:.5rem;margin:1.25rem 0 var(--space-section)}.tabs button{font:inherit;font-family:var(--font-mono);font-size:.85rem;padding:.5rem 1.1rem;border:1.5px solid var(--ink);border-radius:999px;background:transparent;color:var(--ink);cursor:pointer;transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.tabs button:hover{transform:translateY(-1px)}.tabs button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tabs button[aria-selected=true]{background:var(--ink);color:var(--card)}.workbench{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:1.5rem;align-items:start}@media(max-width:860px){.workbench{grid-template-columns:1fr}}.dropzone{border:2px dashed var(--ink-soft);border-radius:14px;background:var(--card);padding:1.5rem;text-align:center;cursor:pointer;transition:border-color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out)}.dropzone:hover,.dropzone:focus-visible,.dropzone.dragging{border-color:var(--accent);background:#fffef9;outline:none}.dropzone img.preview{max-width:100%;max-height:320px;border-radius:8px;box-shadow:0 10px 24px #1f1b162e}.dropzone .hint{color:var(--ink-soft);font-size:.85rem;margin-top:.75rem}.dropzone .glyph{font-size:2.4rem;display:block;margin-bottom:.25rem}.actions{display:flex;gap:.75rem;margin-top:1rem}.btn{font:inherit;font-weight:600;padding:.6rem 1.4rem;border-radius:10px;border:1.5px solid var(--ink);cursor:pointer;transition:transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out),opacity var(--duration-fast) var(--ease-out)}.btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #1f1b1638}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--ink);color:var(--card)}.btn.ghost{background:transparent;color:var(--ink)}.receipt{background:var(--card);border-radius:4px 4px 14px 14px;padding:1.5rem 1.5rem 2rem;box-shadow:0 14px 32px #1f1b1624;position:relative;font-family:var(--font-mono);font-size:.9rem}.receipt:before{content:"";position:absolute;inset:0 0 auto;height:8px;background:repeating-linear-gradient(-45deg,var(--accent),var(--accent) 6px,transparent 6px,transparent 12px);border-radius:4px 4px 0 0;opacity:.85}.receipt h2{font-family:var(--font-sans);letter-spacing:.14em;text-transform:uppercase;font-size:.8rem;color:var(--ink-soft);margin:.5rem 0 1rem}.receipt .kv{display:flex;justify-content:space-between;gap:1rem;padding:.3rem 0}.receipt .kv .k{color:var(--ink-soft)}.receipt hr{border:0;border-top:1.5px dashed var(--line);margin:.9rem 0}.receipt table{width:100%;border-collapse:collapse}.receipt th{text-align:left;color:var(--ink-soft);font-weight:500;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;padding:.25rem .4rem .45rem 0;border-bottom:1.5px solid var(--line)}.receipt td{padding:.42rem .4rem .42rem 0;border-bottom:1px dotted var(--line);vertical-align:top}.receipt th.num,.receipt td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.receipt .grand{display:flex;justify-content:space-between;align-items:baseline;margin-top:1rem;font-size:1.15rem;font-weight:700}.receipt .grand .amount{color:var(--accent);font-size:1.5rem}.badge{display:inline-block;font-family:var(--font-mono);font-size:.72rem;padding:.15rem .6rem;border-radius:999px;border:1px solid currentColor}.badge.ok{color:var(--ok);background:var(--ok-soft)}.badge.fail{color:var(--accent);background:var(--accent-soft)}.error-card{background:var(--accent-soft);border:1.5px solid var(--accent);border-radius:14px;padding:1.25rem 1.5rem;color:#7c2517}.error-card strong{display:block;margin-bottom:.35rem;font-size:1.05rem}.scanning{display:flex;align-items:center;gap:.75rem;font-family:var(--font-mono);color:var(--ink-soft);padding:2rem 0;justify-content:center}.scanning .bar{width:130px;height:6px;border-radius:3px;background:var(--line);overflow:hidden;position:relative}.scanning .bar:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;width:40%;background:var(--accent);border-radius:3px;animation:scan 1.1s var(--ease-out) infinite}@keyframes scan{0%{transform:translate(-100%)}to{transform:translate(350%)}}@media(prefers-reduced-motion:reduce){.scanning .bar:after{animation:none;width:100%;opacity:.5}}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:1rem;margin-bottom:var(--space-section)}.tile{background:var(--card);border-radius:14px;padding:1.1rem 1.25rem;box-shadow:0 6px 18px #1f1b1614;border-top:3px solid var(--ink)}.tile.accent{border-top-color:var(--accent)}.tile.ok{border-top-color:var(--ok)}.tile .label{font-family:var(--font-mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft)}.tile .value{font-family:var(--font-mono);font-size:1.9rem;font-weight:700;font-variant-numeric:tabular-nums;margin-top:.2rem}.rate-bar{height:14px;border-radius:7px;overflow:hidden;display:flex;background:var(--line);margin:.5rem 0 2rem}.rate-bar .seg-ok{background:var(--ok);transition:width .4s var(--ease-out)}.rate-bar .seg-fail{background:var(--accent);transition:width .4s var(--ease-out)}.history{background:var(--card);border-radius:14px;box-shadow:0 6px 18px #1f1b1614;padding:1.25rem 1.5rem;overflow-x:auto}.history h3{margin:0 0 .75rem;font-size:.85rem;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft)}.history table{width:100%;border-collapse:collapse;font-size:.85rem;min-width:640px}.history th{text-align:left;font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);padding:.4rem .75rem .5rem 0;border-bottom:2px solid var(--ink)}.history td{padding:.5rem .75rem .5rem 0;border-bottom:1px solid var(--line);vertical-align:top}.history td.num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}.history .reason{color:var(--ink-soft);font-size:.78rem;max-width:300px}.empty{color:var(--ink-soft);text-align:center;padding:2rem 0;font-family:var(--font-mono);font-size:.85rem}
