
:root{font-family:system-ui,-apple-system,"Segoe UI",sans-serif;color:#182f43;background:#f0f4f7}
*{box-sizing:border-box}body{margin:0}main{max-width:650px;margin:auto;padding:9px 10px 18px}
.hidden{display:none!important}.panel{background:#fff;border:1px solid #e0e8ed;border-radius:10px;padding:10px;margin-bottom:9px}
h2{font-size:17px;margin:0}.sub{font-size:13px;color:#657788}.eyebrow{display:block;font-size:10px;font-weight:750;color:#547187;letter-spacing:.025em;margin-bottom:4px}
button{background:#116ba6;border:0;border-radius:8px;color:#fff;padding:11px 12px;font-size:14px;font-weight:700;cursor:pointer}
button.secondary{background:#e6edf2;color:#285069}.small{font-size:12px;padding:7px 9px}
input{width:100%;border:2px solid #bbcad6;border-radius:9px;background:#fff;padding:10px 9px;font-size:18px;outline:none}
input:focus{border-color:#1380c6}.scanField{margin:0}.scanPanel{margin-bottom:8px}
.overviewHead{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;padding:4px 1px}
.sessions{display:flex;flex-direction:column;gap:7px}.sessionButton{text-align:left;width:100%;background:white;color:#183e55;border:1px solid #d9e3eb;overflow-wrap:anywhere;padding:13px 11px;font-size:14px;min-height:48px}
.detailHead{display:flex;gap:10px;align-items:center;background:#e9f5fd;border:1px solid #acd3ee;padding:8px;border-radius:9px;margin-bottom:8px}
.backButton{flex:none;min-height:40px;white-space:nowrap;padding:8px 11px}.session{font-size:13px;font-weight:700;line-height:1.25;overflow-wrap:anywhere;min-width:0}
.feedback{font-size:12px;line-height:1.3;min-height:17px;margin-top:5px;font-weight:650;color:#57768c;overflow-wrap:anywhere}
.feedback.good{color:#16743d}.feedback.bad,.error{color:#b62e2e}
.recentHead{font-size:14px;font-weight:750;margin:9px 2px 5px}
.recent{background:white;border:1px solid #e0e8ed;border-radius:10px;min-height:54px;padding:0 10px}
.recent>.sub{display:block;padding:14px 0}.item{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:13px 2px;border-bottom:1px solid #edf0f3;min-height:49px}
.item:last-child{border-bottom:0}.item code{font-family:system-ui,-apple-system,"Segoe UI",sans-serif;font-size:21px;font-weight:800;letter-spacing:.015em}
.item small{color:#617789;font-size:11px;white-space:nowrap}
.deviceFooter{display:flex;gap:5px 12px;flex-wrap:wrap;align-items:center;justify-content:space-between;margin-top:12px;padding:6px 3px;border-top:1px solid #dce5ec;font-size:11px;color:#6c7f8e}
.pill{border-radius:14px;background:#e0e7eb;color:#304d5f;padding:3px 7px;font-size:10px;font-weight:700}.pill.ok{background:#d7f4e3;color:#176536}.pill.warn{background:#ffebbf;color:#80510b}.pill.bad{background:#ffe2e2;color:#a62d2d}
#setup p{font-size:14px;line-height:1.5}#setup input{font-size:15px;margin:10px 0}

/* v1.4: confirmation color and unobtrusive full-screen signal */
.item code.serialSent{color:#148443}
.item small.deliverySent{color:#148443;font-weight:750}
.item small.deliveryError{color:#b62e2e;font-weight:750}
.sessionCount{font-size:12px;font-weight:600;color:#708394}
.moreSessions{width:100%;margin-top:8px;font-size:12px;padding:9px}
.scanFlash{position:fixed;inset:0;z-index:999;pointer-events:none;opacity:0;visibility:hidden}
.scanFlash.flashGreen{background:rgba(0,210,73,.36)}
.scanFlash.flashRed{background:rgba(242,25,25,.43)}
.scanFlash.show{visibility:visible;animation:screenPulse .45s ease-out forwards}
.scanFlash.flashRed.show{animation:screenPulseRed .78s ease-out forwards}
@keyframes screenPulse{0%{opacity:0}12%{opacity:1}48%{opacity:1}100%{opacity:0}}
@keyframes screenPulseRed{0%{opacity:0}12%{opacity:1}28%{opacity:0}42%{opacity:1}63%{opacity:0}77%{opacity:1}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.scanFlash.show{animation-duration:.12s}}

/* v1.5: solid ~1cm status strip, visible in a noisy workshop.
   White at rest. Green only on validated post-commit API acknowledgement. */
body{padding-top:38px}
.scanFlash{position:fixed;left:0;right:0;top:0;height:38px;bottom:auto;
 background:#fff;opacity:1;visibility:visible;z-index:9999;pointer-events:none;
 border-bottom:1px solid #cbd5db}
.scanFlash.flashGreen{background:#00ca47}
.scanFlash.flashRed{background:#ec1428}
.scanFlash.show{animation:none;opacity:1;visibility:visible}
.scanFlash.flashRed.show{animation:barWarning 1s steps(1,end) forwards}
@keyframes barWarning{0%,35%,70%{background:#ec1428}18%,53%,88%{background:#fff}100%{background:#ec1428}}
@media(prefers-reduced-motion:reduce){.scanFlash.flashRed.show{animation:none}}
