:root{--paper: #f3eee4;--ink: #1d241e;--muted: #5d675f;--line: #d9d0c3;--card: #fffdf8;--green: #2f6f4e;--green-soft: #e4f0e8;--rust: #b42318;--rust-soft: #f8e4e1;--navy: #243226;--shadow: 0 10px 28px rgba(36, 50, 38, .08);--radius: 18px;--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;color:var(--ink);background:radial-gradient(1200px 500px at 10% -10%,#efe6d4 0%,transparent 50%),var(--paper);font-family:"Source Sans 3",system-ui,sans-serif}button,input,select{font:inherit}button{cursor:pointer;touch-action:manipulation}h1,h2,.brand{font-family:Fraunces,Georgia,serif}.app{max-width:920px;margin:0 auto;min-height:100dvh;padding:20px 16px calc(108px + var(--safe-bottom))}.topbar{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:18px}.brand{margin:0;font-size:1.85rem;font-weight:650;letter-spacing:-.03em}.sub{margin:4px 0 0;color:var(--muted)}.pill{border:1px solid var(--line);background:var(--card);color:var(--muted);border-radius:999px;padding:8px 12px;font-size:.85rem}.nav{position:fixed;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(5,1fr);gap:6px;padding:10px 10px calc(10px + var(--safe-bottom));background:#f3eee4f0;border-top:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.nav button{min-height:58px;border:0;border-radius:14px;background:transparent;color:var(--muted);font-weight:600}.nav button.active{background:var(--navy);color:#fff}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.stack{display:grid;gap:12px}.group{display:grid;gap:8px}.group-head{display:flex;justify-content:space-between;align-items:baseline;padding:4px 4px 0}.group-name{font-family:Fraunces,Georgia,serif;font-size:1.35rem;font-weight:650}.group-total{font-size:1.8rem;font-weight:700;letter-spacing:-.04em}.lot{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:14px 16px}.lot-date{font-size:1.05rem;font-weight:600}.lot-code{color:var(--muted);font-size:.88rem;letter-spacing:.04em}.qty{font-size:2.4rem;font-weight:700;line-height:1;letter-spacing:-.05em;min-width:2.2ch;text-align:right}.row{display:flex;gap:10px;flex-wrap:wrap}.field{display:grid;gap:6px;flex:1;min-width:180px}.field span{color:var(--muted);font-weight:600;font-size:.92rem}input,select{width:100%;min-height:52px;border:1px solid var(--line);border-radius:14px;padding:0 14px;background:#fff}.btn{min-height:52px;border:0;border-radius:14px;padding:0 18px;font-weight:700;background:var(--navy);color:#fff}.btn.secondary{background:#fff;color:var(--ink);border:1px solid var(--line)}.btn.danger{background:var(--rust)}.btn:disabled{opacity:.5}.scan-page{display:grid;gap:16px}.scan-actions{display:grid;grid-template-columns:1fr 54px;gap:10px;align-items:center}.add-scan{width:54px;height:54px;border:1px solid var(--line);border-radius:16px;background:var(--card);color:var(--ink);font-size:1.8rem;line-height:1}.picker-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:grid;place-items:center;padding:20px;background:#141b157a}.item-picker{width:min(100%,520px);max-height:min(80dvh,680px);display:grid;grid-template-rows:auto 1fr;gap:12px;overflow:hidden}.picker-heading{display:flex;align-items:center;justify-content:space-between}.picker-heading h2{margin:0}.picker-close{border:0;background:transparent;font-size:1.8rem}.picker-list{overflow:auto;display:grid;gap:8px}.picker-item{display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:left;border:1px solid var(--line);border-radius:12px;background:#fff;padding:12px}.picker-item:disabled{opacity:.48}.picker-item span:first-child{display:grid;gap:4px}.picker-item small{color:var(--muted)}.mode{display:grid;grid-template-columns:1fr 1fr;gap:10px}.mode button{min-height:72px;border-radius:18px;border:2px solid var(--line);background:var(--card);font-size:1.2rem;font-weight:700}.mode button.on-in{background:var(--green);border-color:var(--green);color:#fff}.mode button.on-out{background:var(--rust);border-color:var(--rust);color:#fff}.ready{min-height:220px;display:grid;place-items:center;text-align:center;padding:24px}.ready.flash-in{background:var(--green-soft)}.ready.flash-out{background:var(--rust-soft)}.ready.flash-bad{background:#f7e7c8}.ready h2{margin:0 0 8px;font-size:1.8rem}.ready p{margin:0;color:var(--muted);font-size:1.05rem}.scan-capture{position:fixed;left:8px;bottom:8px;width:1px;height:1px;opacity:.01;border:0;padding:0}.history-item{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center}.tag{border-radius:999px;padding:6px 10px;font-weight:700;font-size:.8rem;text-transform:uppercase}.tag.in{background:var(--green-soft);color:var(--green)}.tag.out{background:var(--rust-soft);color:var(--rust)}.check{display:flex;gap:12px;align-items:center;min-height:64px}.check input{width:24px;height:24px;min-height:24px;accent-color:var(--navy)}.stepper{display:flex;align-items:center;gap:8px}.stepper button{width:48px;height:48px;border-radius:14px;border:1px solid var(--line);background:#fff;font-size:1.4rem}.label-sheet{display:none}.muted{color:var(--muted)}.empty{padding:28px 8px;text-align:center;color:var(--muted)}.error{color:var(--rust);font-weight:600}@media print{@page{margin:8mm}@page roll{size:50mm 30mm;margin:0}body[data-print=roll]{page:roll}body{background:#fff}.app{padding:0;max-width:none}.no-print{display:none!important}.label-sheet{display:grid;grid-template-columns:1fr 1fr;gap:8mm;padding:8mm}body[data-print=roll] .label-sheet{display:block;padding:0}body[data-print=roll] .print-label{width:50mm;height:30mm;margin:0;padding:2mm;border:0;border-radius:0;display:flex;flex-direction:column;align-items:center;justify-content:center;break-after:page;page-break-after:always;overflow:hidden}body[data-print=roll] .print-label:last-child{break-after:auto;page-break-after:auto}body[data-print=roll] .print-label h3{max-width:100%;margin:0 0 1mm;font-family:Arial,sans-serif;font-size:8pt;line-height:1.1}body[data-print=roll] .print-label svg{width:44mm;max-height:17mm}body[data-print=a4] .print-label{width:100%;min-height:38mm}.print-label{break-inside:avoid;border:1px solid #222;border-radius:4px;padding:6mm 5mm 4mm;text-align:center}.print-label h3{margin:0 0 4mm;font-family:Fraunces,Georgia,serif;font-size:16pt;font-weight:650}.print-label svg{print-color-adjust:exact;-webkit-print-color-adjust:exact}.summary-print{display:block;padding:12mm}.summary-print h1{margin-top:0}.summary-print table{width:100%;border-collapse:collapse;margin-bottom:10mm}.summary-print th,.summary-print td{text-align:left;border-bottom:1px solid #ccc;padding:6px 4px}}@media screen{.summary-print,.label-sheet{display:none}}@media(max-width:640px){.qty{font-size:2.1rem}.nav button{font-size:.82rem}}
