:root{
  --bg:#f3f7fb; --card:#fff; --ink:#0f172a; --muted:#64748b;
  --primary:#2563eb; --primary-ink:#fff; --success:#16a34a;
  --ring: rgba(37,99,235,.35);
}

*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.4 system-ui,Segoe UI,Roboto,Helvetica,Arial}
.topbar{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#0b1630;color:#cbd5e1}
.brand{display:flex;gap:10px;align-items:center}
.logo{width:16px;height:16px;border:2px solid #60a5fa;border-radius:3px;display:inline-block;transform:rotate(45deg)}
.title{font-weight:700;color:#e2e8f0}
.subtitle{font-size:12px;color:#93a3b8;margin-top:-2px}

.container{max-width:820px;margin:24px auto;padding:0 16px}
.card{background:var(--card);border-radius:16px;padding:16px;box-shadow:0 10px 24px rgba(2,6,23,.06)}
.controls,.actions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}

.btn{appearance:none;border:1px solid #cbd5e1;background:#e2e8f0;color:#0f172a;border-radius:12px;padding:12px 14px;cursor:pointer;font-weight:600}
.btn.primary{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}
.btn.success{background:var(--success);border-color:var(--success);color:#fff}

.preview-area{background:#0f172a;border-radius:12px;padding:10px;aspect-ratio:16/9;position:relative}
.camera-wrap{position:relative;height:100%;width:100%;overflow:hidden;border-radius:8px;background:#111827}
#video-stream{width:100%;height:100%;object-fit:contain;display:block;transition:opacity .15s}
.permission-message{position:absolute;inset:0;display:grid;place-items:center;color:#fff;background:rgba(0,0,0,.5)}

/* Cropper layer (disabled unless cropping) */
.cropper-host{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}
body.cropping .cropper-host{pointer-events:auto}
#captured-image{display:none;max-width:100%;max-height:100%;object-fit:contain}

/* While cropping, give a large stage and put cropper on top */
body.cropping .preview-area{aspect-ratio:auto;height:85dvh;overflow:hidden}
.cropper-container{position:absolute;inset:0;z-index:3;max-height:85dvh}

/* Keep live video from intercepting touches while cropping */
body.cropping #video-stream{opacity:0;pointer-events:none}

/* Floating Scan button (easy thumb reach) */
.fab {
  position: absolute;
  z-index: 4;
  left: 50%;
  transform: translateX(-50%);
  bottom: max(16px, env(safe-area-inset-bottom));
  padding: 14px 22px;
  border-radius: 999px;
  border: none;
  font-weight: 700;
  background: #2563eb;
  color: #fff;
  box-shadow: 0 8px 24px rgba(37,99,235,.35);
  cursor: pointer;
  touch-action: manipulation;
  display: none;
}
body.cropping .fab { display: inline-flex; }

/* Prevent background scroll during cropping */
body.cropping { overflow: hidden; }

.fields{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.fields label{display:grid;gap:6px;font-size:14px;color:var(--muted)}
.fields input{padding:12px 10px;border:1px solid #cbd5e1;border-radius:10px;outline:0}
.fields input:focus{border-color:var(--primary);box-shadow:0 0 0 4px var(--ring)}

.status{margin-top:10px;color:var(--muted)}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;background:#111827;color:#fff;padding:10px 14px;border-radius:10px;opacity:0;pointer-events:none;transition:opacity .2s}
.toast.show{opacity:1}

/* Bigger touch handles for Cropper */
.cropper-point{width:18px !important;height:18px !important}
.cropper-line{width:4px !important}
.cropper-crop-box,.cropper-face{box-shadow:0 0 0 9999px rgba(0,0,0,.35)}




