/* KSF-MODULE: design.scanner
 * AI: Read AGENTS.md before editing; record every new cross-module dependency in src/app/app.modules.json.
 */

    .scanner-page-head { margin-bottom: 14px; }
    .scanner-workspace { max-width: 760px; margin: 0 auto; }
    .scanner-search-card { margin-bottom: 14px; padding: 14px; border: 1px solid var(--line); border-radius: 10px; background: #fff; box-shadow: 0 3px 12px rgba(17, 35, 57, .06); }
    .scanner-search-card.is-collapsed { display: none; }
    .scanner-search-form { display: grid; grid-template-columns: minmax(0, 1fr) 36px auto; align-items: end; gap: 8px; }
    .scanner-search-form .field { margin: 0; }
    .scanner-search-form .btn { min-height: 46px; }
    .scanner-search-clear { width:36px; min-height:36px; margin-bottom:5px; padding:0; border:1px solid var(--line); border-radius:50%; background:#f7f9fc; color:var(--muted); font:inherit; font-size:1.15rem; font-weight:800; cursor:pointer; }
    .scanner-scan-choices { margin-top: 11px; padding-top: 11px; border-top: 1px solid var(--line); }
    .scanner-scan-choices > span { display: block; margin-bottom: 7px; color: var(--muted); font-size: .75rem; font-weight: 850; }
    .scanner-scan-choices > div { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }
    .scanner-scan-choices .btn { min-width: 0; min-height: 48px; display: flex; align-items: center; justify-content: center; gap: 7px; padding: 8px; line-height: 1.15; }
    .scanner-scan-choices .btn b { font-size: 1.05rem; }
    .scanner-mode-heading { display: flex; align-items: center; gap: 10px; margin: 0 0 10px; }
    .scanner-mode-heading button { width: 40px; height: 40px; border: 1px solid var(--line); border-radius: 50%; background: #fff; color: var(--ink); font: inherit; font-size: 1.1rem; }
    .scanner-mode-heading strong { color: var(--ink); font-size: 1rem; }
    .scanner-back-label { display: none; }
    .scanner-modes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; padding: 4px; margin-bottom: 12px; border: 1px solid var(--line); border-radius: 8px; background: #edf2f8; }
    .scanner-modes button { min-width: 0; min-height: 48px; padding: 6px; border: 0; border-radius: 6px; background: transparent; color: var(--muted); font: inherit; font-size: .84rem; line-height: 1.15; font-weight: 850; overflow-wrap: anywhere; }
    .scanner-modes button.active { background: #fff; color: var(--brand); box-shadow: 0 1px 4px rgba(17, 35, 57, .12); }
    .scanner-camera { position: relative; width: 100%; overflow: hidden; aspect-ratio: 4 / 3; border-radius: 8px; background: #101821; touch-action: pan-y; overscroll-behavior-y: auto; }
    .scanner-camera video { width: 100%; height: 100%; display: block; object-fit: cover; transform-origin: center; will-change: transform; }
    .scanner-camera-message { position: absolute; z-index: 6; inset: 12px 12px auto; display: grid; gap: 10px; padding: 12px; border-radius: 10px; background: rgba(11,24,38,.92); color: #fff; font-size: .9rem; line-height: 1.45; text-align: center; }
    .scanner-camera-message:empty, .scanner-camera-message.hidden { display: none; }
    .scanner-camera-message.has-error { border: 1px solid #d7a877; }
    .scanner-camera-message .btn { justify-self: center; min-height: 44px; white-space: normal; }
    .scanner-barcode-manual { display: grid; gap: 8px; margin-top: 14px; }
    .scanner-barcode-manual .field { display: grid; gap: 6px; }
    .scanner-barcode-manual input { width: 100%; min-width: 0; font-size: 1rem; }
    .scanner-barcode-manual .btn { min-height: 44px; }
    .scanner-frozen-frame { position: absolute; z-index: 1; inset: 0; width: 100%; height: 100%; display: block; object-fit: cover; }
    .scanner-photo-processing { position: absolute; z-index: 3; left: 50%; top: 50%; padding: 9px 13px; transform: translate(-50%, -50%); border-radius: 7px; background: rgba(11,24,38,.82); color: #fff; font-weight: 850; text-align: center; }
    .scanner-retake { position: absolute; z-index: 4; left: 50%; bottom: 18px; min-width: 150px; transform: translateX(-50%); border-color: rgba(255,255,255,.8); background: rgba(255,255,255,.94); }
    .scanner-camera.has-capture .scanner-camera-tools,
    .scanner-camera.has-capture .scanner-zoom-controls,
    .scanner-camera.has-capture .scanner-quality-badge,
    .scanner-camera.has-capture .scanner-frame,
    .scanner-camera.has-capture .scanner-shutter { display: none; }
    .scanner-camera.has-result video { visibility: hidden; }
    .scanner-camera.has-result .scanner-camera-tools,
    .scanner-camera.has-result .scanner-zoom-controls,
    .scanner-camera.has-result .scanner-frame { display: none; }
    .scanner-frame { position: absolute; inset: 25% 10%; pointer-events: none; }
    .scanner-frame i { position: absolute; width: 36px; height: 36px; border-color: #fff; border-style: solid; filter: drop-shadow(0 1px 2px rgba(0,0,0,.7)); }
    .scanner-frame i:nth-child(1) { top: 0; left: 0; border-width: 3px 0 0 3px; }
    .scanner-frame i:nth-child(2) { top: 0; right: 0; border-width: 3px 3px 0 0; }
    .scanner-frame i:nth-child(3) { right: 0; bottom: 0; border-width: 0 3px 3px 0; }
    .scanner-frame i:nth-child(4) { bottom: 0; left: 0; border-width: 0 0 3px 3px; }
    .scanner-quality-badge { display: none; }
    .scanner-camera-tools { position: absolute; z-index: 5; inset: 0; pointer-events: none; }
    .scanner-camera-tool { position: absolute; left: 14px; bottom: max(20px, env(safe-area-inset-bottom)); min-width: 54px; min-height: 54px; padding: 8px; border: 1px solid rgba(255,255,255,.65); border-radius: 50%; background: rgba(11,24,38,.88); color: #fff; font: inherit; pointer-events: auto; }
    .scanner-camera-tool svg { width: 24px; height: 24px; display: block; margin: auto; }
    .scanner-camera-tool span { display: block; font-size: 1.15rem; line-height: 1; }
    .scanner-camera-tool b { position: absolute; top: 100%; left: 50%; transform: translateX(-50%); margin-top: 3px; font-size: .68rem; white-space: nowrap; }
    .scanner-camera-tool.active { background: #fff7d6; color: #5f4300; border-color: #ffe183; }
    .scanner-photo-count { position: absolute; z-index: 3; top: 70px; right: 10px; padding: 5px 8px; border-radius: 999px; background: rgba(11,24,38,.82); color: #fff; font-size: .68rem; font-weight: 900; }
    .scanner-zoom-controls { position: absolute; z-index: 5; left: 50%; bottom: max(105px, calc(env(safe-area-inset-bottom) + 90px)); display: block; transform: translateX(-50%); color: #fff; }
    .scanner-zoom-controls button { width: 44px; height: 44px; padding: 0; border: 0; background: transparent; color: #fff; font: inherit; font-size: 1.35rem; font-weight: 900; }
    .scanner-zoom-controls button:disabled { color: #7f91a4; }
    .scanner-zoom-controls output { text-align: center; font-size: .78rem; font-weight: 900; }
    .scanner-shutter { position: absolute; z-index: 5; left: 50%; bottom: max(18px, env(safe-area-inset-bottom)); width: 72px; height: 72px; padding: 5px; transform: translateX(-50%); border: 3px solid #fff; border-radius: 50%; background: rgba(10, 23, 36, .55); box-shadow: 0 5px 18px rgba(0,0,0,.38); }
    .scanner-shutter span { display: block; width: 100%; height: 100%; border-radius: 50%; background: #fff; transition: transform .12s ease, background .12s ease; }
    .scanner-shutter:active span { transform: scale(.88); }
    .scanner-shutter:disabled span { background: #9fb0c2; }
    .scanner-shutter:focus-visible { outline: 3px solid #74b8ff; outline-offset: 3px; }
    .scanner-capture-confirmation { position: absolute; z-index: 3; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 7px; padding: 24px; background: rgba(7, 35, 29, .9); color: #fff; text-align: center; }
    .scanner-capture-confirmation span { font-size: .8rem; font-weight: 900; text-transform: uppercase; }
    .scanner-capture-confirmation strong { max-width: 100%; font-size: 1.3rem; line-height: 1.25; overflow-wrap: anywhere; }
    .scanner-camera-again { min-width: 180px; margin-top: 8px; border-color: #fff; background: #fff; color: #0c5d43; }
    .scanner-captured-icon { display: grid; place-items: center; width: 64px; height: 64px; border: 3px solid #fff; border-radius: 50%; background: #16845f; font-size: 2rem; font-weight: 950; box-shadow: 0 8px 24px rgba(0, 0, 0, .28); }
    .scanner-hint { min-height: 42px; margin: 12px 0 8px; color: var(--muted); line-height: 1.45; }
    .scanner-actions { display: flex; gap: 8px; }
    .scanner-actions .btn { flex: 1; min-height: 48px; }
    .scanner-status { min-height: 24px; margin-top: 9px; color: var(--muted); font-weight: 750; }
    .scanner-status[data-kind="error"] { color: var(--danger); }
    .scanner-status[data-kind="warning"] { color: #8a5700; }
    .scanner-status[data-kind="success"] { color: #177254; }
    .scanner-result { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); scroll-margin-top: 80px; }
    #scannerResult { scroll-margin-top: 112px; }
    .scanner-result-summary { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 10px; margin-bottom: 14px; padding: 12px; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
    .scanner-result-summary.no-photo { grid-template-columns: minmax(0, 1fr); }
    .scanner-result-summary .scanner-detected { margin-bottom: 0; }
    .scanner-result-again { min-width: 118px; align-self: stretch; }
    .scanner-result-again[data-scanner-again="barcode"] { white-space: normal; }
    .scanner-photo-preview { width: 118px; height: 100%; min-height: 82px; max-height: 118px; display: block; object-fit: cover; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-soft); }
    .scanner-detected { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; padding: 12px 14px; border-left: 4px solid #16845f; background: #eaf7f1; color: #0c5d43; border-radius: 6px; }
    .scanner-detected > span { display: grid; flex: 0 0 auto; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: #16845f; color: #fff; font-size: 1.15rem; font-weight: 950; }
    .scanner-detected div { min-width: 0; }
    .scanner-detected small { display: block; font-size: .7rem; font-weight: 900; text-transform: uppercase; }
    .scanner-detected strong { display: block; margin-top: 2px; color: var(--ink); line-height: 1.25; overflow-wrap: anywhere; }
    .scanner-result-kind { display: inline-block; margin-bottom: 10px; color: #177254; font-size: .78rem; font-weight: 900; text-transform: uppercase; }
    .scanner-identification { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 0 0 14px; }
    .scanner-identification div { min-width: 0; padding: 10px 12px; background: var(--surface-soft); border: 1px solid var(--line); border-radius: 7px; }
    .scanner-identification dt { color: var(--muted); font-size: .72rem; font-weight: 800; text-transform: uppercase; }
    .scanner-identification dd { margin: 3px 0 0; overflow-wrap: anywhere; color: var(--ink); font-weight: 900; }
    .scanner-market { margin: 0 0 14px; padding: 14px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
    .scanner-market h3 { margin: 0 0 11px; color: var(--ink); font-size: 1rem; }
    .scanner-market-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
    .scanner-market-head h3 { margin: 0; }
    .scanner-market-spinner { width: 18px; height: 18px; border: 2px solid #c9d5e1; border-top-color: var(--brand); border-radius: 50%; animation: scanner-spin .8s linear infinite; }
    .scanner-market-message,
    .scanner-market-note { margin: 8px 0 0; color: var(--muted); font-size: .8rem; line-height: 1.4; }
    .scanner-shipping-summary { display: flex; align-items: center; gap: 8px; margin: 10px 0; font-size: .82rem; }
    .scanner-shipping-summary svg { width: 20px; height: 20px; flex: 0 0 20px; color: var(--muted); }
    .scanner-market-error { border-left: 3px solid #c88722; padding-left: 12px; }
    .scanner-market-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; margin: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 7px; background: var(--line); }
    .scanner-market-grid div { min-width: 0; padding: 11px; background: #fff; }
    .scanner-market-grid dt { color: var(--muted); font-size: .68rem; font-weight: 850; text-transform: uppercase; }
    .scanner-market-grid dd { margin: 5px 0 0; color: var(--ink); font-size: 1rem; font-weight: 950; line-height: 1.25; overflow-wrap: anywhere; }
    .scanner-price-distribution { margin-top: 12px; padding: 10px 11px 8px; border: 1px solid var(--line); border-radius: 7px; background: #f8fafc; }
    .scanner-price-distribution-head { display: flex; justify-content: space-between; gap: 10px; font-size: .75rem; }
    .scanner-price-distribution-head span { color: var(--muted); font-weight: 800; }
    .scanner-price-bars { height: 76px; display: flex; align-items: end; gap: 5px; margin-top: 8px; }
    .scanner-price-bars > span { min-width: 0; flex: 1; height: 100%; display: flex; flex-direction: column; justify-content: end; align-items: stretch; gap: 3px; }
    .scanner-price-bars i { display: block; height: var(--scanner-bar-height); min-height: 2px; border-radius: 3px 3px 1px 1px; background: linear-gradient(180deg, #4f91cf, #245d91); }
    .scanner-price-bars small { overflow: hidden; color: var(--muted); font-size: .56rem; line-height: 1; text-align: center; text-overflow: clip; white-space: nowrap; }
    .scanner-market-empty { display: flex; align-items: center; gap: 10px; color: var(--muted); }
    .scanner-market-empty strong { color: var(--ink); font-size: 1.5rem; }
    .scanner-ai { margin: 0 0 14px; padding: 11px; border: 1px solid #bfd5ea; border-left: 4px solid #48719a; border-radius: 7px; background: #f5f9fd; }
    .scanner-ai h3 { margin: 0; color: var(--ink); font-size: 1rem; }
    .scanner-ai-message { margin: 8px 0 0; color: var(--muted); line-height: 1.4; }
    .scanner-ai-limit { border-color: #e1c17b; background: #fff9eb; }
    .scanner-ai-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; margin: 8px 0 6px; }
    .scanner-ai-facts div,
    .scanner-ai-values div { min-width: 0; padding: 8px; border: 1px solid var(--line); border-radius: 6px; background: #fff; }
    .scanner-ai-facts dt,
    .scanner-ai-values span { display: block; color: var(--muted); font-size: .7rem; font-weight: 850; text-transform: uppercase; }
    .scanner-ai-facts dd,
    .scanner-ai-values strong { display: block; margin: 4px 0 0; color: var(--ink); font-weight: 950; }
    .scanner-ai-values { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
    .scanner-ai-disclaimer { margin: 7px 0 0; color: var(--muted); font-size: .68rem; line-height: 1.2; }
    .scanner-history { margin-top: 22px; padding-top: 16px; border-top: 1px solid var(--line); }
    .scanner-history-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 9px; }
    .scanner-history-head h3 { margin: 0; color: var(--ink); font-size: 1rem; }
    .scanner-history-head button { padding: 5px 0; border: 0; background: transparent; color: var(--muted); font: inherit; font-size: .78rem; font-weight: 850; }
    .scanner-history-list { border-top: 1px solid var(--line); }
    .scanner-history-row { display: grid; grid-template-columns: minmax(0, 1fr) 42px; align-items: stretch; border-bottom: 1px solid var(--line); }
    .scanner-history-open { min-width: 0; display: grid; grid-template-columns: 54px minmax(0, 1fr); align-items: center; gap: 10px; padding: 8px 8px 8px 0; border: 0; background: transparent; color: var(--ink); font: inherit; text-align: left; }
    .scanner-history-open img,
    .scanner-history-placeholder { width: 54px; height: 44px; display: grid; place-items: center; object-fit: cover; border: 1px solid var(--line); border-radius: 5px; background: var(--surface-soft); color: var(--muted); font-size: 1.15rem; }
    .scanner-history-copy { min-width: 0; }
    .scanner-history-copy span { display: block; color: var(--muted); font-size: .7rem; font-weight: 800; }
    .scanner-history-open strong { display: block; margin-top: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .scanner-history-delete { width: 42px; border: 0; background: transparent; color: var(--muted); font: inherit; font-size: 1.3rem; }
    .scanner-history-open:hover,
    .scanner-history-open:focus-visible,
    .scanner-history-delete:hover,
    .scanner-history-delete:focus-visible { background: var(--surface-soft); }
    .scanner-history-empty { margin: 0; padding: 12px 0; color: var(--muted); font-size: .84rem; line-height: 1.45; }
    @keyframes scanner-spin { to { transform: rotate(360deg); } }
    .scanner-result-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 8px; }
    .scanner-result-form .field { margin: 0; }
    .scanner-links { display: block; margin-top: 10px; }
    .scanner-decision { margin-top: 16px; padding: 14px; border: 1px solid var(--line); border-left: 4px solid #16845f; border-radius: 7px; background: #f6fbf8; }
    .scanner-decision h3 { margin: 0 0 10px; font-size: 1rem; }
    .scanner-decision form { display: grid; grid-template-columns: minmax(130px, .75fr) auto minmax(180px, 1fr); align-items: end; gap: 8px; }
    .scanner-decision label > span:first-child { display: block; margin-bottom: 5px; color: var(--muted); font-size: .72rem; font-weight: 850; }
    .scanner-price-input { position: relative; display: block; }
    .scanner-price-input b { position: absolute; z-index: 1; left: 11px; top: 50%; transform: translateY(-50%); color: var(--muted); }
    .scanner-price-input input { width: 100%; padding-left: 25px; }
    .scanner-decision .btn { min-height: 46px; display: flex; align-items: center; justify-content: center; text-align: center; text-decoration: none; }
    .scanner-listing-previews { margin-top: 16px; }
    .scanner-listing-previews h3 { margin: 0 0 9px; font-size: 1rem; }
    .scanner-listing-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
    .scanner-listing-candidate { display: flex; flex-direction: column; min-width: 0; gap: 7px; scroll-snap-align: start; }
    .scanner-listing-candidate > a { flex: 1; }
    .scanner-listing-candidate > button { width: 100%; min-height: 44px; white-space: normal; }
    .scanner-listing-grid a { min-width: 0; display: grid; grid-template-columns: 82px minmax(0, 1fr); gap: 9px; padding: 8px; border: 1px solid var(--line); border-radius: 7px; background: #fff; color: var(--ink); text-decoration: none; }
    .scanner-listing-grid img { width: 82px; height: 82px; display: block; object-fit: contain; border-radius: 5px; background: var(--surface-soft); }
    .scanner-listing-grid span { min-width: 0; }
    .scanner-listing-grid strong { display: -webkit-box; overflow: hidden; font-size: .78rem; line-height: 1.25; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
    .scanner-listing-grid b,
    .scanner-listing-grid small { display: block; margin-top: 5px; }
    .scanner-listing-grid b { color: var(--brand); font-size: .92rem; }
    .scanner-listing-grid small { color: var(--muted); font-size: .68rem; }
    .scanner-again { width: 100%; min-height: 44px; margin-top: 14px; border: 0; background: transparent; color: #28679e; font-size: .84rem; }

    /* Search, camera, results and history share one compact visual hierarchy. */
    .scanner-search-title { margin: 4px 0 6px; color: var(--ink); font-size: 1.45rem; line-height: 1.2; }
    .scanner-search-subtitle { margin: 0 0 18px; color: var(--muted); font-size: .9rem; line-height: 1.5; }
    .scanner-search-form .field { position: relative; }
    .scanner-search-icon { position: absolute; bottom: 15px; left: 12px; width: 20px; height: 20px; color: var(--muted); pointer-events: none; }
    .scanner-search-form input { padding-left: 40px; }
    .scanner-scan-tile > svg { width: 36px; height: 36px; color: #193d63; }
    .scanner-scan-tile > strong { font-size: .9rem; }
    .scanner-scan-tile > small { color: var(--muted); font-size: .75rem; line-height: 1.5; font-weight: 500; }
    .scanner-history-link { width: 100%; display: flex; align-items: center; gap: 12px; min-height: 48px; margin-top: 14px; padding: 10px 14px; border: 1px solid var(--line); border-radius: 9px; background: #fff; color: var(--ink); font: inherit; font-weight: 800; text-align: left; }
    .scanner-history-link > svg { width: 24px; height: 24px; color: var(--muted); }
    .scanner-history-link > :last-child { margin-left: auto; }
    .scanner-recent-searches { margin-top: 26px; }
    .scanner-recent-searches h3 { margin: 0 0 10px; font-size: .95rem; }
    .scanner-recent-searches .scanner-history-list { overflow: visible; border: 1px solid var(--line); border-radius: 9px; background: #fff; }
    .scanner-recent-searches .scanner-history-open { padding: 10px; }
    .scanner-result-identity { min-width: 0; }
    .scanner-result-identity > strong { display: block; color: var(--ink); font-size: .95rem; line-height: 1.35; overflow-wrap: anywhere; }
    .scanner-result-brand { display: block; margin: 4px 0; color: var(--muted); font-size: .8rem; }
    .scanner-identity-level { display: inline-flex; margin: 8px 0; padding: 5px 9px; border-radius: 8px; color: #254e77; background: #edf4fb; line-height: 1.4; }
    [data-scanner-edit-query] { min-height: 32px; padding: 3px 0; border: 0; background: transparent; color: #28679e; font: inherit; font-size: .8rem; font-weight: 750; }
    [data-scanner-edit-query] svg { width: 16px; height: 16px; margin-right: 5px; vertical-align: middle; }
    .scanner-frame i { border-color: #11c7a7; border-radius: 4px; }
    .scanner-camera-options { left: auto; right: 14px; cursor: pointer; }
    .scanner-zoom-presets { display: flex; align-items: center; padding: 3px; border: 1px solid rgba(255,255,255,.55); border-radius: 25px; background: rgba(11,24,38,.85); }
    .scanner-zoom-presets button { min-width: 44px; min-height: 40px; padding: 7px; border: 0; border-radius: 22px; background: transparent; color: #fff; font: inherit; font-size: .8rem; font-weight: 800; }
    .scanner-zoom-presets button.active,
    .scanner-zoom-presets button[aria-pressed="true"] { background: #fff; color: #172c46; }
    .scanner-camera.has-capture .scanner-zoom-presets,
    .scanner-camera.has-result .scanner-zoom-presets { display: none; }
    .scanner-camera.has-capture .scanner-camera-options,
    .scanner-camera.has-result .scanner-camera-options { display: none; }
    .scanner-options-sheet { width: min(520px, calc(100% - 24px)); max-height: calc(100dvh - 32px); padding: 22px; overflow-y: auto; border: 1px solid var(--line); border-radius: 20px; background: #fff; color: var(--ink); box-shadow: 0 16px 64px rgba(10,23,36,.24); }
    .scanner-options-sheet::backdrop { background: rgba(10,23,36,.45); }
    .scanner-options-sheet h2,
    .scanner-options-sheet h3 { margin: 0; color: var(--ink); font-size: 1.3rem; }
    .scanner-options-sheet header,
    .scanner-options-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 18px; }
    .scanner-options-sheet [data-scanner-options-close] { min-width: 44px; min-height: 44px; border: 0; border-radius: 8px; background: transparent; color: var(--muted); font: inherit; cursor: pointer; }
    .scanner-options-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(116px, .7fr); align-items: start; gap: 16px; margin: 0; padding: 18px 0; border-top: 1px solid var(--line); }
    .scanner-options-copy strong { display: block; font-size: .95rem; }
    .scanner-options-copy small { display: block; margin-top: 5px; color: var(--muted); font-size: .8rem; line-height: 1.45; }
    .scanner-options-sheet .control { width: 100%; min-height: 44px; margin: 0; }
    .scanner-options-sheet #scannerMultiPhoto { position: static; width: 100%; min-height: 48px; margin-bottom: 18px; border: 1px solid var(--line); border-radius: 8px; background: #f5f8fb; color: var(--ink); }
    .scanner-options-sheet #scannerMultiPhoto.active { border-color: #193d63; background: #eaf2fa; color: #193d63; }
    .scanner-options-sheet > .btn,
    .scanner-options-sheet:not(.scanner-clear-history-dialog) footer .btn { width: 100%; min-height: 48px; }
    .scanner-result-details { margin: 10px 0; overflow: hidden; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
    .scanner-result-details > summary { display: flex; align-items: center; gap: 4px; min-height: 44px; padding: 12px; color: var(--ink); font-size: .82rem; font-weight: 650; list-style: none; cursor: pointer; }
    .scanner-result-details > summary::-webkit-details-marker { display: none; }
    .scanner-result-details > summary svg { width: 20px; height: 20px; margin-right: 8px; vertical-align: middle; }
    .scanner-result-details > summary .scanner-chevron { margin-left: auto; }
    .scanner-result-details > :not(summary) { margin: 0 14px 14px; }
    .scanner-result-details .scanner-ai,
    .scanner-result-details .scanner-price-distribution { border: 0; background: transparent; padding: 0; }
    .scanner-research-list { overflow: hidden; margin: 10px 0 18px; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
    .scanner-research-section h3 { margin: 18px 0 8px; font-size: .95rem; }
    .scanner-research-row { min-height: 48px; display: flex; align-items: center; gap: 12px; padding: 12px; border: 0; border-bottom: 1px solid var(--line); background: #fff; color: var(--ink); font-size: .84rem; font-weight: 650; text-decoration: none; }
    .scanner-research-icon { display: inline-flex; flex: 0 0 24px; align-items: center; justify-content: center; color: #28679e; }
    .scanner-research-icon svg { width: 24px; height: 24px; }
    .scanner-chevron { color: #193d63; font-size: 1.3rem; font-weight: 400; }
    .scanner-research-row:last-child { border-bottom: 0; }
    .scanner-research-row > .scanner-chevron { margin-left: auto; }
    .scanner-research-row:hover { background: #f5f8fb; }
    .scanner-result-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
    .scanner-result-actions > .btn { flex: 1 1 160px; min-height: 48px; }
    .scanner-history-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) minmax(130px, .35fr) minmax(130px, .3fr); gap: 10px; margin-bottom: 16px; }
    .scanner-history-toolbar input,
    .scanner-history-toolbar select { min-width: 0; width: 100%; min-height: 44px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; background: #fff; color: var(--ink); font: inherit; }
    .scanner-history-table { display: none; }
    .scanner-history-groups h4,
    .scanner-history-groups h3 { margin: 20px 0 9px; color: var(--ink); font-size: .9rem; }
    .scanner-history-groups .scanner-history-list { overflow: visible; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
    .scanner-history-groups .scanner-history-row:last-child { border-bottom: 0; }
    .scanner-history-groups [data-scanner-history-group] > .scanner-history-row { border-right: 1px solid var(--line); border-left: 1px solid var(--line); background: #fff; }
    .scanner-history-groups h4 + .scanner-history-row { border-top: 1px solid var(--line); border-radius: 9px 9px 0 0; }
    .scanner-history-groups [data-scanner-history-group] > .scanner-history-row:last-child { border-bottom: 1px solid var(--line); border-radius: 0 0 9px 9px; }
    .scanner-history-groups .scanner-history-open { padding: 11px; }
    .scanner-history-groups .scanner-history-open strong { white-space: normal; overflow-wrap: anywhere; font-size: .86rem; line-height: 1.3; }
    .scanner-history-groups .scanner-history-copy span { margin-top: 3px; font-weight: 600; }
    .scanner-history-item { display: flex; align-items: center; gap: 12px; }
    .scanner-history-item img { width: 46px; height: 40px; border-radius: 5px; object-fit: cover; }
    .scanner-history-menu { position: relative; align-self: center; margin-right: 4px; }
    .scanner-history-menu > summary { display: grid; place-items: center; width: 36px; min-height: 44px; list-style: none; color: var(--muted); font-size: 1.3rem; cursor: pointer; }
    .scanner-history-menu > summary::-webkit-details-marker { display: none; }
    .scanner-history-menu > button { position: absolute; z-index: 10; right: 0; top: 100%; min-width: 116px; min-height: 44px; padding: 10px 14px; border: 1px solid var(--line); border-radius: 7px; background: #fff; color: var(--danger); font: inherit; box-shadow: 0 5px 18px rgba(17,35,57,.14); }
    .scanner-clear-history-dialog { width: min(420px, calc(100% - 24px)); padding: 20px; border: 1px solid var(--line); border-radius: 12px; background: #fff; color: var(--ink); }
    .scanner-clear-history-dialog::backdrop { background: rgba(10,23,36,.35); }
    .scanner-clear-history-dialog h3 { margin: 0; }
    .scanner-clear-history-dialog p { color: var(--muted); font-size: .85rem; line-height: 1.5; }
    .scanner-clear-history-dialog footer { display: flex; justify-content: flex-end; gap: 10px; }
    .scanner-clear-history-dialog [data-scanner-history-confirm] { background: #c62828; border-color: #c62828; color: #fff; }
    #scannerView :is(button,a,input,select,summary):focus-visible,
    .scanner-options-sheet :is(button,input,select):focus-visible { outline: 3px solid #427bb0; outline-offset: 3px; }

    @media (min-width: 700px) and (hover: hover) and (pointer: fine) {
      #scannerView .scanner-page-head h2 { display: block !important; margin: 4px 0 8px; font-size: 1.9rem; line-height: 1.2; }
      .scanner-mode-heading button { display: inline-flex; align-items: center; gap: 8px; width: auto; min-height: 36px; height: auto; padding: 6px 0; border: 0; border-radius: 0; background: transparent; font-size: .86rem; font-weight: 750; white-space: nowrap; }
      .scanner-back-label { display: inline; }
      #scannerView[data-scanner-screen="history"] .scanner-mode-heading strong,
      #scannerView[data-scanner-screen="history"] .scanner-history-head h3 { display: none; }
      #scannerView[data-scanner-screen="history"] .scanner-history { padding-top: 0; border-top: 0; }
      #scannerView[data-scanner-screen="history"] .scanner-history-head { justify-content: flex-end; }
      .scanner-scan-choices { display: none; }
      .scanner-scan-panel.hidden { display: none; }
      #scannerHistory.hidden { display: none; }
      .scanner-history { margin-top: 22px; }
      .scanner-workspace { max-width: 1160px; }
      .scanner-history-toolbar { padding: 14px; margin: 0; border: 1px solid var(--line); border-bottom: 0; border-radius: 10px 10px 0 0; background: #fff; }
      .scanner-history-table { display: table; width: 100%; border-collapse: separate; border-spacing: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 0 0 10px 10px; background: #fff; }
      .scanner-history-table th { padding: 12px 14px; border-bottom: 1px solid var(--line); background: #f5f7fa; color: var(--muted); font-size: .78rem; font-weight: 800; text-align: left; }
      .scanner-history-table td { padding: 10px 14px; border-bottom: 1px solid var(--line); color: var(--ink); font-size: .84rem; vertical-align: middle; }
      .scanner-history-table tr:last-child td { border-bottom: 0; }
      .scanner-history-table td:first-child { width: 40%; }
      .scanner-history-table td:last-child { white-space: nowrap; text-align: right; }
      .scanner-history-table .scanner-history-menu { display: inline-block; margin-left: 8px; vertical-align: middle; }
      .scanner-history-table .scanner-history-open { padding: 0; grid-template-columns: 46px minmax(0, 1fr); }
      .scanner-history-table .scanner-history-open img,
      .scanner-history-table .scanner-history-placeholder { width: 46px; height: 40px; }
      .scanner-history-table .btn { min-height: 36px; padding: 7px 13px; border-color: #193d63; background: #193d63; color: #fff; font-size: .78rem; }
      .scanner-history-groups { display: none; }
    }

    @media (max-width: 699px), (hover: none), (pointer: coarse) {
      .scanner-back-label { display: none !important; }
      #scannerView[data-scanner-screen="camera"] .scanner-status[data-kind="success"] { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
      .scanner-page-head { display: none; }
      .scanner-workspace { margin: -4px 0 0; }
      .scanner-search-card { margin: 0 0 12px; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
      .scanner-mode-heading { scroll-margin-top: 74px; }
      .scanner-search-form { grid-template-columns: minmax(0, 1fr) 34px; }
      .scanner-search-form:has(> .scanner-search-clear.hidden) { grid-template-columns: minmax(0, 1fr); }
      .scanner-search-form .btn { padding-inline: 15px; }
      .scanner-search-form > .btn { grid-column: 1 / -1; width: 100%; min-height: 48px; }
      .scanner-scan-choices > div { grid-template-columns: repeat(2, minmax(0, 1fr)); }
      .scanner-scan-choices > div :is([data-scanner-page="history"], [data-scanner-mode="history"]) { grid-column: 1 / -1; min-height: 40px; }
      .scanner-modes button { min-height: 54px; padding: 4px 2px; font-size: .7rem; }
      .scanner-camera { aspect-ratio: 3 / 4; height: auto; min-height: 0; max-height: 68svh; }
      .scanner-scan-panel.has-result .scanner-camera { height: 92px; min-height: 92px; aspect-ratio: auto; }
      .scanner-scan-panel.has-result .scanner-hint,
      .scanner-scan-panel.has-result .scanner-actions,
      .scanner-scan-panel.has-result .scanner-status { display: none; }
      .scanner-scan-panel.has-result + #scannerResult .scanner-result { margin-top: 10px; padding-top: 0; border-top: 0; }
      .scanner-scan-panel.has-result .scanner-capture-confirmation { position: absolute; flex-direction: row; justify-content: flex-start; gap: 9px; padding: 10px; text-align: left; }
      .scanner-scan-panel.has-result .scanner-captured-icon { width: 38px; height: 38px; flex: 0 0 38px; border-width: 2px; font-size: 1.1rem; }
      .scanner-scan-panel.has-result .scanner-capture-confirmation span { display: none; }
      .scanner-scan-panel.has-result .scanner-capture-confirmation strong { min-width: 0; flex: 1; display: -webkit-box; overflow: hidden; font-size: .82rem; line-height: 1.2; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
      .scanner-scan-panel.has-result .scanner-camera-again { min-width: 104px; min-height: 44px; margin: 0; padding: 8px 10px; flex: 0 0 auto; }
      .scanner-scan-panel.has-result .scanner-camera-again[data-scanner-again="barcode"] { max-width: 50%; white-space: normal; }
      .scanner-shutter { bottom: max(18px, env(safe-area-inset-bottom)); }
      .scanner-result-summary { grid-template-columns: 64px minmax(0, 1fr); align-items: center; }
      .scanner-result-summary.no-photo { grid-template-columns: 1fr; }
      .scanner-result-summary .scanner-photo-preview { width: 64px; height: 64px; min-height: 64px; max-height: 64px; }
      .scanner-result-summary .scanner-result-again { grid-column: 1 / -1; min-height: 46px; }
      .scanner-result-form { grid-template-columns: 1fr; }
      .scanner-identification { grid-template-columns: repeat(2, minmax(0, 1fr)); font-size: .8rem; }
      .scanner-market-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
      .scanner-market-grid div { padding: 10px 8px; }
      .scanner-market-grid dt { font-size: .65rem; text-transform: none; font-weight: 600; }
      .scanner-market-grid dd { font-size: .95rem; }
      .scanner-photo-preview { width: 104px; }
      .scanner-decision form { grid-template-columns: 1fr 1fr; }
      .scanner-decision label { grid-column: 1 / -1; }
      .scanner-listing-grid { grid-auto-flow: column; grid-auto-columns: minmax(238px, 78%); grid-template-columns: none; overflow-x: auto; padding-bottom: 4px; scroll-snap-type: x proximity; }
      .scanner-listing-grid a { scroll-snap-align: start; }
      .scanner-scan-choices { border-top: 0; padding-top: 0; margin-top: 14px; }
      .scanner-scan-choices > div .btn { min-height: 146px; flex-direction: column; gap: 8px; padding: 16px 10px; border-color: var(--line); background: #fff; color: #193d63; }
      .scanner-scan-choices > div :is([data-scanner-page="history"], [data-scanner-mode="history"]) { min-height: 48px; flex-direction: row; }
      .scanner-frame { inset: 24% 9% 30%; }
      .scanner-hint { min-height: 0; padding: 12px; border-radius: 8px; background: #edf1f5; font-size: .85rem; text-align: center; }
      .scanner-detected { padding: 0; border: 0; background: transparent; gap: 8px; }
      .scanner-market { border-top: 0; padding-top: 4px; }
      .scanner-decision { border-left: 0; background: transparent; padding: 0; }
      .scanner-history { margin-top: 0; padding-top: 0; border-top: 0; }
      .scanner-history-head { justify-content: flex-end; min-height: 44px; margin: -50px 0 16px; }
      .scanner-history-head h3 { display: none; }
      .scanner-history-toolbar { display: none; }
      .scanner-options-sheet { width: 100%; max-width: 100%; max-height: 80dvh; margin: auto 0 0; padding: 22px 20px max(22px, env(safe-area-inset-bottom)); border: 0; border-radius: 24px 24px 0 0; }
      .scanner-options-sheet::before { content: ''; display: block; width: 48px; height: 5px; margin: -10px auto 20px; border-radius: 8px; background: #a5adba; }
    }

    @media (max-width: 699px) and (orientation: landscape), (hover: none) and (orientation: landscape), (pointer: coarse) and (orientation: landscape) {
      .scanner-camera { width: min(100%, calc(100svh - 120px)); max-height: none; margin-inline: auto; aspect-ratio: 1; }
      .scanner-scan-panel.has-result .scanner-camera { width: 100%; height: 92px; aspect-ratio: auto; }
    }

    @media (prefers-reduced-motion: reduce) {
      .scanner-market-spinner { animation: none; }
    }

    .scanner-evidence { display: grid; gap: 14px; margin-block: 16px; padding: 18px; border: 1px solid var(--line); border-radius: 14px; background: #fff; }
    .scanner-evidence.hidden { display: none; }
    .scanner-evidence .field { display: grid; gap: 7px; margin: 0; }
    .scanner-evidence textarea { resize: vertical; min-height: 100px; }
    .scanner-evidence .control { width: 100%; min-width: 0; font-size: 1rem; }
    .scanner-evidence-help, .scanner-generic-notice p { margin: 0; color: var(--muted); font-size: .86rem; line-height: 1.45; }
    .scanner-voice-controls { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
    .scanner-voice-controls [role="status"] { min-width: 0; flex: 1 1 180px; font-size: .86rem; }
    .scanner-voice-controls button[aria-pressed="true"] { border-color: #9b2626; color: #9b2626; }
    .scanner-evidence-missing { padding: 12px; border-radius: 9px; background: #fff4dc; color: #614714; line-height: 1.45; }
    .scanner-evidence-missing ul { margin: 8px 0 0; padding-left: 20px; }
    .scanner-generic-notice { display: grid; gap: 8px; margin-block: 16px; padding: 14px; border-radius: 10px; background: #eef4fb; }
    .scanner-generic-notice .btn { justify-self: start; }
    #scannerView[data-scanner-active-mode="picture"] .scanner-frame { inset: 8%; }
    #scannerView[data-scanner-active-mode="picture"] .scanner-frozen-frame { object-fit: contain; background: #172331; }
    #scannerView[data-scanner-embedded="true"] .scanner-scan-choices { display: block; }
    @media (min-width: 700px) and (hover: hover) and (pointer: fine) {
      #scannerView[data-scanner-embedded="false"] .scanner-scan-choices { display: block; }
      #scannerView[data-scanner-embedded="false"] .scanner-scan-choices > div { grid-template-columns: minmax(0, 1fr); }
      #scannerView[data-scanner-embedded="false"] .scanner-scan-choices > div > :not([data-scanner-mode="picture"]) { display: none; }
    }
.scanner-evidence-photos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0}
.scanner-evidence-photo{min-width:0;padding:8px;border:1px solid var(--border,#d9e1e8);border-radius:14px;background:var(--card,#fff)}
.scanner-evidence-photo.is-selected{outline:2px solid var(--accent,#326bd6);outline-offset:1px}
.scanner-evidence-photo>button{display:block;width:100%;padding:0;border:0;background:transparent;cursor:pointer}
.scanner-evidence-photo img{display:block;width:100%;height:132px;object-fit:contain;border-radius:8px;background:#f1f4f8}
.scanner-evidence-photo>div{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.scanner-evidence-photo .btn{min-height:36px;padding:6px 9px;font-size:12px}
.scanner-add-angle{min-height:100px;border-style:dashed!important;white-space:normal}
.scanner-crop{grid-column:1/-1;padding:12px;border:1px solid var(--border,#d9e1e8);border-radius:12px}
.scanner-crop summary{cursor:pointer;font-weight:650}
.scanner-crop p,.scanner-image-market p{font-size:13px;line-height:1.5;color:var(--muted,#526174)}
.scanner-crop label{display:flex;gap:12px;align-items:center;justify-content:space-between;font-size:13px;margin:10px 0}
.scanner-crop input{min-width:100px;max-width:65%}
.scanner-crop .btn{margin:5px 5px 0 0}
.scanner-existing-photos{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.scanner-existing-photos .btn{white-space:normal;overflow-wrap:anywhere}
.scanner-photo-warnings:empty{display:none}
.scanner-photo-warnings,.scanner-accuracy-question{padding:12px;border-radius:12px;background:#fff4d7;color:#594418;font-size:14px;line-height:1.5}
.scanner-accuracy-question{font-weight:600}
.scanner-grounded ul{padding-left:22px;line-height:1.6}
.scanner-grounded p{padding:0 14px 12px;font-size:13px}
.scanner-image-market{padding:14px;border:1px solid var(--border,#d9e1e8);border-radius:14px;margin:12px 0}
.scanner-image-market .btn{white-space:normal;text-align:left}
.scanner-photo-references{min-width:0;margin:0 0 14px;padding:0;border:0}
.scanner-photo-references legend{padding:0;font-weight:700;font-size:14px}
.scanner-photo-references>p{margin:6px 0 10px}
.scanner-photo-reference-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:8px;max-width:420px}
.scanner-photo-reference{min-width:0;display:flex;flex-direction:column;gap:6px;padding:6px;border:2px solid var(--border,#d9e1e8);border-radius:12px;background:var(--card,#fff);color:inherit;text-align:left;font:inherit;font-size:12px;line-height:1.35;cursor:pointer}
.scanner-photo-reference[aria-pressed="true"]{border-color:var(--accent,#326bd6);box-shadow:0 0 0 1px var(--accent,#326bd6);font-weight:700}
.scanner-photo-reference:focus-visible{outline:3px solid var(--accent,#326bd6);outline-offset:3px}
.scanner-photo-reference:disabled{opacity:.6;cursor:default}
.scanner-photo-reference-image{display:block;width:100%;height:78px;overflow:hidden;border-radius:6px;background:#f1f4f8}
.scanner-photo-reference-image img{display:block;width:100%;height:100%;object-fit:contain}
.scanner-photo-reference-image img:not([src]){visibility:hidden}
.scanner-candidate-question{padding:14px;margin:12px 0;border:1px solid var(--border,#d9e1e8);border-radius:14px;background:var(--card,#fff)}
.scanner-candidate-question p,.scanner-candidate-gallery p,.scanner-detail-search p{font-size:13px;line-height:1.5}
.scanner-candidate-question .scanner-guided-actions{display:flex;flex-wrap:wrap;gap:8px}
.scanner-candidate-gallery{margin:12px 0}
.scanner-candidate-gallery .scanner-photo-reference-options{margin-bottom:10px}
.scanner-detail-search .scanner-subject-stage{width:min(calc(100% - 28px),420px)}
.scanner-detail-proposal{padding:12px;border:1px solid var(--border,#d9e1e8);border-radius:10px}
.scanner-market-matching{font-size:13px;line-height:1.5;color:var(--muted,#526174)}
.scanner-candidate-status{display:block;font-weight:650;color:var(--muted,#526174)}
.scanner-quality-badge{max-width:calc(100% - 24px);white-space:normal}

.scanner-subject-choice { grid-column: 1 / -1; display: grid; gap: 10px; min-width: 0; padding: 14px; border: 1px solid var(--line, #d9e1e8); border-radius: 12px; background: var(--surface-soft, #f3f6fa); color: var(--ink, #17324d); }
.scanner-subject-choice > strong { font-size: .95rem; line-height: 1.35; }
.scanner-subject-choice p { margin: 0; color: var(--muted, #526174); font-size: .85rem; line-height: 1.5; overflow-wrap: anywhere; }
.scanner-subject-modes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.scanner-subject-modes button { min-width: 0; min-height: 44px; padding: 10px; border: 1px solid var(--line, #d9e1e8); border-radius: 8px; background: var(--card, #fff); color: var(--ink, #17324d); font: inherit; font-size: .9rem; font-weight: 750; line-height: 1.3; white-space: normal; overflow-wrap: anywhere; cursor: pointer; }
.scanner-subject-modes button[aria-pressed="true"] { border-color: var(--brand, #326bd6); box-shadow: inset 0 0 0 1px var(--brand, #326bd6); background: var(--card, #fff); color: var(--brand, #326bd6); }
.scanner-subject-stage { position: relative; justify-self: center; width: min(100%, 420px); overflow: hidden; border: 1px solid var(--line, #d9e1e8); border-radius: 10px; background: var(--card, #fff); cursor: crosshair; touch-action: none; user-select: none; -webkit-user-select: none; }
.scanner-subject-stage > img { display: block; width: 100%; height: auto; max-height: none; border: 0; border-radius: 0; pointer-events: none; -webkit-user-drag: none; }
.scanner-subject-stage[aria-disabled="true"] { cursor: default; touch-action: pan-y; }
.scanner-subject-box { position: absolute; box-sizing: border-box; z-index: 1; border: 3px solid #fff; border-radius: 4px; outline: 2px solid #193d63; background: rgba(25, 61, 99, .06); box-shadow: 0 0 0 999px rgba(10, 23, 36, .24); pointer-events: auto; cursor: move; }
.scanner-subject-box.hidden { display: none; }
.scanner-subject-choice > .btn { justify-self: start; min-height: 44px; white-space: normal; }
.scanner-guided-form { display: grid; gap: 10px; min-width: 0; margin: 14px 0; padding: 14px; border: 1px solid var(--line, #d9e1e8); border-radius: 12px; background: var(--surface-soft, #f3f6fa); color: var(--ink, #17324d); }
.scanner-guided-form > p, .scanner-correction > p { margin: 0; color: var(--muted, #526174); font-size: .85rem; line-height: 1.5; }
.scanner-correction { display: grid; gap: 10px; min-width: 0; margin: 14px 0; padding: 14px; border: 1px solid var(--line, #d9e1e8); border-radius: 12px; background: var(--card, #fff); color: var(--ink, #17324d); }
.scanner-correction > .scanner-guided-form { margin: 0; padding: 12px 0 0; border: 0; border-top: 1px solid var(--line, #d9e1e8); border-radius: 0; background: transparent; }
.scanner-guided-form .field { display: grid; gap: 6px; min-width: 0; margin: 0; }
.scanner-guided-form .control { box-sizing: border-box; width: 100%; min-width: 0; min-height: 44px; font-size: 1rem; }
.scanner-guided-form textarea { min-height: 88px; resize: vertical; }
.scanner-guided-actions, .scanner-correction-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.scanner-guided-actions .btn, .scanner-correction-actions .btn, .scanner-guided-form > .btn { min-height: 44px; min-width: 0; padding: 10px 12px; white-space: normal; overflow-wrap: anywhere; line-height: 1.3; }
.scanner-correction-actions .btn[aria-pressed="true"] { border-color: var(--brand, #326bd6); box-shadow: inset 0 0 0 1px var(--brand, #326bd6); color: var(--brand, #326bd6); }
.scanner-guided-status { min-width: 0; margin: 0; color: var(--muted, #526174); font-size: .85rem; line-height: 1.5; overflow-wrap: anywhere; }
.scanner-guided-status:empty { display: none; }
.scanner-guided-status[data-kind="error"] { color: var(--danger, #9b2626); }
.scanner-subject-choice :is(button, input, textarea):focus-visible,
.scanner-subject-stage:focus-visible,
.scanner-guided-form :is(button, input, textarea):focus-visible,
.scanner-correction-actions button:focus-visible { outline: 3px solid #427bb0; outline-offset: 3px; }
@media (max-width: 480px) {
  .scanner-subject-choice { padding: 12px; }
  .scanner-guided-actions > .btn { flex: 1 1 160px; }
  .scanner-correction-actions > .btn { flex: 1 1 120px; }
}
@media (forced-colors: active) {
  .scanner-subject-box { border-color: Highlight; outline-color: Canvas; box-shadow: none; }
  .scanner-subject-modes button[aria-pressed="true"], .scanner-correction-actions .btn[aria-pressed="true"] { outline: 2px solid Highlight; outline-offset: -3px; }
}
.scanner-import-options{border:0;padding:0;margin:0 0 14px;display:grid;gap:10px;min-width:0}
.scanner-import-options legend{font-weight:700;margin-bottom:10px}
.scanner-import-options label{display:flex;align-items:center;gap:10px;min-height:40px;cursor:pointer}
.scanner-import-options input{width:20px;height:20px;flex:0 0 auto;accent-color:var(--accent,#167b70)}
.scanner-import-notes p{white-space:pre-wrap;overflow-wrap:anywhere;margin:10px 0}
.scanner-import-photos{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.scanner-import-photos img{object-fit:contain;background:var(--surface,#f5f7f7);border-radius:8px}
.scanner-selected-donor{display:grid;gap:8px;padding:14px;border:1px solid var(--border,#d9e2df);border-radius:12px;margin:12px 0;overflow-wrap:anywhere}
.scanner-selected-donor p{margin:0;font-size:13px;line-height:1.5}
.scanner-photo-choice-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:10px;width:100%}
.scanner-photo-choice{display:flex;flex-direction:column;align-items:center;gap:8px;min-width:0;white-space:normal}
.scanner-photo-choice img{max-width:100%;object-fit:contain;border-radius:8px;background:var(--surface,#f5f7f7)}
.scanner-photo-choice img[hidden]{display:none}
.scanner-photo-choice span{overflow-wrap:anywhere;max-width:100%}
.scanner-photo-choice-help{width:100%;line-height:1.5}
.scanner-candidate-actions{display:flex;flex-wrap:wrap;gap:8px;padding-top:10px}
.scanner-candidate-actions .btn{white-space:normal;min-height:44px;flex:1 1 135px;overflow-wrap:anywhere}
.scanner-comparison-dialog{box-sizing:border-box;width:min(820px,calc(100vw - 24px));max-width:820px;max-height:90vh;max-height:90dvh;overflow:auto;margin:auto;padding:20px;color:var(--ink,#17324d)}
.scanner-comparison-dialog header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.scanner-comparison-dialog header h3{margin:0;font-size:1.2rem;line-height:1.4}
.scanner-comparison-dialog header button{min-width:44px;min-height:44px;flex:0 0 auto}
.scanner-comparison-help{color:var(--muted,#526174);font-size:14px;line-height:1.5;overflow-wrap:anywhere}
.scanner-comparison-photos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}
.scanner-comparison-photos figure{margin:0;min-width:0;border:1px solid var(--line,#d9e1e8);border-radius:12px;overflow:hidden;background:var(--card,#fff)}
.scanner-comparison-photos figcaption{padding:10px;font-weight:700;font-size:14px}
.scanner-comparison-photos img{display:block;width:100%;height:280px;object-fit:contain;background:#f4f6f8}
.scanner-comparison-photos img[hidden]{display:none}
.scanner-comparison-photos figure p{padding:16px;font-size:14px}
.scanner-comparison-title{display:block;line-height:1.5;overflow-wrap:anywhere}
.scanner-comparison-price{display:grid;gap:6px;margin:12px 0}
.scanner-comparison-price>b{font-size:1.2rem}
.scanner-comparison-table{width:100%;overflow-x:auto;margin:16px 0}
.scanner-comparison-table table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:13px;line-height:1.45}
.scanner-comparison-table th,.scanner-comparison-table td{padding:10px 8px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line,#d9e1e8);overflow-wrap:anywhere}
.scanner-comparison-table thead th{background:var(--surface-soft,#f3f6fa)}
.scanner-comparison-badge{display:inline-block;padding:4px 6px;border-radius:6px;background:#edf0f4;color:#455364;font-weight:650}
[data-scanner-comparison-row][data-status="match"] .scanner-comparison-badge{background:#e1f3e9;color:#245b3c}
[data-scanner-comparison-row][data-status="different"] .scanner-comparison-badge{background:#fff0d6;color:#714b13}
.scanner-comparison-dialog footer{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.scanner-comparison-dialog footer .btn{min-height:44px;white-space:normal;flex:1 1 160px;overflow-wrap:anywhere}
.scanner-comparison-dialog :is(button,a):focus-visible{outline:3px solid #427bb0;outline-offset:3px}
.scanner-detail-evidence{margin:18px 0;padding:16px;border:1px solid var(--line,#d9e1e8);border-radius:12px;background:var(--card,#fff);overflow-wrap:anywhere}
.scanner-detail-evidence h4{margin:0;font-size:1rem}
.scanner-detail-evidence p{font-size:13px;line-height:1.5}
.scanner-detail-evidence-score{display:grid;gap:6px;padding:12px;background:var(--surface-soft,#f3f6fa);border-radius:8px;font-size:13px}
.scanner-detail-evidence-score>strong{font-size:1rem}
.scanner-detail-features{list-style:none;margin:12px 0;padding:0;display:grid;gap:12px}
.scanner-detail-features>li{padding:12px 0;border-top:1px solid var(--line,#d9e1e8)}
.scanner-detail-feature-heading{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:8px}
.scanner-detail-feature-sides{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:10px;font-size:13px;line-height:1.5}
.scanner-detail-feature-sides>div{display:grid;gap:4px;align-content:start;min-width:0}
.scanner-detail-feature-sides small{color:var(--muted,#526174)}
[data-scanner-detail-feature][data-relation="match"] .scanner-comparison-badge{background:#e1f3e9;color:#245b3c}
[data-scanner-detail-feature][data-relation="conflict"] .scanner-comparison-badge{background:#fff0d6;color:#714b13}
.scanner-detail-next{padding:12px;background:var(--surface-soft,#f3f6fa);border-radius:8px}
.scanner-detail-next .btn{min-height:44px;max-width:100%;white-space:normal;overflow-wrap:anywhere}
.scanner-detail-evidence-available{color:var(--muted,#526174)}
.scanner-type-review,.scanner-challengers{margin:14px 0;padding:16px;border:1px solid var(--line,#d9e1e8);border-radius:12px;background:var(--surface-soft,#f3f6fa);min-width:0;overflow-wrap:anywhere}
.scanner-type-review :is(h3,h4),.scanner-challengers :is(h3,h4){margin:0;font-size:1rem}
.scanner-type-review p,.scanner-challengers p{font-size:14px;line-height:1.5}
.scanner-type-alternatives{display:grid;gap:10px;padding:0;list-style:none}
.scanner-type-alternatives>li{padding:12px;background:var(--card,#fff);border:1px solid var(--line,#d9e1e8);border-radius:8px}
.scanner-type-alternatives :is(small,span){display:block;margin-top:6px;line-height:1.5;color:var(--muted,#526174)}
.scanner-type-feature{font-weight:650}
.scanner-detail-support{display:grid;gap:6px;margin:12px 0;padding:12px;border-left:4px solid #66839c;background:var(--surface-soft,#f3f6fa);border-radius:6px;font-size:14px;line-height:1.5}
.scanner-detail-support[data-support-level="conflicting"]{border-left-color:#a26920;background:#fff4e3;color:#65420d}
.scanner-detail-support p{margin:0}
.scanner-challenger-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:12px;margin-top:12px}
.scanner-challenger-card{padding:12px;border:1px solid var(--line,#d9e1e8);border-radius:10px;background:var(--card,#fff);min-width:0;overflow-wrap:anywhere}
.scanner-challenger-card img{width:100%;height:160px;object-fit:contain;background:#fff;border-radius:6px}
.scanner-challenger-card a{display:block;min-height:44px;padding:8px 0;text-decoration:underline;text-underline-offset:3px;line-height:1.45}
.scanner-challenger-card :is(strong,small){display:block;margin-top:8px;line-height:1.45}
.scanner-challengers :is(a,button):focus-visible{outline:3px solid #427bb0;outline-offset:3px}
@media(max-width:480px){.scanner-detail-evidence{padding:12px}.scanner-detail-feature-sides{gap:10px}}
@media(max-width:480px){.scanner-comparison-dialog{padding:14px}.scanner-comparison-photos{gap:8px}.scanner-comparison-photos img{height:180px}.scanner-comparison-table th,.scanner-comparison-table td{padding:8px 4px;font-size:12px}}
.scanner-supplemental{margin-top:18px;border:1px solid var(--line,#d9e1e8);border-radius:12px;padding:14px;background:var(--surface-soft,#f3f6fa);min-width:0}
.scanner-supplemental>summary{min-height:44px;font-weight:700;cursor:pointer;overflow-wrap:anywhere}
.scanner-supplemental p{font-size:14px;line-height:1.5;overflow-wrap:anywhere}
.scanner-supplemental-cost{font-weight:650}
.scanner-supplemental-choice{display:grid;gap:10px;margin-top:14px;padding:14px;background:var(--card,#fff);border:1px solid var(--line,#d9e1e8);border-radius:10px;min-width:0;overflow-wrap:anywhere}
.scanner-supplemental-choice p{margin:0}
.scanner-supplemental-sources{display:grid;gap:8px;font-size:13px;line-height:1.5;min-width:0}
.scanner-supplemental-sources a{overflow-wrap:anywhere;text-decoration:underline;text-underline-offset:3px}
.scanner-supplemental .btn{min-height:44px;white-space:normal;overflow-wrap:anywhere}
.scanner-supplemental :is(button,a,summary):focus-visible{outline:3px solid #427bb0;outline-offset:3px}
.scanner-supplemental-query-hint{grid-column:1/-1;margin:0;font-size:13px;line-height:1.5}
.scanner-supplemental-query-hint[hidden]{display:none}

/* Recognition actions stay reachable while reviewing a long mobile photo. */
.scanner-action-dock { position: sticky; bottom: calc(78px + env(safe-area-inset-bottom, 0px)); z-index: 25; width: 100%; margin-top: 14px; padding: 10px; border: 1px solid var(--line, #d9e1e8); border-radius: 14px; background: var(--card, #fff); box-shadow: 0 4px 24px rgba(15, 38, 62, .18); }
.scanner-action-dock.hidden { display: none; }
.scanner-action-dock > div { display: flex; gap: 8px; }
.scanner-action-dock .btn { flex: 1; min-width: 0; min-height: 48px; white-space: normal; line-height: 1.3; }
.scanner-action-dock .hidden { display: none; }
.scanner-action-dock > p { margin: 0 0 8px; color: var(--muted, #526174); font-size: .86rem; line-height: 1.4; }
#scannerView[data-scanner-embedded="true"] .scanner-action-dock { bottom: 8px; }
.scanner-subject-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.scanner-subject-actions .btn { min-height: 44px; white-space: normal; }
.scanner-visual-auto { display: grid; gap: 8px; border: 1px solid var(--line, #d9e1e8); border-radius: 12px; padding: 12px; background: var(--card, #fff); }
.scanner-visual-auto label { display: flex; align-items: flex-start; gap: 10px; min-height: 44px; cursor: pointer; font-weight: 700; line-height: 1.4; }
.scanner-visual-auto input { flex: 0 0 auto; width: 22px; height: 22px; margin: 1px 0; }
.scanner-visual-auto p { margin: 0; font-size: .85rem; color: var(--muted, #526174); line-height: 1.5; }
.scanner-visual-auto input:focus-visible { outline: 3px solid var(--brand, #326bd6); outline-offset: 3px; }
.scanner-subject-handle { position: absolute; z-index: 2; display: block; width: 44px; height: 44px; touch-action: none; }
.scanner-subject-handle::after { content: ''; position: absolute; inset: 15px; border: 2px solid #fff; border-radius: 50%; background: #28679e; box-shadow: 0 0 0 1px #17324d; }
.scanner-subject-handle[data-scanner-subject-handle="nw"] { left: -20px; top: -20px; cursor: nwse-resize; }
.scanner-subject-handle[data-scanner-subject-handle="ne"] { right: -20px; top: -20px; cursor: nesw-resize; }
.scanner-subject-handle[data-scanner-subject-handle="sw"] { left: -20px; bottom: -20px; cursor: nesw-resize; }
.scanner-subject-handle[data-scanner-subject-handle="se"] { right: -20px; bottom: -20px; cursor: nwse-resize; }
.scanner-saved-result { display: grid; gap: 8px; padding: 12px; border-radius: 10px; background: var(--surface-soft, #f3f6fa); }
.scanner-saved-result p { margin: 0; font-size: .86rem; color: var(--muted, #526174); line-height: 1.45; }
#scannerSubjectTouchHelp { display: none; }
@media (max-width: 699px), (hover: none), (pointer: coarse) {
  #scannerSubjectTouchHelp { display: block; }
  #scannerSubjectKeyboardHelp { display: none; }
}
@media (min-width: 700px) and (hover: hover) and (pointer: fine) {
  .scanner-action-dock { bottom: 12px; }
}
.scanner-gallery-results { display: grid; gap: 12px; margin-top: 12px; }
.scanner-gallery-results article { display: flex; gap: 12px; padding: 12px; border: 1px solid var(--line, #d9e1e8); border-radius: 12px; }
.scanner-gallery-results article > div { min-width: 0; overflow-wrap: anywhere; }
.scanner-gallery-results img { flex: 0 0 88px; width: 88px; height: 88px; object-fit: contain; border-radius: 8px; background: var(--surface-soft, #f3f6fa); }
.scanner-gallery-results p { margin: 8px 0; }
.scanner-gallery-results .btn, .scanner-recovery-row .btn, .scanner-detail-search .btn { white-space: normal; min-height: 44px; }
.scanner-recovery-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 12px 0; border-bottom: 1px solid var(--line, #d9e1e8); }
.scanner-recovery-row p { flex: 1 1 180px; margin: 0; overflow-wrap: anywhere; }
.scanner-recovery-row > span { color: var(--muted, #526174); font-size: .85rem; }
[data-scanner-detail-ocr-text] { min-height: 88px; resize: vertical; }
[data-scanner-view-disagreement] { padding: 12px; border-radius: 10px; background: var(--surface-soft, #f3f6fa); }
/* Research controls share the scanner's existing form and card primitives. */
.scanner-search-refinements label,.scanner-photo-guidance label{display:grid;gap:6px;min-width:0}
.scanner-search-refinements fieldset{border:1px solid var(--line,#dce2eb);border-radius:12px;margin:12px 0;padding:12px;min-width:0}
.scanner-search-refinements .scanner-refinement-choice{display:flex;align-items:center;gap:8px;margin:8px 0;overflow-wrap:anywhere}
.scanner-refinement-choice input{width:18px;height:18px;flex:none}
.scanner-search-refinements .control,.scanner-photo-guidance .control{width:100%;max-width:100%}
.scanner-photo-guidance{border:1px solid var(--line,#dce2eb);border-radius:12px;padding:12px;margin:12px 0}
.scanner-photo-guidance p{margin:10px 0 6px}.scanner-photo-guidance small{display:block;line-height:1.45}
.scanner-research-saved{display:flex;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid var(--line,#dce2eb)}
.scanner-research-saved>span{display:grid;gap:4px;flex:1;min-width:0;overflow-wrap:anywhere}
.scanner-research-saved small{opacity:.75}.scanner-research-saved button{flex:none}
.scanner-research-restored,.scanner-research-kept{padding:12px;border-radius:10px;background:var(--soft,#f1f5fa);overflow-wrap:anywhere}
@media(max-width:480px){.scanner-research-saved{flex-wrap:wrap}.scanner-research-saved>span{flex-basis:100%}.scanner-search-refinements .scanner-candidate-actions{flex-wrap:wrap}}
