/* Haul IQ — the scanner's CSS, scan-1 (SCAN-ENGINE-1, 2026-10-07): HaulCam and the full-screen viewer, moved out of driver.html byte for byte. */
  /* STD-3 (2026-10-01) — the live camera (HaulCam): full screen, black in both themes, the words
     on top, Auto, the shutter and Done in reach of a thumb. HaulCam:css-start */
  .cam { position: fixed; inset: 0; z-index: 300; display: flex; flex-direction: column; background: #000; color: #fff; }
  /* SCAN-VIEW (2026-10-06): a tap on any preview in the page box opens it full screen — pinch to zoom, drag, As taken / Scanned, Close. */
  .drv-peek { display: block; width: 100%; padding: 0; border: 0; background: none; cursor: zoom-in; -webkit-tap-highlight-color: transparent; }
  .drv-peek img { display: block; margin: 0 auto; }
  .drv-view { position: fixed; inset: 0; z-index: 310; display: flex; flex-direction: column; background: #000; color: #fff; touch-action: none; }
  .drv-view[hidden] { display: none; }
  .drv-view-stage { position: relative; flex: 1; min-height: 0; overflow: hidden; }
  .drv-view-stage img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; transform-origin: 0 0; will-change: transform; user-select: none; -webkit-user-drag: none; }
  .drv-view-hint { position: absolute; left: 12px; right: 12px; top: calc(10px + env(safe-area-inset-top)); text-align: center; font-size: 13px; opacity: .85; pointer-events: none; }
  .drv-view-bar { display: flex; gap: 8px; align-items: center; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); background: #000; }
  .drv-view-bar .btn { flex: 1; min-height: 44px; }
  .cam-stage { position: relative; flex: 1; min-height: 0; overflow: hidden; }
  .cam-stage video, .cam-stage canvas, .cam-flash { position: absolute; inset: 0; width: 100%; height: 100%; }
  .cam-stage video { object-fit: contain; }
  .cam-flash { background: rgba(255,255,255,.45); opacity: 0; transition: opacity .3s; pointer-events: none; }
  .cam-flash.on { opacity: 1; transition: none; }
  .cam-say { position: absolute; left: 12px; right: 12px; top: calc(12px + env(safe-area-inset-top)); text-align: center; pointer-events: none; }
  .cam-say span { display: inline-block; padding: 8px 14px; border-radius: 18px; background: rgba(0,0,0,.62); font-size: 17px; font-weight: 600; line-height: 1.35; }
  .cam-say span:empty { display: none; }
  .cam-light { position: absolute; right: 12px; bottom: 12px; }
  .cam-light[hidden] { display: none; }
  .cam-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px calc(14px + env(safe-area-inset-bottom)); }
  .cam .btn { min-width: 92px; background: rgba(255,255,255,.14); color: #fff; border-color: rgba(255,255,255,.35); }
  .cam .btn[aria-checked="false"] { opacity: .7; }
  .cam-shut { display: block; width: 74px; height: 74px; margin: 0 auto; padding: 0; border-radius: 50%; border: 5px solid #fff; background: rgba(255,255,255,.22); cursor: pointer; }
  .cam-shut:active { background: rgba(255,255,255,.4); }
  .cam-shut:disabled { opacity: .35; cursor: not-allowed; }
  .cam-count { min-height: 18px; margin-top: 6px; font-size: 13px; text-align: center; }
  /* STD-4 — the kind chips name the paper the shots go to; Next paper starts the next one. */
  .cam-kinds { display: flex; gap: 6px; align-items: center; overflow-x: auto; scrollbar-width: none; padding: calc(8px + env(safe-area-inset-top)) 10px 8px; }
  .cam-kinds + .cam-stage .cam-say { top: 12px; }
  .cam-kind { flex: none; min-height: 40px; padding: 0 12px; border-radius: 20px; border: 1px solid rgba(255,255,255,.35); background: rgba(255,255,255,.12); color: #fff; font: inherit; font-size: 14px; }
  .cam-kind.on { background: var(--accent); border-color: var(--accent); color: var(--on-accent); font-weight: 600; }
  .cam-hint { flex: none; font-size: 14px; font-weight: 600; }
  .cam-next { position: absolute; left: 12px; bottom: 12px; }
  .cam-next[hidden] { display: none; }
  .cam-next:disabled { opacity: .45; }
  /* HaulCam:css-end */
