@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap');

:root { --ink:#16202e; --muted:#6f7b8c; --line:#dfe5ed; --paper:#f5f7fb; --white:#fff; --blue:#2764e7; --blue-dark:#1747b2; --green:#15845c; --green-bg:#dff7e9; --red:#c93e48; --red-bg:#ffe3e5; --amber:#a86c17; --shadow:0 18px 45px #233e6714; }
* { box-sizing:border-box; }
body { margin:0; color:var(--ink); background:var(--paper); font-family:Manrope,system-ui,sans-serif; }
button { font:inherit; cursor:pointer; }
button:focus-visible { outline:3px solid #80a7ff; outline-offset:3px; }
.shell { width:min(100%, 1160px); margin:0 auto; padding:34px 24px 138px; }
.topbar { display:flex; justify-content:space-between; align-items:flex-start; gap:20px; margin-bottom:28px; }
.eyebrow { color:var(--blue); font:500 11px/1 DM Mono,monospace; letter-spacing:.14em; margin:0 0 9px; }
h1,h2,h3,p { margin-top:0; }
h1 { font-size:clamp(27px,5vw,42px); line-height:1.05; letter-spacing:-.06em; margin-bottom:10px; }
h2 { font-size:22px; letter-spacing:-.04em; }
.lede { color:var(--muted); margin:0; font-size:14px; line-height:1.65; }
.brand-mark { width:45px; height:45px; display:grid; place-items:center; border-radius:14px; background:var(--ink); color:#fff; font-weight:800; letter-spacing:-.08em; }
.label { display:block; color:var(--muted); font-size:11px; font-weight:700; letter-spacing:.11em; text-transform:uppercase; margin-bottom:8px; }
.mono { font:500 13px/1.4 DM Mono,monospace; letter-spacing:-.04em; overflow-wrap:anywhere; }
.panel { background:var(--white); border:1px solid var(--line); border-radius:22px; box-shadow:var(--shadow); }
.scan-button { border:0; background:var(--blue); color:#fff; min-height:58px; border-radius:16px; padding:0 22px; font-weight:800; box-shadow:0 10px 20px #2764e733; }
.scan-button:hover { background:var(--blue-dark); }
.scan-button .scan-icon { font-size:22px; vertical-align:-2px; margin-right:8px; }
.ghost-button { background:#fff; border:1px solid var(--line); color:var(--ink); min-height:46px; border-radius:12px; padding:0 16px; font-weight:700; }
.icon-button { border:0; background:transparent; color:var(--muted); font-size:28px; line-height:1; padding:4px 8px; }
.feedback { display:flex; align-items:center; gap:14px; min-height:80px; padding:16px 20px; border-radius:18px; margin-bottom:18px; border:1px solid transparent; transition:.2s ease; }
.feedback.success { background:var(--green-bg); color:var(--green); border-color:#b9ebd0; }
.feedback.error { background:var(--red-bg); color:var(--red); border-color:#ffc7cc; }
.feedback.idle { background:#edf2f8; color:var(--muted); border-color:var(--line); }
.feedback-icon { width:39px; height:39px; display:grid; place-items:center; border-radius:50%; background:#fff9; font-size:21px; font-weight:800; flex:none; }
.feedback strong { display:block; font-size:16px; margin-bottom:3px; }
.feedback span { font-size:12px; }
.queue { padding:20px; }
.queue-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:18px; }
.queue-head h3 { margin:0; font-size:14px; }
.queue-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.queue-item { min-height:80px; padding:13px; background:#f7f9fc; border:1px solid var(--line); border-radius:14px; position:relative; }
.queue-item.filled { background:#f0f5ff; border-color:#b9cdf9; }
.queue-item .value { display:block; width:100%; margin-top:10px; padding:0; border:0; outline:0; background:transparent; color:var(--ink); }
.queue-item .value::placeholder { color:#aab4c1; opacity:1; }
.queue-item.empty .value { color:#aab4c1; }
.queue-item .check { color:var(--green); position:absolute; right:13px; bottom:13px; }
.demo { margin-top:16px; padding:18px; border:1px dashed #b8c4d4; border-radius:18px; background:#fbfcfe; }
.demo-head { display:flex; justify-content:space-between; gap:10px; align-items:baseline; margin-bottom:11px; }
.demo h3 { font-size:12px; margin:0; }
.demo small { color:var(--muted); }
.demo-actions { display:flex; flex-wrap:wrap; gap:8px; }
.demo-chip { border:1px solid #cfd8e4; background:#fff; border-radius:10px; padding:10px 11px; color:var(--ink); text-align:left; }
.demo-chip:hover { border-color:var(--blue); color:var(--blue); }
.demo-chip b { display:block; font:500 10px DM Mono,monospace; margin-bottom:4px; }
.demo-chip span { display:block; font:500 10px DM Mono,monospace; color:var(--muted); max-width:240px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.history { margin-top:20px; padding:20px; }
.history h3 { font-size:13px; margin-bottom:14px; }
.history-row { display:flex; justify-content:space-between; gap:10px; padding:11px 0; border-top:1px solid #edf0f4; font-size:12px; }
.history-row .time { color:var(--muted); font:11px DM Mono,monospace; }
.status-pill { border-radius:30px; padding:4px 8px; font-size:10px; font-weight:800; }
.status-pill.success { background:var(--green-bg); color:var(--green); }.status-pill.error { background:var(--red-bg); color:var(--red); }

/* Variant A - scanner first */
.variant-a .scan-stage { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr); gap:20px; align-items:start; }
.variant-a .scanner-card { padding:30px; min-height:390px; display:flex; flex-direction:column; justify-content:center; position:relative; overflow:hidden; }
.variant-a .scanner-card:after { content:""; position:absolute; width:270px; height:270px; right:-100px; top:-105px; border-radius:50%; background:#edf3ff; z-index:0; }
.variant-a .scanner-card > * { position:relative; z-index:1; }
.scanner-graphic { width:140px; height:140px; border:1px solid #bfd0f4; background:#f3f7ff; border-radius:50%; display:grid; place-items:center; margin:22px 0 25px; position:relative; }
.scanner-graphic:before { content:""; width:78px; height:52px; border:2px solid var(--blue); border-radius:8px; background:repeating-linear-gradient(90deg,transparent 0 4px,#2764e7 4px 6px); opacity:.8; }
.scanner-graphic:after { content:""; position:absolute; width:118px; height:2px; background:#5e90f6; box-shadow:0 0 13px #5e90f6; }
.variant-a .queue-column { display:flex; flex-direction:column; gap:18px; }

/* Variant B - guided steps */
.variant-b { background:#101a27; color:#f6f8fb; min-height:100vh; }
.variant-b .shell { padding-top:28px; }.variant-b .lede,.variant-b .label { color:#94a3b8; }.variant-b .eyebrow { color:#6fa0ff; }
.variant-b .panel { background:#182536; border-color:#2a3a4e; box-shadow:none; }.variant-b .queue-item { background:#122031; border-color:#30445b; }.variant-b .queue-item.filled { background:#173359; border-color:#4d7ed7; }.variant-b .queue-item .value { color:#f5f7fb; }.variant-b .queue-item.empty .value { color:#71829a; }
.variant-b .feedback.idle { background:#1c2b3d; border-color:#2a3a4e; color:#9dafc4; }.variant-b .ghost-button,.variant-b .demo-chip { background:#1d2c3d; color:#f5f7fb; border-color:#34485f; }.variant-b .demo { border-color:#3a506a; background:#142130; }.variant-b .demo small { color:#91a3ba; }.variant-b .demo-chip span { color:#8ca0b6; }.variant-b .history-row { border-color:#2a3a4e; }
.variant-b .step-layout { display:grid; grid-template-columns:230px minmax(0,1fr); gap:22px; align-items:start; }
.step-nav { padding:22px 18px; }.step-nav h3 { font-size:12px; margin:0 0 22px; color:#9fb0c4; }.step { display:flex; gap:12px; padding:12px 0; position:relative; }.step:not(:last-child):after { content:""; position:absolute; left:14px; top:40px; width:1px; height:28px; background:#38506a; }.step-dot { width:29px; height:29px; display:grid; place-items:center; border:1px solid #4b627c; border-radius:50%; color:#aabbd0; font:11px DM Mono,monospace; flex:none; }.step.done .step-dot { background:#1b8c67; border-color:#1b8c67; color:#fff; }.step.current .step-dot { border-color:#6fa0ff; color:#6fa0ff; box-shadow:0 0 0 4px #6fa0ff22; }.step strong { display:block; font-size:12px; margin:1px 0 3px; }.step span { color:#8fa1b6; font-size:10px; }.variant-b .verify-panel { padding:28px; }.verify-panel .feedback { margin-top:20px; }.verify-panel .queue { margin-top:18px; background:#142130; border-color:#2a3a4e; }.verify-panel .demo { margin-top:18px; }

/* Variant C - warehouse console */
.variant-c { background:#ebe9e3; }.variant-c .shell { max-width:1280px; }.variant-c .topbar { align-items:center; }.variant-c h1 { font-size:30px; letter-spacing:-.05em; }.variant-c .console { display:grid; grid-template-columns:1fr 310px; gap:14px; }.variant-c .control-panel { padding:22px; background:#1c2924; color:#f5f2e9; border-radius:8px; box-shadow:0 12px 30px #1c29242b; }.variant-c .control-panel .eyebrow { color:#a4d65f; }.variant-c .control-panel .label { color:#aeb8ad; }.variant-c .control-panel .feedback { margin-top:20px; }.variant-c .feedback.idle { background:#26372f; border-color:#3b5045; color:#b5c3b8; }.variant-c .queue { border-radius:8px; box-shadow:none; }.variant-c .queue-item { border-radius:5px; background:#f4f2ec; border-color:#dedad1; }.variant-c .queue-item.filled { background:#edf6df; border-color:#b9d786; }.variant-c .scan-button { background:#a4d65f; color:#172218; box-shadow:none; border-radius:7px; }.variant-c .scan-button:hover { background:#b9ea76; }.variant-c .ghost-button { border-radius:7px; }.variant-c .log-panel { padding:20px; border-radius:8px; background:#fffdf8; border:1px solid #dedad1; }.variant-c .log-panel h3 { font-size:12px; margin:0 0 14px; }.variant-c .history { margin:0; padding:0; box-shadow:none; border:0; background:transparent; }.variant-c .history-row { font-size:11px; }.variant-c .demo { border-color:#cfc9bd; background:#f8f6f0; border-radius:8px; }.variant-c .demo-chip { border-radius:5px; background:#fffdf8; }.variant-c .queue-head { margin-bottom:14px; }

.camera-sheet[hidden] { display:none; }.camera-sheet { position:fixed; z-index:30; inset:0; }.camera-backdrop { position:absolute; inset:0; background:#07101dcc; }.camera-panel { position:absolute; left:50%; bottom:0; transform:translateX(-50%); width:min(100%,520px); padding:16px 20px 28px; background:#fff; border-radius:25px 25px 0 0; }.sheet-handle { width:40px; height:4px; border-radius:9px; background:#d8dee7; margin:0 auto 18px; }.sheet-heading { display:flex; justify-content:space-between; align-items:flex-start; }.sheet-heading h2 { margin-bottom:17px; }.camera-viewport { height:300px; border-radius:18px; overflow:hidden; position:relative; background:#101822; display:grid; place-items:center; margin-bottom:16px; }.camera-viewport video { width:100%; height:100%; object-fit:cover; }.camera-viewport p { position:absolute; bottom:12px; left:0; right:0; text-align:center; color:#fff; font-size:11px; text-shadow:0 1px 4px #000; }.scan-frame { position:absolute; width:240px; height:110px; border:1px solid #ffffffb8; }.scan-frame i { position:absolute; width:17px; height:17px; border-color:#9ce26d; border-style:solid; }.scan-frame i:nth-child(1){top:-1px;left:-1px;border-width:2px 0 0 2px}.scan-frame i:nth-child(2){top:-1px;right:-1px;border-width:2px 2px 0 0}.scan-frame i:nth-child(3){bottom:-1px;left:-1px;border-width:0 0 2px 2px}.scan-frame i:nth-child(4){bottom:-1px;right:-1px;border-width:0 2px 2px 0}.scan-frame span { position:absolute; left:0; right:0; top:50%; height:2px; background:#a4d65f; box-shadow:0 0 14px #a4d65f; }
@media (max-width:760px) { .shell { padding:23px 15px 132px; }.topbar { margin-bottom:22px; }.topbar .brand-mark { width:39px; height:39px; border-radius:11px; }.variant-a .scan-stage,.variant-b .step-layout,.variant-c .console { grid-template-columns:1fr; }.variant-a .scanner-card { min-height:330px; padding:24px; }.variant-b .step-nav { order:2; }.variant-b .verify-panel { padding:20px; }.variant-c .log-panel { order:2; }.queue-grid { grid-template-columns:1fr; }.queue-item { min-height:62px; display:flex; align-items:center; justify-content:space-between; gap:12px; }.queue-item .value { margin-top:0; text-align:right; } }

/* B is the selected direction: compact, mobile-first, step-led. */
.variant-b { background:#f3f7fb; color:#132238; min-height:100dvh; }
.variant-b .shell { width:min(100%, 620px); padding:calc(14px + env(safe-area-inset-top)) 14px calc(112px + env(safe-area-inset-bottom)); }
.variant-b .topbar { align-items:center; margin-bottom:14px; }
.variant-b .eyebrow { color:#2563eb; margin-bottom:5px; }
.variant-b h1 { font-size:clamp(25px, 7vw, 32px); letter-spacing:-.06em; margin-bottom:0; }
.variant-b .brand-mark { display:none; }
.round-badge { min-height:36px; display:grid; place-items:center; padding:0 12px; border:1px solid #c8d7ef; border-radius:30px; background:#fff; color:#315b9e; font:700 11px DM Mono,monospace; }
.variant-b .panel { background:#fff; border-color:#dce6f2; box-shadow:0 10px 30px #243f6812; }
.b-progress { display:grid; grid-template-columns:repeat(3, 1fr); gap:7px; padding:3px 0 14px; }
.b-progress-step { min-width:0; display:flex; align-items:center; gap:7px; color:#8694a8; font-size:10px; font-weight:700; }
.b-progress-step span { width:28px; height:28px; display:grid; flex:none; place-items:center; border:1px solid #c9d4e2; border-radius:50%; color:#7b8ca4; font:11px DM Mono,monospace; background:#fff; }
.b-progress-step strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.b-progress-step.current { color:#2563eb; position:relative; }.b-progress-step.current::after { content:'当前'; margin-left:auto; padding:3px 5px; border-radius:5px; background:#e8f0ff; color:#2563eb; font-size:9px; }.b-progress-step.current span { border-color:#2563eb; color:#2563eb; box-shadow:0 0 0 4px #2563eb16; }.b-progress-step.done { color:#167a59; }.b-progress-step.done span { background:#168563; border-color:#168563; color:#fff; }
.variant-b .step-layout { display:block; }.variant-b .step-nav { display:none; }.variant-b .verify-panel { padding:16px; }
.variant-b .feedback { min-height:64px; padding:11px 13px; margin-bottom:12px; border-radius:13px; }.variant-b .feedback-icon { width:31px; height:31px; font-size:17px; }.variant-b .feedback strong { font-size:13px; }.variant-b .feedback span { font-size:11px; }
.variant-b .queue { padding:0; }.variant-b .queue-head { margin:0 0 8px; }.variant-b .queue-head h3 { font-size:13px; }.variant-b .queue-grid { display:grid; grid-template-columns:1fr; gap:8px; }.variant-b .queue-item { min-height:66px; padding:10px 12px; border-radius:12px; background:#fff; border:1px solid #dce6f2; }.variant-b .queue-item.filled { background:#fff; border-color:#a9c2e8; }.variant-b .queue-item .label { color:#62748b; font-size:10px; margin-bottom:4px; }.variant-b .queue-item.filled .label { color:#62748b; }.variant-b .queue-item .value { margin:0; min-width:0; padding:0 10px; min-height:44px; border:1px solid #dce6f2; border-radius:9px; background:#fff; color:#1b2d44; font-size:14px; line-height:1.35; }.variant-b .queue-item.empty .value { color:#7a8ca3; }.variant-b .field-control { display:flex; align-items:center; gap:8px; }.field-control .value { flex:1; }.field-scan { width:46px; height:46px; display:grid; flex:none; place-items:center; border:1px solid #b8cae4; border-radius:10px; background:#fff; color:#215fd3; touch-action:manipulation; }.field-scan:hover,.field-scan:active { background:#eaf1ff; }.field-scan svg { width:23px; height:23px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }.variant-b .queue-item .check { right:62px; bottom:20px; }
.queue-item .label { white-space:nowrap; overflow:visible; }
.queue-item.filled { background:#f1f6fd; border-color:#a9c2e8; }
.variant-b .queue-item.filled { background:#f1f6fd; border-color:#a9c2e8; }
.variant-b .queue-item.filled .label { color:#62748b; }
.variant-b .history { margin:12px 0 0; padding:10px 0 0; border:0; border-top:1px solid #e6edf5; border-radius:0; box-shadow:none; background:transparent; }.variant-b .history h3 { margin-bottom:7px; font-size:11px; color:#6b7c92; }.variant-b .history-row { padding:7px 0; border-top:0; font-size:11px; }.variant-b .demo { display:none; }
.variant-b .feedback.idle { background:#edf3fb; border-color:#d9e5f2; color:#49617d; }
.retry-button { width:100%; min-height:44px; margin-top:12px; border:1px solid #b8cae4; border-radius:10px; background:#fff; color:#215fd3; font-weight:800; }
.retry-button:hover { background:#eaf1ff; }
.details { margin-top:14px; padding-top:14px; border-top:1px solid #e6edf5; }
.details-heading { display:flex; justify-content:space-between; align-items:baseline; margin-bottom:9px; }
.details-heading h3 { margin:0; color:#2d4059; font-size:12px; }
.details-heading span { color:#8190a3; font:10px DM Mono,monospace; }
.details-metrics { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:8px; }
.details-products { display:grid; gap:8px; }
.details-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:8px; }
.detail-card { min-height:65px; padding:11px; border:1px solid #dce6f2; border-radius:11px; background:#f7faff; }
.detail-card > span, .detail-card small { display:block; color:#718199; font-size:10px; }
.detail-card strong { display:block; margin-top:4px; color:#1b2d44; font-size:14px; overflow-wrap:anywhere; }
.product-card { display:flex; align-items:center; gap:12px; }
.product-card img, .image-fallback { width:58px; height:58px; flex:none; display:grid; place-items:center; border-radius:9px; background:#eaf0f7; color:#8492a3; font-size:10px; object-fit:cover; text-align:center; }
.image-fallback[hidden] { display:none !important; }
.product-card small { margin-top:4px; }
.variant-b .verify-panel .queue { background:transparent; border-color:transparent; box-shadow:none; }
.site-footer { border-top:1px solid #dce6f2; background:#fff; color:#718199; }
.site-footer__inner { width:min(100%, 620px); display:flex; flex-wrap:wrap; justify-content:space-between; gap:6px 16px; margin:0 auto; padding:15px 14px calc(18px + env(safe-area-inset-bottom)); font-size:10px; line-height:1.5; }
.site-footer__inner p { margin:0; }
.site-footer__inner a { color:inherit; text-decoration:none; }
.site-footer__inner a:hover { color:#2563eb; }
.camera-context { margin:0 0 4px; color:#62748b; font-size:12px; line-height:1.4; max-width:280px; }.camera-summary { margin:0; max-width:300px; color:#2d5d9d; font:500 10px/1.45 DM Mono,monospace; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.camera-panel { padding-bottom:calc(22px + env(safe-area-inset-bottom)); }.camera-panel .ghost-button { min-height:48px; width:100%; }.camera-viewport { height:min(55dvh, 390px); min-height:260px; }.camera-viewport p { font-size:12px; bottom:11px; }.scan-frame { width:min(78vw, 310px); height:120px; }
@media (min-width:640px) { .variant-b .shell { padding-inline:20px; }.variant-b .queue-grid { grid-template-columns:repeat(3, 1fr); }.variant-b .queue-item { min-height:92px; }.variant-b .field-control { display:block; }.variant-b .field-scan { width:100%; margin-top:8px; }.variant-b .queue-item .value { padding-right:0; } }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior:auto !important; transition-duration:.01ms !important; animation-duration:.01ms !important; animation-iteration-count:1 !important; } }
/* Catchouse v1 mobile workflow */
.v1-app { display:flex; min-height:100dvh; flex-direction:column; background:#f5f7fb; color:#172033; }
.v1-top { position: sticky; top: 0; z-index: 20; display: flex; justify-content: space-between; align-items: center; padding: 14px max(18px, env(safe-area-inset-right)) 14px max(18px, env(safe-area-inset-left)); background: rgba(255,255,255,.94); border-bottom: 1px solid #e5e9f2; backdrop-filter: blur(14px); }
.v1-top div { display: flex; gap: 10px; align-items: baseline; }.v1-top span { color: #677189; font-size: 12px; letter-spacing: .08em; }.v1-top strong { font-size: 16px; }.v1-user button,.section-title button { border: 0; color: #44506a; background: #edf1f7; border-radius: 10px; padding: 8px 12px; }
.v1-main { width: min(960px, 100%); margin: 0 auto; padding: 22px 16px 90px; }.v1-alert { width: min(928px, calc(100% - 32px)); margin: 12px auto 0; padding: 12px 14px; border-radius: 12px; color: #991b1b; background: #fee2e2; }
.auth-card { width: min(420px, 100%); margin: 7vh auto 0; padding: 28px; background: #fff; border: 1px solid #e4e8f0; border-radius: 22px; box-shadow: 0 18px 50px rgba(32,45,72,.1); }.auth-card h1 { margin: 5px 0 24px; }.auth-card form,.auth-card label { display: grid; gap: 8px; }.auth-card form { gap: 16px; }.auth-card input,.scan-entry input { width: 100%; box-sizing: border-box; border: 1px solid #cfd6e3; border-radius: 12px; padding: 13px 14px; font: inherit; }.primary,.feishu-button,.photo-button { border: 0; border-radius: 12px; padding: 13px 16px; font: inherit; font-weight: 700; cursor: pointer; }.primary { color: #fff; background: #2563eb; }.feishu-button { display: block; width: 100%; box-sizing: border-box; text-align: center; text-decoration: none; color: #155e75; background: #cffafe; }.auth-divider { display: flex; align-items: center; justify-content: center; margin: 20px 0; color: #8b95a8; }.auth-note,.empty { color: #778196; }.auth-notice { margin: 0 0 18px; padding: 12px 14px; border-radius: 12px; font-size: 14px; line-height: 1.5; }.auth-notice.is-pending { color: #155e75; background: #cffafe; }.auth-notice.is-rejected { color: #991b1b; background: #fee2e2; }
.section-title { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 18px; }.section-title h1 { margin: 3px 0 0; }.warehouse-grid,.box-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(220px,1fr)); gap: 12px; }.warehouse-card,.batch-card,.box-card { border: 1px solid #dfe4ed; border-radius: 16px; padding: 16px; background: #fff; text-align: left; cursor: pointer; }.warehouse-card { display: grid; gap: 7px; }.warehouse-card span,.box-card span,.batch-card small { color: #69748a; }.scan-entry { display: grid; grid-template-columns: 1fr auto auto; gap: 9px; padding: 14px; border-radius: 16px; background: #fff; border: 1px solid #e1e6ef; }.scan-entry button { border: 0; border-radius: 11px; padding: 0 14px; }.work-list { margin-top: 24px; }.work-list h2,.box-work h2 { font-size: 16px; }.batch-card { width: 100%; display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }.batch-card span { display: grid; gap: 5px; }.batch-card b,.status-pill { color: #1d4ed8; font-size: 12px; }.fba-strip { display: flex; gap: 8px; overflow-x: auto; margin: 12px 0; }.fba-strip span { white-space: nowrap; padding: 8px 10px; background: #e8eefc; border-radius: 999px; font-size: 12px; }.box-grid { margin-top: 16px; }.box-card { display: grid; gap: 6px; }.box-card.active { border-color: #2563eb; box-shadow: 0 0 0 2px #bfdbfe; }.box-work { margin-top: 18px; padding: 18px; background: #fff; border-radius: 18px; }.photo-button { display: inline-block; margin: 8px 8px 8px 0; color: #fff; background: #2563eb; }.photo-button.secondary { color: #1e3a8a; background: #dbeafe; }.uploading { color: #92400e; background: #fef3c7; padding: 10px; border-radius: 10px; }.photo-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(110px,1fr)); gap: 10px; margin-top: 12px; }.photo-thumb { padding: 0; overflow: hidden; border: 1px solid #dfe4ed; border-radius: 12px; background: #fff; }.photo-thumb img { width: 100%; aspect-ratio: 1; object-fit: cover; display: block; }.photo-thumb span { display: block; padding: 7px; font-size: 12px; }.fba-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 20px; }.fba-actions button { border: 0; border-radius: 10px; padding: 10px 12px; }.photo-modal { position: fixed; inset: 0; z-index: 50; display: grid; place-items: center; padding: 18px; }.modal-backdrop { position: absolute; inset: 0; border: 0; background: rgba(7,12,24,.78); }.photo-modal section { position: relative; width: min(820px,100%); max-height: 92vh; overflow: auto; border-radius: 18px; background: #fff; }.photo-modal img { width: 100%; max-height: 72vh; object-fit: contain; background: #111827; }.photo-modal section div { display: flex; flex-wrap: wrap; gap: 9px; padding: 14px; }.photo-modal section button { border: 0; border-radius: 10px; padding: 11px 13px; }
@media (max-width: 600px) { .scan-entry { grid-template-columns: 1fr auto; }.scan-entry .primary { grid-column: 1 / -1; }.v1-main { padding-inline: 12px; }.auth-card { padding: 22px; }.warehouse-grid,.box-grid { grid-template-columns: 1fr; } }
.admin-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(280px,1fr)); gap: 14px; }.admin-panel { padding: 18px; border: 1px solid #e1e6ef; border-radius: 16px; background: #fff; }.admin-panel h2 { margin-top: 0; font-size: 17px; }.admin-panel form,.admin-panel article { display: grid; gap: 8px; padding: 12px 0; border-bottom: 1px solid #edf0f5; }.admin-panel input,.admin-panel select,.admin-panel button { min-width: 0; border: 1px solid #ccd4e2; border-radius: 9px; padding: 9px 10px; background: #fff; }.admin-panel article span,.admin-panel form span { color: #6e788c; font-size: 12px; }
.camera-panel--scanner { box-sizing:border-box; width:min(calc(100% - 24px),640px); max-height:calc(100dvh - 16px); overflow:auto; padding:16px 16px calc(16px + env(safe-area-inset-bottom)); }
.camera-panel--scanner .sheet-heading { gap:16px; margin-bottom:14px; padding-right:52px; }
.camera-panel--scanner .sheet-heading > div { min-width:0; }
.camera-panel--scanner .sheet-heading h2 { margin:2px 0 4px; }
.camera-panel--scanner .camera-close { position:absolute; z-index:2; top:16px; right:16px; width:44px; height:44px; border:0; border-radius:50%; font-size:26px; line-height:1; touch-action:manipulation; }
.camera-panel--scanner .camera-viewport { width:100%; height:auto; min-height:0; aspect-ratio:16/9; margin-bottom:0; }
.camera-panel-actions { display:grid; margin-top:12px; }.camera-photo-switch { min-height:48px; border:1px solid #b8cbea; border-radius:11px; color:#17477f; background:#edf5ff; font:800 14px/1.2 sans-serif; cursor:pointer; touch-action:manipulation; }.camera-photo-switch:hover { border-color:#7fa7dc; background:#e1edfc; }
.camera-panel--scanner .scan-frame { left:50%; top:50%; width:min(calc(100% - 64px),420px); height:38%; min-height:82px; transform:translate(-50%,-50%); }
.camera-panel--scanner .scan-frame span { animation:camera-scan-line 1.8s ease-in-out infinite; }
@keyframes camera-scan-line { 0%,100% { transform:translateY(-38px); opacity:.65; } 50% { transform:translateY(38px); opacity:1; } }
@media (prefers-reduced-motion:reduce) { .camera-panel--scanner .scan-frame span { animation:none; } }
@media (orientation:landscape) and (max-height:520px) { .camera-panel--scanner { width:min(82vw,720px); padding-bottom:calc(12px + env(safe-area-inset-bottom)); }.camera-panel--scanner .sheet-handle { display:none; }.camera-panel--scanner .sheet-heading { margin-bottom:8px; }.camera-panel--scanner .camera-viewport { max-height:62vh; } }

/* Scan-first warehouse operations UI */
.ops-app { --ops-blue:#1557d6; --ops-green:#087a55; --ops-red:#b42318; --ops-ink:#14213a; padding-bottom:0; }
.ops-page { container-type:inline-size; }
.ops-page .section-title { align-items:flex-start; margin-bottom:12px; }
.ops-page .section-title h1 { font-size:clamp(22px,6vw,30px); line-height:1.1; }
.ops-page .section-title p { margin:6px 0 0; color:#69748a; font-size:13px; }
.ops-manual { grid-template-columns:1fr auto; padding:9px; border-radius:13px; }
.ops-manual input { min-width:0; padding:10px 12px; }
.ops-history { margin-top:18px; }.ops-history h2 { font-size:14px; }
.ops-home .section-title { align-items:center; }
.ops-home .section-title h1 { margin:0; font-size:clamp(22px,6vw,28px); }
.ops-home .batch-card > span { width:100%; min-width:0; }
.ops-home .batch-card small { overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.ops-scan-button { position:fixed; z-index:25; left:50%; bottom:calc(10px + env(safe-area-inset-bottom)); width:min(calc(100% - 24px),580px); min-height:62px; transform:translateX(-50%); border:0; border-radius:18px; color:#fff; background:var(--ops-blue); box-shadow:0 12px 30px #0d3b9980; font-size:19px; font-weight:850; letter-spacing:.01em; touch-action:manipulation; }
.ops-scan-button span { margin-right:9px; color:#fff; font-size:24px; }
.ops-feedback { position:sticky; z-index:19; top:61px; display:grid; width:min(932px,calc(100% - 24px)); box-sizing:border-box; margin:8px auto 0; padding:10px 14px; border-radius:12px; color:#234; background:#e7eefb; box-shadow:0 5px 15px #14213a18; }
.ops-feedback strong { font-size:15px; }.ops-feedback span { margin-top:2px; font-size:12px; }
.ops-feedback.success { color:#075c41; background:#d8f6e9; }.ops-feedback.error { color:#8e1b14; background:#fee4e2; }
.ops-overview { display:grid; grid-template-columns:repeat(3,1fr); gap:7px; margin-bottom:9px; }
.ops-overview div { min-width:0; padding:10px 9px; border:1px solid #dce4f0; border-radius:12px; background:#fff; }
.ops-overview span,.ops-products span,.ops-step>span,.box-work-title span { display:block; color:#708097; font-size:10px; }
.ops-overview strong { display:block; margin-top:4px; color:var(--ops-ink); font-size:17px; white-space:nowrap; }
.ops-batch .fba-strip { margin:8px 0; }.ops-batch .fba-strip span { display:flex; align-items:center; gap:7px; padding:7px 10px; }.ops-batch .fba-strip b { color:var(--ops-blue); font-size:18px; }
.ops-products,.ops-step { margin:8px 0; padding:11px 13px; border:1px solid #dce4f0; border-radius:13px; background:#fff; }
.ops-products p { margin:4px 0 0; font-size:13px; line-height:1.4; }
.ops-step h2 { margin:4px 0; font-size:17px; }.ops-step code { display:block; margin-top:6px; overflow-wrap:anywhere; font-size:13px; }.ops-step p { margin:6px 0 0; font-size:12px; }
.box-work { margin-top:9px; padding:13px; }.box-work-title { display:flex; align-items:center; justify-content:space-between; gap:10px; }.box-work-title h2 { margin:3px 0 0; overflow-wrap:anywhere; }.box-work-title button,.ops-exception button { border:0; border-radius:10px; padding:8px 11px; color:#294467; background:#eaf0f8; }
.box-work>p { margin:7px 0; color:#536278; font-size:12px; }.box-work .photo-button { display:grid; place-items:center; width:100%; box-sizing:border-box; margin:8px 0 0; min-height:50px; }
.photo-thumb { position:relative; }.photo-thumb button { position:absolute; right:5px; bottom:5px; min-height:32px; border:0; border-radius:8px; color:#fff; background:#172033d9; }
.ops-exception { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin:9px 0; padding:9px 12px; border-radius:12px; background:#fff7e6; }.ops-exception p { flex:1 0 100%; margin:0; color:#7a4a00; font-size:12px; }
.ops-submit { width:100%; margin:10px 0 0; border:1px solid #b8c7dd; border-radius:12px; color:#173d77; background:#fff; font-weight:750; }
.ops-submit:disabled { opacity:.5; }
@container (min-width:620px) { .ops-overview { gap:12px; }.ops-overview div { padding:14px; }.ops-products,.ops-step { padding:15px; } }
@media (max-width:430px) { .v1-top { padding-block:10px; }.v1-user>span { display:none; }.v1-main { padding-top:12px; }.ops-products,.ops-step { margin-block:7px; }.ops-batch .section-title { margin-bottom:8px; }.photo-grid { grid-template-columns:repeat(3,1fr); }.batch-card { padding:12px; } }
@media (orientation:landscape) and (max-height:520px) { .ops-scan-button { left:auto; right:12px; bottom:calc(8px + env(safe-area-inset-bottom)); width:220px; transform:none; }.ops-app { padding-bottom:72px; }.ops-overview { grid-template-columns:repeat(3,minmax(110px,1fr)); } }

/* Operator mobile pass: keep the workflow familiar, but make the next action unmistakable. */
.ops-app {
  --ops-blue:#1f5ed8;
  --ops-blue-dark:#1647ae;
  --ops-ink:#14213a;
  --ops-muted:#62748b;
  --ops-line:#d8e1ed;
  --ops-surface:#fff;
  padding-bottom:0;
  background:#eef2f6;
  color:var(--ops-ink);
}
.v1-top {
  position:static;
  min-height:60px;
  padding:10px max(14px, env(safe-area-inset-right)) 10px max(14px, env(safe-area-inset-left));
  background:#fff;
  border-bottom:1px solid var(--ops-line);
  box-shadow:0 2px 10px rgba(20,33,58,.04);
  backdrop-filter:none;
}
.v1-brand { display:flex; min-width:0; align-items:baseline; gap:9px; }
.v1-brand span { color:#718096; font:700 11px/1 DM Mono,monospace; letter-spacing:.13em; }
.v1-brand strong { overflow:hidden; color:var(--ops-ink); font-size:13px; letter-spacing:-.02em; text-overflow:ellipsis; white-space:nowrap; }
.v1-user { gap:7px !important; }
.v1-user .workspace-label { max-width:165px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#6d7d91; font-size:11px; }
.v1-user button,.section-title button {
  min-height:38px;
  padding:7px 11px;
  color:#38506f;
  background:#f0f4f8;
  border:1px solid #e1e8f0;
  border-radius:10px;
  font-size:12px;
  font-weight:750;
}
.v1-user button:active,.section-title button:active,.ops-submit:active,.ops-scan-button:active { transform:scale(.98); }
.v1-main { width:min(100%, 680px); flex:1 0 auto; padding:18px 14px; }
.v1-main--admin { width:min(100%, 1240px); }
.ops-app .site-footer { flex:none; margin-bottom:calc(78px + env(safe-area-inset-bottom)); }
.ops-app .site-footer__inner { width:min(100%,680px); padding:13px 14px; }
.ops-page .section-title { gap:9px; margin-bottom:13px; }
.ops-page .section-title h1 { color:var(--ops-ink); font-size:clamp(25px,7vw,32px); letter-spacing:-.065em; }
.ops-page .section-title p { color:var(--ops-muted); }
.ops-page .eyebrow { margin-bottom:5px; color:var(--ops-blue); font-size:10px; letter-spacing:.12em; }
.ops-batch .batch-heading { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:7px; min-height:44px; margin-bottom:8px; }
.batch-title { min-width:0; overflow:hidden; color:var(--ops-ink); font-size:12px; font-weight:750; line-height:1; text-overflow:ellipsis; white-space:nowrap; }
.batch-title code { color:#36506f; font:650 12px/1 DM Mono,monospace; }
.back-button { white-space:nowrap; }
.batch-heading > .back-button,.batch-heading > .status-pill { display:grid; width:72px; min-height:38px; place-items:center; padding:7px 9px; border:1px solid #bfd1ee; border-radius:10px; font-size:12px; font-weight:750; line-height:1; white-space:nowrap; }
.batch-heading > .back-button { color:#38506f; background:#f0f4f8; border-color:#e1e8f0; }
.status-pill { justify-self:end; background:#edf4ff; color:var(--ops-blue); }
.shipment-details { margin:0 0 9px; border:1px solid var(--ops-line); border-radius:12px; background:var(--ops-surface); }
.shipment-details summary { display:flex; align-items:center; gap:8px; min-height:42px; padding:0 12px; cursor:pointer; list-style:none; }
.shipment-details summary::-webkit-details-marker { display:none; }
.shipment-details summary span { color:var(--ops-muted); font-size:11px; }
.shipment-details summary strong { color:var(--ops-ink); font-size:12px; }
.shipment-details summary em { margin-left:auto; color:var(--ops-blue); font-size:10px; font-style:normal; font-weight:750; }
.shipment-details[open] summary { border-bottom:1px solid #e9eef5; }
.shipment-details ol { display:grid; gap:4px; margin:0; padding:9px 12px 11px; list-style:none; }
.shipment-details li { display:grid; grid-template-columns:24px minmax(0,1fr); align-items:center; gap:7px; min-width:0; }
.shipment-details li > span { color:#8392a5; font:10px DM Mono,monospace; }
.shipment-details code { min-width:0; overflow-wrap:anywhere; color:#334865; font:500 11px/1.35 DM Mono,monospace; }
.ops-overview { gap:7px; margin-bottom:8px; }
.ops-overview div { padding:10px 9px; border-color:var(--ops-line); border-radius:12px; background:var(--ops-surface); box-shadow:none; }
.ops-overview span,.ops-products span,.ops-step>span,.box-work-title span { color:#73839a; font-size:10px; letter-spacing:.01em; }
.ops-overview strong { margin-top:3px; color:var(--ops-ink); font-size:16px; }
.ops-batch .fba-strip { display:block; margin:8px 0; padding:12px 13px; border:1px solid #c6d7f4; border-radius:14px; background:#f4f8ff; }
.fba-strip-head { display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.fba-strip-head span { color:#607796; font-size:10px; }
.fba-strip-head strong { color:var(--ops-blue-dark); font-size:15px; }
.fba-strip-codes { display:grid; gap:3px; margin-top:7px; }
.fba-strip-codes code { display:block; overflow:hidden; color:#48617f; font:500 10px/1.35 DM Mono,monospace; text-overflow:ellipsis; white-space:nowrap; }
.fba-strip p { margin:8px 0 0; color:#5a7394; font-size:11px; line-height:1.4; }
.ops-products,.ops-step { margin:8px 0; padding:11px 13px; border-color:var(--ops-line); border-radius:13px; background:var(--ops-surface); box-shadow:none; }
.ops-products p { margin:4px 0 0; color:#21344f; font-size:13px; line-height:1.4; overflow-wrap:anywhere; }
.ops-step { background:linear-gradient(90deg,#f4f8ff 0,#fff 42px); }
.ops-step h2 { margin:4px 0 0; color:var(--ops-ink); font-size:18px; letter-spacing:-.035em; }
.ops-step code { color:#304967; font:500 12px/1.35 DM Mono,monospace; }
.scan-captured { display:flex; flex-wrap:wrap; align-items:baseline; gap:6px; margin:8px 0 0 !important; color:#65778e; font-size:11px !important; }
.scan-captured code { min-width:0; overflow-wrap:anywhere; }
.ops-manual { gap:7px; padding:8px; border-color:var(--ops-line); border-radius:13px; background:#f8fafc; box-shadow:none; }
.ops-manual input { min-height:44px; border:1px solid #dbe4ee; border-radius:10px; color:var(--ops-ink); background:#fff; font-size:14px; }
.ops-manual input:focus { border-color:var(--ops-blue); outline:3px solid rgba(31,94,216,.15); }
.ops-manual .primary { grid-column:auto; min-width:62px; min-height:44px; border:0; border-radius:10px; background:var(--ops-blue); color:#fff; font-size:13px; font-weight:800; }
.ops-manual .primary:hover { background:var(--ops-blue-dark); }
.ops-manual .primary:disabled { border-color:#cbd3de; color:#8793a3; background:#e7ebf0; box-shadow:none; cursor:not-allowed; opacity:.82; filter:grayscale(.35); }
.box-work { margin-top:9px; padding:13px; border:1px solid var(--ops-line); border-radius:14px; background:var(--ops-surface); }
.box-work-title button,.ops-exception button { min-height:38px; padding:7px 10px; border:1px solid #d7e1ee; border-radius:9px; color:#2d486a; background:#f1f5f9; font-size:11px; font-weight:750; }
.box-work>p { color:#566a82; }
.box-work .photo-button { min-height:48px; margin:8px 0 0; border-radius:10px; background:var(--ops-blue); font-size:13px; font-weight:800; }
.ops-exception { margin:9px 0; padding:10px 12px; border:1px solid #efd6a6; border-radius:12px; background:#fff8ea; }
.ops-exception p { color:#73520d; }
.ops-submit { min-height:46px; margin:10px 0 0; border:1px solid #bdcbe0; border-radius:11px; color:#2b4d7b; background:#fff; font-size:13px; font-weight:800; }
.ops-scan-button { display:flex; align-items:center; justify-content:center; gap:8px; width:min(calc(100% - 24px),600px); min-height:58px; bottom:calc(10px + env(safe-area-inset-bottom)); border-radius:15px; background:var(--ops-blue); box-shadow:0 10px 22px rgba(20,71,174,.28); font-size:17px; }
.ops-scan-button:hover { background:var(--ops-blue-dark); }
.ops-scan-button [data-scan-label] { margin:0; color:inherit; font-size:17px; }
.ops-feedback { top:60px; width:min(652px,calc(100% - 24px)); border:1px solid #c9d9ee; border-radius:12px; box-shadow:0 6px 16px rgba(20,33,58,.12); }
.v1-alert,.ops-feedback { position:relative; top:auto; left:auto; z-index:1; width:min(652px,calc(100% - 24px)); margin:8px auto 0; transform:none; pointer-events:auto; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:start; gap:12px; }
.v1-alert > span,.ops-feedback > div { min-width:0; }
.v1-alert > button,.ops-feedback > button { min-width:44px; min-height:36px; padding:7px 9px; border:1px solid currentColor; border-radius:8px; color:inherit; background:transparent; font:inherit; font-size:11px; font-weight:800; cursor:pointer; pointer-events:auto; }
.v1-alert > button:hover,.ops-feedback > button:hover { background:rgba(255,255,255,.45); }
.v1-alert { box-shadow:0 6px 16px rgba(142,35,28,.14); }
.ops-feedback { animation:ops-toast-in .18s ease-out; }
.scan-captured--matched { color:#087a55; }
.scan-captured--mismatch { color:#a63a2f; }
.ops-scan-button[aria-busy="true"] { color:#64748b; background:#e2e8f0; border-color:#cbd5e1; box-shadow:none; }
.ops-scan-button[data-scan-phase="idle"] { background:var(--ops-blue); }
.ops-scan-button[data-scan-phase="idle"]:hover { background:var(--ops-blue-dark); }
.ops-scan-button[data-scan-phase="starting"],.ops-scan-button[data-scan-phase="scanning"] { border:1px solid #cbd5e1; cursor:wait; color:#64748b; background:#e2e8f0; box-shadow:none; }
.ops-scan-button:disabled { pointer-events:none; }
@keyframes ops-toast-in { from { opacity:0; transform:translateY(-8px); } to { opacity:1; transform:translateY(0); } }
@media (max-width:430px) {
  .v1-top { min-height:56px; }
  .v1-brand span { display:none; }
  .v1-user .workspace-label { display:none; }
  .v1-main { padding-top:14px; }
  .ops-batch .batch-heading { grid-template-columns:auto minmax(0,1fr) auto; }
  .ops-batch .status-pill { grid-column:auto; margin-top:0; }
  .ops-batch .batch-heading .back-button { grid-row:auto; }
}
@media (prefers-reduced-motion:reduce) {
  .v1-user button:active,.section-title button:active,.ops-submit:active,.ops-scan-button:active { transform:none; }
}

/* Task detail: destination-led verification cockpit */
.ops-batch { --pending:#eef3f8; --pending-ink:#52657d; --active:#dceaff; --complete:#dff4e9; --warning:#fff0cc; }
.destination-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr)); gap:9px; margin:2px 0 10px; overflow:visible; }
.destination-card { position:relative; isolation:isolate; min-width:0; min-height:78px; overflow:hidden; padding:12px 36px 11px 12px; border:1px solid #d5dfeb; border-radius:14px; background:var(--pending); color:var(--pending-ink); }
.destination-fill { position:absolute; z-index:0; inset:0; width:100%; transform:scaleX(var(--progress-scale)); transform-origin:left center; background:var(--active); transition:transform .2s ease-out; }
.destination-card--complete .destination-fill { background:var(--complete); }
.destination-card--in-progress { border-style:solid; border-color:#8fb0e3; background:#eaf1fb; }
.destination-card--in-progress::after { content:'核验中'; position:absolute; z-index:1; right:10px; bottom:8px; color:#315f9d; font-size:9px; font-weight:800; }
.destination-card--warning .destination-fill { background:var(--warning); }
.destination-card.is-current { border-color:var(--ops-blue); box-shadow:inset 0 0 0 2px #fff,0 0 0 2px rgba(31,94,216,.18); }
.destination-copy { position:relative; z-index:1; display:grid; gap:7px; min-width:0; }
.destination-copy strong { overflow:hidden; color:#14213a; font-size:clamp(18px,5cqw,24px); line-height:1; letter-spacing:-.035em; text-overflow:ellipsis; white-space:nowrap; }
.destination-copy small { overflow:hidden; color:#607087; font-size:10px; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }
.destination-icon { position:absolute; z-index:1; top:12px; right:12px; display:grid; place-items:center; width:22px; height:22px; border-radius:50%; color:#fff; background:#718096; font-size:12px; font-weight:900; }
.destination-card--complete .destination-icon { background:#087a55; }.destination-card--warning .destination-icon { background:#b7791f; }
.verification-overview { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; margin-bottom:9px; }
.overview-button { min-width:0; padding:10px 8px; border:1px solid var(--ops-line); border-radius:12px; text-align:left; background:#fff; color:var(--ops-ink); }
.overview-button span { display:block; overflow:hidden; color:#708097; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.overview-button strong { display:block; margin-top:4px; font-size:16px; white-space:nowrap; }
.overview-button.is-open { border-color:#9bb9e8; background:#f3f7ff; }
.detail-panel { grid-column:1/-1; max-height:440px; overflow-y:auto; overscroll-behavior:contain; border:1px solid var(--ops-line); border-radius:12px; background:#fff; scrollbar-gutter:stable; }
.detail-group-label { position:sticky; z-index:2; top:0; padding:6px 10px; border-bottom:1px solid #dfe7f1; color:#5d6f86; background:#f7f9fc; font-size:10px; font-weight:800; }
.detail-group-label--extra { color:#8a5a16; background:#fff8e8; }
.detail-row { display:grid; grid-template-columns:minmax(72px,.7fr) minmax(110px,1.2fr) minmax(110px,1.2fr) minmax(12px,auto); align-items:center; gap:8px; min-height:44px; padding:7px 10px; border-bottom:1px solid #edf1f6; font-size:11px; }
.detail-row--box:is(button) { width:100%; border:0; border-bottom:1px solid #edf1f6; border-radius:0; color:inherit; text-align:left; cursor:pointer; }
.detail-row--box:is(button):hover { filter:brightness(.985); }
.detail-row--box:is(button)[aria-expanded="true"] { box-shadow:inset 3px 0 0 var(--ops-green); }
.detail-row:last-child { border-bottom:0; }.detail-row span,.detail-row code,.detail-row strong { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.detail-row code { color:#425873; font:500 10px/1.35 DM Mono,monospace; }.detail-row strong { font-size:11px; }
.detail-row i { width:9px; height:9px; border-radius:50%; background:#9aa8b9; }
.detail-state-label { color:#5e6d81; font-size:9px; font-style:normal; font-weight:750; white-space:nowrap; }
.detail-row--in-progress { background:#eef5ff; }.detail-row--in-progress i { background:#326bc1; box-shadow:0 0 0 3px #d9e7fb; }
.detail-row--complete i,.detail-row.is-verified { background:#edf9f3; }.detail-row--complete i { background:#139568; }
.detail-row--skippable { background:#eef5ff; }.detail-row--skippable i { background:#5d86c7; }
.detail-row--candidate { background:#f6f9fd; }.detail-row--candidate i { background:#7f9bc5; }
.detail-row--pending i { background:#d59a28; }.detail-row--warning { background:#fff7e6; }.detail-row--warning i { background:#c56b23; }
.detail-row--product { grid-template-columns:minmax(100px,1.2fr) minmax(90px,1fr) minmax(105px,auto); }.detail-row.is-unverified { color:#64748b; }
.current-status { display:grid; gap:0; margin-top:8px; overflow:hidden; border:1px solid var(--ops-line); border-radius:12px; background:#fff; }
.current-status div { display:grid; grid-template-columns:76px minmax(0,1fr); align-items:center; min-height:39px; padding:0 11px; border-bottom:1px solid #edf1f6; }
.current-status div:last-child { border-bottom:0; }.current-status span { color:#6d7d91; font-size:10px; font-weight:750; }.current-status code { overflow:hidden; color:#253b58; font:600 11px/1.3 DM Mono,monospace; text-overflow:ellipsis; white-space:nowrap; }
.current-status .is-error { background:#fff0ef; }.current-status .is-error code { color:#a52b23; }
.photo-upload-status { display:grid; gap:7px; margin-top:10px; padding:10px 11px; border:1px solid #cbd9eb; border-radius:12px; background:#f7faff; }
.photo-upload-status__heading { display:flex; align-items:center; justify-content:space-between; gap:8px; color:#315f9d; font-size:11px; }
.photo-upload-status__heading span { color:#71829a; font-size:9px; font-weight:700; }
.photo-upload-status__list { display:grid; gap:5px; }
.photo-upload-task { display:grid; grid-template-columns:9px minmax(0,1fr) auto; align-items:center; gap:8px; min-height:30px; }
.photo-upload-task > i { width:9px; height:9px; border-radius:50%; background:#326bc1; box-shadow:0 0 0 3px #d9e7fb; }
.photo-upload-task > span { display:grid; min-width:0; gap:2px; }
.photo-upload-task strong,.photo-upload-task small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.photo-upload-task strong { color:#263b59; font-size:10px; }
.photo-upload-task small { color:#71829a; font-size:9px; }
.photo-upload-task--uploaded > i { background:#139568; box-shadow:0 0 0 3px #d7f0e4; }
.photo-upload-task--failed > i { background:#bd4036; box-shadow:0 0 0 3px #f7d8d5; }
.photo-upload-task button { min-height:27px; padding:4px 8px; border:1px solid #b8cbea; border-radius:7px; color:#315f9d; background:#fff; font-size:10px; font-weight:800; }
.defect-controls { display:grid; grid-template-columns:minmax(52px,.8fr) repeat(3,minmax(0,.9fr)) minmax(76px,1.15fr); gap:4px; margin-top:10px; }
.defect-controls button { min-width:0; min-height:44px; padding:5px 3px; border:1px solid #ccd7e4; border-radius:9px; font-size:10px; font-weight:800; line-height:1.15; white-space:nowrap; }
.defect-toggle { color:#5f6f83; background:#f1f4f7; }
.clear-codes { color:#53677f; background:#fff; }
.defect-toggle.is-on { border-color:#26364d; color:#fff; background:#26364d; box-shadow:inset 0 0 0 1px rgba(255,255,255,.15); }
.defect-submit { border-color:#9e3d35 !important; color:#fff; background:#a63a2f; }
.defect-submit:disabled { border-color:#d8dee7 !important; color:#9aa6b5; background:#e8edf2; cursor:not-allowed; }
.sr-only { position:absolute !important; width:1px !important; height:1px !important; padding:0 !important; margin:-1px !important; overflow:hidden !important; clip:rect(0,0,0,0) !important; white-space:nowrap !important; border:0 !important; }
.box-photo-panel { display:grid; grid-template-columns:repeat(auto-fill,minmax(72px,84px)); gap:8px; padding:10px; border-bottom:1px solid #dfe7f1; background:#f7fafc; }
.box-photo-panel--empty { display:block; }.box-photo-panel--empty p { margin:0; color:#718096; font-size:11px; }
.box-photo-thumb { position:relative; min-height:72px !important; overflow:hidden; border:1px solid #d5dfeb; border-radius:9px; background:#e9eff6; }
.box-photo-thumb .photo-preview-button { display:block; width:100%; min-height:72px !important; padding:0; border:0; border-radius:0; background:transparent; cursor:pointer; }
.box-photo-thumb .photo-delete-button { position:absolute; right:4px; bottom:4px; z-index:2; min-height:28px !important; padding:4px 7px; border:1px solid rgba(23,32,51,.35); border-radius:7px; color:#fff; background:#172033d9; font-size:9px; font-weight:800; cursor:pointer; }
.box-photo-thumb .photo-delete-button:hover { background:#a63a2f; }
.box-photo-thumb img { display:block; width:100%; aspect-ratio:1; object-fit:cover; opacity:0; transition:opacity .15s ease-out; }
.box-photo-loading { position:absolute; inset:0; z-index:1; display:grid; place-items:center; padding:7px; color:#64748b; font-size:9px; line-height:1.3; text-align:center; }
.box-photo-thumb.is-loaded img { opacity:1; }.box-photo-thumb.is-loaded .box-photo-loading { display:none; }
.box-photo-thumb.is-error { border-color:#e5b9b5; background:#fff0ef; }.box-photo-thumb.is-error img { display:none; }.box-photo-thumb.is-error .box-photo-loading { color:#a63a2f; }
.ops-bottom-actions { position:fixed; z-index:25; left:50%; bottom:calc(10px + env(safe-area-inset-bottom)); display:grid; width:min(calc(100% - 24px),600px); transform:translateX(-50%); }
.ops-bottom-actions.is-split { grid-template-columns:1fr 1fr; gap:9px; }
.ops-bottom-actions .ops-scan-button { position:static; width:100%; transform:none; }
.ops-photo-action { display:grid; place-items:center; min-height:58px; border:1px solid #c9d7ec; border-radius:15px; color:#17477f; background:#e7f0fb; box-shadow:0 10px 22px rgba(30,64,110,.15); font-size:17px; font-weight:850; cursor:pointer; touch-action:manipulation; }
.ops-scan-button.is-disabled,.ops-scan-button:disabled,.ops-photo-action.is-disabled,.ops-photo-action[aria-disabled="true"] { border-color:#cbd3de; color:#8793a3; background:#e7ebf0; box-shadow:none; cursor:not-allowed; opacity:.82; filter:grayscale(.35); pointer-events:none; }
.ops-bottom-actions:not(.is-split) .ops-scan-button { width:100%; }
.photo-modal section { overflow:hidden; }.photo-modal section img { display:block; }
@container (min-width:620px) { .destination-grid { grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); }.destination-card { min-height:88px; } }
@container (max-width:320px) { .defect-controls { gap:3px; }.defect-controls button { padding-inline:2px; font-size:9px; } }
@media (max-width:430px) { .destination-grid { grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; }.destination-card { min-height:72px; padding:10px 27px 9px 9px; border-radius:11px; }.destination-copy { gap:6px; }.destination-copy strong { font-size:17px; }.destination-copy small { font-size:9px; letter-spacing:-.02em; }.destination-icon { top:8px; right:8px; width:18px; height:18px; font-size:10px; }.destination-card--in-progress::after { right:7px; bottom:6px; font-size:8px; }.detail-row { grid-template-columns:minmax(62px,.65fr) minmax(90px,1fr) minmax(90px,1fr) 10px; gap:6px; padding-inline:8px; }.detail-row--product { grid-template-columns:minmax(80px,1fr) minmax(78px,.8fr) minmax(98px,auto); } }
@media (orientation:landscape) and (max-height:520px) { .ops-bottom-actions { left:auto; right:12px; width:360px; transform:none; }.ops-bottom-actions.is-split { width:440px; } }
@media (prefers-reduced-motion:reduce) { .destination-fill { transition:none; } }

.warn-tag { color: #b45309; background: #fef3c7; border-radius: 6px; padding: 1px 6px; font-size: 12px; }.hint { color: #778196; font-size: 12px; line-height: 1.5; margin: 4px 0 10px; }.binding-row { display: grid; gap: 6px; padding: 8px 0; border-bottom: 1px solid #eef1f6; }.binding-row span { color: #4b5563; }.binding-row code { font-size: 12px; color: #6b7280; }

/* Administrator workbench */
.admin-page { --admin-ink:#132238; --admin-muted:#68788e; --admin-line:#dbe4ee; --admin-paper:#f7f9fc; --admin-blue:#1f5ed8; --admin-green:#087a55; width:min(100%,1120px); margin:0 auto; padding:25px 16px 100px; color:var(--admin-ink); }
.admin-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin-bottom:23px; }
.admin-heading h1 { margin:0 0 9px; color:var(--admin-ink); font-size:clamp(28px,5vw,43px); letter-spacing:-.065em; }
.admin-heading__lede { max-width:50ch; margin:0; color:var(--admin-muted); font-size:13px; line-height:1.55; }
.admin-back,.admin-refresh,.admin-nav button,.admin-primary,.admin-danger,.admin-icon-button { cursor:pointer; font:inherit; }
.admin-back { display:block; margin:0 0 17px; padding:0; border:0; color:var(--admin-blue); background:transparent; font-size:12px; font-weight:800; }
.admin-refresh { min-height:42px; padding:0 14px; border:1px solid var(--admin-line); border-radius:11px; color:var(--admin-ink); background:#fff; font-size:12px; font-weight:800; white-space:nowrap; }
.admin-refresh:hover { border-color:#a9bee0; background:#f2f6fd; }
.admin-nav { display:flex; gap:4px; overflow-x:auto; margin-bottom:18px; padding:4px; border:1px solid var(--admin-line); border-radius:13px; background:#edf2f7; scrollbar-width:none; }
.admin-nav::-webkit-scrollbar { display:none; }
.admin-nav button { display:flex; align-items:center; gap:7px; min-height:38px; padding:0 13px; border:0; border-radius:9px; color:#63738a; background:transparent; font-size:12px; font-weight:800; white-space:nowrap; }
.admin-nav button:hover { color:var(--admin-ink); background:#f7f9fc; }.admin-nav button:not(.is-active),.admin-nav button[aria-current="false"] { box-shadow:none; }.admin-nav button.is-active,.admin-nav button[aria-current="page"] { color:var(--admin-ink); background:#fff; box-shadow:0 2px 7px #19355b16; }.admin-nav button:focus-visible { outline:3px solid #9dbcf0; outline-offset:2px; }.admin-nav b { display:grid; min-width:18px; height:18px; place-items:center; border-radius:9px; color:#fff; background:#d26b26; font-size:10px; }
.admin-overview__intro { padding:25px 27px; border:1px solid #cddcf0; border-radius:16px; background:linear-gradient(120deg,#eaf2ff 0%,#f8fbff 65%,#e5f6ef 100%); }
.admin-overview__intro h2 { margin:0 0 8px; font-size:clamp(22px,4vw,31px); letter-spacing:-.055em; }.admin-overview__intro p:last-child { max-width:56ch; margin:0; color:#536a86; font-size:13px; line-height:1.55; }
.admin-section-kicker { color:var(--admin-blue); font:700 10px/1 DM Mono,monospace; letter-spacing:.12em; text-transform:uppercase; }
.admin-stat-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:9px; margin:11px 0 20px; }
.admin-stat { position:relative; min-height:126px; padding:17px 15px; border:1px solid var(--admin-line); border-radius:14px; text-align:left; color:var(--admin-ink); background:#fff; cursor:pointer; }.admin-stat:hover { border-color:#a9bee0; box-shadow:0 8px 24px #203c6310; transform:translateY(-1px); }.admin-stat span,.admin-stat small { display:block; color:var(--admin-muted); }.admin-stat span { font-size:11px; font-weight:800; }.admin-stat strong { display:block; margin:10px 0 4px; font-size:30px; letter-spacing:-.06em; }.admin-stat small { font-size:10px; }.admin-stat i { position:absolute; right:14px; bottom:14px; color:var(--admin-blue); font-style:normal; }
.admin-action-queue { padding:19px; border:1px solid var(--admin-line); border-radius:14px; background:#fff; }.admin-action-queue h3 { margin:6px 0 15px; font-size:18px; letter-spacing:-.04em; }.admin-queue-list { display:grid; gap:8px; }.admin-queue-list button { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:3px 15px; padding:13px 15px; border:1px solid #e5d5b8; border-radius:11px; text-align:left; color:var(--admin-ink); background:#fffbf3; cursor:pointer; }.admin-queue-list button:hover { border-color:#d5a85b; }.admin-queue-list strong { font-size:13px; }.admin-queue-list span { color:#7b6b53; font-size:11px; }.admin-queue-list b { grid-column:2; grid-row:1 / span 2; align-self:center; color:#a36116; font-size:11px; }.admin-empty { margin:0; padding:22px 8px; color:var(--admin-muted); font-size:12px; }
.admin-module { position:relative; padding:22px; border:1px solid var(--admin-line); border-radius:16px; background:#fff; }.admin-module__head { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; padding-bottom:18px; border-bottom:1px solid #e9eef4; }.admin-module__head h2 { margin:6px 0 4px; font-size:25px; letter-spacing:-.055em; }.admin-module__head p { margin:0; color:var(--admin-muted); font-size:12px; }.admin-primary,.admin-danger { min-height:38px; padding:0 13px; border-radius:9px; font-size:11px; font-weight:800; white-space:nowrap; }.admin-primary { border:1px solid var(--admin-blue); color:#fff; background:var(--admin-blue); }.admin-primary:hover { background:#174cad; }.admin-danger { border:1px solid #efc9c6; color:#a63a2f; background:#fff7f6; }.admin-danger:hover { background:#ffebe9; }.admin-count-badge { padding:7px 9px; border-radius:8px; color:var(--admin-green); background:#e6f6ef; font-size:11px; font-weight:800; }
.admin-filter-bar,.admin-workspace-switcher { display:flex; gap:6px; overflow-x:auto; padding:15px 0 10px; }.admin-filter-bar button,.admin-workspace-switcher button { min-height:32px; padding:0 10px; border:1px solid var(--admin-line); border-radius:8px; color:var(--admin-muted); background:#fff; font-size:11px; font-weight:800; white-space:nowrap; cursor:pointer; }.admin-filter-bar button:hover,.admin-workspace-switcher button:hover { border-color:#a9bee0; color:var(--admin-blue); }.admin-filter-bar button.is-active,.admin-workspace-switcher button.is-active { border-color:#a9bee0; color:var(--admin-blue); background:#eff5ff; }
.admin-list { display:grid; gap:0; }.admin-list-row,.admin-list form { display:grid; grid-template-columns:minmax(0,1fr) minmax(190px,250px) auto; align-items:center; gap:16px; padding:13px 0; border-bottom:1px solid #edf1f5; }.admin-list-row:last-child,.admin-list form:last-child { border-bottom:0; }.admin-list-row > div { display:grid; gap:4px; min-width:0; }.admin-record-main { min-width:0; }.admin-record-title { overflow-wrap:anywhere; }.admin-list-row strong { display:block; font-size:13px; }.admin-list-row span { color:var(--admin-muted); font-size:11px; line-height:1.4; }.admin-list-row code { color:#4b6384; font:500 10px/1.45 DM Mono,monospace; overflow-wrap:anywhere; white-space:normal; }.admin-id { display:block; letter-spacing:-.01em; }.admin-list-row label { display:grid; gap:4px; color:var(--admin-muted); font-size:10px; font-weight:700; line-height:1.3; }.admin-list-row select,.admin-list-row input,.admin-drawer select,.admin-drawer input { width:100%; min-height:36px; padding:0 9px; border:1px solid var(--admin-line); border-radius:8px; color:var(--admin-ink); background:#fff; font:inherit; font-size:11px; }.admin-list-row button { justify-self:end; }.admin-list form[data-form="account-update"] { grid-template-columns:minmax(130px,1.2fr) minmax(110px,1fr) minmax(125px,1fr) auto; }.admin-list form[data-form="account-update"] > strong,.admin-list form[data-form="account-update"] > code,.admin-list form[data-form="account-update"] > span { min-width:0; }.admin-list form[data-form="account-update"] > strong { font-size:12px; }.admin-list form[data-form="party-unbind"] { grid-template-columns:minmax(0,1fr) minmax(190px,250px) auto; }.admin-list form[data-form="party-unbind"] label { display:grid; gap:4px; color:var(--admin-muted); font-size:10px; }.admin-list form[data-form="party-unbind"] code { color:#4b6384; font:500 10px/1.45 DM Mono,monospace; overflow-wrap:anywhere; white-space:normal; }
.admin-drawer-backdrop { position:fixed; z-index:49; inset:0; background:#10203966; }.admin-drawer { position:fixed; z-index:50; top:0; right:0; display:flex; flex-direction:column; width:min(440px,100%); height:100dvh; overflow:auto; padding:26px 24px 40px; color:var(--admin-ink); background:#fff; box-shadow:-14px 0 42px #1322382b; animation:admin-drawer-in .2s ease-out; }.admin-drawer__head { display:flex; justify-content:space-between; gap:15px; align-items:flex-start; margin-bottom:21px; }.admin-drawer h2 { margin:7px 0 0; font-size:24px; letter-spacing:-.055em; }.admin-drawer .eyebrow { margin-bottom:0; }.admin-drawer form { display:grid; gap:13px; }.admin-drawer label { display:grid; gap:6px; color:var(--admin-muted); font-size:11px; font-weight:800; }.admin-drawer .hint { margin:-5px 0 0; }.admin-drawer .admin-primary { width:100%; margin-top:5px; }.admin-icon-button { width:36px; height:36px; border:1px solid var(--admin-line); border-radius:9px; color:var(--admin-muted); background:#fff; font-size:22px; line-height:1; }.admin-icon-button:hover { color:var(--admin-ink); background:var(--admin-paper); }.admin-drawer .binding-options { display:grid; gap:7px; max-height:200px; overflow:auto; padding:9px; border:1px solid var(--admin-line); border-radius:9px; background:var(--admin-paper); }.admin-drawer .binding-option { display:flex; grid-template:none; flex-direction:row; align-items:flex-start; gap:7px; font-size:10px; font-weight:600; }.admin-drawer .binding-option input { width:auto; min-height:auto; margin-top:2px; }
@keyframes admin-drawer-in { from { transform:translateX(18px); opacity:.8; } to { transform:translateX(0); opacity:1; } }
@media (max-width:760px) { .admin-page { padding-top:17px; }.admin-heading { align-items:flex-start; flex-direction:column; gap:14px; }.admin-refresh { align-self:flex-start; }.admin-stat-grid { grid-template-columns:repeat(2,1fr); }.admin-module { padding:17px 14px; }.admin-module__head { align-items:flex-start; flex-direction:column; }.admin-list-row,.admin-list form,.admin-list form[data-form="account-update"],.admin-list form[data-form="party-unbind"] { grid-template-columns:minmax(0,1fr) auto; align-items:start; gap:9px; }.admin-list-row label,.admin-list form[data-form="account-update"] select,.admin-list form[data-form="party-unbind"] label { grid-column:1/-1; }.admin-list-row button { grid-column:2; grid-row:1; }.admin-list form[data-form="account-update"] > select { grid-column:1/-1; }.admin-list form[data-form="account-update"] > button { grid-column:2; }.admin-list form[data-form="account-update"] > span { grid-column:1; }.admin-list form[data-form="account-update"] > strong { grid-column:1; }.admin-list form[data-form="account-update"] > code { grid-column:1/-1; }.admin-drawer { padding-inline:18px; } }
@media (max-width:420px) { .admin-overview__intro { padding:20px 18px; }.admin-stat { min-height:112px; padding:13px 12px; }.admin-stat strong { font-size:26px; }.admin-nav button { padding-inline:10px; }.admin-module__head h2 { font-size:22px; } }

/* Accessibility contrast refinements */
.site-footer { color:#586b84; }
.admin-page { --admin-muted:#53677f; }
.admin-nav button { color:#53677f; }
.admin-list-row code,.admin-list form[data-form="account-update"] > code { color:#4b6384; }
.admin-row-actions { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:6px; }.admin-secondary { min-height:34px; padding:0 10px; border:1px solid var(--admin-line); border-radius:8px; color:var(--admin-ink); background:#fff; font-size:10px; font-weight:800; cursor:pointer; }.admin-secondary:hover { border-color:#a9bee0; background:#f2f6fd; }
@media (max-width:760px) { .admin-row-actions { grid-column:1/-1; justify-content:flex-start; } }

/* Admin redesign: names first, identifiers quiet but always available. */
.v1-main--admin { padding-top:32px; background:#f5f7fb; }
.v1-main--admin .admin-page { padding:0 0 84px; }
.v1-main--admin .admin-heading { align-items:flex-start; margin-bottom:28px; padding:0 4px; }
.v1-main--admin .admin-heading h1 { max-width:12ch; margin:0 0 8px; color:#101c32; font-size:clamp(34px,5vw,52px); line-height:.98; letter-spacing:-.065em; }
.v1-main--admin .admin-heading__lede { max-width:44ch; font-size:14px; }
.v1-main--admin .admin-back { margin:0 0 12px; }
.v1-main--admin .admin-refresh { min-height:40px; border-radius:10px; background:#fff; }
.v1-main--admin .admin-nav { gap:6px; margin:0 0 22px; padding:5px; border:0; border-radius:14px; background:#e6ebf2; box-shadow:inset 0 1px 2px #1b315012; }
.v1-main--admin .admin-nav button { min-height:42px; padding:0 15px; color:#65758b; border-radius:10px; font-size:12px; transition:color .16s ease,background .16s ease,box-shadow .16s ease; }
.v1-main--admin .admin-nav button.is-active { color:#10234a; background:#fff; box-shadow:0 3px 10px #1b31501c; }
.v1-main--admin .admin-nav button:not(.is-active):hover { color:#213b68; background:#f1f4f8; }
.v1-main--admin .admin-module { padding:26px 28px 20px; border:1px solid #dce4ee; border-radius:18px; box-shadow:0 12px 30px #19355b0a; }
.v1-main--admin .admin-credential-result { margin:-2px 0 24px; padding:18px; border:1px solid #b9d2f2; border-radius:14px; background:#f2f7ff; }
.v1-main--admin .admin-credential-result__head { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; }
.v1-main--admin .admin-credential-result__head h2 { margin:6px 0 5px; color:#10234a; font-size:22px; letter-spacing:-.045em; }
.v1-main--admin .admin-credential-result__head p { margin:0; color:#536b87; font-size:12px; line-height:1.45; overflow-wrap:anywhere; }
.v1-main--admin .admin-credential-result__notice { margin:16px 0 15px; color:#365a84; font-size:12px; line-height:1.5; }
.v1-main--admin .admin-credential-result__field { display:grid; gap:6px; }
.v1-main--admin .admin-credential-result__field > label { color:#4c6684; font-size:11px; font-weight:800; }
.v1-main--admin .admin-credential-result__control { display:flex; align-items:stretch; gap:8px; }
.v1-main--admin .admin-credential-result__control input { min-width:0; min-height:44px; padding:0 12px; border:1px solid #a9c5e8; border-radius:9px; color:#10234a; background:#fff; font:600 14px/1.2 DM Mono,monospace; letter-spacing:.015em; user-select:all; }
.v1-main--admin .admin-credential-result__control input:focus-visible { outline:3px solid #bfd4f4; outline-offset:2px; }
.v1-main--admin .admin-credential-result__control .admin-primary { min-height:44px; }
.v1-main--admin .admin-credential-result__status { margin:0; color:#5d7593; font-size:11px; line-height:1.4; }
.v1-main--admin .admin-credential-result__status.is-success { color:#087a55; }
.v1-main--admin .admin-credential-result__status.is-error { color:#a63a2f; }
.v1-main--admin .admin-module__head { padding-bottom:21px; }
.v1-main--admin .admin-module__head h2 { margin:0 0 6px; color:#12213a; font-size:27px; letter-spacing:-.045em; }
.v1-main--admin .admin-module__head p { font-size:13px; }
.v1-main--admin .admin-list-row { grid-template-columns:minmax(0,1fr) minmax(170px,220px) auto; align-items:start; gap:22px; padding:17px 0; }
.v1-main--admin .admin-list-row strong { color:#162945; font-size:15px; line-height:1.25; }
.v1-main--admin .admin-record-meta { color:#667991; font-size:12px; }
.v1-main--admin .admin-id-line { display:flex; align-items:center; gap:6px; min-width:0; }
.v1-main--admin .admin-id { color:#71839a; font-size:10px; line-height:1.35; }
.v1-main--admin .admin-copy { display:inline-grid; flex:0 0 auto; width:25px; height:25px; place-items:center; padding:0; border:1px solid #dce5ef; border-radius:7px; color:#456687; background:#f7faff; cursor:pointer; }
.v1-main--admin .admin-copy:hover { color:#1557d6; border-color:#a9c2e9; background:#edf4ff; }
.v1-main--admin .admin-copy:focus-visible { outline:3px solid #bfd4f4; outline-offset:2px; }
.v1-main--admin .admin-copy svg { width:13px; height:13px; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:1.7; }
.v1-main--admin .admin-status { display:flex; align-items:center; gap:7px; min-height:32px; padding-top:1px; color:#536981; font-size:11px; font-weight:750; }
.v1-main--admin .admin-status-dot { width:7px; height:7px; border-radius:50%; background:#aebbc9; }
.v1-main--admin .admin-status-dot--active { background:#13a36f; box-shadow:0 0 0 4px #13a36f1c; }
.v1-main--admin .admin-status-dot--pending { background:#d58a24; box-shadow:0 0 0 4px #d58a241c; }
.v1-main--admin .admin-status-dot--disabled { background:#c25b55; box-shadow:0 0 0 4px #c25b551c; }
.v1-main--admin .admin-row-actions { padding-top:0; }
.v1-main--admin .admin-list-row label { align-self:start; color:#74859a; font-size:10px; }
.v1-main--admin .admin-list-row select,.v1-main--admin .admin-list-row input { min-height:34px; border-color:#d7e1ec; background:#fbfcfe; }
.v1-main--admin .admin-workspace-switcher { gap:8px; padding:18px 0 13px; }
.v1-main--admin .admin-workspace-switcher button { display:grid; gap:2px; min-width:138px; min-height:54px; padding:9px 12px; text-align:left; border-radius:11px; }
.v1-main--admin .admin-workspace-switcher button strong { color:inherit; font-size:12px; }
.v1-main--admin .admin-workspace-switcher button span { color:inherit; font-size:10px; opacity:.72; }
.v1-main--admin .admin-workspace-switcher button.is-active { color:#1557d6; border-color:#9ebce8; background:#edf4ff; box-shadow:0 3px 10px #1557d614; }
.v1-main--admin .admin-danger { min-height:35px; }
@media (max-width:760px) {
  .v1-main--admin { padding-top:18px; }
  .v1-main--admin .admin-page { padding-inline:0; }
  .v1-main--admin .admin-heading { padding:0; margin-bottom:20px; }
  .v1-main--admin .admin-heading h1 { font-size:38px; }
  .v1-main--admin .admin-module { padding:20px 16px 15px; border-radius:15px; }
  .v1-main--admin .admin-list-row { grid-template-columns:minmax(0,1fr) auto; gap:10px; padding:15px 0; }
  .v1-main--admin .admin-list-row label { grid-column:1/-1; }
  .v1-main--admin .admin-list-row button.admin-danger { grid-column:2; grid-row:1; }
  .v1-main--admin .admin-status { grid-column:1/-1; grid-row:2; padding-top:0; }
  .v1-main--admin .admin-row-actions { grid-column:1/-1; justify-content:flex-start; }
  .v1-main--admin .admin-id-line { align-items:flex-start; }
  .v1-main--admin .admin-id { max-width:calc(100vw - 100px); }
  .v1-main--admin .admin-credential-result__head { flex-direction:column; gap:12px; }
  .v1-main--admin .admin-credential-result__head .admin-secondary { align-self:flex-start; }
}

/* Verification dashboard: desktop-first shipment cockpit, with expandable box and FNSKU evidence. */
.ops-app--dashboard { --dashboard-ink:#132033; --dashboard-muted:#6f7d8d; --dashboard-line:#dfe6ee; --dashboard-accent:#155eef; --dashboard-warn:#c2410c; background:#f5f7fa; }
.ops-app--dashboard .eyebrow { font-size:12px; }
.ops-app--dashboard .v1-main { width:100%; max-width:1920px; margin-inline:auto; padding:30px clamp(24px,3vw,56px) 64px; }
.dashboard-page { width:min(100%,1880px); margin-inline:auto; color:var(--dashboard-ink); }
.dashboard-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin-bottom:22px; }
.dashboard-heading h1 { margin:3px 0 7px; font-size:clamp(28px,2.4vw,42px); letter-spacing:-.04em; }
.dashboard-heading p:not(.eyebrow) { margin:0; color:var(--dashboard-muted); font-size:14px; }
.dashboard-refresh { min-height:40px; border:1px solid var(--dashboard-line); background:#fff; color:var(--dashboard-ink); border-radius:8px; padding:9px 13px; font-weight:700; cursor:pointer; }
.dashboard-search { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; margin-bottom:14px; position:sticky; top:0; z-index:10; padding-block:8px; background:#f5f7fa; }
.dashboard-search-input { position:relative; display:flex; align-items:center; min-height:52px; border:1px solid #cbd5e1; border-radius:10px; background:#fff; box-shadow:0 5px 18px rgba(23,43,77,.06); }
.dashboard-search-input > span { padding-left:16px; color:var(--dashboard-accent); font-size:22px; }
.dashboard-search-input input { min-width:0; flex:1; border:0; outline:0; background:transparent; padding:0 12px; color:var(--dashboard-ink); font-size:15px; }
.dashboard-search-input kbd { margin-right:14px; border:1px solid var(--dashboard-line); border-radius:5px; padding:3px 6px; color:#8290a0; font:12px ui-monospace,monospace; }
.dashboard-search > .primary { min-width:92px; border-radius:9px; }
.dashboard-candidates { position:absolute; z-index:5; top:calc(100% + 7px); left:0; right:0; padding:5px; border:1px solid var(--dashboard-line); border-radius:10px; background:#fff; box-shadow:0 14px 30px rgba(25,42,70,.16); }
.dashboard-candidates button { display:flex; justify-content:space-between; width:100%; min-height:40px; border:0; background:transparent; border-radius:7px; padding:10px 11px; color:var(--dashboard-ink); text-align:left; cursor:pointer; }
.dashboard-candidates button:hover,.dashboard-candidates button:focus-visible { background:#edf4ff; outline:0; }
.dashboard-candidates small { color:var(--dashboard-muted); }
.dashboard-quick-filters { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-bottom:18px; }
.dashboard-filter-chip,.dashboard-select-label,.dashboard-date-label,.dashboard-archive-toggle { min-height:34px; border:1px solid var(--dashboard-line); border-radius:7px; background:#fff; color:#526174; font-size:12px; font-weight:700; }
.dashboard-filter-chip { padding:8px 11px; cursor:pointer; }
.dashboard-filter-chip.is-active { border-color:#b7cdfc; background:#e9f1ff; color:#1554b7; }
.dashboard-select-label,.dashboard-date-label { display:inline-flex; align-items:center; gap:6px; padding:5px 8px; font-weight:600; }
.dashboard-select-label select,.dashboard-date-label input { border:0; background:transparent; color:var(--dashboard-ink); font:inherit; outline:0; }
.dashboard-archive-toggle { display:inline-flex; align-items:center; gap:5px; padding:8px 10px; cursor:pointer; }
.dashboard-stats { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:1px; overflow:hidden; border:1px solid var(--dashboard-line); border-radius:10px; background:var(--dashboard-line); margin-bottom:18px; }
.dashboard-stats > div { min-height:76px; padding:14px 16px; background:#fff; }
.dashboard-stats span,.dashboard-stats strong { display:block; }
.dashboard-stats span { color:var(--dashboard-muted); font-size:12px; }
.dashboard-stats strong { margin-top:7px; font:700 23px/1 ui-monospace,monospace; }
.dashboard-stats .is-warning strong { color:var(--dashboard-warn); }
.dashboard-table-wrap { width:100%; max-width:100%; overflow-x:hidden; border:1px solid var(--dashboard-line); border-radius:10px; background:#fff; }
.dashboard-table { width:100%; max-width:100%; min-width:0; table-layout:fixed; border-collapse:collapse; font-size:12px; }
.dashboard-table th { padding:10px 14px; background:#f8fafc; color:#758396; text-align:left; font-size:12px; letter-spacing:.04em; text-transform:uppercase; white-space:nowrap; }
.dashboard-table th.dashboard-table-result { text-align:center; }
.dashboard-table th:nth-child(1),.dashboard-table td:nth-child(1) { width:19%; }
.dashboard-table th:nth-child(2),.dashboard-table td:nth-child(2) { width:18%; }
.dashboard-table th:nth-child(3),.dashboard-table td:nth-child(3) { width:14%; }
.dashboard-table th:nth-child(4),.dashboard-table td:nth-child(4) { width:10%; }
.dashboard-table th:nth-child(5),.dashboard-table td:nth-child(5) { width:10%; }
.dashboard-table th:nth-child(6),.dashboard-table td:nth-child(6) { width:12%; }
.dashboard-table th:nth-child(7),.dashboard-table td:nth-child(7) { width:9%; }
.dashboard-table th:nth-child(8),.dashboard-table td:nth-child(8) { width:8%; }
.dashboard-table thead th { position:sticky; top:0; z-index:2; }
.dashboard-table td { padding:14px; border-top:1px solid #edf1f5; vertical-align:top; }
.dashboard-table th,.dashboard-table td { overflow-wrap:anywhere; }
.dashboard-table td > strong,.dashboard-table td > time,.dashboard-table td > code,.dashboard-table td > small { display:block; }
.dashboard-table td small { margin-top:4px; color:var(--dashboard-muted); font-size:12px; }
.dashboard-table code { font:600 12px ui-monospace,monospace; }
.dashboard-table-field--shipment-summary,.dashboard-table-field--cargo-summary,.dashboard-table-field--destination-summary,.dashboard-table-field--store,.dashboard-table-field--warehouse,.dashboard-table-field--boxes,.dashboard-table-field--result { width:100%; min-width:0; }
.dashboard-shipment-cell { display:grid; grid-template-columns:24px minmax(0,1fr); align-items:start; gap:10px; min-width:0; }
.dashboard-shipment-cell > div { min-width:0; }
.dashboard-summary-lines { display:grid; align-content:start; gap:4px; min-width:0; }
.dashboard-shipment-toggle { display:grid; place-items:center; width:24px; height:24px; min-width:24px; margin-top:3px; border:1px solid #b7cdfc; border-radius:6px; padding:0; background:#edf4ff; color:var(--dashboard-accent); font-size:17px; line-height:1; cursor:pointer; }
.dashboard-shipment-toggle > span:first-child { display:block; font-size:17px; line-height:1; }
.dashboard-shipment-toggle strong,.dashboard-shipment-toggle small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dashboard-shipment-toggle strong { font:600 12px ui-monospace,monospace; }
.dashboard-shipment-toggle small { margin-top:4px; color:var(--dashboard-muted); font-size:12px; }
.dashboard-shipment-codes { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); align-items:start; gap:12px; min-width:0; }
.dashboard-shipment-code-field { display:grid; gap:4px; min-width:0; }
.dashboard-table-field { display:grid; align-content:start; gap:4px; min-width:0; }
.dashboard-table-field--operator { width:140px; }
.dashboard-table-field strong,.dashboard-table-field small { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dashboard-table-field small { margin-top:0; }
.dashboard-summary-secondary { color:var(--dashboard-muted); font-weight:400; }
.dashboard-summary-secondary code { font-weight:400; }
.dashboard-table-field--supplier { width:auto; min-width:0; }
.dashboard-table-field--supplier strong,.dashboard-table-field--supplier small { overflow:visible; text-overflow:clip; white-space:normal; overflow-wrap:anywhere; }
.dashboard-table-field--warehouse strong,.dashboard-table-field--boxes strong { white-space:normal; overflow-wrap:anywhere; }
.dashboard-table-field--result { justify-items:center; text-align:center; }
.dashboard-table-field--result .dashboard-status { justify-self:center; }
.dashboard-shipment-detail-row td { padding:0; background:#fbfcfe; }
.dashboard-shipment-details { padding:16px 20px 20px 58px; }
.dashboard-shipment-details__head { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:10px; }
.dashboard-shipment-details__head strong { margin-left:8px; font:700 14px ui-monospace,monospace; }
.dashboard-shipment-details__head > span { color:var(--dashboard-muted); font-size:12px; }
.dashboard-section-label { color:#526174; font-size:12px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.dashboard-box-list { display:grid; gap:7px; }
.dashboard-box-row { display:grid; grid-template-columns:28px minmax(400px,1.4fr) 80px minmax(80px,161px) minmax(120px,240px) 120px 160px 100px; align-items:stretch; gap:12px; min-height:70px; border:1px solid #e4eaf1; border-radius:8px; padding:10px 12px; background:#fff; color:var(--dashboard-ink); text-align:left; }
.dashboard-box-expand { display:grid; place-items:center; width:28px; height:28px; border:1px solid #b7cdfc; border-radius:6px; background:#edf4ff; color:var(--dashboard-accent); font-size:18px; cursor:pointer; }
.dashboard-box-row:hover,.dashboard-box-row:focus-within { border-color:#9dbcf7; background:#fafdff; }
.dashboard-box-field { display:grid; align-content:start; gap:5px; min-width:0; }
.dashboard-field-label { color:var(--dashboard-muted); font-size:12px; font-weight:600; line-height:1.2; }
.dashboard-box-field strong { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12px; line-height:20px; }
.dashboard-box-field--product strong { white-space:normal; overflow-wrap:anywhere; line-height:1.35; }
.dashboard-box-field--quantity { width:80px; }
.dashboard-box-field--product-image { width:auto; }
.dashboard-box-field--operator { width:120px; }
.dashboard-box-field--inspection-time { width:160px; }
.dashboard-box-field--state { width:100px; }
.dashboard-box-field--codes { width:400px; gap:4px; }
.dashboard-box-codes-inline { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; min-width:0; }
.dashboard-box-code { display:grid; gap:4px; min-width:0; }
.dashboard-box-field--state { display:grid; align-content:start; justify-items:center; gap:5px; text-align:center; }
.dashboard-box-field--state small { color:var(--dashboard-muted); font-size:12px; }
.dashboard-code-copy { display:inline-flex; align-items:center; gap:5px; width:fit-content; min-width:0; max-width:100%; min-height:20px; vertical-align:middle; }
.dashboard-code-copy code { min-width:0; flex:0 1 auto; overflow:visible; overflow-wrap:anywhere; text-overflow:clip; white-space:normal; font-size:12px; line-height:20px; }
.dashboard-code-copy .admin-copy { display:inline-grid; flex:0 0 20px; width:20px; height:20px; min-height:20px; place-items:center; padding:0; border:1px solid #dce5ef; border-radius:4px; color:#456687; background:#f7faff; cursor:pointer; line-height:1; }
.dashboard-code-copy .admin-copy:hover,.dashboard-code-copy .admin-copy:focus-visible { color:#1557d6; border-color:#a9c2e9; background:#edf4ff; outline:3px solid #bfd4f4; outline-offset:1px; }
.dashboard-code-copy .admin-copy svg { width:12px; height:12px; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:1.7; }
.dashboard-fnsku-tree { display:grid; gap:8px; margin:8px 0 0 40px; padding:10px 0 0 18px; border-left:1px solid #cbd9ea; }
.dashboard-fnsku-node { display:grid; gap:10px; border:1px solid #dfe7f0; border-radius:8px; padding:12px; background:#fff; }
.dashboard-fnsku-row { display:grid; grid-template-columns:120px 120px minmax(160px,1fr) minmax(120px,240px) minmax(120px,200px) minmax(80px,161px) 80px 80px 160px 80px; align-items:start; gap:12px; min-width:0; }
.dashboard-fnsku-field { display:grid; align-content:start; gap:5px; min-width:0; color:var(--dashboard-ink); font-size:12px; }
.dashboard-fnsku-field b { color:var(--dashboard-muted); font-size:12px; font-weight:600; line-height:1.2; }
.dashboard-fnsku-field > strong,.dashboard-fnsku-field > code { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12px; line-height:20px; }
.dashboard-fnsku-field--product strong { white-space:normal; overflow-wrap:anywhere; line-height:1.35; }
.dashboard-fnsku-field--fnsku,.dashboard-fnsku-field--scanned-fnsku { width:120px; }
.dashboard-fnsku-field--product,.dashboard-fnsku-field--photos { width:auto; }
.dashboard-fnsku-field--asin { width:auto; }
.dashboard-fnsku-field--sku { width:auto; }
.dashboard-fnsku-field--inner-scans { width:80px; }
.dashboard-fnsku-field--photos .dashboard-photo-group { min-height:42px; align-content:start; }
.dashboard-fnsku-field--operator { width:80px; }
.dashboard-fnsku-field--inspection-time { width:160px; }
.dashboard-fnsku-field--status { width:80px; justify-items:center; }
.dashboard-fnsku-field--status .dashboard-status { justify-self:center; }
.dashboard-fnsku-meta { display:flex; flex-wrap:wrap; gap:16px; margin-top:10px; padding-top:9px; border-top:1px solid #edf1f5; }
.dashboard-fnsku-meta .dashboard-fnsku-field { display:flex; align-items:center; gap:8px; }
.dashboard-fnsku-empty { margin:8px 0 0 40px; padding:16px; color:var(--dashboard-muted); font-size:12px; }
.dashboard-sort { display:inline-flex; align-items:center; gap:5px; border:0; padding:0; background:transparent; color:inherit; font:inherit; letter-spacing:inherit; text-transform:inherit; cursor:pointer; }
.dashboard-sort span { color:var(--dashboard-accent); font-size:15px; }
.dashboard-status { display:inline-flex; border-radius:99px; padding:4px 8px; font-size:12px; font-weight:800; white-space:nowrap; }
.dashboard-status--matched { background:#e7f7ee; color:#137a43; }
.dashboard-status--mismatch { background:#fff0ea; color:#bd4318; }
.dashboard-status--pending { background:#fff7d6; color:#906d00; }
.dashboard-status--in_progress { background:#e9f1ff; color:#1554b7; }
.dashboard-status--archived { background:#edf0f4; color:#657386; }
.dashboard-photo-group { display:flex; align-items:center; gap:5px; flex-wrap:wrap; }
.dashboard-product-image-group { display:flex; align-items:center; gap:5px; flex-wrap:wrap; min-height:42px; }
.dashboard-photo-fnsku-group { display:grid; gap:7px; padding:10px 0; border-top:1px solid #edf1f5; }
.dashboard-photo-fnsku-group:first-child { padding-top:0; border-top:0; }
.dashboard-photo-fnsku-group > strong { font:600 12px ui-monospace,monospace; }
.dashboard-photo-thumb { position:relative; width:42px; height:42px; overflow:hidden; border:1px solid #ccd6e2; border-radius:6px; padding:0; background:#edf2f7; cursor:zoom-in; }
.dashboard-photo-thumb img { width:100%; height:100%; object-fit:cover; }
.dashboard-product-thumb { width:42px; height:42px; }
.dashboard-photo-thumb.is-error { background:#fff0ea; }
.dashboard-photo-thumb.is-error::after { content:'加载失败'; position:absolute; inset:0; display:grid; place-items:center; background:rgba(255,240,234,.9); color:#bd4318; font-size:12px; }
.dashboard-photo-thumb span { position:absolute; right:2px; bottom:2px; border-radius:3px; padding:1px 3px; background:rgba(10,25,45,.72); color:#fff; font-size:12px; }
.dashboard-photo-group small { color:var(--dashboard-muted); white-space:nowrap; }
.dashboard-no-photo { color:#a2adba; font-size:12px; }
.dashboard-pagination { display:flex; justify-content:space-between; align-items:center; gap:14px; padding-top:12px; color:var(--dashboard-muted); font-size:12px; }
.dashboard-pagination div { display:flex; gap:7px; }
.dashboard-pagination-controls { align-items:center; flex-wrap:wrap; }
.dashboard-pagination-controls label { display:inline-flex; align-items:center; gap:5px; white-space:nowrap; }
.dashboard-pagination-controls select { min-height:36px; border:1px solid var(--dashboard-line); border-radius:6px; background:#fff; padding:7px 8px; color:var(--dashboard-ink); font:inherit; }
.dashboard-pagination button { min-height:36px; border:1px solid var(--dashboard-line); border-radius:6px; background:#fff; padding:7px 10px; color:var(--dashboard-ink); cursor:pointer; }
.dashboard-pagination button:disabled { cursor:not-allowed; opacity:.45; }
.dashboard-empty { display:grid; gap:5px; justify-items:center; padding:46px 16px; color:var(--dashboard-muted); }
.dashboard-empty--inline { padding:24px 16px; border:1px dashed var(--dashboard-line); border-radius:8px; background:#fff; }
.dashboard-empty strong { color:var(--dashboard-ink); }
.dashboard-mobile-list { display:none; }
.dashboard-lightbox { position:fixed; z-index:60; inset:0; display:grid; place-items:center; padding:24px; background:rgba(9,21,37,.76); }
.dashboard-lightbox-panel { position:relative; z-index:1; width:min(92vw,900px); padding:18px; border:1px solid rgba(255,255,255,.16); border-radius:12px; background:#122137; box-shadow:0 24px 70px rgba(0,0,0,.35); color:#fff; }
.dashboard-lightbox-stage { position:relative; display:flex; align-items:center; justify-content:center; min-height:min(70vh,640px); margin-top:12px; }
.dashboard-lightbox-stage img { max-width:100%; max-height:70vh; object-fit:contain; }
.dashboard-lightbox-hit { position:absolute; z-index:2; top:0; bottom:0; width:28%; border:0; background:transparent; color:#fff; font-size:48px; opacity:.35; cursor:pointer; }
.dashboard-lightbox-hit:hover:not(:disabled) { background:linear-gradient(90deg,rgba(0,0,0,.4),transparent); opacity:1; }
.dashboard-lightbox-hit:disabled { display:none; }
.dashboard-lightbox-hit--prev { left:0; text-align:left; }
.dashboard-lightbox-hit--next { right:0; text-align:right; }
.dashboard-lightbox .lookup-lightbox-head strong { color:#fff; }
@media (prefers-reduced-motion: reduce) { .dashboard-lightbox-hit { transition:none; } }

@media (max-width:760px) {
  .ops-app--dashboard .v1-main { padding:19px 14px 42px; }
  .dashboard-heading { align-items:flex-start; margin-bottom:16px; }
  .dashboard-heading h1 { font-size:30px; }
  .dashboard-heading p:not(.eyebrow) { max-width:290px; line-height:1.5; }
  .dashboard-refresh { padding:8px 10px; font-size:12px; }
  .dashboard-search { grid-template-columns:1fr; gap:8px; }
  .dashboard-search > .primary { width:100%; }
  .dashboard-search-input { min-height:49px; }
  .dashboard-search-input kbd { display:none; }
  .dashboard-quick-filters { margin-bottom:13px; gap:6px; }
  .dashboard-filter-chip { padding:7px 9px; }
  .dashboard-select-label,.dashboard-date-label { flex:1 1 140px; justify-content:space-between; }
  .dashboard-stats { grid-template-columns:repeat(2,1fr); }
  .dashboard-stats > div { min-height:62px; padding:11px 12px; }
  .dashboard-stats > div:last-child { grid-column:1/-1; }
  .dashboard-stats strong { margin-top:5px; font-size:20px; }
  .dashboard-table-wrap { display:none; }
  .dashboard-mobile-list { display:grid; gap:8px; }
  .dashboard-mobile-row { border:1px solid var(--dashboard-line); border-radius:9px; background:#fff; }
  .dashboard-mobile-row summary { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:13px; list-style:none; cursor:pointer; }
  .dashboard-mobile-row summary::-webkit-details-marker { display:none; }
  .dashboard-mobile-row summary::after { content:'＋'; color:#8290a0; font-size:17px; }
  .dashboard-mobile-row[open] summary::after { content:'－'; }
  .dashboard-mobile-row summary > span { min-width:0; }
  .dashboard-mobile-row summary strong,.dashboard-mobile-row summary small { display:block; }
  .dashboard-mobile-row summary strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font:600 12px ui-monospace,monospace; }
  .dashboard-mobile-row summary small { margin-top:4px; color:var(--dashboard-muted); font-size:12px; }
  .dashboard-shipment-codes { grid-template-columns:1fr; gap:5px; }
  .dashboard-shipment-code-field { grid-template-columns:92px minmax(0,1fr); align-items:center; gap:8px; }
  .dashboard-mobile-detail { display:grid; gap:14px; padding:0 13px 14px; border-top:1px solid #edf1f5; }
  .dashboard-mobile-detail dl { display:grid; gap:8px; margin:12px 0 0; }
.dashboard-mobile-detail dl div { display:flex; justify-content:space-between; gap:12px; font-size:12px; }
  .dashboard-mobile-detail dt { color:var(--dashboard-muted); }
  .dashboard-mobile-detail dd { max-width:65%; margin:0; text-align:right; }
  .dashboard-mobile-detail dd small { display:block; margin-top:3px; color:var(--dashboard-muted); }
.dashboard-mobile-label { display:block; margin-bottom:7px; color:var(--dashboard-muted); font-size:12px; }
  .dashboard-box-row { grid-template-columns:28px minmax(0,1fr); gap:8px; padding:9px 10px; }
  .dashboard-box-row > .dashboard-box-field { grid-column:2; }
  .dashboard-box-field--codes,.dashboard-box-field--quantity,.dashboard-box-field--product-image,.dashboard-box-field--product,.dashboard-box-field--operator,.dashboard-box-field--inspection-time,.dashboard-box-field--state { width:auto; }
  .dashboard-box-codes-inline { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
  .dashboard-box-field--state { grid-column:2; justify-items:center; text-align:center; }
  .dashboard-fnsku-tree { margin-left:8px; padding-left:10px; }
  .dashboard-fnsku-row { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  .dashboard-fnsku-field--fnsku,.dashboard-fnsku-field--scanned-fnsku,.dashboard-fnsku-field--product,.dashboard-fnsku-field--asin,.dashboard-fnsku-field--sku,.dashboard-fnsku-field--photos,.dashboard-fnsku-field--inner-scans,.dashboard-fnsku-field--operator,.dashboard-fnsku-field--inspection-time,.dashboard-fnsku-field--status { width:auto; min-width:0; }
  .dashboard-fnsku-field--photos { grid-column:1/-1; }
  .dashboard-fnsku-meta { margin-top:8px; }
  .dashboard-pagination { align-items:flex-start; flex-direction:column; }
  .dashboard-pagination-controls { width:100%; }
  .dashboard-pagination [data-dashboard-page="next"] { font-size:12px; color:transparent; }
  .dashboard-pagination [data-dashboard-page="next"]::after { content:'加载更多'; color:var(--dashboard-ink); font-size:12px; }
  .dashboard-lightbox { padding:10px; }
  .dashboard-lightbox-panel { width:100%; padding:12px; }
  .dashboard-lightbox-stage { min-height:60vh; }
}

/* Global code lookup: quiet information density, tuned for an iPhone 13 viewport. */
.ops-app--lookup { background:linear-gradient(135deg,#f8fbff 0%,#edf4ff 100%); }
.ops-app--lookup .site-footer { border-top-color:#d8e4f3; background:#fff; }
.lookup-page { position:relative; isolation:isolate; width:calc(100% + 28px); max-width:none; min-height:100%; margin:-18px -14px 0; padding:18px 14px 36px; overflow:hidden; background:transparent; }
.lookup-page::after { content:""; position:absolute; z-index:-1; right:-18px; bottom:-28px; width:165px; height:108px; opacity:.11; transform:rotate(-7deg); background:repeating-linear-gradient(90deg,#1d4ed8 0 2px,transparent 2px 7px,#1d4ed8 7px 8px,transparent 8px 13px); pointer-events:none; }
.lookup-page > * { position:relative; z-index:1; }
.lookup-search { display:grid; grid-template-columns:minmax(0,1fr) auto auto; gap:8px; margin:0; padding:9px; border:1px solid #d5dfeb; border-radius:16px; background:#fff; box-shadow:0 10px 25px rgba(32,65,112,.07); }
.lookup-input-wrap { display:flex; align-items:center; min-width:0; min-height:48px; border:1px solid #cbd8e8; border-radius:11px; background:#fbfdff; }
.lookup-input-wrap:focus-within { border-color:#6b9ce9; box-shadow:0 0 0 3px #2d6cdf18; }
.lookup-input-mark { width:33px; flex:none; color:#2865cc; font-size:22px; text-align:center; transform:rotate(-28deg); }
.lookup-input-wrap input { width:100%; min-width:0; min-height:46px; padding:10px 10px 10px 0; border:0; outline:0; background:transparent; color:#172b49; font:500 14px/1.3 DM Mono,monospace; }
.lookup-input-wrap input::placeholder { color:#91a2b8; font-family:Manrope,system-ui,sans-serif; }
.lookup-submit,.lookup-scan { min-height:48px; border:0; border-radius:11px; padding:0 15px; font-size:13px; font-weight:800; touch-action:manipulation; }
.lookup-submit { color:#fff; background:#1f5ed8; box-shadow:0 7px 16px #1f5ed83b; }
.lookup-submit:hover { background:#1647ae; }
.lookup-scan { grid-column:auto; display:flex; align-items:center; justify-content:center; gap:7px; color:#214771; border:1px solid #c8d9ed; background:#f1f6fc; }
.lookup-scan:hover { color:#1647ae; border-color:#8eb2e6; background:#e9f2ff; }
.lookup-submit:disabled,.lookup-scan:disabled { cursor:wait; opacity:.62; }
.lookup-scan span { color:#1f5ed8; font-size:20px; transform:rotate(-28deg); }
.lookup-result-stage { min-height:230px; }
.lookup-empty { display:grid; justify-items:center; padding:47px 24px 52px; border:1px dashed #cbd8e8; border-radius:18px; color:#70829a; background:#fafcff; text-align:center; }
.lookup-empty-mark { display:grid; width:49px; height:49px; place-items:center; margin-bottom:15px; border:1px solid #c2d5ee; border-radius:15px; color:#2865cc; background:#eef5ff; font-size:29px; transform:rotate(-12deg); }
.lookup-empty h2 { margin:0 0 7px; color:#304a6e; font-size:19px; }
.lookup-empty p { max-width:280px; margin:0; font-size:12px; line-height:1.65; }
.lookup-state { display:flex; align-items:flex-start; gap:12px; padding:17px; border:1px solid #dbe4ef; border-radius:16px; background:#fff; box-shadow:0 8px 20px rgba(32,65,112,.05); }
.lookup-state--empty { color:#71849d; }.lookup-state--warning { border-color:#ecd9af; color:#75551b; background:#fffaf0; }
.lookup-state-icon { display:grid; width:31px; height:31px; flex:none; place-items:center; border-radius:10px; color:#fff; background:#8ea0b5; font:800 16px/1 Manrope,sans-serif; }.lookup-state--warning .lookup-state-icon { background:#c38a2d; }
.lookup-state strong { display:block; margin:2px 0 4px; font-size:14px; }.lookup-state p { margin:0; font-size:12px; line-height:1.5; }
.lookup-result { padding:17px; border:1px solid #d8e2ee; border-radius:18px; background:#fff; box-shadow:0 10px 28px rgba(32,65,112,.07); }
.lookup-result-heading { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; margin-bottom:14px; }.lookup-result-heading h2 { margin:0; color:#172b49; font-size:21px; }.lookup-result-heading .eyebrow { margin-bottom:6px; color:#2865cc; font-size:10px; }
.lookup-status-pill { padding:5px 8px; border-radius:999px; color:#087a55; background:#e4f7ee; font-size:10px; font-weight:800; white-space:nowrap; }
.lookup-code-banner { display:flex; justify-content:space-between; align-items:center; gap:10px; min-width:0; margin-bottom:13px; padding:10px 11px; border-radius:10px; background:#f3f7fc; }.lookup-code-banner span { color:#73859d; font-size:10px; }.lookup-code-value { display:flex; align-items:center; justify-content:flex-end; gap:7px; min-width:0; }.lookup-code-banner code { min-width:0; color:#224b82; font:500 11px/1.35 DM Mono,monospace; overflow-wrap:anywhere; text-align:right; }
.lookup-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; margin-bottom:12px; }.lookup-metric { min-width:0; padding:11px 10px; border:1px solid #dce6f2; border-radius:11px; background:#fbfdff; }.lookup-metric span { display:block; margin-bottom:6px; color:#75879e; font-size:10px; }.lookup-metric strong { display:block; color:#1a365d; font-size:16px; overflow-wrap:anywhere; }.lookup-metric strong.is-pending { color:#a47522; font-size:13px; }
.lookup-detail-stack { display:grid; gap:8px; }.lookup-fields-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }.lookup-fields-grid--primary .lookup-field { padding:12px; }.lookup-fields-grid--primary .lookup-field span { font-size:10px; }.lookup-fields-grid--primary .lookup-field strong { color:#173b6d; font-size:14px; line-height:1.35; }.lookup-field { min-width:0; padding:10px 11px; border:1px solid #e0e7f0; border-radius:10px; background:#fff; }.lookup-field span { display:block; margin-bottom:5px; color:#7b8ca2; font-size:10px; }.lookup-field-value { display:flex; align-items:center; gap:6px; min-width:0; }.lookup-field-value strong { min-width:0; flex:1; display:block; color:#253e61; font-size:12px; overflow-wrap:anywhere; }.lookup-field--pending strong { color:#a47522; }.lookup-copy { display:grid; width:29px; height:29px; min-width:29px; flex:none; place-items:center; padding:0; border:1px solid #d3dfed; border-radius:8px; color:#52739d; background:#f5f8fc; }.lookup-copy:hover { color:#1f5ed8; border-color:#8eb2e6; background:#eaf2ff; }.lookup-copy svg { width:15px; height:15px; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:1.7; }.lookup-divider { height:1px; margin:15px 0; background:#e8edf4; }.lookup-section-label { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:9px; color:#536b89; font-size:11px; font-weight:800; letter-spacing:.03em; }.lookup-section-label strong { color:#8798ad; font:500 10px DM Mono,monospace; }
.lookup-products { display:grid; gap:9px; }.lookup-product-card { display:grid; grid-template-columns:78px minmax(0,1fr); gap:12px; min-width:0; padding:10px; border:1px solid #dfe7f0; border-radius:13px; background:#fbfdff; }.lookup-product-media { min-width:0; }.lookup-product-image { position:relative; display:block; width:78px; height:78px; min-height:78px; padding:0; overflow:hidden; border:0; border-radius:10px; background:#eaf0f7; color:#607590; text-align:center; }.lookup-product-image img { display:block; width:100%; height:100%; object-fit:cover; }.lookup-product-image span { position:absolute; right:4px; bottom:4px; left:4px; padding:4px 3px; border-radius:5px; color:#fff; background:#14213acc; font-size:9px; line-height:1.2; }.lookup-product-image span b { color:#a9d0ff; }.lookup-product-image--empty { display:grid; place-items:center; border:1px dashed #cbd8e8; background:#f4f7fb; font-size:10px; }.lookup-product-body { min-width:0; }.lookup-product-title span { display:block; margin-bottom:4px; color:#8b9bb0; font:500 9px/1 DM Mono,monospace; }.lookup-product-title h3 { margin:0 0 9px; color:#1c3557; font-size:14px; line-height:1.35; overflow-wrap:anywhere; }.lookup-product-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; }.lookup-product-grid .lookup-field { padding:7px 8px; background:#fff; }.lookup-product-grid .lookup-field span { margin-bottom:3px; }.lookup-product-grid .lookup-field strong { font-size:11px; }.lookup-product-supplier { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; margin-top:7px; padding-top:7px; border-top:1px solid #e8edf4; }.lookup-product-supplier span { color:#7b8ca2; font-size:10px; }.lookup-product-supplier strong { color:#36577e; font-size:10px; line-height:1.4; text-align:right; overflow-wrap:anywhere; }.lookup-empty-inline { padding:15px; border:1px dashed #d2dce9; border-radius:11px; color:#8494a8; font-size:12px; text-align:center; }.lookup-meta-row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin-top:9px; }
.lookup-clear { display:block; min-height:40px; margin:12px auto 0; padding:0 13px; border:1px solid #d3deeb; border-radius:10px; color:#637895; background:transparent; font-size:11px; }.lookup-clear:hover { color:#1f5ed8; background:#f1f6fc; }.lookup-loading { display:grid; justify-items:center; gap:8px; padding:58px 18px; border:1px solid #d8e2ee; border-radius:18px; color:#4f6888; background:#fff; }.lookup-loading strong { font-size:13px; }.lookup-loading small { color:#8998ab; font-size:10px; }.lookup-spinner { width:25px; height:25px; border:3px solid #d9e6f7; border-top-color:#1f5ed8; border-radius:50%; animation:lookup-spin .8s linear infinite; }@keyframes lookup-spin { to { transform:rotate(360deg); } }
.lookup-lightbox { position:fixed; z-index:60; inset:0; display:grid; place-items:center; padding:14px; padding-top:calc(14px + env(safe-area-inset-top)); padding-bottom:calc(14px + env(safe-area-inset-bottom)); }.lookup-lightbox-backdrop { position:absolute; inset:0; border:0; background:rgba(8,17,32,.84); }.lookup-lightbox-panel { position:relative; display:flex; flex-direction:column; width:min(100%,620px); max-height:100%; overflow:hidden; border-radius:18px; background:#fff; box-shadow:0 20px 60px #0005; }.lookup-lightbox-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; padding:14px 15px 12px; }.lookup-lightbox-head .eyebrow { margin-bottom:5px; color:#2865cc; }.lookup-lightbox-head strong { display:block; color:#1c3557; font-size:14px; overflow-wrap:anywhere; }.lookup-lightbox-close { width:42px; height:42px; min-height:42px; flex:none; border:0; border-radius:50%; color:#526b8b; background:#f0f4f8; font-size:25px; line-height:1; }.lookup-lightbox-panel > img { display:block; width:100%; height:auto; max-height:calc(100dvh - 170px); min-height:120px; object-fit:contain; background:#111b2c; }.lookup-lightbox-actions { display:flex; gap:8px; padding:10px 15px 14px; }.lookup-lightbox-actions button { flex:1; min-height:42px; border:1px solid #cddbeb; border-radius:10px; color:#214771; background:#f5f8fc; font-size:12px; font-weight:750; }.lookup-lightbox-actions button:disabled { cursor:default; opacity:.4; }
@media (min-width:560px) { .lookup-search { grid-template-columns:minmax(0,1fr) auto auto; }.lookup-scan { grid-column:auto; }.lookup-page { padding-inline:2px; }.lookup-result { padding:21px; }.lookup-product-card { grid-template-columns:92px minmax(0,1fr); }.lookup-product-image { width:92px; height:92px; min-height:92px; } }
@media (max-width:380px) { .lookup-result { padding:14px; }.lookup-meta-row { grid-template-columns:1fr; }.lookup-product-card { grid-template-columns:66px minmax(0,1fr); gap:9px; }.lookup-product-image { width:66px; height:66px; min-height:66px; }.lookup-product-grid { grid-template-columns:1fr; } }
@media (prefers-reduced-motion:reduce) { .lookup-spinner { animation:none; } }

.lookup-link,.lookup-copy { display:grid; width:20px; height:20px; min-width:20px; min-height:20px; flex:none; place-items:center; padding:0; border:1px solid #d3dfed; border-radius:6px; color:#52739d; background:#f5f8fc; }.lookup-link { text-decoration:none; }.lookup-link:hover,.lookup-link:focus-visible,.lookup-copy:hover { color:#1f5ed8; border-color:#8eb2e6; background:#eaf2ff; }.lookup-link:focus-visible,.lookup-copy:focus-visible { outline:2px solid #2d6cdf66; outline-offset:2px; }.lookup-link svg,.lookup-copy svg { width:13px; height:13px; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:1.7; }

.lookup-product-grid .lookup-field-value { align-items:flex-start; }
.lookup-product-grid .lookup-copy { width:24px; height:24px; min-width:24px; border-radius:6px; }
.lookup-product-grid .lookup-copy svg { width:13px; height:13px; }
.lookup-field-value--list { display:grid; gap:4px; }
.lookup-field-item { display:flex; align-items:flex-start; gap:6px; min-width:0; }
@media (min-width:560px) { .lookup-fields-grid--primary { grid-template-columns:repeat(3,minmax(0,1fr)); } }
.lookup-copy { width:20px; height:20px; min-width:20px; border-radius:6px; }
.lookup-copy svg { width:13px; height:13px; }
.lookup-product-grid .lookup-field strong { font-size:16px; line-height:1.25; }
.lookup-product-grid .lookup-copy { width:20px; height:20px; min-width:20px; }
.ops-app .lookup-copy { min-height:20px; }
.lookup-field-item { flex:1 1 auto; flex-wrap:nowrap; }
.lookup-field-item .lookup-copy { flex:0 0 20px; }
.lookup-field .lookup-field-item { display:flex; align-items:flex-start; gap:6px; min-width:0; margin:0; flex:1 1 auto; flex-wrap:nowrap; }
.lookup-field .lookup-field-item .lookup-copy { flex:0 0 20px; }
.lookup-product-grid .lookup-field .lookup-field-item { margin-bottom:0; }
.lookup-product-title { margin-top:8px; }
.lookup-product-title h3 { margin:0; font-size:13px; }
.lookup-fields-grid--outer { grid-template-columns:repeat(2,minmax(0,1fr)); margin-bottom:8px; }
@media (max-width:559px) { .lookup-fields-grid--outer { grid-template-columns:1fr; } }
@media (max-width:559px) { .lookup-product-grid { grid-template-columns:1fr; } }

@media (max-width:480px) {
  .v1-main--admin .admin-credential-result__control { flex-direction:column; }
  .v1-main--admin .admin-credential-result__control .admin-primary { width:100%; }
}

/* Compact admin records: keep actions in one scannable horizontal rail. */
.v1-main--admin .admin-id-line { color:#8493a5; font-size:10px; line-height:25px; white-space:nowrap; }
.v1-main--admin .admin-id-line .admin-copy { margin-left:1px; }
.v1-main--admin .admin-record-main { display:flex; flex-wrap:wrap; align-items:center; gap:4px 8px; }
.v1-main--admin .admin-record-main > .admin-record-meta { flex-basis:100%; }
.v1-main--admin .admin-id-line { display:contents; font-size:0; }
.v1-main--admin .admin-id-actions { display:inline-flex; align-items:center; gap:4px; }
.v1-main--admin .admin-record-heading { display:flex; align-items:center; gap:7px; min-width:0; }
.v1-main--admin .admin-record-heading strong { min-width:0; }
.v1-main--admin .admin-row-actions { display:flex; flex-wrap:nowrap; max-width:100%; overflow-x:auto; scrollbar-width:none; }
.v1-main--admin .admin-row-actions::-webkit-scrollbar { display:none; }
.v1-main--admin .admin-row-actions button { flex:0 0 auto; }
.v1-main--admin .admin-list-row > .admin-record-main { min-width:0; }
@media (max-width:760px) {
  .v1-main--admin .admin-list-row { grid-template-columns:minmax(0,1fr) auto; align-items:center; min-height:0; }
  .v1-main--admin .admin-list-row .admin-record-main { grid-column:1; grid-row:1; }
  .v1-main--admin .admin-list-row > .admin-status { grid-column:2; grid-row:1; align-self:start; min-width:0; white-space:nowrap; }
  .v1-main--admin .admin-list-row > label { grid-column:1/-1; grid-row:2; }
  .v1-main--admin .admin-list-row > .admin-danger { grid-column:2; grid-row:1; align-self:start; }
  .v1-main--admin .admin-row-actions { grid-column:1/-1; grid-row:2; width:100%; padding-top:2px; }
  .v1-main--admin .admin-list-row:has(.admin-row-actions) > .admin-status { grid-column:1/-1; grid-row:2; justify-content:flex-start; }
  .v1-main--admin .admin-list-row:has(.admin-row-actions) > .admin-row-actions { grid-row:3; }
  .v1-main--admin .admin-list-row:has(.admin-row-actions) { padding-block:13px; }
  .v1-main--admin .admin-id-line { line-height:23px; }
  .v1-main--admin .admin-copy { width:23px; height:23px; }
}
