.scanner-dialog{width:min(1100px,calc(100% - 24px));max-height:calc(100dvh - 24px);padding:0;border:1px solid #b99c59;border-radius:18px;background:#f9f7ef;color:#202925;box-shadow:0 24px 100px #0008;overflow:auto}.scanner-dialog::backdrop{background:#071713b8}.scanner-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;background:#173c32;color:#fff9e9}.scanner-heading h2{font-size:1.5rem;margin:4px 0;line-height:1.2}.scanner-eyebrow{font-size:.75rem;letter-spacing:.14em;color:#e6c47b}.scanner-content{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:24px;padding:24px}.scanner-content section{min-width:0}.scanner-content label{display:grid;gap:6px;font-size:.875rem}.scanner-content input,.scanner-content select{max-width:100%;min-width:0;font-size:1rem}.scanner-content button{min-height:44px;white-space:normal}.scanner-content summary{cursor:pointer;padding:12px 0;font-weight:650;overflow-wrap:anywhere}.scanner-controls{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;gap:12px}.scanner-content .scanner-check{display:flex;align-items:center;gap:8px}.scanner-check input,.scanner-sets input{width:20px;height:20px;flex-shrink:0}.scanner-view{position:relative;height:370px;background:#11211c;border-radius:12px;margin:14px 0;overflow:hidden}.scanner-view video{width:100%;height:100%;object-fit:cover}.scanner-view #scan-guide{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);height:86%;aspect-ratio:63/88;border:2px solid #f5cf7c;border-radius:8px;box-shadow:0 0 0 300px #0004;pointer-events:none}.scanner-view #scan-guide span{position:absolute;top:8px;left:0;right:0;text-align:center;color:#fff;background:#0008;font-size:.75rem;padding:4px}.scanner-view p{position:absolute;left:8%;right:8%;bottom:18%;color:#fff;text-align:center;background:#11211ccc;padding:12px}.scanner-buttons{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.scanner-photo{margin-top:16px}.scanner-photo input{width:100%}#scan-status,#scan-save-status{font-size:.95rem;line-height:1.5;min-height:1.5em}.scanner-search{display:flex;gap:8px;align-items:end}.scanner-search label{flex:1;min-width:0}.scanner-sets{max-height:220px;overflow:auto;border:1px solid #d3d7cb;border-radius:8px;margin-bottom:8px}.scanner-sets label{display:flex;align-items:center;padding:9px;font-size:.875rem;border-bottom:1px solid #e1e4da}.scanner-sets span{margin-left:auto;color:#62695e}.scanner-result{display:grid;grid-template-columns:100px minmax(0,1fr);gap:14px;padding:14px 0;border-top:1px solid #d3d7cb}.scanner-result img{width:100%;border-radius:7px}.scanner-result h3{font-size:1rem;margin:0 0 6px}.scanner-result p{font-size:.875rem;line-height:1.4;margin:6px 0}.scanner-price{font-size:1.25rem;color:#205641}.scanner-queue{border-left:1px solid #d3d7cb;padding-left:24px}.scanner-queue h3{margin-top:0;font-size:1.25rem}.scanner-note{font-size:.875rem;color:#5e675c;line-height:1.5}.scanner-queue-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px;padding:12px 0;border-bottom:1px solid #d3d7cb;align-items:start}.scanner-queue-row img{width:42px;border-radius:4px}.scanner-queue-row strong{display:block;font-size:.95rem;overflow-wrap:anywhere}.scanner-queue-row span{display:block;font-size:.875rem;margin:5px 0}.scanner-queue-row input{width:85px}.scanner-queue-row button{font-size:.875rem;padding:8px}.scanner-destination{display:grid;gap:14px;margin-top:20px}#scan-new-container{display:grid;gap:12px}#scan-new-container[hidden]{display:none}.scanner-dialog [hidden]{display:none!important}.scanner-dialog button:disabled{opacity:.55;cursor:not-allowed}.scanner-dialog :focus-visible{outline:3px solid #b57c15;outline-offset:3px}@media(max-width:720px){.scanner-dialog{width:100%;max-width:100%;height:100dvh;max-height:100dvh;border-radius:0;border:0;margin:0}.scanner-heading{padding:16px}.scanner-heading h2{font-size:1.25rem}.scanner-content{grid-template-columns:1fr;padding:16px;gap:28px}.scanner-queue{border-left:0;border-top:1px solid #d3d7cb;padding:20px 0 0}.scanner-view{height:min(45dvh,370px);min-height:240px}.scanner-controls{gap:8px}.scanner-result{grid-template-columns:90px minmax(0,1fr)}}
/* Camera-first presentation: the video is the entire viewport, panels float over it. */
html.scanner-is-open,html.scanner-is-open body{overflow:hidden;overscroll-behavior:none}
.scanner-dialog{position:fixed;inset:0;margin:0;width:100%;max-width:none;height:100dvh;max-height:none;border:0;border-radius:0;padding:0;overflow:hidden;background:#101b17;color:#fff}
.scanner-dialog .scanner-view{position:absolute;inset:0;width:100%;height:100%;min-height:0;margin:0;border-radius:0}
.scanner-dialog .scanner-view video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.scanner-dialog .scanner-view #scan-guide{top:43%;height:auto;width:min(76vw,calc(48dvh * 63 / 88));aspect-ratio:63/88;border:2px solid #f1e7c2aa;border-radius:16px;box-shadow:0 0 0 100vmax #0002}
.scanner-dialog .scanner-view #scan-guide span{top:-30px;background:transparent;text-shadow:0 1px 4px #000;font-size:.75rem;letter-spacing:.08em}
.scanner-dialog .scanner-view p{bottom:auto;top:35%;left:15%;right:15%;border-radius:12px}
.scanner-top{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:calc(16px + env(safe-area-inset-top)) 16px 20px;background:linear-gradient(#0008,transparent)}
.scanner-dialog .scanner-top button,.scanner-total-pill,.scanner-dialog .scanner-camera-actions>button:not(.scanner-shutter),.scanner-dialog .scanner-set-chip{border:1px solid #ffffff24;background:#18231de0;color:#fff;border-radius:30px;padding:10px 15px;min-height:44px;backdrop-filter:blur(14px);font-size:.875rem}
.scanner-total-pill{font-size:1.15rem;font-weight:750;min-height:0;text-align:center}
#scan-count{display:inline-grid;place-items:center;background:#c4eedb;color:#173b2e;min-width:24px;height:24px;border-radius:50%;margin-left:5px;font-weight:700}
.scanner-bottom{position:absolute;bottom:0;left:0;right:0;padding:12px 16px calc(14px + env(safe-area-inset-bottom));display:grid;justify-items:center;gap:10px;background:linear-gradient(transparent,#000a 30%);max-height:48%;overflow:auto}
.scanner-dialog #scan-status{margin:0;max-width:550px;line-height:1.35;font-size:.875rem;text-align:center;color:white;text-shadow:0 1px 5px #000;background:#14241ad9;border-radius:12px;padding:8px 12px}
.scanner-camera-actions{display:flex;align-items:center;justify-content:center;gap:24px;width:100%;max-width:500px}
.scanner-camera-actions label{display:grid;gap:3px;color:#fff;font-size:.75rem;text-align:center;width:110px}
.scanner-camera-actions select{color:#fff;background:#19271ee8;border:1px solid #ffffff40;border-radius:24px;font-size:1rem;padding:10px;width:100%;min-height:44px}
.scanner-dialog .scanner-shutter{flex-shrink:0;width:76px;height:76px;min-height:76px;border-radius:50%;border:5px solid #f9fffb;box-shadow:inset 0 0 0 3px #2d6551;background:#d5f9e7;color:#103c2a;padding:8px;font-size:.875rem;font-weight:750}
.scanner-dialog .scanner-set-chip{min-height:36px;padding:7px 16px;max-width:90%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.875rem}
#scan-last-card{display:flex;align-items:center;gap:12px;width:min(100%,520px);padding:10px 14px;border-radius:18px;background:#16231fe8;backdrop-filter:blur(15px);border:1px solid #ffffff30;color:white;box-sizing:border-box}
#scan-last-card img{width:34px;border-radius:4px}#scan-last-card>span{flex:1;min-width:0}#scan-last-card strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1rem}#scan-last-card span span{display:block;font-size:.875rem;color:#c1e4d2;margin-top:4px}#scan-last-card b{color:#c1e4d2}
.scanner-sheet-shade{position:absolute!important;inset:0;width:100%;height:100%;border:0!important;border-radius:0!important;background:#0006!important;backdrop-filter:blur(3px);z-index:3}
.scanner-sheet{position:absolute;bottom:0;left:0;right:0;z-index:4;max-height:84dvh;overflow:auto;overscroll-behavior:contain;background:#f9f7ef;color:#202925;border-radius:24px 24px 0 0;padding:18px 20px calc(24px + env(safe-area-inset-bottom));box-shadow:0 -15px 60px #0006;box-sizing:border-box}
.scanner-sheet-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:14px;border-bottom:1px solid #d3d7cb;margin-bottom:16px}.scanner-sheet-heading h3{margin:0;font-size:1.2rem}.scanner-sheet-heading button{min-height:44px}
.scanner-sheet .scanner-queue{border:0;padding:0}.scanner-sheet label{display:grid;gap:6px;font-size:.875rem}.scanner-sheet input,.scanner-sheet select{font-size:1rem;max-width:100%;min-width:0}.scanner-sheet button{min-height:44px}.scanner-sheet summary{padding:12px 0;cursor:pointer;font-weight:650}.scanner-sheet .scanner-check{display:flex;align-items:center;gap:10px;padding:10px 0}.scanner-sheet .scanner-controls{grid-template-columns:1fr 1fr;margin-bottom:12px}.scanner-sheet .scanner-sets label{display:flex}.scanner-sheet .scanner-sets{margin-top:10px}.scanner-sheet .scanner-results{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:16px}.scanner-sheet .scanner-result{display:flex;flex-direction:column;padding:0;border:0;gap:8px}.scanner-sheet .scanner-result img{width:100%;max-height:31dvh;object-fit:contain}.scanner-sheet .scanner-result button{width:100%}.scanner-sheet .scanner-result p{margin:4px 0}.scanner-sheet .scanner-result h3{margin:0}.scanner-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(min-width:760px){.scanner-sheet{left:50%;right:auto;transform:translateX(-50%);width:min(700px,100%)}.scanner-top{padding-left:32px;padding-right:32px}}
@media(max-height:530px) and (orientation:landscape){.scanner-bottom{left:auto;width:40%;max-height:75%;padding:12px;box-sizing:border-box}.scanner-dialog .scanner-view #scan-guide{left:30%;top:52%;width:auto;height:65dvh}.scanner-camera-actions{gap:10px}.scanner-dialog .scanner-shutter{width:60px;height:60px;min-height:60px}.scanner-camera-actions label{width:95px}}
#scan-add-copy{min-width:44px;min-height:44px;background:#c4eedb;color:#173b2e;border:0;border-radius:50%;font-size:1rem;font-weight:750;padding:8px}.scanner-treatment{color:#286c50;font-weight:650}

.scanner-sound-previews{padding:12px 0 18px}.scanner-sound-previews>strong{font-size:.875rem}.scanner-sound-previews>div{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.scanner-sound-previews button{font-size:.875rem;padding:8px 12px}

/* Camera entry points belong to the mobile touch experience. */
[data-open-scanner] { display: none; }
@media (pointer: coarse) {
  [data-open-scanner] { display: inline-flex; }
}
