:root{--brand-color:#1890ff}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-size:16px}body{color:#333;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:1.5}.app-container{background-color:#f9fafb;min-height:100vh;padding-bottom:2rem}.loading-container{justify-content:center;align-items:center;min-height:100vh;display:flex}.loading-spinner{border:3px solid #e5e7eb;border-top-color:var(--brand-color);border-radius:50%;width:32px;height:32px;margin:0 auto 12px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{color:#9ca3af;text-align:center;font-size:.875rem}.error-container{justify-content:center;align-items:center;min-height:100vh;padding:0 1.5rem;display:flex}.error-content{text-align:center}.error-title{color:#ef4444;margin-bottom:.5rem;font-size:1.125rem}.error-message{color:#9ca3af;font-size:.875rem}.not-found{color:#9ca3af;justify-content:center;align-items:center;min-height:100vh;font-size:1rem;display:flex}.status-banner{text-align:center;padding:.75rem 1rem}.status-banner--recall{color:#fff;background-color:#ef4444}.status-banner--invalid{color:#fff;background-color:#6b7280}.status-banner--expired{color:#fff;background-color:#eab308}.status-banner__title{font-size:.875rem;font-weight:600}.status-banner__reason{opacity:.9;margin-top:.125rem;font-size:.75rem}.brand-header{background-color:#fff;border-bottom:1px solid #f3f4f6;align-items:center;gap:.75rem;padding:1.25rem 1rem;display:flex}.brand-logo{object-fit:cover;border-radius:.5rem;flex-shrink:0;width:2.5rem;height:2.5rem}.brand-logo-placeholder{color:#fff;border-radius:.5rem;flex-shrink:0;justify-content:center;align-items:center;width:2.5rem;height:2.5rem;font-size:1.125rem;font-weight:700;display:flex}.brand-name{color:#1f2937;font-size:1rem;font-weight:600}.product-section{background-color:#fff;padding:1rem}.product-section--top{padding-top:1rem;padding-bottom:.75rem}.product-section--params,.product-section--anti-fake{margin-top:.5rem;padding:1rem}.product-section--scan-count{margin-top:.5rem;padding:.75rem 1rem}.product-name{color:#111827;margin-bottom:.25rem;font-size:1.125rem;font-weight:700}.product-code{color:#9ca3af;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.75rem}.section-title{color:#374151;margin-bottom:.75rem;font-size:.875rem;font-weight:600}.no-params{color:#9ca3af;font-size:.875rem}.param-list{flex-direction:column;gap:.75rem;display:flex}.param-row{align-items:flex-start;display:flex}.param-label{color:#9ca3af;flex-shrink:0;width:6rem;font-size:.875rem}.param-value{color:#1f2937;flex:1;font-size:.875rem}.param-value--empty{color:#d1d5db}.param-value--image{object-fit:cover;border:1px solid #f3f4f6;border-radius:.25rem;width:4rem;height:4rem}.param-value--file{color:var(--brand-color);font-size:.875rem;text-decoration:underline}.param-value--unit{color:#9ca3af;margin-left:.25rem}.anti-fake-badge{border-radius:9999px;align-items:center;gap:.5rem;padding:.5rem 1rem;display:inline-flex}.anti-fake-badge--first{background-color:#f0fdf4}.anti-fake-badge--repeat{background-color:#fefce8}.anti-fake-badge--suspected{background-color:#fef2f2}.anti-fake-badge__icon{border-style:solid;border-width:2px;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:1.25rem;height:1.25rem;font-size:.75rem;font-weight:700;display:flex}.anti-fake-badge__icon--first{color:#16a34a;border-color:#16a34a}.anti-fake-badge__icon--repeat{color:#ca8a04;border-color:#ca8a04}.anti-fake-badge__icon--suspected{color:#dc2626;border-color:#dc2626}.anti-fake-badge__label{font-size:.875rem;font-weight:600}.anti-fake-badge__label--first{color:#16a34a}.anti-fake-badge__label--repeat{color:#ca8a04}.anti-fake-badge__label--suspected{color:#dc2626}.anti-fake-hint{margin-top:.5rem;font-size:.75rem}.anti-fake-hint--repeat{color:#9ca3af}.anti-fake-hint--suspected{color:#f87171}.scan-count-row{justify-content:space-between;align-items:center;display:flex}.scan-count-label{color:#9ca3af;font-size:.875rem}.scan-count-value{color:#1f2937;font-weight:600}.follow-section{margin-top:1rem;padding:0 1rem}.follow-btn{color:#fff;cursor:pointer;background-color:var(--brand-color);-webkit-tap-highlight-color:transparent;border:none;border-radius:.5rem;outline:none;width:100%;padding:.75rem;font-size:1rem;font-weight:600}.follow-btn:active{opacity:.85}.footer{text-align:center;color:#d1d5db;margin-top:2rem;padding:0 1rem;font-size:.75rem}.trace-timeline-placeholder{color:#9ca3af;text-align:center;padding:1rem 0;font-size:.875rem}
