:root{font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;font-synthesis:none;color:#1d2c2b;background:#f5f5f2;line-height:1.6;--primary:#146b61;--muted:#5c6966;--border:#dce3df}*{box-sizing:border-box}body{margin:0}header{background:#fff;border-bottom:1px solid var(--border)}nav{max-width:1120px;margin:auto;padding:18px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{font-size:18px;font-weight:650;color:#1d2c2b;text-decoration:none}.nav-links{display:flex;gap:8px;align-items:center;font-size:14px}.nav-links a,.nav-links span{min-height:44px;display:inline-flex;align-items:center;padding:9px 12px;border-radius:10px;text-decoration:none}.nav-links a{color:var(--muted)}.nav-links a:hover{background:#edf2ef;color:var(--primary)}.nav-links span{background:#e9f1ec;color:var(--primary)}main{max-width:1120px;margin:auto;padding:40px 24px 48px}.page-heading{margin-bottom:28px}.page-heading h1{font-size:30px;line-height:1.3;letter-spacing:-.025em;margin:0 0 10px}.page-heading p{margin:0;color:var(--muted);font-size:15px}.workbench{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"lookup result" "notice result" "scanner result" "manual result";gap:0 24px;align-items:start}.capture{min-width:0;grid-column:1;grid-row:1/5}.scan-card{grid-area:scanner}.manual-card{grid-area:manual}.card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:24px;min-width:0}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}h2{font-size:18px;margin:0;font-weight:650}.subtle{font-size:13px;color:var(--muted)}.scanner{display:grid;place-items:center;aspect-ratio:4/3;width:100%;border:1px solid #d8e2da;border-radius:10px;background:#f0f4f0;overflow:hidden}#cameraPlaceholder{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;padding:24px;color:var(--primary)}#cameraPlaceholder strong{font-size:16px;font-weight:600;color:#344c41}#cameraPlaceholder span{color:var(--muted);font-size:13px}video{display:block;width:100%;height:100%;object-fit:cover;background:#1d2c2b}.buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}button,.file{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:46px;border:1px solid var(--primary);border-radius:10px;padding:11px 14px;font:inherit;font-size:14px;font-weight:550;line-height:1.4;background:var(--primary);color:#fff;cursor:pointer;transition:background .15s,border-color .15s}button:hover{background:#0d574f;border-color:#0d574f}.file{color:#24483e;background:#fff;border-color:var(--border);overflow:hidden}.file:hover{background:#edf2ef;border-color:#aebeb6}.file input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}.gray{background:transparent;color:var(--muted);border-color:transparent;min-height:44px;padding:8px 10px}.gray:hover{background:#edf2ef;color:var(--primary);border-color:transparent}button:disabled{opacity:.55;cursor:not-allowed}.camera-state{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:8px}#status{color:var(--muted);font-size:13px;overflow-wrap:anywhere}.muted{font-size:13px;color:var(--muted);line-height:1.7;margin:12px 0 0}button:focus-visible,a:focus-visible,summary:focus-visible,.file:focus-within{outline:3px solid var(--primary);outline-offset:4px}.manual-card{margin-top:16px;border:1px solid var(--border);border-radius:12px;background:#fff}.manual-card summary{padding:16px 20px;cursor:pointer;font-size:14px;font-weight:600}.manual-content{padding:0 20px 20px}.manual-content>label{display:block;font-size:14px;margin-bottom:8px}.manual{display:flex;gap:10px}.manual input{flex:1;min-width:0;width:100%;min-height:46px;font:inherit;font-size:16px;padding:11px 12px;border:1px solid var(--border);border-radius:10px;background:#fff;color:#1d2c2b}.manual input::placeholder{color:#5c6966}.manual input:focus{outline:3px solid #146b612b;border-color:var(--primary)}.manual button{flex-shrink:0}#notice{grid-area:notice;font-size:14px;color:#9c3030;overflow-wrap:anywhere}#notice:empty{display:none}#notice:not(:empty){margin:0 0 16px;padding:12px 16px;background:#fff;border:1px solid var(--border);border-radius:10px}#notice.ok{color:#146b61}.result-card{grid-area:result;position:sticky;top:24px}#empty{text-align:center;padding:40px 4px 44px}.empty-code{font-size:26px;letter-spacing:3px;font-weight:500;color:#879a8c;margin-bottom:24px}#empty strong{font-size:16px;font-weight:600}#empty p{font-size:14px;color:var(--muted);line-height:1.9;margin:10px 0 0}.result-note{border-top:1px solid var(--border);padding-top:18px;font-size:13px;color:var(--muted)}.result-note strong{color:#405c4c;font-weight:550}.result-note p{margin:6px 0 0;line-height:1.8}.table-scroll{overflow-x:auto;margin-bottom:24px}table{width:100%;border-collapse:collapse}thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}tbody{display:block}tr{display:grid;grid-template-columns:1fr 1fr;gap:20px 12px}td{display:block;padding:0;min-width:0;font-size:14px;font-variant-numeric:tabular-nums}td:first-child{grid-column:1/-1;color:var(--muted);font-size:13px}.code{grid-column:1/-1;font-family:ui-monospace,"SFMono-Regular",Consolas,monospace;font-size:clamp(32px,4.5vw,42px);font-weight:650;letter-spacing:.1em;line-height:1.3;color:var(--primary);padding:4px 0 10px;overflow-wrap:anywhere}td:nth-child(3):before,td:nth-child(4):before{display:block;font-size:13px;color:var(--muted);margin-bottom:5px}td:nth-child(3):before{content:"下次更新"}td:nth-child(4):before{content:"自动隐藏"}td:last-child{grid-column:1/-1;border-top:1px solid var(--border);padding-top:16px}.danger{background:#fff;border-color:#e5caca;color:#9c3030;min-height:44px;padding:9px 14px}.danger:hover{background:#fceeee;border-color:#d7aaaa}footer{font-size:13px;color:var(--muted);margin-top:28px;padding-top:18px;border-top:1px solid var(--border)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}[hidden]{display:none!important}
.scan-card .section-heading{flex-wrap:wrap;row-gap:8px}.saved-count{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;max-width:100%;color:var(--primary)}.saved-count[data-state="error"]{color:#8a6225}
.lookup-card{grid-area:lookup;margin-bottom:20px}.lookup-card form>label{display:block;font-size:14px;font-weight:600;margin:16px 0 8px}.optional{margin-left:6px;font-weight:400;font-size:12px;color:var(--muted)}.lookup-card input{width:100%;min-width:0;min-height:46px;padding:11px 12px;border:1px solid var(--border);border-radius:10px;font:inherit;font-size:16px;background:#fff;color:#1d2c2b}.lookup-card input::placeholder{color:var(--muted)}.lookup-card input:focus{outline:3px solid #146b612b;border-color:var(--primary)}.lookup-card input:disabled{background:#f5f5f2;color:var(--muted)}.lookup-controls{display:flex;gap:10px}.lookup-controls input{flex:1}.lookup-controls button{flex-shrink:0}.lookup-card .muted{margin-top:16px}#lookupFeedback{font-size:14px;color:#9c3030;overflow-wrap:anywhere;margin:0}#lookupFeedback:not(:empty){margin-top:16px}#lookupFeedback.ok{color:var(--primary)}
@media(max-width:760px){nav{padding:14px 16px;gap:10px;flex-wrap:wrap}.brand{font-size:17px}.nav-links{margin-left:auto}.nav-links a,.nav-links span{padding:9px 10px}main{padding:30px 16px 36px}.page-heading h1{font-size:26px}.page-heading{margin-bottom:22px}.workbench{display:flex;flex-direction:column;gap:20px;align-items:stretch}.workbench>.card,.workbench>.manual-card{width:100%}.capture{display:contents}.lookup-card,.manual-card{margin:0}#notice:not(:empty){margin:0}.card{padding:20px}.result-card{position:static}.scanner{aspect-ratio:16/10}.code{font-size:38px}#empty{padding:26px 4px 32px}.section-heading{margin-bottom:18px}footer{line-height:1.8}}
@media(max-width:380px){.nav-links{width:100%;margin-left:0;justify-content:flex-end}.card{padding:16px}.buttons{gap:8px}.buttons button,.file{padding:11px 8px;font-size:13px}.manual,.lookup-controls{flex-direction:column}.manual button,.lookup-controls button{width:100%}.subtle{font-size:12px}.code{font-size:32px}.camera-state{align-items:flex-start}#status{padding-top:10px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
