/* 简约响应式 · 默认移动端优先 */ :root { --bg: #f6f7f8; --surface: #ffffff; --text: #1c1917; --muted: #78716c; --border: #e7e5e4; --accent: #0d9488; --accent-hover: #0f766e; --accent-muted: #ccfbf1; --danger-bg: #fef2f2; --danger-text: #991b1b; --success-bg: #ecfdf5; --success-text: #065f46; --info-bg: #eff6ff; --info-text: #1e40af; --header-bg: #115e59; --header-text: #ecfdf5; --radius: 8px; --shadow: 0 1px 2px rgba(28, 25, 23, 0.06); --font: system-ui, -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; } *, *::before, *::after { box-sizing: border-box; } html { -webkit-text-size-adjust: 100%; } body { margin: 0; font-family: var(--font); font-size: 1rem; line-height: 1.55; color: var(--text); background: var(--bg); } .wrap { width: 100%; max-width: 72rem; margin: 0 auto; padding: 0 1rem; } /* —— Header —— */ .site-header { background: var(--header-bg); color: var(--header-text); padding: 0.65rem 0; position: sticky; top: 0; z-index: 50; box-shadow: 0 1px 0 rgba(0,0,0,0.12); } .header-inner { display: flex; flex-direction: column; gap: 0.5rem; } .brand-row { display: flex; align-items: center; justify-content: space-between; } .site-title { font-size: 1.05rem; font-weight: 600; letter-spacing: -0.02em; } .site-header a { color: rgba(236, 253, 252, 0.88); text-decoration: none; } .site-header a:hover { color: #fff; } .site-title a { color: #fff; } .nav-block { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem 0.65rem; font-size: 0.8125rem; } .nav-primary { padding-bottom: 0.35rem; border-bottom: 1px solid rgba(255,255,255,0.12); } .nav-reports { padding-top: 0.15rem; } .nav-reports-label { color: rgba(236, 253, 252, 0.55); font-size: 0.75rem; margin-right: 0.25rem; text-transform: uppercase; letter-spacing: 0.06em; } .nav-em, .nav-highlight { font-weight: 600; color: #fde68a !important; } .main-content { padding-top: 1.25rem; padding-bottom: 2.5rem; } @media (min-width: 640px) { .nav-block { font-size: 0.875rem; gap: 0.5rem 1rem; } .site-title { font-size: 1.15rem; } } /* —— Typography —— */ h1 { font-size: clamp(1.25rem, 4vw, 1.5rem); font-weight: 600; margin: 0 0 0.75rem; letter-spacing: -0.02em; } h2 { font-size: 1.05rem; font-weight: 600; margin: 1.5rem 0 0.65rem; padding-bottom: 0.35rem; border-bottom: 1px solid var(--border); } h3 { font-size: 0.95rem; font-weight: 600; margin: 0 0 0.5rem; color: var(--header-bg); } .filter-card-title { font-size: 1rem; margin: 0 0 0.75rem; padding: 0; border: none; } .muted { color: var(--muted); font-size: 0.9rem; } .home-steps { margin: 0; padding-left: 1.25rem; line-height: 1.75; } .home-steps a { color: var(--accent); text-decoration: none; font-weight: 500; } .home-steps a:hover { text-decoration: underline; } /* —— Cards & forms —— */ .card, form.card { background: var(--surface); padding: 1rem 1.15rem; margin-bottom: 1.25rem; border-radius: var(--radius); box-shadow: var(--shadow); border: 1px solid var(--border); } .filter-card .row { margin-bottom: 0.25rem; } .filter-actions { display: flex; align-items: flex-end; } .filter-actions-label { visibility: hidden; } label { display: block; margin: 0.4rem 0 0.2rem; font-weight: 500; font-size: 0.875rem; color: #44403c; } input[type="text"], input[type="number"], input[type="date"], input[type="search"], select, textarea { width: 100%; max-width: 100%; padding: 0.5rem 0.65rem; border: 1px solid var(--border); border-radius: 6px; font-size: 1rem; font-family: inherit; background: var(--surface); } textarea { min-height: 5rem; resize: vertical; } .row { display: flex; flex-wrap: wrap; gap: 0.75rem 1rem; } .row > div { flex: 1 1 12rem; min-width: 0; } /* —— Buttons —— */ .btn { display: inline-block; padding: 0.5rem 1rem; background: var(--accent); color: #fff !important; border: none; border-radius: 6px; cursor: pointer; font-size: 0.9375rem; font-family: inherit; font-weight: 500; text-decoration: none; line-height: 1.3; } .btn:hover { background: var(--accent-hover); } .btn-secondary { background: #57534e; } .btn-secondary:hover { background: #44403c; } /* —— Tables(横向滚动) —— */ .table-wrap { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 0 -0.25rem; padding: 0 0.25rem; } table { width: 100%; min-width: 36rem; border-collapse: collapse; background: var(--surface); font-size: 0.8125rem; border: 1px solid var(--border); border-radius: 6px; overflow: hidden; } th, td { border-bottom: 1px solid var(--border); padding: 0.5rem 0.6rem; text-align: left; vertical-align: top; } th { background: #f5f5f4; font-weight: 600; color: #44403c; white-space: nowrap; } tr:last-child td { border-bottom: none; } tbody tr:nth-child(even) { background: #fafaf9; } @media (min-width: 768px) { table { font-size: 0.875rem; min-width: 0; } } /* —— Flash —— */ .flash { padding: 0.65rem 1rem; border-radius: var(--radius); margin-bottom: 1rem; font-size: 0.9rem; } .flash-success { background: var(--success-bg); color: var(--success-text); } .flash-error { background: var(--danger-bg); color: var(--danger-text); } .flash-info { background: var(--info-bg); color: var(--info-text); } small.hint { color: var(--muted); display: block; margin-top: 0.2rem; font-size: 0.8rem; } /* —— Trace & misc —— */ .trace-section { margin-bottom: 1rem; } .trace-section.card table { min-width: 0; } .repack-panel { margin-top: 1rem !important; padding: 1rem !important; background: #f5f5f4; border: 1px dashed var(--border); border-radius: var(--radius); } .site-footer { padding: 1rem 0 1.5rem; color: var(--muted); font-size: 0.8rem; } .site-footer code { font-size: 0.75rem; background: #e7e5e4; padding: 0.1rem 0.35rem; border-radius: 4px; } .inline-form { display: inline; } .form-inline-kv { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem; } .input-narrow { width: 5.5rem !important; max-width: 6rem !important; } .inbound-lines input[type="text"], .inbound-lines input[type="number"] { max-width: none; } .sales-stock-panel { margin-top: 0.75rem; } .sales-stock-panel table { min-width: 32rem; font-size: 0.8rem; margin-top: 0.35rem; } .batch-detail-wrap { padding: 0 !important; vertical-align: top; } .batch-details { padding: 0.5rem 0.65rem; } .batch-details > summary { cursor: pointer; font-weight: 500; } .batch-details-inner { margin-top: 0.65rem; padding-left: 0.5rem; border-left: 3px solid var(--border); } .batch-details-inner table { font-size: 0.85rem; box-shadow: none; } /* ========== 查询 / 统计 / 追溯 专题样式 ========== */ .page-report { --report-accent: #0d9488; --report-accent-dark: #0f766e; --report-tint: #ecfdf5; --report-tint2: #ccfbf1; --report-glow: rgba(13, 148, 136, 0.12); } .page-report--raw { --report-accent: #059669; --report-accent-dark: #047857; --report-tint: #ecfdf5; --report-tint2: #d1fae5; --report-glow: rgba(5, 150, 105, 0.14); } .page-report--production { --report-accent: #2563eb; --report-accent-dark: #1d4ed8; --report-tint: #eff6ff; --report-tint2: #dbeafe; --report-glow: rgba(37, 99, 235, 0.12); } .page-report--finished { --report-accent: #7c3aed; --report-accent-dark: #6d28d9; --report-tint: #f5f3ff; --report-tint2: #ede9fe; --report-glow: rgba(124, 58, 237, 0.12); } .page-report--sales { --report-accent: #d97706; --report-accent-dark: #b45309; --report-tint: #fffbeb; --report-tint2: #fef3c7; --report-glow: rgba(217, 119, 6, 0.14); } .page-report--small { --report-accent: #0891b2; --report-accent-dark: #0e7490; --report-tint: #ecfeff; --report-tint2: #cffafe; --report-glow: rgba(8, 145, 178, 0.12); } .page-report--sp-out { --report-accent: #e11d48; --report-accent-dark: #be123c; --report-tint: #fff1f2; --report-tint2: #ffe4e6; --report-glow: rgba(225, 29, 72, 0.12); } .page-report--trace { --report-accent: #0f766e; --report-accent-dark: #115e59; --report-tint: #f0fdfa; --report-tint2: #ccfbf1; --report-glow: rgba(15, 118, 110, 0.15); } .page-report .report-page-header { position: relative; padding: 1.35rem 1.35rem 1.15rem; margin: 0 0 1.35rem; border-radius: 12px; background: linear-gradient( 145deg, var(--report-tint2) 0%, #fff 42%, var(--report-tint) 100% ); border: 1px solid rgba(0, 0, 0, 0.06); box-shadow: 0 4px 24px var(--report-glow), 0 1px 0 rgba(255, 255, 255, 0.8) inset; overflow: hidden; } .page-report .report-page-header::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient( 90deg, var(--report-accent), var(--report-tint2), var(--report-accent-dark) ); opacity: 0.95; } .page-report .report-page-header h1 { margin: 0.35rem 0 0.4rem; font-size: clamp(1.35rem, 4vw, 1.65rem); font-weight: 700; letter-spacing: -0.03em; color: #1c1917; } .page-report .report-lead { margin: 0; max-width: 42rem; line-height: 1.6; } .page-report .report-lead a { color: var(--report-accent-dark); font-weight: 500; text-decoration: none; border-bottom: 1px solid var(--report-tint2); } .page-report .report-lead a:hover { border-bottom-color: var(--report-accent); } .page-report .report-badge { display: inline-block; font-size: 0.68rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; padding: 0.28rem 0.65rem; border-radius: 999px; background: linear-gradient(135deg, var(--report-accent), var(--report-accent-dark)); color: #fff; box-shadow: 0 2px 8px var(--report-glow); } .page-report .filter-card { position: relative; border: 1px solid var(--border); border-left: 4px solid var(--report-accent); background: linear-gradient(180deg, #fff 0%, var(--report-tint) 120%); box-shadow: 0 6px 28px rgba(28, 25, 23, 0.06); margin-bottom: 1.5rem; } .page-report .filter-card .filter-card-title { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 1rem; font-size: 1.02rem; font-weight: 600; color: var(--report-accent-dark); } .page-report .filter-card .filter-card-title::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--report-accent); box-shadow: 0 0 0 3px var(--report-tint2); } .page-report .filter-card label { color: #57534e; } .page-report .filter-card input:focus, .page-report .filter-card select:focus { outline: none; border-color: var(--report-accent); box-shadow: 0 0 0 3px var(--report-tint2); } .page-report .filter-actions-row { margin: 1rem 0 0; padding-top: 0.25rem; } .page-report .btn-report-submit { min-width: 7.5rem; padding: 0.55rem 1.35rem; font-weight: 600; background: linear-gradient(180deg, var(--report-accent) 0%, var(--report-accent-dark) 100%); box-shadow: 0 2px 12px var(--report-glow); } .page-report .btn-report-submit:hover { filter: brightness(1.05); background: linear-gradient(180deg, var(--report-accent) 0%, var(--report-accent-dark) 100%); } .page-report .report-results-card { border: 1px solid var(--border); border-radius: 12px; padding: 0; overflow: hidden; box-shadow: 0 8px 32px rgba(28, 25, 23, 0.07); margin-bottom: 1.5rem; } .page-report .report-stats { display: flex; flex-wrap: wrap; align-items: stretch; gap: 0.65rem; padding: 1rem 1.15rem; margin: 0; background: linear-gradient(90deg, var(--report-tint2) 0%, #fff 55%, var(--report-tint) 100%); border-bottom: 1px solid var(--border); } .page-report .report-stat { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 0.15rem; padding: 0.5rem 0.9rem; min-width: 6.5rem; background: #fff; border-radius: 10px; border: 1px solid var(--border); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04); } .page-report .report-stat-label { font-size: 0.72rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted); } .page-report .report-stat strong { font-size: 1.2rem; font-weight: 700; color: var(--report-accent-dark); line-height: 1.2; } .page-report .report-footnote { margin: 0; padding: 0.65rem 1.15rem 0; font-size: 0.82rem; } .page-report .report-table-shell { padding: 0 0 0.25rem; } .page-report .report-table-shell .table-wrap { margin: 0; padding: 0 0.25rem 0.5rem; } .page-report .table-report { border: none; border-radius: 0; min-width: 36rem; box-shadow: none; } .page-report .table-report thead th { background: linear-gradient(180deg, var(--report-tint2) 0%, var(--report-tint) 100%); color: #334155; font-weight: 700; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.04em; border-bottom: 2px solid var(--report-accent); padding: 0.65rem 0.7rem; } .page-report .table-report tbody tr:nth-child(even) { background: #fafaf9; } .page-report .table-report tbody tr:hover td { background: var(--report-tint); } .page-report .table-report td { padding: 0.55rem 0.7rem; border-bottom-color: #e7e5e4; } .page-report .table-report .muted { text-align: center; padding: 1.25rem; } .page-report a.report-link { display: inline-block; font-size: 0.8rem; font-weight: 600; padding: 0.25rem 0.55rem; border-radius: 6px; background: var(--report-tint2); color: var(--report-accent-dark) !important; text-decoration: none; border: 1px solid transparent; } .page-report a.report-link:hover { background: var(--report-accent); color: #fff !important; border-color: var(--report-accent-dark); } /* 追溯页结果卡片 */ .page-report--trace .trace-section.card { border-radius: 12px; border: 1px solid var(--border); box-shadow: 0 4px 20px rgba(28, 25, 23, 0.05); margin-bottom: 1.15rem; overflow: hidden; } .page-report--trace .trace-section.card h3 { margin: 0; padding: 0.75rem 1rem; font-size: 0.95rem; background: linear-gradient(90deg, var(--report-tint2), transparent); border-bottom: 1px solid var(--border); color: var(--report-accent-dark); } .page-report--trace .trace-section.card > table { margin: 0; border: none; border-radius: 0; box-shadow: none; } .page-report--trace .trace-section.card .table-wrap { margin: 0; padding: 0; } .page-report--trace .trace-section.card table { min-width: 0; } .page-report--trace .trace-section.card th { background: #f5f5f4; } /* body 挂报表类名后整页轻微氛围(变量继承给子元素) */ body.page-report { background: linear-gradient(180deg, var(--report-tint) 0%, var(--bg) 18rem, var(--bg) 100%); }