* { box-sizing: border-box; }
body { margin:0; font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; background:#f1f5f9; color:#0f172a; }
.topbar { display:flex; justify-content:space-between; align-items:center; background:#0f172a; color:#e2e8f0; padding:0.9rem 1.5rem; }
.brand { font-weight:700; }
.user { font-size:0.9rem; display:flex; align-items:center; gap:0.75rem; }
.logout-form { display:inline; margin:0; }
.logout { background:none; border:1px solid #475569; color:#e2e8f0; padding:0.3rem 0.7rem; border-radius:6px; cursor:pointer; font-size:0.85rem; }
.wrap { max-width:720px; margin:3rem auto; padding:0 1.5rem; }
.card { background:#fff; border:1px solid #e2e8f0; border-radius:12px; padding:2rem; }
.card h1 { margin-top:0; }
label { display:block; font-weight:600; font-size:0.9rem; margin:1rem 0 0.35rem; }
input { width:100%; padding:0.6rem; border:1px solid #cbd5e1; border-radius:8px; font-size:1rem; }
.btn { margin-top:1.5rem; background:#16a34a; color:#fff; border:none; padding:0.7rem 1.4rem; border-radius:8px; font-size:1rem; font-weight:600; cursor:pointer; }
.error { color:#b91c1c; background:#fef2f2; border:1px solid #fecaca; padding:0.6rem 0.8rem; border-radius:8px; }
.muted { color:#64748b; font-size:0.9rem; }
.qr { max-width:200px; margin:1.25rem 0; }
.qr svg { width:200px; height:200px; }
code { background:#f1f5f9; padding:0.15rem 0.4rem; border-radius:5px; font-size:0.95rem; }
.codes { list-style:none; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:0.5rem; font-family:monospace; font-size:1rem; margin:1.25rem 0; }
.codes li { background:#f8fafc; border:1px solid #e2e8f0; padding:0.5rem; border-radius:6px; text-align:center; }
a.btn { display:inline-block; text-decoration:none; }
.qr-zoom-toggle { position:absolute; opacity:0; width:0; height:0; }
.qr svg { transition: width .15s ease, height .15s ease; }
.qr-zoom-toggle:checked ~ .qr svg { width:360px; height:360px; }
.zoom-btn { display:inline-block; margin:0.25rem 0 1.25rem; padding:0.45rem 0.9rem; background:#e2e8f0; color:#0f172a; border-radius:8px; cursor:pointer; font-size:0.85rem; font-weight:600; user-select:none; }
.zoom-btn:hover { background:#cbd5e1; }
.applink { color:#16a34a; font-weight:600; }
.mt { margin-top:1.5rem; }
.filetable { width:100%; border-collapse:collapse; font-size:0.92rem; }
.filetable th { text-align:left; color:#64748b; font-weight:600; padding:0.4rem 0.6rem; border-bottom:2px solid #e2e8f0; }
.filetable td { padding:0.55rem 0.6rem; border-bottom:1px solid #f1f5f9; }
.row-actions { white-space:nowrap; text-align:right; }
.btn-small { background:#0f172a; color:#fff; border:none; padding:0.35rem 0.75rem; border-radius:6px; font-size:0.8rem; font-weight:600; cursor:pointer; margin-left:0.35rem; }
.btn-danger { background:#b91c1c; }
.badge { display:inline-block; padding:0.15rem 0.55rem; border-radius:999px; font-size:0.78rem; font-weight:600; background:#e2e8f0; color:#334155; }
.badge-uploaded { background:#dcfce7; color:#166534; }
.badge-delivered { background:#dbeafe; color:#1e40af; }
.badge-pending { background:#fef9c3; color:#854d0e; }
.badge-rejected { background:#fee2e2; color:#991b1b; }
