.scanner-panel{--scanner-accent: var(--frc-amber, #ffc107)}.scanner-drop{border:2px dashed rgba(255,255,255,.25);border-radius:.75rem;padding:2rem 1rem;text-align:center;cursor:pointer;background:#ffffff08;transition:border-color .15s ease,background-color .15s ease}.scanner-drop:hover,.scanner-drop:focus-visible,.scanner-drop-over{border-color:var(--scanner-accent);background:#ffc10714;outline:none}.scanner-drop-icon{font-size:2.25rem;color:var(--scanner-accent);display:block;margin-bottom:.5rem}.scanner-drop-title{margin:0 0 .25rem;font-weight:600}.scanner-drop-hint{margin:0 0 .85rem;font-size:.9rem;opacity:.75}.scanner-status{margin-top:1rem;padding:.6rem .85rem;border-radius:.5rem;font-size:.95rem;background:#ffffff0f;display:flex;align-items:center}.scanner-status-ok{background:#1987542e}.scanner-status-warn{background:#ffc10729}.scanner-status-error{background:#dc35452e}.scanner-status.has-actions{flex-wrap:wrap}.scanner-status-actions{flex-basis:100%;display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.6rem}.scanner-status-actions .btn{flex:1 1 auto}.scanner-preview{position:relative;margin-top:1rem;border-radius:.5rem;overflow:hidden;line-height:0}.scanner-preview-img{width:100%;height:auto;max-height:42vh;object-fit:contain;background:#000}.scanner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.scanner-overlay svg{width:100%;height:100%}.scanner-box{fill:#ffc10729;stroke:var(--scanner-accent);stroke-width:.6;vector-effect:non-scaling-stroke}.scanner-results{margin-top:1rem}.scanner-table code{word-break:break-all;color:var(--scanner-accent);font-size:.9rem}.scanner-format{white-space:nowrap;font-size:.85rem;opacity:.85}.scanner-guess{margin-top:.35rem;font-size:.85rem}.scanner-serial-badge{font-size:.85rem;letter-spacing:.02em}.scanner-unknown{opacity:.7;font-size:.85rem}.scanner-copy{padding:0 .35rem;text-decoration:none;vertical-align:baseline}.scanner-actions{white-space:nowrap}@media (max-width: 575.98px){.scanner-drop{padding:1.35rem .75rem}.scanner-table .scanner-format{font-size:.78rem}}.scanner-example-img{width:100%;height:190px;object-fit:cover;object-position:center;background:#000}.scanner-tabs{display:grid;grid-template-columns:1fr 1fr;gap:.35rem;padding:.3rem;margin-bottom:.9rem;border-radius:12px;background:#00000059;border:1px solid rgba(255,255,255,.08)}.scanner-tab{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:44px;border:0;border-radius:9px;background:transparent;color:#ffffffb3;font-weight:700;font-size:.92rem;cursor:pointer;transition:background-color .15s ease,color .15s ease}.scanner-tab:hover{color:#fff;background:#ffffff0f}.scanner-tab:focus-visible{outline:2px solid var(--scanner-accent);outline-offset:1px}.scanner-tab.is-active{background:var(--scanner-accent);color:#111}.scanner-drop{padding:2.25rem 1rem;border-radius:14px}.scanner-drop-icon{width:64px;height:64px;margin:0 auto .75rem;display:flex;align-items:center;justify-content:center;border-radius:16px;background:#ffc1071f;font-size:2rem}.scanner-drop-btn{padding:.45rem 1.1rem;font-weight:700;border-radius:8px}.scanner-camera-view{position:relative;border-radius:14px;overflow:hidden;background:#000;aspect-ratio:4 / 3}.scanner-video{width:100%;height:100%;object-fit:cover;display:block}.scanner-camera-guide{position:absolute;top:18%;right:10%;bottom:18%;left:10%;border:2px solid rgba(255,255,255,.85);border-radius:12px;box-shadow:0 0 0 100vmax #00000059;pointer-events:none}.scanner-camera-guide span{position:absolute;left:6%;right:6%;top:50%;height:2px;background:var(--scanner-accent);box-shadow:0 0 12px var(--scanner-accent);opacity:0}.scanner-camera.is-live .scanner-camera-guide{border-color:var(--scanner-accent)}.scanner-camera.is-live .scanner-camera-guide span{opacity:1;animation:scanner-sweep 1.8s ease-in-out infinite alternate}@keyframes scanner-sweep{0%{top:12%}to{top:88%}}@media (prefers-reduced-motion: reduce){.scanner-camera.is-live .scanner-camera-guide span{animation:none}}.scanner-camera-hint{margin:.7rem 0 0;font-size:.9rem;text-align:center;color:#ffffffb3}.scanner-backup{display:flex;gap:.55rem;align-items:flex-start;margin:1rem 0 0;padding-top:.9rem;border-top:1px solid rgba(255,255,255,.08);font-size:.85rem;line-height:1.5;color:#fff9}.scanner-backup>i{color:var(--scanner-accent);margin-top:.1rem}.scanner-backup a{color:var(--scanner-accent);font-weight:600}.scanner-backup a i{font-size:.75em}.scanner-modal .modal-content{background:linear-gradient(180deg,#1c2128,#15191f);border:1px solid rgba(255,193,7,.28);border-radius:20px;box-shadow:0 30px 80px #0009;overflow:hidden}.scanner-modal-header{align-items:flex-start;gap:.9rem;padding:1.25rem 1.4rem .9rem;border-bottom:0}.scanner-modal-icon{flex:0 0 auto;width:46px;height:46px;display:flex;align-items:center;justify-content:center;border-radius:13px;background:#ffc10721;color:var(--scanner-accent, #ffc107);font-size:1.4rem}.scanner-modal-heading{flex:1;min-width:0}.scanner-modal .modal-title{font-size:1.2rem;font-weight:800;line-height:1.25;color:#fff;margin:0}.scanner-modal-sub{margin:.25rem 0 0;font-size:.9rem;color:#fff9}.scanner-modal .btn-close{margin:.1rem 0 0 auto;opacity:.6}.scanner-modal .btn-close:hover{opacity:1}.scanner-modal .modal-body{padding:.4rem 1.4rem 1.1rem}.scanner-modal-manual{margin:.9rem 0 0;text-align:center;font-size:.85rem;color:#ffffff80}.scanner-modal-footer{justify-content:space-between;gap:.75rem;padding:.85rem 1.4rem;background:#00000040;border-top:1px solid rgba(255,255,255,.06)}.scanner-privacy{display:inline-flex;align-items:center;gap:.45rem;font-size:.82rem;font-weight:600;color:#ffffffb3}.scanner-privacy i{color:#4ade80;font-size:1rem}.scanner-fullpage{display:inline-flex;align-items:center;gap:.35rem;font-size:.85rem;font-weight:700;color:var(--scanner-accent, #ffc107);text-decoration:none;padding:.4rem .8rem;border-radius:999px;border:1px solid rgba(255,193,7,.3);transition:background-color .15s ease,border-color .15s ease}.scanner-fullpage:hover,.scanner-fullpage:focus-visible{background:#ffc1071a;border-color:var(--scanner-accent, #ffc107);color:var(--scanner-accent, #ffc107)}@media (max-width: 575.98px){.scanner-modal-header{padding:1rem 1rem .75rem}.scanner-modal .modal-body{padding:.3rem 1rem 1rem}.scanner-modal-footer{flex-direction:column;align-items:stretch;text-align:center}.scanner-privacy,.scanner-fullpage{justify-content:center}}.scanner-drop{border:2px dashed rgba(255,193,7,.32);background:radial-gradient(120% 90% at 50% 0%,rgba(255,193,7,.07),transparent 60%),#00000038}.scanner-drop-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1.3rem;font-size:.95rem;box-shadow:0 6px 18px #f39c1240}.scanner-drop-formats{margin:.8rem 0 0;font-size:.75rem;letter-spacing:.04em;color:#fff6}.scanner-modal .scanner-tabs{background:#00000059}.scanner-modal-manual i{margin-right:.35rem}details.scanner-backup{display:block}.scanner-backup summary{display:flex;align-items:center;gap:.5rem;cursor:pointer;list-style:none;font-weight:600;color:#ffffffa6;border-radius:8px;padding:.15rem 0}.scanner-backup summary::-webkit-details-marker{display:none}.scanner-backup summary:hover{color:#fff}.scanner-backup summary:focus-visible{outline:2px solid var(--scanner-accent);outline-offset:2px}.scanner-backup summary>.bi-life-preserver{color:var(--scanner-accent)}.scanner-backup-chevron{margin-left:auto;font-size:.8rem;transition:transform .2s ease}.scanner-backup[open] .scanner-backup-chevron{transform:rotate(180deg)}.scanner-backup p{margin:.6rem 0 0;padding-left:1.55rem}.scanner-hint-touch{display:none}@media (hover: none) and (pointer: coarse){.scanner-hint-pointer{display:none}.scanner-hint-touch{display:block}}.scanner-found{margin-bottom:1rem;padding:1rem 1.1rem;border-radius:12px;border:1px solid rgba(25,135,84,.55);background:#1987541f}.scanner-found-head{font-weight:800;color:#75d99f}.scanner-found-serial{margin:.45rem 0}.scanner-found-serial code{font-size:1.35rem;font-weight:800;letter-spacing:.06em;color:#fff;background:#00000059;padding:.2rem .6rem;border-radius:8px;word-break:break-all}.scanner-found-check{margin:0 0 .8rem;color:#ffffffc7;font-size:.95rem}.scanner-found-continue{font-weight:800;min-height:44px;padding-inline:1.4rem}.scanner-modal .scanner-close{flex:0 0 auto;margin:0 0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,255,255,.35);background:#ffffff1f;color:#fff;font-size:1.1rem;line-height:1;cursor:pointer}.scanner-modal .scanner-close:hover,.scanner-modal .scanner-close:focus-visible{background:var(--brand-amber, #ffb020);border-color:var(--brand-amber, #ffb020);color:#111;outline:none}@media (max-width: 575.98px){.scanner-modal .modal-dialog{margin:0;height:auto;min-height:100%}.scanner-modal .modal-content{border-radius:0;height:auto;min-height:100vh;min-height:100dvh}.scanner-modal .modal-body{overflow-y:visible}}.scanner-modal-footer{justify-content:center}details.scanner-backup{border-top:0;padding-top:0;margin-top:1.1rem;text-align:center}.scanner-backup summary{display:inline-flex;justify-content:center;gap:.55rem;min-height:44px;padding:.55rem 1.15rem;border-radius:999px;border:1px solid rgba(255,193,7,.45);background:#ffc10714;color:#fff;font-weight:700;transition:background .15s ease,border-color .15s ease}.scanner-backup summary:hover{background:#ffc1072e;border-color:var(--scanner-accent);color:#fff}.scanner-backup-chevron{margin-left:.2rem}.scanner-backup[open] summary{background:#ffc1072e;border-color:var(--scanner-accent)}.scanner-backup p{margin:.75rem 0 0;padding:.9rem 1rem;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:#00000040;text-align:left;color:#ffffffc7}.scanner-modal-header{align-items:center}.scanner-codes{margin-top:.25rem;border:1px solid rgba(255,255,255,.1);border-radius:12px;background:#0003}.scanner-codes>summary{display:flex;align-items:center;gap:.5rem;padding:.7rem .9rem;cursor:pointer;list-style:none;font-weight:700;font-size:.9rem;color:#fffc}.scanner-codes>summary::-webkit-details-marker{display:none}.scanner-codes>summary:hover{color:#fff}.scanner-codes>summary .bi-upc{color:var(--scanner-accent)}.scanner-codes-chevron{margin-left:auto;font-size:.8rem;transition:transform .2s ease}.scanner-codes[open] .scanner-codes-chevron{transform:rotate(180deg)}.scanner-codes-list{padding:0 .9rem .6rem}.scanner-code{padding:.65rem 0;border-top:1px solid rgba(255,255,255,.08)}.scanner-code-main{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem}.scanner-code-main .scanner-guess{margin:0;flex:1 1 200px;min-width:0}.scanner-code-main .scanner-actions{text-align:right}.scanner-code-meta{display:flex;align-items:center;gap:.35rem;margin-top:.35rem;min-width:0}.scanner-code-raw{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;color:#ffffff8c;background:transparent;padding:0}.scanner-code-meta .scanner-copy,.scanner-code-meta .scanner-info{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:0;border-radius:8px;background:transparent;color:#ffffff8c;cursor:pointer}.scanner-code-meta .scanner-copy:hover,.scanner-code-meta .scanner-info:hover,.scanner-code-meta .scanner-info[aria-expanded=true]{color:var(--scanner-accent);background:#ffffff0f}.scanner-info-text{margin:.35rem 0 0;padding:.55rem .7rem;border-radius:8px;font-size:.82rem;line-height:1.45;color:#ffffffc7;background:#ffffff0d}.scanner-info-text strong{color:#fff}.scanner-backup .scanner-fullpage-link{display:flex;align-items:center;justify-content:center;gap:.45rem;margin-top:.6rem;min-height:44px;padding:.5rem 1rem;border-radius:10px;font-weight:700;color:#111;background:var(--scanner-accent);text-decoration:none}.scanner-backup .scanner-fullpage-link:hover{filter:brightness(1.08);color:#111}.scanner-backup .scanner-fullpage-link{display:inline-flex;width:auto;min-height:36px;margin:.6rem auto 0;padding:.35rem .9rem;border-radius:999px;font-size:.85rem;font-weight:700;color:var(--scanner-accent);background:transparent;border:1px solid rgba(255,193,7,.5)}.scanner-backup .scanner-fullpage-link:hover{filter:none;color:#111;background:var(--scanner-accent)}
