:root{--bg: #f5f6f8;--surface: #ffffff;--ink: #1c2024;--ink-muted: #5b6570;--line: #d8dde3;--accent: #1f5fa9;--ok: #1d7a4c;--error: #b3261e;--radius: 6px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px}body{margin:0;background:var(--bg);color:var(--ink)}h1{font-size:1.4rem;margin:0 0 .75rem}.muted{color:var(--ink-muted)}.error{color:var(--error)}.topbar{display:flex;align-items:center;gap:1rem;padding:.6rem 1.25rem;background:var(--surface);border-bottom:1px solid var(--line)}.topbar .brand{font-weight:700;color:var(--ink);text-decoration:none}.topbar nav{display:flex;gap:1rem}.topbar nav a{color:var(--accent);text-decoration:none}.spacer{flex:1}.shell{max-width:72rem;margin:0 auto;padding:1.5rem 1.25rem}.centred{display:flex;flex-direction:column;align-items:center;padding-top:4rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.25rem;margin-bottom:1.25rem}.login{width:min(24rem,90vw);display:flex;flex-direction:column}.row-form{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap}.row-form>div{display:flex;flex-direction:column}label{font-size:.85rem;color:var(--ink-muted);margin:.6rem 0 .2rem}input,select{font:inherit;padding:.4rem .5rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink)}button{font:inherit;padding:.45rem .9rem;border:1px solid var(--accent);border-radius:var(--radius);background:var(--accent);color:#fff;cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button.link{background:none;border:none;color:var(--accent);padding:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.grid{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line)}.grid th,.grid td{text-align:left;padding:.45rem .6rem;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}.grid th{font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-muted)}.actions{display:flex;gap:.4rem}.issued{border-color:var(--accent)}.issued .code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:1.5rem;letter-spacing:.12em;margin:.5rem 0}.toasts{position:fixed;left:1rem;bottom:1rem;display:flex;flex-direction:column;gap:.5rem}.toast{padding:.6rem .9rem;border-radius:var(--radius);color:#fff;box-shadow:0 2px 8px #0000002e}.toast--ok{background:var(--ok)}.toast--error{background:var(--error)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.num{text-align:right;font-variant-numeric:tabular-nums}.dropzone{border:1px dashed var(--line);border-radius:var(--radius);padding:1rem;margin-bottom:.75rem}.dropzone--over{border-color:var(--accent);background:#eef4fb}.checkbox{display:flex;align-items:center;gap:.5rem;margin:0 0 .75rem;color:var(--ink);font-size:1rem}.counts{display:flex;gap:2rem;margin:0 0 1rem}.counts dt{font-size:.8rem;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.03em}.counts dd{margin:.15rem 0 0;font-size:1.3rem;font-variant-numeric:tabular-nums}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.75rem 1.5rem}.facts>div{display:flex;flex-direction:column}.facts span{font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}.notice{border-left:3px solid var(--accent);background:var(--surface);padding:.6rem .9rem;margin:0 0 1.25rem;color:var(--ink)}.batches{margin:0;padding-left:1rem;font-size:.9rem}.over{color:var(--error);font-weight:600}.page-head{display:flex;align-items:flex-start;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.page-head h1{margin-bottom:.15rem}.page-head p{margin:0}.toolbar{margin-left:auto;display:flex;gap:.5rem;flex-wrap:wrap}button.secondary{background:var(--surface);color:var(--accent)}button.danger{color:var(--error);border-color:var(--error)}.banner{border-left:3px solid var(--error);background:var(--surface);padding:.6rem .9rem;margin-bottom:1.25rem}.banner ul{margin:.3rem 0 0;padding-left:1.1rem}.totals-strip{display:flex;gap:2rem;align-items:center;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.75rem 1.25rem;margin-bottom:1.25rem}.totals-strip>div{display:flex;flex-direction:column}.totals-strip span{font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-muted)}.totals-strip strong{font-size:1.2rem;font-variant-numeric:tabular-nums}.field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:.5rem 1rem;align-items:end}.field{display:flex;flex-direction:column}.field-row{display:flex;gap:1rem;flex-wrap:wrap;border:none;padding:0;margin:0}.field-row legend{font-size:.8rem;color:var(--ink-muted);padding:0}.cell-number{width:6rem;text-align:right;font-variant-numeric:tabular-nums}.modal-backdrop{position:fixed;inset:0;background:#00000059;display:flex;align-items:flex-start;justify-content:center;padding:3rem 1rem;overflow:auto}.modal{background:var(--surface);border-radius:var(--radius);padding:1.25rem 1.5rem;width:min(46rem,100%);box-shadow:0 8px 30px #00000040}.modal h2{margin-top:0}.dialog-form{display:flex;flex-direction:column;gap:.4rem}.dialog-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}a.button{font:inherit;padding:.45rem .9rem;border:1px solid var(--accent);border-radius:var(--radius);background:var(--surface);color:var(--accent);text-decoration:none;line-height:1.5}.header-card{padding-top:.9rem;padding-bottom:.9rem}.header-summary{display:flex;align-items:flex-start;gap:1rem}.header-summary h2{margin:0 0 .2rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted)}.header-summary p{margin:.1rem 0}.header-summary button{margin-left:auto;white-space:nowrap}.grid.compact td,.grid.compact th{padding:.3rem .6rem}.done{color:var(--ok);font-weight:700}.packing tbody.group+tbody.group{border-top:2px solid var(--line)}.packing .pallet-row td{background:#eef2f7;padding:.4rem .6rem}.pallet-head{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.pallet-head .disclosure{font-weight:700;color:var(--ink)}.pallet-head .dims{display:flex;align-items:center;gap:.25rem;color:var(--ink-muted)}.pallet-head .dims input{width:4rem}.pallet-head button.secondary{margin-left:auto;padding:.2rem .6rem}.packing select{padding:.2rem .3rem}.packing td{vertical-align:middle}.packing .carton-no{font-weight:600;white-space:nowrap}.packing .logger{color:var(--accent)}.packing .repeat{text-align:center}.packing .note-cell{color:var(--ink-muted);max-width:14rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.packing tr.subtotal td{border-top:1px solid var(--line);font-weight:600;color:var(--ink-muted);background:#fbfcfd}.packing tr.row-problem td{background:#fdf0ef}.packing input[aria-invalid=true]{border-color:var(--error)}.row-problem-text{color:var(--error);font-size:.8rem;margin-left:.5rem}.row-actions{white-space:nowrap}.row-actions button.link{font-size:1rem;padding:0 .25rem;color:var(--ink-muted)}.row-actions button.link:hover{color:var(--accent)}.pallet-actions{margin-left:auto;display:flex;gap:.4rem}.pallet-actions button{padding:.2rem .6rem}.steps{display:flex;gap:.4rem;margin:0 0 1rem;border-bottom:1px solid var(--line)}.step{background:none;border:1px solid transparent;border-bottom:none;border-radius:var(--radius) var(--radius) 0 0;color:var(--ink-muted);padding:.5rem 1rem;margin-bottom:-1px}.step--current{background:var(--surface);border-color:var(--line);color:var(--ink);font-weight:600}.step-toolbar{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.inline-field{display:flex;align-items:center;gap:.4rem;margin:0;color:var(--ink-muted);font-size:.85rem}.pallet-card{padding:.9rem 1.1rem}.pallet-card .pallet-head{margin-bottom:.6rem}
